feat(identity): an STS document's doc-number names its directory and its title the address
K3-19 a. `extract.declared_identity` reads what a NISO-STS document states about itself -- exactly one <std-ident> (<doc-number>, <year>) and exactly one <title-wrap> (<full>, else <main>) -- and returns None for every other row, for XML that is not STS, for an unparseable file, and for a document that states neither. A value stated more than once is not read: an adopted standard carries one <std-ident> per issuing body, and picking one is a guess. `okf build` names a document's directory from its <doc-number> through the id grammar, replacing only the file's stem. A declared name another document in the run also claims falls back to the file name for both, said on stderr: the existing collision gate would refuse both with "rename one", and a name read from inside a document is not one a rename can change. `sources[0].title` becomes <doc-number> + <year>, then the <title-wrap> title, then the file name -- the first that survives the gate and can be written into the flow mapping verbatim. Measured on R761, <full> carries a comma, which ends a flow mapping, so it is never the title there; it is never cleaned up either. `resource` stays the inbox-relative file. Every other row, and every profile without an address, is untouched: the identity is asked for only where `sources` is written. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
be169eeca0
commit
ee8d5b5776
6 changed files with 230 additions and 13 deletions
12
CLAUDE.md
12
CLAUDE.md
|
|
@ -120,7 +120,17 @@ one boundary rule:
|
|||
reachable without inventing an id; round 13's 14 such directories were false
|
||||
positives of the TEXT route reading the document's own contents listing and
|
||||
are gone. Report:
|
||||
`docs/2026-09-10-k3-runde14-deklarert-struktur-tar-ruten.md`. The registries are COUPLED: a row in
|
||||
`docs/2026-09-10-k3-runde14-deklarert-struktur-tar-ruten.md`.
|
||||
**Since K3-19 an STS document's own identity names its directory**
|
||||
(`extract.declared_identity`, read by `cli._document_prefixes` and the door):
|
||||
the directory was the delivery file's stem, a UUID occurring **0 times** in
|
||||
the document, while its one `<std-ident>` carried `<doc-number>`. Only the
|
||||
stem is replaced, and a declared name two documents in one run claim is
|
||||
used by NEITHER -- the `slug_owners` gate would refuse both with "rename
|
||||
one", which a name read from inside a document cannot obey. The `sources`
|
||||
title is `<doc-number>` + `<year>`, then `<title-wrap>`, then the file name:
|
||||
R761's `<full>` carries a COMMA, a flow terminator, so it is never written
|
||||
and never cleaned up. The registries are COUPLED: a row in
|
||||
`_CORE_EXTRACTORS` and not in `segmentation._STDLIB_EXTRACTOR_IDS` refuses
|
||||
every proposal for the type, two layers away from the extractor.
|
||||
`pdf`/`docx`/`xlsx` only via
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue