bc-dgx7.101: B7e-dossier — Every canon assertion about one named thing - #856
Merged
Conversation
Six deluvia sessions (dv-gr6.5, dv-5eu.1.3, dv-nsy.2, dv-2uu.5, dv-b5d.28, dv-b5d.32) each opened by reconstructing what canon already says about one entity, by hand, a different way every time. This is that lookup as a command. lib/dossier.js is the read: an ordered glob set from config, a tree walk over the working tree or a git ref, line-level hits (a line that names the subject, or a line carrying a field under a heading that names it), four prose field readers (age, lifespan, height, status) beside a generic labelled-field reader, and the two summaries — FIELDS and DISAGREES. bin/b7e-dossier is the argv and the printing. dossier.sources / dossier.sourcesPerWorkspace hold the source set, with deluvia's own shelves shipped as the worked example. Numbers are read in digits and in words, which is not a nicety: the finding the bead is named for is `forty-three years old` in a chapter against `173 years old` in reference/.
# Conflicts: # README.md
Owner
Author
|
A beadcause worker opened this and does not merge its own work. It is on the merge queue as bc-04s0b. |
…dgx7101 # Conflicts: # README.md
Owner
Author
|
Merged into
The queue reports its own half only: how this branch got through, not what was in it. What the advocate actually did — the conflicts, which side it kept, the suites it ran and against which tree — is on bc-dgx7.101's merge bead, written by the window that did it. Nothing here is a summary of that; a process that did not watch the merge has no business paraphrasing one. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Takes a name and reports every line in a workspace's canon that asserts something about
it, in source order, then two summaries over the fields those lines state — FIELDS (every
value found) and DISAGREES (the fields whose sources contradict one another). Six deluvia
sessions had each rebuilt this by hand, eight or nine greps and sed ranges at a time; one
of them found a real contradiction only because one grep in its hand-typed list happened
to be the right one, and another ran the same sweep as an audit, found three stale
statements and had nothing to tell it there were only three.
lib/dossier.jsis the read: an ordered glob set that comes from config rather than aconstant (the order is the answer — it is what makes the first block canon and a later one
a draft), a tree walk over either the working tree or a git ref, line-level hits, four
prose field readers beside a generic labelled-field reader, and the two summaries.
bin/b7e-dossieris the argv and the printing.dossier.sourcesanddossier.sourcesPerWorkspacehold the source set, with deluvia's own shelves shipped asthe worked example and a
--kindslice (character/place/species) beside them.Three decisions worth naming. The file is
bin/b7e-dossier, notbin/b7e-dossier.jsas the bead's text says — an agent reaches these by the name it types, and only an
extensionless filename resolves on the PATH lib/foundation.js sets; every recent sibling
is spelled the same way. The allowlist entry is an
@grant readtag in the file's ownheader, not hand-written lines in lib/toolbelt.js and lib/grants.js: bc-wbrhi replaced
that mechanism, and the bead was filed before it landed.
bin/b7e-register --dry-runconfirms nothing further is owed. A hit is a line that names the subject, or a line
carrying a field under a heading that names it — the second half is what a grep cannot
do, and it is how
### §8 — Othensfollowed by a bare- Height:bullet gets found.What I am least sure of is the field extraction, because it is heuristic over prose and
the only honest way to tune it was to run it against the real deluvia corpus and look. The
first three passes were unusable — every
emotional arc:line in a chapter summary becamea field, and
That is Ch. 33's chapterbecame a height of 33 feet, fifteen times over.What is in now: a labelled value must be short and unpunctuated, a multi-word label must
be bulleted or bolded, a bare feet mark needs a size cue on the line and a guard against a
possessive apostrophe, and DISAGREES compares numbers by interval containment (a point
inside a range is one source being more specific, not a contradiction) and compares text
only where there are four or fewer short values. Every one of those is a test in
test/dossier.mjs with the line that motivated it. It will still surface the odd stray, and
I think that is the right side to err on for a shortlist that names its sources.
Numbers are read in digits and in words, which is not a nicety: the contradiction the bead
is named for is
forty-three years oldin a chapter against173 years oldinreference/, and a reader that only understood digits would miss the one finding thiscommand exists to reproduce.
Tests: test/dossier.mjs is new — 27 checks, green. After downmerging current origin/main I re-ran every suite this diff touches wiring for: dossier, lockfile, tooldecl, grants, allowlist, configtable, filter, evidence, anchors, b7ereadme, session, sessiondir, usage — all exit 0. Also driven read-only against the real deluvia checkout: 'Korgath' reports a DISAGREES row of 173 years vs 43 years naming reference/CHARACTER_CONCURRENCY.md:54 and the Ch.5 draft; 'Othen --at ' lists six 15-25 ft statements across five files where dv-b5d.32 found three by hand; an unknown name exits 1 with one line. The local full gate did NOT complete: it queued behind three other sessions' runs twice, and yesterday's partial run reached 251/520 with one failure, test/adoptsweepreal.mjs, which the notes here record as a load flake red on main. CI's sharded run on this PR is the full sweep.
Worth knowing: The field extraction is heuristic over prose. It is tuned against the real deluvia corpus and every rule has a test naming the line that motivated it, but a corpus with different conventions may still surface a stray value in FIELDS. Nothing acts on the output — it is a shortlist that names its sources, and a disagreement deliberately does not change the exit code.
Left undone: No --json schema is pinned in the README beyond the field names, and the four prose field readers (age, lifespan, height, status) are the only ones: adding a fifth is adding a regexp to FIELD_READERS, which I left for whoever needs one rather than guessing at it.
Files changed — 7 files · +1322 −0 · against `main`
Opened by a beadcause worker session on bc-dgx7.101 — b7e-dossier — Every canon assertion about one named thing, with its source line, in one call. It merges itself once the checks report; merging is what closes the bead. If this is still open, something stopped that, and the reason is on bc-dgx7.101 and in Adam's inbox.
bead: bc-dgx7.101