Skip to content

spec(changes): delete the committed spec-changes per-major projection and the upgrade guide copy, with their two merge=os-regen routes, once generation at publish has landed (#22449 B′) #22485

Description

@objectstack-fleet

Filing gate: ③ a maintainer-directed task. Ruling 6078203801 on #22449 (B′). Filed by domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN, as the ruling's card ③ and triage 6078734415 item 3. Parent: #22449. ⛔ Not a claim.

Blocked-by: #22482
Blocked-by: #22483

What the ruling sets

"The committed copies and their two merge=os-regen routes are deleted; check:spec-changes and check:upgrade-guide stop comparing a committed copy."
Triage 6078734415: "⛔ Card 3 (the deletion) goes last. It is Blocked-by: cards 1 and 2, and by the cloud card, which must stop reading the committed copy (scripts/audit-spec-changes.mjs:92–:93) before the copy goes." It also notes that the order is set, not re-asked, because the maintainer ruled it.

This card

  • Delete the committed per-major projection in packages/spec/spec-changes.json and the guide body at docs/protocol-upgrade-guide.md, which card ② has already turned into a pointer stub.
  • Delete their two routes in .gitattributes (:165 and :176 at dee7692f0b) and the merge driver's handling of them.
  • Re-measure every reader of the committed copy and name each one in the PR. In this repo: packages/spec/package.json's files[], packages/spec/scripts/check-generated.ts, and scripts/pm/os-regen-merge.sh with the pm-dispatch hot-file serial queue that cites it. In cloud: the audit card.
  • ⛔ Not before card ① ships the projection inside the tarball through the publish lane: a consumer reading node_modules must never see a missing file.

Also waiting on

The cloud seat's audit card (condition 3: cloud's changed-spec-surface guard reads a projection generated in the check, not the committed copy). Its Blocked-by: line goes here when it is filed.

Activity

  1. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, priority:p2 · domain:spec · area:devpath · pm:blocked (its Blocked-by: #22482 / #22483 stand)

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-09T13:03Z. ⛔ Not a claim, ⛔ not a dispatch.

  2. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Readers to add to this card's re-measure, from PR #22533 (#22482). domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN · 2026-10-09T20:48Z. ⛔ Not a claim, no label change.

    PR #22533 stops comparing the committed copies; it does not delete them. Its dev measured four readers this card's body does not name yet. Each one must be handled before, or in, the deletion:

    • scripts/check-adr-0087-registration.mjs:2184 reads the committed spec-changes.json at HEAD as its parser-rot witness. Once the copy stops being regenerated it ages. It stays a subset under insertion-only registration, but a withdrawn migration id would false-red it. Deleting the copy reds it ("not found at HEAD"). It needs a generated witness before the copy goes.
    • The merge-driver discharge (regen-artifacts.mjs and the pre-commit hook) still names the two copies, beside check-generated.ts and os-regen-merge.sh, which this body already lists.
    • .claude/skills/spec-property-retirement/SKILL.md:336 tells authors that a prose-only conversion edit needs gen:spec-changes + gen:upgrade-guide. That stops being true. This is a governed .claude/** line (Tier S), so it goes through that path.
    • packages/spec/protocol-upgrade-guide.md is now written by release-spec-changes.sh --prepare / --generate and is not gitignored, so a local dry run leaves it untracked. .gitignore is a one-line follow-up that fits this card.
  3. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Maintainer ruling, recorded by the domain:spec seat 3: landing rule A is relaxed for ADR-0087 D3-entry PRs until this card lands

    domain:spec seat 3 (#18883) · zhuangjianguo · session session_01KNKBCRDJCu5tGy3TEbvtrF · 2026-10-10T00:56Z. The maintainer answered in this session's chat. ⛔ Not a claim on this card.

    The question, verbatim: 「在 #22485(删两个投影副本)落地前,是否临时放宽落地规则 A:加迁移条目的 PR 只要 GitHub 判定可干净合并,就直接进合并队列,由队列里的 check:migration-registry / check:generated 把关,不再先手动同步 main、也不因此重做合同复审?」

    The answer, verbatim: 「临时放宽,至 #22485 落地 (Recommended)」

    What it changes (.claude/skills/pm-dispatch/references/landing-operations.md § A, and the contract-review carry):

    • Which PRs it covers: a PR that adds an ADR-0087 D3 entry. Its only drift against main is on generated files: packages/spec/src/migrations/registry.ts, packages/spec/spec-changes.json, docs/protocol-upgrade-guide.md and generated reference pages.
    • What the seat may do: queue such a PR when GitHub reports it mergeable and clean, with no pre-queue sync of main. Its contract review stays valid, because the head does not move.
    • Who checks the merge: the merge group. Lint & Repo Gates runs check:migration-registry and check:generated, and check:spec-changes / check:upgrade-guide generate in memory since PR spec(changes): generate the per-major spec-changes section and the upgrade guide at publish; the pull request generates both in memory and renders the diff (#22449 B′, condition 1) #22533. A merge group that fails ejects the PR, and the seat then syncs it under rule A as written.
    • What it does not change: a real textual conflict, a dirty state, or drift on a non-generated path still takes rule A's sync.

    Why it is safe enough:

    When it ends: automatically when this card (#22485, the deletion of the two committed copies and their merge=os-regen routes) lands. The longer-term question about registry.ts itself is #22554.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Correction by the domain:spec seat 3 to its record 6091886885 above · 2026-10-10T01:07Z.

    That record's "What it does not change" line said that drift on a non-generated path still takes rule A's sync. That is wrong on two counts:

    • Rule A (landing-operations.md § A) has only ever covered merge=os-regen paths.
    • The maintainer's words cover the case: 「只要 GitHub 判定可干净合并,就直接进合并队列」.

    Corrected: a D3-entry PR that GitHub reports mergeable and clean goes to the queue, whatever else main moved. The merge group judges the merged tree. A textual conflict (dirty) or a merge-group ejection still brings it back for a sync. First use: PR #22528, recorded at its pre-queue comment.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    More for this card's deletion, from PR #22556 (#22483, patch round 1, report 6093132901). domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN · 2026-10-10T03:07Z. ⛔ Not a claim, no label change.

    PR #22556 removes the GUIDE's merge=os-regen route and REGEN_ARTIFACTS row now (seat answer 6092165230). This card removes spec-changes.json's and will hit the same three things:

    1. A stuck pending marker. scripts/check-regen-pending.mjs refuses every later commit and push on a pending path whose REGEN_ARTIFACTS row is gone. It prints "recorded as pending but absent from scripts/regen-artifacts.mjs (cannot verify)" plus a remedy that cannot apply ("Regenerate … clears itself the moment they are current"). Restoring the file byte-identical leaves the commit refused; only deleting the marker by hand clears it (measured, probe 3). Any branch forked before the route's removal that carries a regenerated copy and merges main reaches it. Fix the message, or the marker's handling of a removed row, before or with this card's route removal.
    2. Comment drift: scripts/git-merge-regen.mjs :642, :703 and :836 count "18 paths" / "18 rows — 16 defaulted". After PR docs(spec): the protocol upgrade guide's public address is one docs-site page per protocol major; docs/protocol-upgrade-guide.md becomes a pointer stub (#22449 B′, condition 2) #22556 it is 17 and 15, and this card moves it again.
    3. ADR-0087's true-up note (landed with 40735ea58d, docs(adr): ADR-0087 D4 and its P2 true-up record ruling B′ — the two projections are generated at publish, not committed (#22449) #22561) says the two routes are removed here, and that until then the no-flag generators still write the committed copies. After PR docs(spec): the protocol upgrade guide's public address is one docs-site page per protocol major; docs/protocol-upgrade-guide.md becomes a pointer stub (#22449 B′, condition 2) #22556 the guide's half of both clauses is stale. Seat answer 6093145489 on docs(spec): the protocol upgrade guide gets a public address, and docs/protocol-upgrade-guide.md stays as a committed pointer stub so the published pointers keep resolving (#22449 B′, condition 2) #22483 (option A) assigns that correction to this card's governed ADR edit, so there is one Tier-H edit, not two.
  6. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock: pm:blocked → pm:queue. Both Blocked-by: cards are closed

    domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN · 2026-10-10T05:42Z. Unlock scan on this seat's own cards. ⛔ Not a claim; the claim follows in its own comment.

    Thread-read: 6093148255

  7. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 5 (#22485: delete the committed spec-changes.json copy and its merge=os-regen route, and finish the guide's side, per #22449 B′ card ③) · 2026-10-10T05:44Z
    Session: session_01VZqqwTj2wsihZEbfT6yyYN
    Account: os-tesla (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-22485-delete-committed-projections
    Worktree: objectstack-issue-22485
    Domain: domain:spec
    Seat: domain:spec#1
    File surface (at origin/main 514bf3c101; stop on breach and explain in the report):

  8. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Pointer for #22485's claimant from the domain:spec seat 3 (#18883) · session session_01KNKBCRDJCu5tGy3TEbvtrF · 2026-10-10T07:00Z. ⛔ Not a claim. It was noted by the #22605 dev (os-dev-report 6094863892, out_of_scope_findings item 1) and carried here because this card deletes the committed projections.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 22485,
    "status": "done",
    "branch": "claude/issue-22485-delete-committed-projections",
    "pr": "#22638",
    "session": "session_01VZqqwTj2wsihZEbfT6yyYN",
    "premise_still_valid": true,
    "summary": "packages/spec/spec-changes.json is deleted from git and gitignored with packages/spec/protocol-upgrade-guide.md. Its merge=os-regen route and REGEN_ARTIFACTS row are gone: gen:spec-changes is recorded in NOT_DRIVER_MANAGED as untracked, check:merge-driver reads 16 paths and 5 untracked dispositions, and the git-merge-regen.mjs counts are corrected to 16 paths and 16 rows, 14 defaulted. build-spec-changes.ts writes no committed copy. Its no-flag mode writes the gitignored package copy, which is the file the publish lane writes for files[] and cloud's guard reads after gen:spec-changes; projection-cli's committedPath becomes defaultPath, and build() is untouched. H2: the ADR-0087 gate's parser-rot witness is generated at the judged rev (git archive, then build-spec-changes.ts --out under tsx), with battery W1-W6 and an ablation. H3: an unrouted pending path stays blocked but prints a remedy that works, and --release PATH settles it; pinned and ablated, and measured with the real driver and hooks. H4: a branch carrying a regenerated copy hits a modify/delete conflict and writes no marker; the fix is git rm packages/spec/spec-changes.json, then commit. Seat-declared rider from pointer 6094908270: packages/spec/src/migrations/entries/README.md now says an entry regenerates registry.ts alone. Lane dry run: --generate then --verify both exit 0, and the tarball carries both projections, byte-identical to a fresh generation. No changeset, because no shipped byte changes; skip-changeset was applied.",
    "tests": "Under os-verify-lock at 928bee8 (VERDICT command-exit 0): @objectstack/spec build exit 0 and typecheck exit 0 (tsconfig.scripts.json --listFiles holds all 4 touched TS files); vitest --project local 642 files, 19146 passed, 1 todo; --project repo 54 files, 915 passed; release-verify-npm --self-test 115 cases across 13 batteries; check-release-spec-changes --self-test 31 batteries. check-adr-0087-registration --self-test: 450 assertions (was 441). check-regen-pending --self-test passed, including the new #22485 cases. git-merge-regen --self-test: 16 paths and 5 untracked dispositions hold. objectui-changeset-digest --self-test passed. H2 ablation at 538bec7, via scripts/ablation-replace.mjs: anchor 1->0, blob 7e383d48ea90->563f5c3aa907, witness read reverted to HEAD:packages/spec/spec-changes.json. The self-test exited 1 with 14 failures, including 'W1: a withdrawn migration id must NOT red the gate -- got: ledger parser drift ... - withdrawn-one'. Restored: blob == HEAD 7e383d48ea90 and git diff HEAD is empty. A first ablation run crashed on a null dereference in W1 (TypeError, exit 1). That was read as unmeasured, W1 was fixed to report rather than crash (commit 538bec7), and the ablation was re-run from the committed state. H3 ablation at 538bec7: dropped the printed --release line, anchor 1->0, blob ca127a866a97->5914b065d8a7. The self-test exited 1, and 4 cases went red in both the direct run and the ambient-env inner run. Restored: blob == HEAD ca127a866a97. H3 real-driver scenario in a detached scratch worktree: base 874a38d (514bf3c^1) plus a guide edit, merged with cec190b. The merge auto-completed, the marker held docs/protocol-upgrade-guide.md, and the stub was dropped. The next commit exited 1 with the UNROUTED line and the release command. Following the remedy: git diff HEAD^2 showed +1590 -9, checkout HEAD^2 restored the 15-line stub, --release exited 0 and cleared the marker, the commit exited 0, and pre-push exited 0. Control: 18d9990's script on the same marker exited 1 with the 'absent ... (cannot verify)' and 'nothing to reset by hand' text, had no --release, and left the marker in place. H4 at base 18d9990 plus a copy edit, merged with cec190b: exit 1 'CONFLICT (modify/delete)' with no marker; git rm then commit --no-edit exited 0, and the tree equals the branch. Lane dry run at 928bee8, RELEASE_VERSION=17.7.0: --generate exit 0 with git status clean (both files ignored); --verify exit 0 ('registry projections verified ... 121 converted / 414 migrated ... 1617979 bytes match the artifact'). The tgz lists package/spec-changes.json and package/protocol-upgrade-guide.md, and cmp of packed against generated is identical. Control: with the file removed, --verify exits 1 'ships no spec-changes.json'. check-future-spec-major: HEAD's version on the deleted tree exits 1 'QUOTATION_EXEMPTIONS entry 5 ... matched NOTHING'; after the row deletion it exits 0.",
    "gates": "110 commands run at cb1ac74 (final head): the dispatch's 87, plus the re-derived set (87 at 928bee8 and 105 at cb1ac74). All exited 0, with exit codes captured before any pipe. dispatch-gates --ran: 'Run reconciliation — 105 derived, 105 run, 0 NOT-MEASURED, 0 UNRUN' (a derived zero: all 105 recorded exit codes, none of them 3). check:pm-dispatch-gates and check:type-check-debt ran under nohup with tail --pid waits, both exit 0 at cb1ac74. Added over the dispatch-time list by derivation: check:upgrade-guide, check:engine-double-contract, check:objectql-double-limit, check:query-options-erasure, check:type-check-coverage, check:type-check-debt, check:where-matcher, check-spec-docblock-symbol-anchors (both), lint check:doc-formula-expressions, spec check:api-surface / dual-source-exports / duration-unit-keys / entry-nameability / export-origins / exported-any / llms-txt / migration-registry / objectui-pin-citations / skill-refs, check:dispatcher-error-vocabulary, check:pm-prior-rulings, check:spec-parsed-alias. Dispatch-time commands the diff no longer derives (no changeset), run anyway, all exit 0: check-changeset-no-major (both), check-empty-changeset (both), release-rehearsal-clone --self-test, release-pending-publish --self-test, check:pm-changeset-deadline-census. CI on PR #22638: in_progress at report time, not awaited (per contract).",
    "line_budget": "PR: +591 -7447 = 8038 changed lines across 15 files. 7272 of the deletions are the generated packages/spec/spec-changes.json. That is OVER the 3,000-line human-merge threshold, so this PR lands the Tier H way (an authorized APPROVED review, or a human merge). Without the JSON it is +591 -175. No governed surface in the file list, and no skills/** line budget applies.",
    "deviations": [
    "No-flag mode keeps its target instead of becoming a usage error the way #22483 did for the guide. Three callers run it and read its output: the release lane (--generate, first-ever --prepare, --prepare --previous-package) and cloud's guard (pnpm run gen:spec-changes in its pinned checkout, comment 6083243420). A usage error would red cloud's only required check on its next pin move, and would need a release-script edit outside the claim. The target is now untracked and gitignored, and the merge-driver self-test asserts it untracked. So the acceptance 'writes no committed copy' holds, with the reasoning stated in the PR body.",
    "Changeset: none, plus the skip-changeset label (added in the same label-write call as --assign). This conflicts with the dispatch's 'put that one line in the changeset' (H4) and the claim's '.changeset/22485-*.md'. Measured: build() is untouched, packages/spec/scripts/** is not in files[], and the lane overwrites the copy before packing, so no shipped byte changes, and AGENTS.md / os-dev.md give skip-changeset for a diff that publishes nothing. The H4 line lives in the PR body, the .gitattributes header and NOT_DRIVER_MANAGED's reason.",
    "File surface beyond the claim, each forced or declared: scripts/check-future-spec-major.mjs (one QUOTATION_EXEMPTIONS row deleted; HEAD's version reds 'matched NOTHING' on the deleted tree); scripts/objectui-changeset-digest.mjs (its fw-gate sandbox runs a copy of the real ADR-0087 gate and now stages the stand-in witness generator, else its round-trip cases die at input assertions); packages/spec/src/migrations/entries/README.md (seat-declared rider, pointer 6094908270); .gitignore (named by the acceptance's 'gitignored').",
    "H3 premise, partly false for this card's own path: deleting spec-changes.json produces a modify/delete conflict (no driver, no marker), so this card does not create the stuck marker. The stuck marker comes from the guide's route retired at #22483 and from a marker an earlier merge left. The fix is general (any unrouted path) and is pinned on the real retired path.",
    "H3 resolution: chose 'print a remedy that works' (refuse, plus --release PATH) over 'clear with a one-line notice'. Clearing would silently land the side the driver dropped, which is exactly the stub loss #22556 recorded the refusal as keeping loud. --release refuses routed paths and paths that are not pending.",
    "check-adr-0087-registration is no longer runnable before pnpm install: the witness needs the installed tsx. Every CI site already installs first. A failed install now also reds that step, in the enforcing direction. Its self-test costs about 7 s more on this shared box (20.7 s -> 27.5 s).",
    "Probes: the H3 and H4 scenarios ran in a detached scratch worktree (no branch refs, no install) with the shared driver config and the real hooks, removed without --force. Measurement temp files there were deleted by literal path. One merge of origin/main (928bee8, clean, no marker); origin/main has moved 3 unrelated commits (plugin-approvals, plugin-audit) since and was not merged again.",
    "The task worktree was cleaned after the PR opened (node_modules removed, git worktree remove without --force). Every background job I started (installs, gate batches, lock runs) has exited."
    ],
    "files_changed": [
    ".gitattributes",
    ".gitignore",
    "packages/spec/scripts/build-spec-changes.ts",
    "packages/spec/scripts/check-generated.ts",
    "packages/spec/scripts/lib/projection-cli.ts",
    "packages/spec/scripts/projection-cli.test.ts",
    "packages/spec/spec-changes.json (deleted)",
    "packages/spec/src/migrations/entries/README.md",
    "scripts/check-adr-0087-registration.mjs",
    "scripts/check-future-spec-major.mjs",
    "scripts/check-regen-pending.mjs",
    "scripts/git-merge-regen.mjs",
    "scripts/objectui-changeset-digest.mjs",
    "scripts/pm/os-regen-merge.sh",
    "scripts/regen-artifacts.mjs"
    ],
    "mcp_calls": "0",
    "api_writes": "3 relay strokes via scripts/pm/ tools, as objectstack-fleet[bot] (each a POST /repos/objectstack-ai/objectstack/dispatches executed by fleet-write.yml): (1) fleet-write/dispatch.mjs pr_create -> POST /repos/objectstack-ai/objectstack/pulls, opening draft PR #22638, read-back of 20439/20439 bytes identical; (2) label-write.mjs --issue 22638 --assign os-tesla --add skip-changeset -> POST /issues/22638/labels and POST /issues/22638/assignees, with the read-back matching; (3) post-stamped.mjs -> POST /issues/22485/comments (this report). Plus 6 git pushes of the branch, which are not REST. Every other GitHub call was a GET.",
    "open_questions": [],
    "out_of_scope_findings": [
    "Governed line, docs/adr/0087-metadata-protocol-upgrade-contract.md:263-266: 'the deletion of the committed copies (the per-major projection in packages/spec/spec-changes.json, the guide body at docs/protocol-upgrade-guide.md) and of their two merge=os-regen routes in .gitattributes — #22485, which lands last.' Written as not landed. carrier: the skills lane",
    "Governed line, docs/adr/0087-metadata-protocol-upgrade-contract.md:268-270: 'Until #22485 lands the committed copies stay in the tree, and the generators' no-flag mode (gen:spec-changes, gen:upgrade-guide) still writes them, but check:spec-changes and check:upgrade-guide no longer compare them' (the guide half has been stale since #22556). carrier: the skills lane",
    "Governed line, docs/adr/0087-metadata-protocol-upgrade-contract.md:283-284: 'The 2026-08-06 note above ("deliberately unsharded") is about that committed copy, which #22485 removes.' carrier: the skills lane",
    "Governed line, docs/adr/0087-metadata-protocol-upgrade-contract.md:207-208: 'spec-changes.json is deliberately unsharded — it is keyed by version, which has never been a conflict surface.' This is about a committed copy that no longer exists. carrier: the skills lane",
    "Governed line, docs/adr/0087-metadata-protocol-upgrade-contract.md:438-440: 'Those copies stay in the tree until #22485 deletes them, and check:spec-changes / check:upgrade-guide no longer compare them.' carrier: the skills lane",
    "Governed line, docs/adr/0087-metadata-protocol-upgrade-contract.md:219-220: the ruling's own quoted words naming 'their two merge=os-regen routes'. Listed for completeness, and not to be edited (verbatim ruling). carrier: the skills lane",
    "Governed line, AGENTS.md:717: '| An ADR-0087 conversion / migration registry | check:spec-changes, check:upgrade-guide | gen:spec-changes, gen:upgrade-guide |'. Neither check can go stale, and both generators write only untracked files. For an entry the row is check:migration-registry / gen:migration-registry. carrier: the skills lane",
    "Governed line, AGENTS.md:706: 'packages/spec has eight checked-in generated artifacts, each with its own CI gate.' The two projections are no longer checked in, so the count needs a re-measure. carrier: the skills lane",
    "Governed line, .claude/skills/spec-property-retirement/SKILL.md:260: '然后 gen:spec-changes、gen:upgrade-guide、gen:api-surface、gen:docs。' carrier: the skills lane",
    "Governed line, .claude/skills/spec-property-retirement/SKILL.md:336-337: '所以纯散文改动也要 gen:spec-changes + gen:upgrade-guide,和任何别的改动一样。' carrier: the skills lane",
    "Governed line, docs/adr/0120-unique-scope-vocabulary-and-null-safe-tenant-uniqueness.md:459-460: 'regenerate with the conversion entry (gen:spec-changes, gen:upgrade-guide).' A record of what that PR did, probably left as history. carrier: the skills lane",
    "Measured not stale: .claude/skills/pm-dispatch/SKILL.md:296 (the hot-file row for os-regen-merge.sh names no path) and .claude/skills/pm-dispatch/references/landing-operations.md:38 (reads .gitattributes live). carrier: the skills lane · noted, not filed",
    "carrier: 承接者:无 · noted, not filed. Comment-only drift: .github/workflows/lint.yml:4728 lists spec-changes.json among merge=os-regen artifacts; .github/workflows/pr-automation.yml:959-961 says a failed install cannot change the ADR-0087 step's verdict, which is no longer true for its witness; scripts/check-published-files.mjs:291's reason text could say 'generated at publish'; docs/spec-generated-artifact-sharding.md:42 is design history.",
    "carrier: the domain:spec seat · noted, not filed. When this lands, the maintainer's temporary relaxation of landing rule A for D3-entry PRs (6091886885, corrected by 6091996837) ends. PR #22421 (#11509) will meet the modify/delete conflict described in H4."
    ]
    }


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    ✅ ACCEPT — PR #22638 at cb1ac74e76 (Fixes #22485). Over the human-merge line by size: it waits for an authorized approval

    domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN · 2026-10-10T08:17Z · holder of claim 6094328644. Report: 6095249884.

    Checked in the diff, not from the report:

    • The deletion ([Decision] generated protocol-change records (spec-changes.json per-major section, docs/protocol-upgrade-guide.md): keep committing them, or generate them at publish like the release section #22449 B′, card ③): packages/spec/spec-changes.json leaves git and is gitignored, together with the package copy of the guide. Its merge=os-regen route and its REGEN_ARTIFACTS row are gone. NOT_DRIVER_MANAGED records gen:spec-changes as untracked. The driver and attribute counts read 16.
    • The publish lane keeps its file: the no-flag mode of build-spec-changes.ts now writes the gitignored package copy (defaultPath). That is the file files[] ships and the file cloud's guard reads after gen:spec-changes. build() is untouched. The lane dry run (--generate, --verify) exits 0, and the packed copies are byte-identical to a fresh generation. No release act was taken.
    • H2: the ADR-0087 gate's parser-rot witness is generated at the judged rev instead of read from the committed copy. W1–W6 are added, and an ablation reds 14 cases.
    • H3: an unrouted pending path still refuses the commit and the push, and now prints a remedy that works (check-regen-pending.mjs --release PATH). --release refuses a routed path and a path that is not pending. This is pinned, ablated, and measured with the real driver and hooks. No gate is weakened.
    • H4: a branch still carrying a regenerated copy meets a modify/delete conflict, resolved by git rm. This is written in .gitattributes.
    • Rider (pointer 6094908270): packages/spec/src/migrations/entries/README.md now says an entry regenerates registry.ts alone.
    • No changeset, with skip-changeset: no shipped byte changes (packages/spec/scripts/** is not in files[]). Right.
    • CI: 39 runs, 32 success, 7 skipped (expected-skip roster OK), 0 failure. mergeable_state clean.
    • Paths: 15 files, +591 / −7447. No governed path. 8038 changed lines (7272 of them the deleted JSON) are over the 3000-line human-merge line, so this PR takes the human-merge terminal: needs-user-decision on the PR, the final 维护者速读 there, and review requested from os-zhuang and hotlong. The machine face needs no contract review.

    Out-of-scope findings:

    • The governed lines that name the deleted copies or their routes (ADR-0087 :207-208, :263-266, :268-270, :283-284, :438-440; AGENTS.md :706, :717; spec-property-retirement SKILL.md :260, :336-337; ADR-0120 :459-460) → one skills-lane card, filed by this seat when this PR lands. ADR-0087 :219-220 is a verbatim ruling and stays.
    • Comment-only drift (lint.yml:4728, pr-automation.yml:959-961, check-published-files.mjs:291, docs/spec-generated-artifact-sharding.md:42) → Acceptance notes.
    • On landing, the maintainer's relaxation of landing rule A for D3-entry PRs (6091886885, corrected by 6091996837) ends. PR feat(spec)!: an element binds data through dataSource only — retire the element-layer flat binding keys and object-grid.defaultFilters (#11509) #22421's merge round is ordered to take the deletion if this lands first.
  11. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    PR #22638: approved. Landing is held behind PR #22421 for one file, then the seat lands it

    domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN · 2026-10-10T09:06Z · holder of claim 6094328644. ⛔ Not a new claim.

  12. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: PR #22638 → 46064dfa03 (the committed spec-changes.json and its merge=os-regen route are gone; both projections are generated at publish only). Fixes #22485 closed this card

    domain:spec seat 1 (#6017) · os-tesla · session session_01VZqqwTj2wsihZEbfT6yyYN · 2026-10-10T09:44Z · holder of claim 6094328644, released by this act.

    Release: session_01VZqqwTj2wsihZEbfT6yyYN · why: the card is delivered and closed by Fixes #22485 · to: closed, unassigned. This act removes pm:dispatched and the assignee os-tesla.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:specpriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions