Repository navigation
fix: execute the whole-repository review's findings - #39
Closed
darko-mijic wants to merge 25 commits into
Closed
darko-mijic wants to merge 25 commits into
darko-mijic wants to merge 25 commits into
Conversation
Owner working rules: execute the confirmed findings of the whole-repository review (PR #38) with the same approach as the review: workflows of Claude and GPT agents (GPT through the relay plugin), each lane implemented by one model family and reviewed by the other, while the coordinating session keeps its context for coordination and execution. Commits, push and a draft pull request are authorized; the owner reviews and merges. Base: main b5e0a8b (PR #36), the commit the review read. Arc Pack: none. The arc executes PR #38's findings; record findings wait for the delivery-record cleanup, and owner questions are authored, not answered. Add the arc's plan: six lanes with their finding ids, implementing and reviewing families, and what stays out of scope. The directory is removed before merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. CodeRabbit Verify
|
…hrough against the graph L6-1: AGENTS.md names only honesty/gaps as check:self-hosting's retained warning, tested against the oracle. L6-4: DECISIONS.md names every narrowing decision on the narrowed row (MD-33, MD-25, MD-27, MD-18), tested over refines edges. L2-6: the recipe catalog lists every recipe reporting an absent subject by its answer shape, tested by running each. L6-6: the sdp-agent-surface skill separates the three ruled entry adapters from the reader joins, tested against the rule. L9-F1: the checkout-v1 README shows the build summary its extraction produces, tested. L9-F4: the capture job asks for kind and altitude and accepts a parent relation for intent, matching AC1. L9-F5: the README explains carriers after the quick start and states the Studio's five lenses as the graph does. From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ry review L3-01: one delivery-fact spelling list, outside the public barrel, feeds the authoring-shape check, extraction's reserved keys and the Gherkin tag pattern, so the camelCase hasVerifier is refused everywhere. L1-04: Markdown list text refuses the block shapes the carrier rules list (nested bullets, ordered prefixes, pipes, block quotes, thematic breaks); code-span forms stay accepted. L1-05: readiness-floor evaluation and derived readiness skip a Spec with an unratified altitude instead of reporting floor failures for it. L1-03: not changed; reserving kind in Then slots needs an owner ruling. From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pecified oracle L1-01: a key shared across phases gets one handler that branches on the occurrence's phase, so the first When invokes the product and a Then compares; StepFn gains an optional third step parameter. L1-02: an unspecified oracle never matches a Then, so completion raises the existing noMatchingThen diagnostic and no observation or assertion runs. From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s verifiers L5-01: test/markdown-reifier.test.ts declares test:protocol.markdown-body-grammar-regressions, verifying spec:carrier.markdown-body-grammar. L5-02: test/structural-anchors.test.ts declares test:protocol.structural-anchor-regressions, verifying spec:model.anchors. The self-hosting oracle pins move by the two new anchors, nodes and binding edges. From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…answers From the whole-repository review: two ready consumer Specs have drifted behind the realized agent surface, and three provisional answers the owner accepted in PR #36 are recorded only in its description. Proposal base: b5e0a8b. P1: wrapIdiom calls the recipe through the `recipes` binding P2: the reader's method inventory names resolveEntryAddress P3: the reader gains the #entryAddressResolution rule; its rule keys shift P4: delivery-record-cleanup gains the #inventoryFirst rule P5: #durableContent keeps blocking with the accepted provisional P6: cited-line-text records #lineText's answer as the #lineRecorded rule P7: cited-line-text records #lineBound's answer as a design entry; readiness stays scoped From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Q1: no symbolicLinks question; the owner ruled it out of the corpus Q2: JS-F1 hands scoped intent to an agent that picks its own budget (recipe 36) Q3: the AI-assisted reading capture keeps the four ruled links, each a reasoned relation Q4: the bound-file freshness trigger is the owner's wording; the owner decides Q5: #perSlotOnly drops its deferral clause; the combination capture carries it Q6: no handOffPreview question; the label and memo preview go to another lane K1: spec:consumers.ai-assisted-reading, an idea capture with a blocking deferral K2: spec:observation.run-evidence.bound-file-freshness takes #freshness off the ready parent K3: spec:consumers.agent-surface.combination-coverage, an idea capture with a blocking deferral From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L4-01: stage build outputs with exclusive creation after unlinking stale entries, and refuse an unsafe or dangling generated parent before any write or cleanup. L4-04: resolve only the watch root's physical path, so validate, Studio and vault watch run through a linked root while output keeps the named path. L4-02: refuse view, mermaid and gherkin publication when two page paths collide by case, naming both paths and IDs. Q1: discovery never follows a symbolic link below the root, warns once for each link outside an excluded or skipped path, and resolves an explicitly named root first; the excludes Spec and oracle pins follow the owner's ruling. From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L2-3: sdp q reports an unterminated template at its correct body position. L2-5: studio help states the build-owned-path refusal the CLI enforces. L3-03: Markdown ASCII trimming is linear, so long whitespace runs no longer stall extraction. L4-03: the vitest wrapper forwards option values and listings, keeping the dedicated CLI pass for executing commands. L9-F2: the root export ships CommonJS declarations for require consumers, and check:git-install walks nested conditions. C1: the temporal sweep no longer exempts the decision registry. From the whole-repository review (PR #38). Each finding was verified by a second model family, and this lane's diff was reviewed by the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # test/self-hosting-graph.test.ts
Nothing failed the gate after the merges; the full npm run check passed at 58a1690. The merge did leave the handbook stating a falsehood that neither lane could see alone. Lane D rewrote the AGENTS.md paragraph to say check:self-hosting emits only honesty/gaps warnings and that any other new warning is a regression. Lane W's discovery ruling (Q1) makes the same step's build line count one pinned extraction warning, extract/symbolic-link-skipped for the CLAUDE.md link. Lane D's test read only validateGraph's findings, so it passed while the paragraph misled. The paragraph now names that pinned extraction warning, and the handbook test also requires every pinned extraction finding to be named there. Without the sentence the test fails: expected the paragraph to contain "`extract/symbolic-link-skipped` names the `CLAUDE.md` link". The one merge conflict, lane H2 against lane C's oracle totals, was resolved in the H2 merge by adding both sides' deltas and confirming them with sdp validate and the oracle tests: 459 Specs, 609 anchors, 812 binding edges, 1077 nodes, 2989 edges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…or anchor Q1n: discovery still never follows a link below the root, but a link now warns only when it targets a directory or its name is a carrier or anchor-candidate name; the CLAUDE.md link no longer warns, and the handbook sentence and test pins for it are removed. Carries out the owner's rulings on the whole-repository review (PR #38); the diff was reviewed by the other model family. Narrows the owner's Q1 ruling to candidate links; awaiting the owner's review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Q6a: each gathered row reads `<scope> <action label>: <request>`, per #ui.gatheredIntents; the compose dialog and the panel share one label map, and change-pack gets its own label. Q6b: new rule #memoPreview and UI entry memoPreview; the panel shows a closed, read-only `Preview memo` of the memo it copies and saves, before the copy and save actions. Carries out the owner's rulings on the whole-repository review (PR #38); the diff was reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SP1: the slice page's open question #exportCarriesSlice becomes rule #exportOmitsSlice; the export already behaved this way, and a new test pins it. Carries out the owner's rulings on the whole-repository review (PR #38); the diff was reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The owner ruled on all six of the review's questions (PR #38); this arc carries the rulings out. The README now lists lanes S and L, a results table per lane, and what stays open: L1-03, and R6, R8 and the plan-46 prototypes for the cleanup arc. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- L1-03: a Then slot named `kind` collides with the flat Outcome discriminant. The slot-notation and executable-contracts Specs gain a keyed `#reservedThenSlot` rule; a new error-level conformance check, `conformance/reserved-then-slot`, reports it with a probe pair; contract generation withholds the affected space or step contract with a `contracts/reserved-then-slot` warning that names the reserved word. Given and When slots stay unrestricted and the Outcome stays flat. Carries out the owner's ruling on the whole-repository review (PR #38); the diff was reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L1-03 is ruled by the owner and carried out by lane K (6780da5): Then slots reserve `kind`. Lane H1's row keeps its finding that L1-03 needed a ruling; L1-03 leaves the still-open list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- GAP9-1: include the extraction root's builder modules when its package identity names the Protocol, retaining physical-path trust and lookalike refusal. Align the anchors Spec and its oracle with the owner's ruling. - GAP9-2: compare an untouched Protocol corpus with external and local byte-identical engines, and remove the test helper's import rewrite. Lane X8 on r2/X8, based on c7368f4; scope is the anchor trust and extraction determinism Specs in pack:self-hosting-v1. Work stays in this worktree; no push. Both regressions fail with the source fix reverted. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- D-g-2: require own, defined Conditions before invoking the oracle; missing and extra payload diagnostics also distinguish own fields. - GAP7-1: refuse absent or non-callable own handlers and emit __proto__ handlers as computed properties so generated bindings remain callable. - GAP7-2: preserve missing parameter placeholders instead of rendering inherited Object.prototype members. - F-c-1: show unknown action strings and refuse unknown compose controls without resolving inherited labels. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…e resolves a path - S-M38-3 (round-3 review, named references): the reader decoded five names, so a link to kept(v2).md failed the gate although the forge links it to kept(v2).md. - A new helper carries the HTML standard's static list of names, as cmark-gfm decodes them in a Markdown destination before backslash escapes, and the HTML 4 names the forge's sanitizer decodes in an `href` or `src` value. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…e link gate - S-M38-3 (round-3 review, code examples and comments): the reader scanned indented code and HTML comments for links, so an example or a commented-out link failed the gate. It now skips indented code and reads raw HTML as an HTML parser does, for `href` and `src` outside comments. - Same class: Markdown inside an HTML block such as `<pre>` or `<textarea>`, an escaped bracket, and a link inside an image's description render no link and are skipped. Brackets pair as cmark-gfm pairs them, and footnote definitions continue as cmark-gfm continues them, so a footnote's indented paragraph is still read. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…dings - L34-c-1: Part 2 said the human experience was unsettled right under the table of the five projection roots, and Part 3 called the projections replaceable. Part 2 now names the shipped-projections decision (MD-32), which settles Design Review, census, Mermaid and Gherkin, and leaves only the Studio and new readings open; Part 3 says regenerable. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- M38-c-6: the evidence/ exemption's test proved only that the root directory is exempt; nothing showed a nested evidence/ (or plans/, reviews/, explorations/, docs/lineage/, .omo/ genre, or a nested package-lock.json) is still swept. A new case writes a banned token at each nested or look-alike path and expects a failure naming every file and line. It fails if isExcluded matches anywhere in the path, if excludedFiles match by suffix, or if a directory loses its trailing slash. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- M38-c-2: the records gave four closure conditions for #durableContent. The inventory, README and not-proposed.md now state one: the cleanup arc closes the question when it lands the inventory in its first commit. R6, R8 and the prototypes' new location do not hold it open; each is settled before the record that holds it goes. proposal.json stays as the owner accepted it; the README says change 5's closing sentence predates the ruling and that its applied provisional must name the acceptance and the closing commit. - M38-c-3: only inventory.md recorded the owner's rulings. README.md gains a rulings table; open-questions.md opens each question with its ruling (Q4's reworded trigger included); not-proposed.md, pr-record.md and the inventory's U1, U2 and L12 rows record the rulings, keeping the verifiers' verdicts and counts as history. - M38-c-8: the deferred spec-ids union in concept 01 becomes row R12 (low, awaiting the owner's keep-or-drop ruling), and concept 01 is classed C + U + drift [R6, R12]. - M38-c-9: the live-dependency list gains the 21 Markdown links into concept documents (17 in jtbd-stories/, one in README.md, three in the worked example's README, measured by path), the two exploration links into plans, and the prose pointers in AGENTS.md and CONTEXT.md. - GAP13-1: the 196-link count is qualified as file (blob and raw) links in inventory.md, pr-record.md and pr-record.json; the 17 tree and commit links (213 in all) were re-measured and all resolve. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…recorded it - L34-c-3: Part 4 said PR #32 recorded the gpt-6.1-sol re-run (13 of 13, 23 calls against 20, one overflow). PR #31's acceptance records it; PR #32 carried the response, the task-to-recipe sheet in sdp-agent-surface and the impacted Packs in recipe 4's summary. Part 4 now cites each to its own pull request. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
… spec - L34-c-4: Part 1 introduced three edges as "two edges can point at the same Spec", but belongsTo runs from a Spec to its Pack (706 Primitive->Pack edges at the pin). The lead-in now says edges that touch the same Spec can carry different claims, and the belongsTo bullet names its direction. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- L34-c-5: Parts 1 and 3 and the playbook gave Vite's and Rolldown's range `^20.19.0 || >=22.12.0` as the test toolchain's requirement, but the pinned Vitest 4.1.10 declares `^20.0.0 || ^22.0.0 || >=24.0.0` and excludes Node 23. All three sites now state the intersection `^20.19.0 || ^22.12.0 || >=24.0.0` and name the three packages. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…ception - L34-g-2: the Article 08 outline said an authored Then landing on `unspecified` still fails, as behavior at the pin. The pinned engine passes a bound example whose Then key is itself `unspecified` (PR #38's L1-02). The outline now states the rule as spec:extraction.runnable-modules' rule, names that exception at the source baseline, and asks the writer to re-check at the article's own pin. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…t anchor's - GAP4-1: the annotation context listed `verifies` among anchor bindings as identifying "a test or example". Only a test anchor binds `verifies` (anchored); an example states its own `verifies` in its carrier (declared). The list now names the test anchor, and a separate paragraph says an example's declared relation confers `has-verifier` only when a resolving test anchor binds the example, as an enabled verifier. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…ning pr - N-c-7: the root README said the articles "are developed in the open in PR #34", which names a merged pull request as the venue once #34 lands. It now says the series opened in PR #34 and is maintained on main through focused refresh PRs, as the playbook's posture and the PR's publication model state. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
Y1 on r2/Y1, based on 2dc6a1a. Keep the article source pinned to b5e0a8b, work only in this lane, prove each fix by regression and reversion checks, and do not push. This lane changes no Pack. - K34-c-1, K34-c-3, S-K34-1: materialize the pin from git, install its locked dependencies and build it; keep supplied checkout outputs intact. - K34-c-2: refuse missing, duplicate, unknown, misplaced, nested and fenced evidence markers across the articles before generating evidence. - GAP12-1, K34-c-5: parse options and forwarded -- strictly, require an explicit source repository and document the disposable worktree writes. - K34-c-4: use one honesty/gaps-only warning policy and test source, dependency, build and output isolation instead of trusting metadata. - K34-c-6: generate both measurement labels inside their evidence blocks. - S-L34-3, L34-c-6: generate both Part 3 carrier excerpts from the pin. - L34-c-7: serialize the full drift recipe answer, including its clause. - L34-c-2: describe build diagnostics separately from validation checks. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- K34-c-1: read raw pinned blobs with replacement objects disabled so sparse checkout and smudge filters cannot alter evidence. - K34-c-4: test the CLI isolation call against a repository without the pin; bypassing materialization now fails the test. - S-L34-3, L34-c-6: test carrier generation with independent fixtures so later carrier edits do not require refreshing pinned articles. - S-K34-1: document temporary worktree registration and keep generated output in the disposable source. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
K34-c-4 (round 3; also K34-c-1 and K34-c-3): exercise the real CLI with a toy pinned build and a different supplied CLI. The sentinel proves generation reads the materialized root; both bypass mutations now fail. Check the owner executable bit so the materialization test also passes under umask 077. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
…otes - VR2-T-1: the handbook's docs/lineage row named only the restored v0 concept set. The folder also holds two authored notes with no lineage header: the short annotation context and the dated research scout kept under an archive- name. The row now names both, says each states its own status, and keeps all of it as evidence, never intended truth. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- claude-side-T-6: replace polynomial anchor and Mermaid regexes with fixed delimiter searches and bound pin parsing to one line. Add adversarial subprocess tests; all three time out without the fix. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 3, 2026
- claude-side-T-6: remove the remaining quadratic fence suffix match; slice the suffix after matching the delimiter run. Cover both fence characters with CR and Unicode line separators under child deadlines, and recognize CRLF closing fences. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-pr34-claude-1: make cancellation idempotent, tolerate vanished worker groups, and remove partial or locked worktrees before pruning. Refuse temporary roots inside either checkout and exercise npm signal forwarding. - F-sweep2-6: spool one git blob batch and copy bounded chunks, preserving object, type, size and terminator checks without an aggregate buffer cap or a process per blob. Keep the 144 MiB regression. - F-sweep2-5: label invisible fence tails explicitly in test output. - F-pr34-claude-2, F-pr34-claude-3: name the Markdown link gate and avoid pinning incidental playbook phrasing in its regression tests. Review fixes for PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
F-pr34-claude-1: replace repository-wide pruning with removal of only the disposable worktree registration, including interrupted and locked entries. Preserve repairable worktrees and their staged contents. Install interrupt handlers before creating temporary directories or starting the worker. Cover both startup boundaries, clarify detached-worker behavior after SIGKILL, and distinguish forwarding coverage from deterministic signal regression tests. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-sweep1-1: `sdp stamp` staged `stamp.json.tmp` but left it in the page set when the rename failed. The failure path now removes it through the same boundary check, and `#stampVerb` states the staging file and the refusals for a linked `generated/` or page set. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
…root - F-pr40-claude-2: the default `generated/obsidian-vault` was refused whenever it was a symbolic link, even one to an in-root directory under an excluded prefix that an explicit `--out` may name, and no Spec stated the refusal. The run now refuses a default that resolves outside the root or through a link that resolves nowhere, and holds an in-root target to the usual placement rules. The new rule `#defaultInsideRoot` and its message carry this in `spec:consumers.obsidian-vault`, with their oracle pins. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-sweep1-3: a watched directory replaced by another real directory kept its old handle, so on Linux, where the handle follows the moved inode, edits in the new directory started no run. The watch now records each handle's directory identity; a rename at a watched directory's path, or a path that now holds another directory, retires the subtree's handles, schedules a run and watches the new directory. The ancestor check does the same when a retired descendant reports first. `spec:consumers.validate-watch` states the case, with its oracle pin. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-sweep1-16: no test reached `reconcileDirectory`'s non-root branches, because the ancestor check catches a replaced or vanished directory first. Two tests make the two reads disagree through the injected `lstatWatchPath`: a directory that became a skipped link drops its subtree, warns and reruns when the link goes; a directory that vanished drops its subtree and reruns. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
…undary - F-sweep1-17: deleting any one recheck that `#scaffoldWriteBoundary` promises left every scaffolder test green, because the overlapping checks covered for each other. A test-only `onScaffoldCheckpoint` hook now runs before each recheck, and each recheck names its checkpoint in its refusal. Four tests relocate a parent at one checkpoint and fail when that recheck is removed: the static check attempts no parent creation, the check before a creation creates nothing in a parent that moved out, the check after entering refuses an escaping link at once, and the held check refuses before the write is reached. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-sweep1-18: the help said only that PATH is cwd-relative and that parents are created as needed, while the command refuses `..` segments and a parent that escapes the working directory or cannot be resolved. The scaffolder's help paragraph now states that boundary and the exit 1, and the focused-help test checks it. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
…tation - F-sweep1-22: since the output boundary moved into `guardedOutput`, `BuildHooks.rmSync` and `writeFileSync` stand in for every guarded publisher mutation, ordinary staging cleanup included, and nothing said so. `BuildHooks` and `guardedOutput` now state that scope, and a test pins it: a successful build sends its staging cleanup and staged writes through the hooks. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-pr40-claude-2: the vault skill now says that a link at the default vault folder places the vault where it resolves inside the root, under the usual placement rules, and that a default resolving outside the root is refused, citing `#defaultInsideRoot`. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic
added a commit
that referenced
this pull request
Nov 4, 2026
- F-sweep1-4: use the shared compiler line map for syntax errors in TypeScript carriers and anchor source files. Pin both paths across LF, CRLF, CR, U+2028 and U+2029; reverting the fix makes six cases report line 1 instead of line 3. Second review pass over PRs #34, #38 and #39; the diff is reviewed by the other model family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
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.
Executing the whole-repository review
This pull request carries out the confirmed findings of the whole-repository review in PR #38, read at
mainb5e0a8be. It closes the review's two high-severity defects, repairs the drift between ready Specs and the agent surface, gives the deferred design questions a home in the graph, and corrects the docs a newcomer reads first. A second pass then carries out the owner's rulings that the first pass left: the intent panel's labels and memo preview (Q6a, Q6b), the slice-page rule, and the reservation ofkindin Then slots (L1-03). It also narrows the symbolic-link warning, a delegated choice that awaits the owner's review.The two high-severity fixes:
sdp buildwrite outside the corpus (L4-01). Its staging files followed an existing link, so a planted symbolic or hard link undergenerated/made a build overwrite the file it pointed to. Staging now unlinks a stale entry and creates the file exclusively. An output parent that resolves outside the root, or dangles, is refused before any write or cleanup, and is checked again before each staged write. These are path checks, not race-free confinement: a process writing inside the root during a build could still swapgenerated/between a check and a later delete or rename. PR review: the whole repository, its fixes, and the durable-content inventory #40 rechecks before every mutation, refuses a linkedgenerated/, checks that directory's identity after publication, and states this threat model inspec:extraction.build-pipeline#writeBoundary.hasVerifier, so a TypeScript carrier could author a fact the Markdown carrier refuses. One internal spelling list now feeds the authoring-shape check, extraction's reserved keys and the Gherkin tag pattern.Delivery facts are derived, never authored, and a build writes only inside its root. These fixes put both principles back in force, the second against planted links. The rest of the arc fixes smaller defects, records the owner's rulings in the corpus, and brings the docs in line with the graph.
The rulings pass:
#ui.gatheredIntentsasks for the change too. Each row now reads<scope> <action label>: <request>, and the panel and the compose dialog read one label map.Preview memoholding the exact memoCopy memocopies. The carrying Spec gains rule#memoPreviewand UI entrymemoPreviewin the same change.#exportCarriesSlicebecomes rule#exportOmitsSlice, and a new test pins the behavior the export already had.CLAUDE.md. A link now warns only when it targets a directory or its name is a carrier or anchor-candidate name, and never when its own name is one discovery skips (a dot-name,node_modules,dist,generatedorcoverage); discovery still follows none. This narrows the owner's Q1 ruling and awaits the owner's review. PR review: the whole repository, its fixes, and the durable-content inventory #40 judges a link by the entry it stands for, so a candidate-named file link warns even when its name starts with a dot.kind(L1-03). A Then slot namedkindcollided with the generated Outcome's discriminant, so a legal carrier produced an invalid Outcome type. The owner ruled to reserve the word. Graph validation now reportsconformance/reserved-then-slotas an error, and contract generation withholds the affected contract with a warning naming the word. The Outcome keeps its flat shape, and Given and When slots may still be namedkind.How the work ran. Same approach as the review:
fix/review-findingsin the order C, W, H1, H2, P, D; the rulings pass merged S, L, then K. The full gate ran over each merged result.Working record. Branch
fix/review-findings; basemainb5e0a8be. Owner's working rules: execute PR #38's findings with workflows of Claude and GPT agents, while the coordinating session keeps its context for coordination and execution. Commits, push and this draft are authorized; the owner reviews and merges. There is no arc Pack: the arc executes findings and owner rulings, and its corpus changes are measured below with the design diff (recipe 35) from the base. The lanes' plan and results are inevidence/pr39/README.md;evidence/pr39/is arc evidence and is removed before merge.What each lane did
Outcomes: fixed (a code or doc defect, with a test), applied (a proposal change, capture or rule as written), adapted (carried out as a later owner ruling reshaped it), needs-ruling (parked for the owner). The verdict column is the reviewing family's last round.
C, corpus (Claude implements, GPT reviews: changes, then approve in round 2)
consumers.tspin)#wrapIdiomcalls a recipe through therecipesbinding instead of inlining its bodyresolveEntryAddress#entryAddressResolution; its rule keys shift#inventoryFirst#durableContentkeeps blocking, with the accepted provisional#lineText's answer as rule#lineRecorded#lineBound's answer as a design entry; readiness staysscopedsymbolicLinksquestion: the owner ruled the policyjtbd-stories/self-hosting-graph.test.tstotals and consumers family (3 tests fail with the old pins)#perSlotOnlydrops its deferral clause; the combination capture carries ithandOffPreviewquestion; the code half is carried in lane Sideacaptures, each with a blocking deferral (below)W, writes inside the root (GPT implements, Claude reviews: changes, then approve in round 2)
test/cli-write-boundaries.test.ts: 14 build-boundary cases, including dangling generated links; sentinel bytes are overwritten without the fixtest/exclude-diagnostics.test.ts"names skipped candidate links while resolving an explicitly linked root" (lane L renamed lane W's version, which named every skipped link): without the fix it fails first on the explicitly linked root, whose carrier path runs through the link instead of the real corpus directoryH1, honesty and carriers (GPT implements, Claude reviews: changes, then approve in round 2)
test/validators.test.tsandtest/extract.test.tsreport no finding without the fix; package-smoke export pins unchangedkindslot generates an invalid Outcome type, and the two options were reservingkindin Then slots or changing the Outcome payload's representation; the owner ruled for the reservation (lane K)test/markdown-reifier.test.tstest/readiness.test.ts,test/validators.test.ts: invalid-altitude floor findings without the fixH2, verification runtime (GPT implements, Claude reviews: changes, then approve in round 2)
test/codegen.test.ts: 5 dispatch cases fail without the fixtest/codegen.test.ts: 2 cases resolve instead of rejecting; "preserves the noMatchingThen" guards the messagenoMatchingThendiagnostic firestest/self-hosting-graph.test.ts: 608 anchors against the pinned 609 without the bindingtest/markdown-reifier.test.tsverifiesspec:carrier.markdown-body-grammartest/structural-anchors.test.tsverifiesspec:model.anchorsP, CLI and package polish (Claude implements, GPT reviews: changes twice, then approve in round 3)
test/cli-q.test.ts"names a body that stops inside a template literal"sdp qreports an unterminated template at its real line and column, not 1:1test/studio-s3.test.ts"states in its help the refusal the command applies"studio --helpstates the build-owned-path refusal the CLI enforcestest/markdown-ascii-trim.test.tstest/self-hosting-duplicate-ids.test.ts: option values, listings, and watch/dev keep the dedicated CLI pass--, and stops a report file or coverage from silently leaving the CLI pass outtest/package-smoke.test.tstypes a.ctsconsumer under Node16;test/bootstrap.test.tspins the export map;check:git-installpasses at the headrequirecondition gains.d.ctsdeclarations. The CommonJS root requires two ES-module-only dependencies, so it loads only on a Node that runsrequire(esm), whileengines.nodestill says>=20; PR #40 narrows it to^20.19.0 || >=22.12.0test/check-temporal.test.ts"sweeps the decision registry"DECISIONS.mdD, docs and vocabulary (Claude implements, GPT reviews: approve in round 1)
test/self-hosting-graph.test.ts"names in the handbook exactly the warning kinds the oracle retains"honesty/gapsas the retained warning (prose-mention warnings no longer exist)test/recipes.test.tsruns every recipe with an absent subjecttest/skills.test.tsresolves#entryAdapterstest/checkout-v1.test.tsbuilds the expected summary linesdp new specand a scratch corpus; no test reads itS, Studio rulings (Claude implements, GPT reviews: approve in round 1)
test/studio-s5.test.ts"names each gathered intent's scope and the change it asks for": rows lose their action label with the row hunk reverted<scope> <action label>: <request>; the label map moves intointent-panel.ts, andchange-packreads "Change Pack membership or framing"test/studio-s5.test.ts"previews the memo it hands off, closed and read-only, before the copy actions": nodetailselement without the fixPreview memoholds the memoCopy memocopies; rule#memoPreviewand UI entrymemoPreviewon the intent-panel Spec, with oracle pins movedtest/studio-slice.test.ts"leaves the slice page out of the Pack export": fails when the export is made to copy the slice page#exportCarriesSliceremoved; rule#exportOmitsSliceadded; no export code changedL, link-warning scope (GPT implements, Claude reviews: approve in round 1)
test/exclude-diagnostics.test.tsand three more suites: 225 failures with lane L'sdiscover.tschange reverted at the head (the mixed-link fixture, theCLAUDE.md,types.d.ts,other.txtandother.featurecases, two self-hosting runs, and 218 cases intest/recipes.test.ts, whose recipe runs now expect an empty stderr)#canonicalDiscoverysays so; theCLAUDE.mdwarning pins and the handbook sentence are goneK, reserve-kind (GPT implements, Claude reviews: changes, then approve in round 2)
test/codegen.test.ts"reserved Then slot kind": 20 of its 26 cases fail with the source change reverted (the other 6 guard lawful slot names andkindin Given and When); the validator audit (test/validator-audit.test.ts) fails 6 tests too, because its probe table gains aconformance/reserved-then-slotpair#reservedThenSloton the slot-notation and executable-contracts Specs; an error-level conformance check naming the reserved word; generation withholds the space or step contract withcontracts/reserved-then-slotIntegration
The merge had one conflict: lane H2's oracle totals against lane C's. It was resolved by adding both lanes' deltas, then confirmed with
sdp validateand the oracle tests. The full gate then passed on the first run. One defect showed only in the merged result. Lane D's handbook paragraph sayscheck:self-hostingemits onlyhonesty/gapswarnings. Since lane W's discovery change, the same step's build line also counts a pinnedextract/symbolic-link-skippedwarning for theCLAUDE.mdlink.fix: integrate the review lanesadds that sentence, and the handbook test now requires every pinned extraction finding to be named (it fails without the sentence).The rulings pass merged lanes S and L, then lane K, each without a conflict, and the full gate passed on the first run each time, so it needed no integration fix. Lane L removes the
CLAUDE.mdwarning itself, so it also takes back the first pass's handbook sentence and its test loop; the self-hosting test now pins that discovery reports no extraction finding at all.New in the corpus
The design diff (recipe 35) from the base graph, measured at the head: 3 Specs added, 11 changed, 1 Pack changed, 2 bindings gained a verifier.
spec:consumers.ai-assisted-reading, anideacapture (K1, Q3). The articles describe an AI assistant that presents the graph to a person, and no Spec owned the question. Blocking question#aiPresentationBoundaryasks what contract keeps generated output apart from graph claims. Its provisional: select existing deterministic readings only, and keep any generated text outside the Studio and the frozen projections. Its four links are declared relations with reasons, so no new prose-mention warning appears.spec:observation.run-evidence.bound-file-freshness, anideacapture (K2, Q4). It takes#freshnessoff the readyrun-evidenceSpec, where a blocking question would have dropped the parent below its floor. The trigger is the owner's wording.spec:consumers.agent-surface.combination-coverage, anideacapture (K3, Q5). It holds the deferred question of which slot-value combinations recipe 44 should report.#perSlotOnlykeeps its key and drops the deferral clause.spec:consumers.reader#entryAddressResolutiongives the publicresolveEntryAddressmethod a contract.#wrapIdiomnow prescribes therecipesbinding.spec:protocol.delivery-record-cleanup#inventoryFirstandspec:consumers.spec-studio.cited-line-text#lineRecordedrecord in the graph the answers the owner accepted in PR Plan 47: roadmaps, capability maps and design slices #36, which lived only in that PR's description.spec:extraction.excludes#canonicalDiscoverygains the discovery sentence: a symbolic link below the root is never followed, and it warns only when it targets a directory or its name is a carrier or anchor-candidate name, never inside an excluded path or when its own name is one discovery skips (a dot-name,node_modules,dist,generated,coverage). PR review: the whole repository, its fixes, and the durable-content inventory #40 rewords the rule so a dot-named candidate file link warns.spec:consumers.spec-studio.intent-panel#memoPreviewand its UI entrymemoPreviewadd the ruled memo preview.spec:consumers.spec-studio.slice-page#exportOmitsSliceturns the answered#exportCarriesSlicequestion into a rule.spec:carrier.slot-notation#reservedThenSlotandspec:extraction.executable-contracts#reservedThenSlotreservekindin Then slots, and the executable-contracts finding list gainscontracts/reserved-then-slot.Rulings
Owner rulings
None are new in this pull request. It carries out the rulings the owner made on PR #38's questions and in two follow-ups:
b5e0a8be; 1–3 repair drift, 4–7 record answers accepted in PR #36readerand the Specs aboveexcludes,discover.ts06-edit-through-the-lens.mdai-assisted-readingbound-file-freshness#perSlotOnlykeeps its keycombination-coverage,example-space-coverageintent-panel-element.tsspec-studio.intent-panelspec-studio.slice-pagespec-studio#noSecondGraph,#recipeAnswers2dc6a1a2)#durableContentdelivery-record-cleanupspec:carrier.typescript-authoring, its rung stated honestlypoint-per-exampleDECISIONS.mdstays; the plan-reading gate checks retire with the folders;measure.mjsmoves beside its testroadmap-replaces-plans#gateRecordkindin Then slots (L1-03)slot-notation,executable-contractsDelegated choices awaiting the owner's review
/var→/private/vardoes not leak into ordinary outputvalidate-watch.tsartifacts.tsnode_modules,dist,generated,coverage). At this head a dot-named candidate file link is silent as well; PR #40 makes it warn. A dangling or looping non-candidate link is silent toodiscover.ts,excludeschange-packreads "Change Pack membership or framing"; an unknown action shows its raw stringintent-panel.tsdelivery-fact-spellings.tsreadiness-floor.tsStepFngains a required third parameter (L1-01)StepFnandStepBindingsare public on./runner: a handler may still declare two parameters, but code that calls, wraps or retypes aStepFnor aStepBindingsentry must now pass the step. Bindings handed to./testingare unaffectedrunner/index.tslistandinitare forwarded in one spawn (L4-03)relatedorbenchnow splits, though the base ran each as one spawn, so once benchmarks exist a barebenchruns the CLI unit suite after them. As at the base,related <source>stays one pooled spawn that also selectstest/cli.test.ts, and afile:linefilter goes unrecognized, so a CLI location runs pooled and a contract-dependent one skips the contract preflight. PR #40 forwardsbenchonce, splits everyrelated, and reads afile:linefilter as its filevitest-test.mjsrequirecondition gains.d.ctsdeclarations (L9-F2)require; the conditions now nest soimportandrequireeach carry their own types, which changes the published export map. The CommonJS root loads only on Node 20.19+ or 22.12+, and PR #40 setsengines.nodeto^20.19.0 || >=22.12.0package.jsoncheck-temporal.mjsDECISIONS.md06-edit-through-the-lens.mdrefinesprojections-model;dependsOnclaim-taxonomy, spec-studio and shipped-projections-frozenai-assisted-readingvalidators.ts,contracts.tsOut of scope, on purpose
#durableContentthere. The same applies to the second set of rulings: the homes for R1, R2, R5, R7, R9, R11, L8-01 and L8-02, the newspec:carrier.typescript-authoring(R4), and the live dependencies. R6 and R8 are still open (below). Nothing inplans/orreviews/is deleted.Left open
designColumnsSufficiency(waits for the first adopter's design passes).Try it
Run at the head:
Feedback wanted:
CLAUDE.md?requirecondition, and this PR gives it its own types. Should CommonJS stay a typed surface, on Node^20.19.0 || >=22.12.0as PR review: the whole repository, its fixes, and the durable-content inventory #40 sets, or should the package drop the condition, which breaks every CommonJS consumer?Measured at the head
Measured at the head, with the corpus exclusions. Re-run the recipes rather than inheriting these numbers.
b5e0a8besdp validatehonesty/gaps); no extraction warningspec:consumers.edit-model,spec:consumers.intent-compositionnpm run checkENOENTon a.sdp-tmpfile, so a rerun at this head may fail once. PR #40 fixes the helper ina51bf5c6check:git-installThe base column comes from the base graph (
sdp buildatb5e0a8be): node counts read from it, and recipes 1, 2 and 20 run over it with the head's built recipes. The head column is the live graph atc7368f48754528b4303fae12a601d88da84e65c1. The diff stat from the base is 93 files, +2270 / −274.Second review pass
A second review read this pull request at
c7368f48. This pass changes no commit on this branch: the head staysc7368f48, and only this description changes. It corrects, in place:StepFnrow: the third parameter is required and public on./runner(L1-01);requirecondition already existed, and the CommonJS root needs Node^20.19.0 || >=22.12.0;c7368f48by reverting itsdiscover.tschange and running the four suites;The engine and corpus fixes this review found are carried by PR #40, the one pull request for them. It targets this branch,
fix/review-findings, so they land here when it merges. Its changes as pushed at3a22c914:c7368f48...3a22c914. A row above that names PR #40 describesc7368f48first, then what PR #40 changes.Next
The next work, from the roadmap (recipe 55, re-rendered at the head)
Roadmap: The Protocol's roadmap
pack:roadmapTo state means the floor allows ready and a person still judges the statement. Built means every Spec of the entry's work states ready and has an implementation binding; it reports no passing test and no deployment.
The Protocol's next work, first entry first. The order is a preference: it dates, gates and sequences nothing, and what each entry still needs is read from the graph each time.
First the cleanup that removes the frozen plans, review reports and superseded concept material, as the roadmap and the pull request record make possible. Then the two steps a reader of the Studio's pages could not take, the words of a test line that checks a declaration and an outside register's entries, and then the composed-intent model the build backlog holds. What the first adopter's mass update asks for joins when the owner selects it; a capture landing adds nothing here. An entry leaves by an edit to this manifest once its selected work is complete or no longer belongs among the next work.
To design
spec:protocol.delivery-record-cleanupidea→scoped, nothing holds it; blocked byspec:protocol.delivery-record-cleanup#question.durableContentplans/,reviews/and the superseded concept material from the tree, after moving into the graph the durable content they still hold, so the repository keeps one delivery record: the graph, git and the pull requests.spec:consumers.spec-studio.register-inputscoped→defined, held by no-blocking-open-questions; blocked byspec:consumers.spec-studio.register-input#question.registerEntry,spec:consumers.spec-studio.register-input#question.inputFormTo state
spec:consumers.spec-studio.cited-line-textTo build
spec:consumers.edit-modelWaiting on the owner
spec:protocol.delivery-record-cleanup#question.durableContent(blocking), place 1: Which content inplans/,reviews/and the concept documents does no Spec, test, decision or recipe carry yet, and where does each piece belong?spec:consumers.spec-studio.cited-line-text: it statesscopedand its floor allowsready; place 2spec:protocol.delivery-record-cleanup: it statesideaand its floor allowsscoped; place 1Deferred, with their triggers
spec:carrier.sdp-import.feature-adapter#question.featureAdapter: Which bare .feature constructs can an import adapter preserve honestly? Trigger: an adopter migrates a gen-1.featurecorpus into the Protocolspec:consumers.agent-surface.combination-coverage#question.combinationCoverage: Which combinations of slot values should coverage enumerate and report? Trigger: a design pass asks which combinations no example exercisesspec:consumers.ai-assisted-reading#question.aiPresentationBoundary: If an assistant generates explanations or arrangements beyond selecting deterministic readings, what contract keeps its output distinct from graph claims and makes the exact reading reviewable, including how the exact output is retained with its model, prompt and inputs? Trigger: the UX design pass measures that assistant selection or a generated explanation helps a named review taskspec:consumers.impact-graph.symbol-reach#question.symbolIdentity: Which language-neutral identity and extraction boundary can support exhaustive symbol reach without freezing a single compiler's representation into the Protocol? Trigger: a reader needs symbol-level reach that file-level imports and curated anchors cannot givespec:consumers.projections-model.roadmap-views#question.releaseReader: Does a reader need release or baseline views that the roadmap, the recipes and git tags do not serve? Trigger: the first published releasespec:consumers.reference-projection#question.namedOutsideReader: Does a human reader outside the repository need a reference projection the four shipped roots do not serve? The taxonomy row is not that reader. Trigger: a named consumer outside the repository, with a way to measure that demand inside the arc that builds the projectionspec:consumers.structural-mermaid#question.namedStructuralReader: Does a reader need diagrams rooted at code units, which census tables and Spec-rooted one-hop Mermaid do not serve? Trigger: a named reader with that need, plus a decision that refinesspec:decisions.shipped-projections-frozenfor the affected Mermaid rendering or supersedes that ruling wholespec:observation.run-evidence.bound-file-freshness#question.freshness: When should changes to bound files make recorded run evidence stale? Trigger: a reader cannot tell whether a run at another commit still applies, because nothing says whether its bound files changed sincespec:observation.runtime-overlay#question.observationIdentity: Which external observation identity and freshness boundary is small enough for the graph while still supporting an honestobserveddelivery fact? Trigger: An adopter needs runtime measurements linked to measurable Spec targets and can supply an observation identity and freshness policy for review.Why this order (the owner's reasons, unchanged from PR #36, not the memo's):
spec:protocol.delivery-record-cleanupplans/andreviews/once PR #36's precedent landedspec:consumers.spec-studio.cited-line-textspec:consumers.spec-studio.register-inputspec:consumers.edit-modelRe-entry: the cleanup at place 1 starts after this pull request merges, once R6's re-entry conditions are written or R6 is dropped (see Left open). It opens with the accepted inventory in its first commit.
Refused, durably (PR #36's list, plus the Studio item as U2 worded it): a rung stated by tooling; priority as a date, a schedule, a gate or a new relation; a roadmap that lists every feature; a slice or a capability as a new grouping primitive; an "over-designed" check; a diagram derived from prose; an anchor added for coverage; a tool that edits a carrier itself; a count, date or plan number inside a Spec; a Studio page that recomputes a join, claim, fact or floor, or a second graph.
The owner's decisions this pull request asks for:
StepFn's new required parameter (L1-01) and the error severity of the reserved-slot finding (L1-03).The roadmap's order is unchanged: this arc completes no roadmap entry, so the manifest is not edited. The cleanup at place 1 is next, and it can now start from the accepted inventory.
🤖 Generated with Claude Code