Skip to content

Item 5 — the ground migration: planned in full, deferred whole, seed filed - #31

Merged
Hafeok merged 9 commits into
mainfrom
claude/ground-migration-item-5-jpa9tc
Aug 30, 2026
Merged

Hafeok merged 9 commits into
mainfrom
claude/ground-migration-item-5-jpa9tc

Conversation

@Hafeok

@Hafeok Hafeok commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

Merge after upstream #20. This PR does not advance the pin — it stays at v5.9.0.

Six gates, Emil ruling at each. Read at e81a454, against upstream ce2c477 (= v5.11.0, verified).

The migration is planned in full and deferred whole. That is the finding, not the failure.

The plan is complete, the classification is execution-grade, every pin and firing is named, and the design rulings the audit said were the point are answered. A successor starts at execution.


The classification, completed

All 2,845 occurrences carry a sense or a recorded reason. Residual zero by construction — w0-classify.py asserts it and fails otherwise.

audit now
S2 1,638 1,529
S1 488 567 +16% — canon's largest sense
S3 331 369
U 244 261 142 are identifiers, unmigratable at any price
S5 105 97
S4 40 22 canon's is mechanically zero

S1 becoming canon's largest sense strengthens SR-1 in the way that matters most. Emil ruled S1 keeps the word on the definition layer's authority, explicitly against the counts of the day. The corrected corpus agrees — which is evidence the definition layer was the right thing to rule on.

What the session found

  • The definition layer is 17 settled terms and one draft, not fifteen. The audit named two that do not use the word and omitted six that do — and term:tolerance (S1) and term:arrangement (S2) are both in 00-primitives.md, so the defect is on one page
  • Two further objects under the word, both in product-cli: the RDF/logic ground term and a CSS surface colour
  • ground channel occurs 10 times, not zero — one inside term:arrangement's settled canonical text
  • The defect is translated — the Danish glossary gave two definitions in one entry
  • The §7/Q27 reconciliation settles. The corpus contains no use of ground for a rule's normative force; the collision is one mis-listed word in the foundation slot's own list. Q27 is cleared to file
  • judgment's collision was already closed by the node it was recorded against
  • The classification instrument had three failure mechanisms — clause-crossing windows, rule ordering, and uncorrelated size-and-quality

Errata and corrections, filed rather than hidden

meta/ground-audit-2026-08-24-erratum.md files three corrections against the audit without editing it; the audit gains a forward reference only, per the supersession convention.

And a correction to my own GATE 3 report, recorded in gate3-w0bis.md: I estimated the prose-context rules at 29% correct from a 21-row sample. Measured over all 427, it is 71.7%. Emil ruled on the wrong number; the ruling held on the right one.

Deliverables

meta/migration-plan-ground.md — the successor's seed, filed beside the audit it descends from, in the carve-plan-c1.md pattern.

meta/sessions/2026-08-27-ground-migration/ — the arrival record, six gate reports, the manifest, and the instruments: w0-classify.py with rulings/r001…r021.py (W0's 1,022) and rulings-bis/b001…b009.py (W0-bis's 456), w0-full-v2.json, w0-extract-head.py, sweep2.py.

Canon: DDD-delivery-04 and DDD-track-01 take act-triggered.

Not edited, each a ruling: the session records, the corpus-test results and holding-note-ground-axes-rev18.md record what v5.5.0 filed and are correct as history; Paper A's Appendix A is generated from the pinned upstream, and hand-editing it would forge agreement the pin does not yet have, which is the pin's entire purpose.

Gates

validate-core-order.py 0 errors, 0 warnings; 67 pins resolved, 0 content-drift, 1 governed shadow · validate-claims.py 26 claims valid, 6 warnings; 21 decisions valid

Basis-impact sweep: no basis edge breaks — no id moved, so every citing node still resolves.

product-cli carries no commit. W4 remains priced and unexecuted, carrying two local collisions a field-name divergence would not dispose of.


Generated by Claude Code

claude added 9 commits August 29, 2026 10:47
The prompt and its bootstrap, committed before any repository is read for the
work, per DDD-dec-20. The session's charter is thereby a repo object, quotable
at each of the six gates and auditable afterwards against the commits produced.

Parameters recorded in bootstrap.md: branch claude/ground-migration-item-5-jpa9tc
across three repositories; base commits ce2c477 (actor-indexed-determination,
which is annotated tag v5.11.0 exactly — head and tag coincide), e81a454
(decision-driven-design), d0f4297 (product-cli, read-only); six gates; principal
Emil.

Five package files exist in no repository and are filed under inputs/ so the
charter is reconstructible. Filing them there is not filing them as canon —
Q44, Q45 and Q46 remain unfiled downstream demand, and the prompt puts their
filing out of scope. The two package files that duplicate the ground-audit
session's committed copies are byte-identical and are not re-filed.

Basis: DDD-dec-20; DDD-dec-17; DDD-delivery-02; term:delivery
All 2,845 occurrences now carry a sense or a recorded reason for carrying none.
The residual is zero by construction: w0-classify.py asserts that the rulings
cover the audit's 1,022 exactly and fails if one is unruled or twice-ruled.

The audit's committed extract is taken unaltered, so its rule-assigned half is
inherited exactly and only the residual moves. Each of the 1,022 was read in its
own file rather than in the 240-character extract window, and each carries its
ruling and its reason in rulings/r001..r021.py.

Findings, held for ruling, none repaired:

Two boundaries moved outside the sampled 95% CI. S3 counted 147 against a
[14,109] interval — full-corpus S3 rises 26%, from 331 to 417 — and S2 counted
532 against [536,731]. The S3 movement concentrates in apparatus/ (38 rows),
where the sense is carried by exports, bounds, consumes and sits-on rather than
by delivers or reads, which is what the rule table was looking for. Nothing in
SR-1 or SR-2 turns on it; every added occurrence is a verb applied to the S1
object, which is SR-2 exactly.

The definition layer is 17 settled terms and one draft, not 15. The audit named
term:attribution and term:accountability, neither of which uses the word, and
omitted term:tolerance, term:arrangement, term:answerability, term:capability,
term:swarm-gate and the draft term:residual-discretion. The sense split stays at
four, and term:tolerance (S1) and term:arrangement (S2) both sit in
00-primitives.md.

Four things a sample could not have seen: a sixth object under the word (the
RDF/logic `ground term`, 11 occurrences) and a seventh (the CSS surface colour,
6); `ground channel` occurs 10 times and not zero as reported, one of them
inside term:arrangement's settled canonical text; the Danish glossary glosses
both senses in one entry, so the defect is translated; and the audit counted its
own session-index line, so the corpus at its read commits is 2,843.

Cost columns re-derived exact over all 2,845: canonical text is 222, not 240.
The corpus at head is 2,976, +133 over 11 files, of which upstream README.md is
the only surface needing attention.

Validators green: validate-core-order.py exit 0 zero W4; validate-claims.py
exit 0 with the 6 documented downstream warnings.

Basis: DDD-dec-20; DDD-ground-02; DDD-ground-05; term:ground; term:admission-test;
term:delivery; term:undelivered; term:closure; term:arrangement
Emil's GATE 1 ruling, recorded as two artefacts rather than as prose in a
report.

meta/ground-audit-2026-08-24-erratum.md files the three corrections as an
erratum beside the audit, not as a repair to it: the audit is a merged artefact
and its history is not edited. E-1 gives the definition layer at 17 settled
terms and one draft, with both directions stated — term:attribution and
term:accountability named but using the word zero times, six omitted that use
it — and notes that the correction makes the finding worse, since term:tolerance
(S1) and term:arrangement (S2) are both established by 00-primitives.md. E-2
records ground channel at 10 occurrences, one inside term:arrangement's settled
canonical text, against the audit's reported zero. E-3 records the third
self-count and the corpus at 2,843 at the audit's own read commits. What is not
corrected is stated: the four rulings, the cost analysis, the wave shape, the
§7/Q27 report, and the central finding, which the full pass corroborated.

The erratum carries no pointer from the audit, because filing one would edit the
merged artefact. Raised at Gate 2 rather than decided here.

meta/sessions/2026-08-27-ground-migration/gate4-carry.md opens the plan's inbox
with seven items: apparatus/'s W3 booking re-examined rather than inherited; why
the S3 estimate was low, recorded as the rule table under-sampling the
vocabulary of delivery rather than the boundary being wrong; ground channel as a
surface the plan was told it lacked; the i18n pass booked or deferred by name;
upstream README.md fixed in this migration because it is the transfer's front
door; SR-4's warrant, the five occurrences naming two senses in one phrase that
no rename can reach; and the head delta classified at Gate 4.

Basis: DDD-dec-20; term:arrangement; term:tolerance; term:capability;
term:answerability; term:swarm-gate; term:residual-discretion; DDD-ground-02
…hing

One pass over the 62 registry entries carrying canonical text.

Sweep 1, assert-not-define: 41 define, 11 are mixed (the repaired term:floor
shape), 10 assert. Graded by how far the definition sits from the reader: three
have no definition anywhere, in the registry or the establishing document
(term:seam, term:composite-actor, term:projection); two have an ungoverned
definition already in the document, the exact F-1 shape (term:training,
term:ensemble-actor); five carry a definition subordinated to the assertion.
The cost is the finding: 30 of the 62 are pinned downstream and not one of the
ten is, so the batch fires no pin advance and needs no DDD-dec-29-class
decision. F-1 was expensive because term:floor is pinned.

Sweep 2, name collisions: five live, one already retired, one already governed.

mechanical is confirmed: a store (term:mechanical, settled, 01) and a delivery
mode (term:delivery, draft, 13). The registry registers the overloaded compound
as an alias, 13-delivery.md's contract requires the store sense and establishes
the delivery sense in one file, and DDD-dec-30 already states the discipline
this violates. Both terms are pinned, so either repair fires; the delivery value
is ~49 occurrences at draft and the store ~340 at settled, so the recommendation
is to repair the newer object. act-triggered is checked, clear, and already
canon's own gloss at DDD-cost-09 — reuse rather than minting.

judgment is confirmed and already closed. The mode was DDD-frame-15's, not
DDD-frame-17's, DDD-frame-15 is retired, and DDD-dec-30 records the collision in
canon's own words. Cost zero; the residue is historical and must not migrate.

Two new: projection (the compound's axes against the projection layer, which
appears inside term:verdict's settled canonical text) and verdict (the induced
assignment against the per-act verdict in term:act-individuation and
term:outcome — a function against a value of it, three settled entries, one
document). Both unpinned.

maturation is reported as the pricing precedent: DDD-dec-21's shadow, declared,
with the escape located in the id-allocation mechanism rather than the model.

posterior: the required check is reported and it fires. No registry name
collides, but prior is live in the Bayesian sense in four places including
ratified canon (DDD-measure-05), and term:calibration-ledger is the estimator in
that same prior-update pipeline. Third attempt, third check. Moot under the
recommendation, since repairing the delivery side leaves the store its word.

Basis: DDD-dec-29; DDD-dec-30; DDD-dec-21; DDD-frame-15; DDD-frame-17;
DDD-cost-09; DDD-measure-05; term:mechanical; term:delivery; term:judgment;
term:verdict; term:outcome; term:act-individuation; term:projection; term:seam;
term:floor
…cks Gate 4

Part 1. The candidate reconciliation was tested against every occurrence rather
than assumed, and it survives in a narrowed form.

Of 17 rows the anchored institutional-ground rule assigns, 2 are it catching a
neighbouring list item, so 15 are genuine — the audit reported 13, and its claim
that zero are in upstream canon holds exactly. Eleven are meta-mentions naming
the category. All four actual uses denote a representation supplied by an
authority: a country-rules table's coverage, "computed by rule from
institutional ground" (canon separating procedure from data in one sentence), a
serialiser's defaults owned by someone else, and what counts as a secret. The
three statute-and-contract cases outside the compound resolve the same way — the
determination track cites "the statutory minimum for the records class", a value
read from the statute with a provenance and a date.

So the corpus contains no use of ground for a rule's normative force, and §7
repairs a defect it does not have. The collision is one mis-listed word: the
foundation slot reads "supplied through rules, conventions, authority, or social
practice", which puts a content kind inside a list of supply channels. Strike
`rules` and the slot is coherent. SR-4 then makes the slot unnecessary, because
institutional becomes an attribute a record carries and the trust decision backs
it. Q27 does not file onto a dissolving category; it files onto the only one
that was ever occupied. S4 does not survive as a sense — four senses plus
attributes.

Part 2, and it is the larger finding. G3 required reading the S4 set, which
showed it wrong, and tracing why showed the inherited rule-assigned half is not
uniform in quality. A seeded 60-row sample, hand-read in place: anchored rules
39 of 39 correct; prose-context rules 6 of 21. Two of the eight prose rules were
adjudicated in full and confirm the rate — rule-standard-context 11 of 13 wrong,
distribution-context 4 of 9. Roughly 305 of 427 rows are suspect, concentrated
in accessible-available and reading-ground, which are the S2/S3 boundary the
delivery vocabulary is being reused to name.

Nothing ruled so far moves: G1's residual work, both G2 sweeps, G3 Part 1, SR-1
and SR-2 are all independent of these rows. Gate 4 is not, because a plan's file
lists and wave sizes are computed off the classification. Three options priced;
recommended is to run W0-bis (427 rows, 42% of W0) before the plan.

Also recorded: GATE 2's dispositions in gate4-carry.md, and the erratum forward
reference filed in meta/ground-audit-2026-08-24.md per Q-1.

Basis: DDD-dec-20; DDD-dec-26; DDD-ground-02; term:delivery; term:undelivered;
term:closure; term:presumed-discharge
427 prose-context rows re-read in their own files, plus 29 anchored-class
ordering corrections. w0-classify.py now merges both ruling sets and asserts
they do not overlap and that nothing is unruled.

First, a correction to GATE 3. I reported the prose-context class at 29%
correct from a 21-row sample. Measured over all 427 it is 71.7%. The sample drew
a tenth of itself from two rules that are 22 of 427 rows, and I mis-ruled four
ground-provenance rows in it — naming the provenance axis is S2, and only a
subject characterised by the enumeration spans senses. Option A still holds on
the corrected number, because 146 rows changed sense, but the number was wrong.

The class is not uniformly bad; two rules are. `delivered` is 7% correct and
`rule-standard-context` 15%, supplying 49 of 121 errors from 54 rows, while the
two largest rules are 91% and 84%. `delivered` fails because the v5.5.0
descriptor, the CHANGELOG and core/13-delivery.md all name the ground area and
the delivery area in one breath, so thirteen identifiers and the area name
became the delivered sense.

The anchored-class reopening happened and closes. The mechanism is rule
ordering, not window width: ddd-ground-id is last in a first-match-wins table,
which produced 15 stolen identifier rows and 13 inverse steals. Both sets were
enumerated mechanically over the whole corpus rather than sampled, so the family
is closed by construction. The true identifier count is 142, not 116, and all
142 now classify U. A second seeded anchored sample of 35 found 2 errors, both
of the named mechanisms; combined with the first, 72 of 74 correct.

Corrected classification: S2 1529, S1 567, S3 369, U 261, S5 97, S4 22.

A sense boundary moved a second time. S3 gives back 48 of the 86 it gained at
GATE 1 and lands at +11% over the audit rather than +26% — my GATE 1 figure was
inflated by the two broken rules. The finding survives, SR-2 is untouched, and
apparatus/ remains the largest contributor of added S3.

The largest movement is S1: +79 (+16%), and upstream canon is now S1-led at 182
against 154. Nobody predicted it and it strengthens SR-1 — the sense that keeps
the word is canon's largest, which the audit ruled on authority against the
counts of the day.

Canon's S4 is exactly zero, mechanically, agreeing with GATE 3 Part 1's
independent reading. Compound purity improved: reading ground 96% to 100% S3,
accessible ground 85% to 100% S2.

The method rule is recorded for the manifest.

Basis: DDD-dec-20; DDD-ground-02; DDD-ground-05; term:delivery; term:actor;
term:act; term:residual-discretion
The plan on corrected counts, with every pin, embed and firing named. Nothing
in canon is touched.

The finding that resizes it: SR-1 gives S1 the word and SR-2 says S3 is verbs
applied to the S1 object, so prose that already names the verb is already
correct. Measured over the 567 S2/S3 prose occurrences in canon and the
projection, 380 (67%) are qualified by a verb or adjective and need no edit;
187 are bare and need re-expression. The migration is 187 prose decisions, not
684 — the audit priced ~2,357 mostly-re-expression occurrences, and two thirds
of that re-expression turns out to be already written.

W2's registry work is 11 entries, 11 embeds, and a predicted firing stated
before any operation: exactly seven W6, on term:actor, term:arrangement,
term:capability, term:capacity, term:closure, term:judgment and
term:residual-discretion; zero W5, zero W7, zero W3. All seven carry a
content_hash, so each is a governed advance in the DDD-dec-29 pattern. The seven
S1 entries are not touched at all.

apparatus/ is re-booked from W3 to W2's tail per the GATE 1 ruling: it carries
the vocabulary the definitional repair is about, and encode-verify.md:21 carries
the miscitation, which W2 repairs or nothing does. poisoned ground needs one
sentence in its own entry rather than sixty-six edits, because SR-2 makes the
compound already verb-shaped.

The head delta is discharged: 106 of 133 immutable or the audit's own output; 27
live, of which README.md's 17 are the surface that did not exist when the audit
was taken — five senses on one public page, embedding two registry definitions.

W4 priced with three options and not executed, carrying the floor collision and
the two further product-cli objects.

The size, against the C-1 precedent: 187 prose rulings in ratified canon and
merged papers, 11 registry supersessions of which 7 sit under live pins, and
W1 unable to land at all without a paper revision the prompt puts out of scope.
My assessment is that the migration proper exceeds this session at the standard
it has held, and the recommendation is defer-whole plus the separately-ruled
items — which are not the migration, were each ruled on their own evidence, and
three of which were ruled into this session explicitly. Whether defer-whole
reaches them is the one question this gate cannot answer for itself.

All twenty-three carried items dispositioned.

Basis: DDD-dec-29; DDD-dec-30; DDD-dec-20; DDD-ground-02; DDD-ground-05;
term:ground; term:actor; term:arrangement; term:closure; term:capacity;
term:judgment; term:delivery; term:verdict; term:poisoned-ground
The downstream half of the mechanical -> act-triggered repair, and the record of
what §6 landed in both repositories.

Downstream live canon edited: DDD-delivery-04 (five occurrences across statement
and notes) and DDD-track-01 (its region's delivery clause, restated as "where an
act triggers retrieval of a governing decision without judgment").

Three sets deliberately not edited, each a ruling rather than an omission.
product-cli's seven occurrences ride with W4, because the prompt makes that
repository assessment-only. The session records, the corpus-test results, the
vocabulary-delivery session record and holding-note-ground-axes-rev18 record what
v5.5.0 filed, and v5.5.0 filed `mechanical` — correct as history, exactly as
judgment's retired-mode mentions were ruled at GATE 2, and the holding note
additionally carries a sha256 recorded in DDD-dec-20's notes. Paper A's Appendix
A is generated from the pinned upstream at v5.9.0, so it legitimately still reads
`mechanical delivery`; hand-editing it would forge agreement the pin does not yet
have, which is the pin's whole purpose.

The prediction stated before operating held exactly: zero W5, zero W6, zero W7,
because the downstream pin resolves against ref v5.9.0 and this session neither
advances it nor cuts a tag. Verified: 67 pins resolved, 0 basis-loss, 0
content-drift, 1 shadowed id — term:maturation's governed DDD-dec-21 shadow.

GATE 4's "exactly seven W6" is corrected in the record: that prediction attaches
to the pin advance, which belongs to the deferred migration. The firing §6 itself
creates is stated for the successor — when the pin is next advanced past these
commits, exactly three W6 fire and no more: term:delivery, DDD-cost-09 and
DDD-delivery-01. Notes are not hashed, DDD-delivery-03 is unpinned, and the three
Grade A entries and term:verdict are unpinned.

Gates: upstream 0 errors and 66 warnings, identical to the pre-gate baseline
verified by stash; 63 claims valid with the documented 32 warnings; 12 decisions
valid. Downstream 0 errors, 0 warnings, and 26 claims valid with the documented
6 warnings.

No occurrence of `ground` changed sense or wording anywhere in either repository.

Basis: DDD-dec-20; DDD-dec-21; DDD-dec-29; DDD-cost-09; term:delivery;
term:mechanical; term:judgment; term:closure; term:verdict; term:seam;
term:composite-actor; term:projection
The migration's plan files as meta/migration-plan-ground.md, beside the audit it
descends from and its erratum, so a successor finds it without reading a session
directory. It carries what does not need redoing — the vocabulary settled, the
classification execution-grade and reproducible, the plan with every pin and
firing named — the four things not to re-decide, what §6 already landed, and the
method rule with all three mechanisms.

The manifest closes all twenty-three carried items, records the deliverables per
repository, the instruments, the gates, and the basis-impact sweep: no basis edge
breaks, because no id moved.

The session's principal finding is stated as one: the migration is planned in
full and deferred whole, and that is the finding rather than the failure.

Basis: DDD-dec-20; DDD-dec-26; DDD-dec-29; DDD-dec-30; DDD-ground-02;
DDD-ground-05; term:ground; term:delivery; term:verdict
@Hafeok
Hafeok merged commit 54f00eb into main Aug 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants