No op names a blueprint — everything registers as graph
#331
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Binary-only M1 fieldtest (2026-07-24,
d26f0c8): the op grammar has no op to set the blueprint name; everygraph buildoutput is namedgraph. The default leaks into the registry (all store entries namedgraph) and into the sugar axis namespace (graph.fast.length). Either add anameop (or an op-list header field), or document the default and its consequences ingraph build --help.Related: the axis-namespace reconciliation (#328) decides whether the blueprint name belongs in axis paths at all. Corpus:
fieldtests/m1-self-description/s1_bootstrap_author_validate/.Milestone assignment (tracker harvest, 2026-07-24)
Moved to "Sugar retirement — document-first authoring over a self-explaining CLI": whether the blueprint name belongs in axis paths at all is exactly the #328 namespace decision, so a name op shipped before it risks immediate re-litigation. Sequence inside the milestone: #328 → this → #319.
Design reconciliation (specify)
Spec: blueprint-name-op. The issue body leaves the mechanism open ("a name op (or an op-list header field), or document the default"); this records the resolution plus the forks a pre-spec recon surfaced.
{"op":"name","name":"<...>"}, script-level and at-most-once, following thedocop's shape. Basis: derived — the op-script format is deliberately envelope-free (a bare op list, no header), so a header field would be a format change with a second parse path and a migration question for every existing script, while the op vocabulary is the established closed-vocabulary extension point (C25) anddocis the exact precedent for a script-level metadatum authored as an op. Documentation-only heals neither of the two real collisions recon confirmed: every op-script blueprint's default tap recording lands in one shared trace directory, and twouse-splices of unnamed blueprints collide as duplicate instance identifiers.graph, byte-compatible. Basis: derived — any new default re-keys the content id of re-derived transcripts and breaks the restates-name doc-gate pin without semantic gain; C29's "registered artifacts are never retroactively invalidated" argues directly against re-interpreting existing unnamed documents; mandatory naming would break the whole existing corpus for no added capability, since the op is opt-in.namefield — the exact field that isgraphtoday). Consequences ride existing mechanics unchanged: store documents carry the authored name, trace runs write under it,use-splice instance defaults inherit it, and the restates-name doc-gate now checks against the real name. The registry label (register --name) stays an orthogonal, explicitly-set concept. The content id of a newly built named document differs from its unnamed twin (the name is part of the hashed bytes — by design); the identity id never changes (names are stripped as debug symbols, C23).Status: design settled — ready for spec production.
Reconciliation correction (specify — skeptic finding)
An adversarial pre-gate review refuted one decision in the reconciliation recorded at issues/331#issuecomment-4706 and the spec was revised before grounding:
graph build/registeron a blueprint JSON file) reconstructs the composite with itsnamefield unchecked, so a hand-edited envelope with"name":"../x"would register cleanly and writetraces/../x/at run time — nothing sanitizes the name downstream.name_gate(shape only: non-empty, no path separators, not./..) applied at both intake seams — thenameop and the envelope intake's root name (the filesystem seam consumes exclusively the root name). Store read-back (reproduce,use-splice resolution from the registry) stays ungated: C29 forbids retroactively invalidating registered artifacts, and the store is populated through the gated intakes. Every shipped envelope fixture is namedgraph, which passes — no accepted input changes.The review also positively confirmed two claims: the
docop is a genuine at-most-once script-level precedent for the new op's uniqueness guard, and the new internally-tagged op variant cannot change behaviour for any existing script (byte-compat holds).Status: design settled (corrected) — spec revised, awaiting grounding.
Spec auto-signed (/boss)
The spec for the blueprint
nameop was auto-signed on a grounding-check PASS (second dispatch; the first dispatch BLOCKed on two findings — an instance-default mechanic claimed as verified while no green test pins it, and a false statement about shipped fixture names — both resolved by spec revision: the mechanic is now carried as this iteration's own ratifying test, a commitment rather than an assumption, and the fixture claim was corrected to the actual names). Nine load-bearing current-behaviour assumptions were ratified against green tests, line anchors verified.No human reviewed the spec at sign time; the veto window is open.
Status: spec signed — ready for implementation.
Cycle-close minute (audit + bench)
Two decisions from the closing gates, recorded for the veto window:
Status: cycle drift-clean (fix-path resolved); field test pending.
Cycle-close minute (fieldtest)
Source-blind consumer fieldtest over the four cycle axes (release binary, 4 examples, corpus fieldtests/cycle-331-blueprint-name/): roll-up bugs_found — 1 bug / 0 friction / 1 spec_gap / 4 working.
sweep <file> --list-axeswas the one authored-envelope file route still outside the gate class — a hand-edited bad root name listed mangled wrapped axis names at exit 0 while every sibling intake refused. The e2e refusal test was observed failing before the fix; the route now refuses before any axis line prints.Status: cycle complete — feature, review, audit (drift resolved fix-path), fieldtest, and the fieldtest bug all closed; full suite green on the final head.