You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci(console): the console-dist cache key and the console path filter name only spec's manifest, so a dependency change to core, types, client, formula, sdui-parser or lint is first refused at the RC cut, not on the PR #24441
Unblocked: #24306 closed completed when PR #24440 merged as 2be3d7a5e6; re-derived with no new blocker.
Filing gate: an open question answered in an ACCEPT. This is Q1 of the dev's report on #24306, answered A in the seat's ACCEPT 6258892517 on PR #24440. Filed by objectui domain:ui seat 1 (session_0188TsgPV8kQXfuRuKmkj2ks). ⛔ Not a claim.
Why
After #24306 (PR #24440), scripts/build-console.sh installs all seven @objectstack/* packages objectui overrides (spec, core, types, client, formula, sdui-parser, lint) from this tree, through objectui's scripts/objectstack-pin.mjs with OBJECTSTACK_ROOT. That script refuses when one of the seven declares a runtime dependency that objectui's lockfile does not record, or the other way round. It refuses by design: objectui has to move its .objectstack-sha first.
ci.yml's console-dist cache key and its console path filter carry packages/spec/package.json, but not the other six manifests. So:
while the key hits, the Console Pin Gate never runs the pin script;
a PR that changes only packages/core/package.json does not trip the console filter.
The refusal first fires at cut-rc.yml's unconditional pnpm objectui:build, or in the publish step's pnpm run release. Those are release lanes, and the fix is cross-repo.
Done when
packages/{core,types,client,formula,sdui-parser,lint}/package.json join the console-dist key: all three spellings in ci.yml (restore, verify, save).
The same six paths join the console path filter. scripts/check-ci-filter-parity.mjs stays green.
All seven are in changesets fixed group 0 with spec, whose manifest is already in the key. So a Version Packages merge moves all seven together and causes one rebuild, not seven. State the measured effect on the key's hit rate.
⛔ No new gate. Tier H (.github/workflows/**): a CONTRACT_REVIEW_TIER review, and an APPROVED review by a governed approver, come before it lands.
Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
No priority:* was set at filing. Triage grades it now.
Fresh read on origin/main: the console-dist key (.github/workflows/ci.yml:3011) hashes packages/spec/package.json and packages/spec/tsup.config.ts, and none of the other six manifests. The premise holds.
p2. Nothing is red today. The cost is that a manifest change to one of the six is refused first at cut-rc.yml, on a release lane. Tier H (ci.yml), as the card says.
Claim: PM loop round 2
Session: session_01FM29ZqLTrnPNXxijioZwMp
Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-24441-console-dist-key-manifests
Worktree: objectstack-issue-24441
Domain: domain:devx
Seat: domain:devx#1
File surface: .github/workflows/ci.yml, the console-dist cache key (its restore, verify and save spellings) and the console path filter only; scripts/check-ci-filter-parity.mjs only if its own reading requires it (stop on breach; explain in the report). .github/workflows/** is Tier H governed: the PR stays draft for an authorised approval.
Container & model: S, near-mechanical (three key spellings and one filter), with a measured hit-rate statement, mode:subagent, model: opus (--tier: no path-derived mandate)
Clause-②: no
Responsibility: n/a — not a defect card (a CI cache key and filter that name one of seven inputs)
Thread-read: 6259831962
Serial constraints cleared: none — no open PR touches .github/workflows/ci.yml, scripts/check-ci-filter-parity.mjs or .changeset/config.json (read at 2026-10-19T05:31Z). #24424 (this seat, in flight) edits spec-shape-gate.yml, a different file.
{
"issue": 24441,
"status": "done",
"branch": "claude/issue-24441-console-dist-key-manifests",
"pr": "https://github.com/objectstack-ai/objectstack/pull/24470",
"session": "session_01FM29ZqLTrnPNXxijioZwMp — subagent run; the parent's harness-stamped id (Claude-Session trailer on 33a410f07)",
"premise_still_valid": true,
"summary": "The six manifests packages/{core,types,client,formula,sdui-parser,lint}/package.json are added to the console-dist cache key and to the `console` path filter. The key gains them in all three spellings: restore key (ci.yml:3011 at BASE), verify env CONSOLE_DIST_CACHE_KEY (:3075) and save key (:3088). The three stay byte-identical: one distinct string, 3 occurrences. The filter gains the same six rows, and two comments say what the six are and what they cost. Files changed: .github/workflows/ci.yml only, +15/-4 = 19 lines (budget ~20). No script edit, no new gate, label skip-changeset. Draft PR #24470, assignee os-warren, Tier H, left draft. PM hypotheses, each measured. H1 holds: the three spellings are at :3011/:3075/:3088. H2 holds with one caveat. build-console.sh derives the set at run time from objectui root package.json pnpm.overrides, the names starting @objectstack/. At objectui origin/main 29c19cc1a6 that is exactly client, core, formula, lint, sdui-parser, spec and types. But the pin this tree carries (.objectui-sha 0707b4ae37) has no .objectstack-sha and no @objectstack override, so the OBJECTSTACK_ROOT block does not run at today's pin. .objectstack-sha arrived in objectui at 749ed76 (objectui#12963), 34 commits after the pin. So the change takes effect from the first pin bump to that commit or later. H3 holds: .changeset/config.json has one fixed group of 73 packages, and all seven are in group 0. Hit-rate effect, over a window git-history.mjs proved (--since=2026-09-19 --until=2026-10-19 --ref=ec951e29e, first-parent, floor 2026-09-05, no fetch): 2727 commits. 54 moved an input the key already had. 11 moved one of the six, and 10 of those also moved packages/spec/package.json (7 Version Packages merges and 3 dependency bumps). 1 is new: 54d32e514, a new exports entry in packages/lint/package.json. So the key moves on 55 commits instead of 54, +1.9%. H4 holds: check-ci-filter-parity is green. Deviations: (1) four Build Core dist guards exited 3 PREREQUISITE NOT MET (no full pnpm build) and are declared NOT MEASURED locally; CI Build Core runs them on the PR. (2) No ablation or reverse verification: a workflow-only diff (role file: config, scripts and workflows are not ablated). (3) The commit trailer and the PR footer use the AGENTS.md model-free forms, not the harness reminder's model-named Co-Authored-By. (4) Hit rate was measured over a proven 30-day window rather than the last N merges. Three acceptance notes, no carrier, are in the PR body: the six paths are a hand copy of objectui's run-time override list; the other six tsup entry lists are not keyed; two older job comments are now less exact.",
"tests": "Run at head 33a410f07 (git rev-parse --short HEAD), after the final commit. node scripts/check-ci-filter-parity.mjs: exit 0. Before: \"all 9 `console` entr(ies) are literal paths; 6 are build inputs the console dist key hashes and 3 are declared guards; the key is spelled one way in all 3 place(s)\". After: \"all 15 `console` entr(ies) are literal paths; 12 are build inputs the console dist key hashes and 3 are declared guards; the key is spelled one way in all 3 place(s) the `console-pin` job uses it.\" node scripts/check-ci-filter-parity.mjs --self-test: exit 0, \"131 assertions\"; its report-path fixture anchor line packages/spec/tsup.config.ts is unchanged. YAML parse of ci.yml (yaml package): 10 jobs. Key identity: grep of the key expression in ci.yml gives 1 distinct string with count 3. No package touched, so there is no build closure (step 1) and no package test or typecheck (step 2); test:repo was not touched and is declared to CI. No ablation: workflow-only diff.",
"gates": "Local subset: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, exit 0, run at 33a410f07 against merge base ec951e29e. 1 path, 19 changed lines, 49 commands. Each command was run with its exit captured before any pipe. 45 exit 0: check-aggregator-roster (+self-test), check-ci-filter-parity (+self-test), check-closing-keyword-parity (+self-test), check-comment-mask-corpus, check-dts-emitted --self-test, check-position-name-fold-loaders (+self-test), check-self-test-wired (+self-test), check-self-test-workflow-commands (+self-test), check-step-collectors (+self-test), check-whole-set-label-write (+self-test), ci/scheduled-full-run --self-test, docs-audit/check-drift-comment, pm/ci-failure --self-test, and these pnpm check scripts: agent-test-spelling, console-injection, console-sha, cross-package-test-inputs, declared-population-live, driver-memory-census, gitlink-declared, node-version, nul-bytes, pm-dispatch-gates, pm-expected-skips, pm-governed-merges, pm-post-stamped, pm-record-recognisers, pnpm-acquisition, pnpm-filter-targets, refd-timer-probe, required-contexts, shard-attestation, stall-guard-budget, stall-guard-headroom, watch-hint-literal, workflow-status-functions, workflow-step-name-quoting. console-injection and console-sha passed vacuously: there is no local console dist. 4 exit 3 PREREQUISITE NOT MET, i.e. NOT MEASURED, declared narrowing: check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content. --ran reconciliation (record as \"command :: exit code\"): exit 0, \"49 derived famil(ies) accounted for — 45 run, 4 NOT-MEASURED (4 DERIVED from a recorded exit 3)\". Roster families under .github/workflows, outside the derivation: check-platform-checklist-watchdog (+self-test), select-shard-timings-run --self-test, pr-labels --self-test and release-verify-npm --self-test, all exit 0. Workflow-valued families were not run: check-required-contexts --verify-required-set, check-shard-attestation emit/verify, check-test-completeness. CI check-runs on 33a410f07, read once after pr_create, 40 runs. success: filter, Check Changeset, Check PR Size, Check Documentation Links, The card this PR closes must claim this branch, No other open PR may claim the same issue, No other open PR may claim the same single-writer path, Part-of PR must not also close its card. in_progress: Build Core, Test Core 1-6/6, Governed Surface Queue Guard, Lint (CI release & engine gates, ESLint, PM dispatch-gates, docs & code guards, repo & tooling gates, three scoped lanes), Type Check (consumer gates, debt ledger, source gates, workspace), Build Docs, Auto Label, Dogfood Regression Gate. skipped: Console Pin Gate, Dogfood shards, Dogfood Verify CLI, Temporal Conformance, Packed-tarball smoke (full battery or opt-in only). Console Pin Gate first runs on main's push battery after the merge, so a cold build-console.sh is NOT MEASURED.",
"mcp_calls": "0 — no MCP GitHub tool called",
"api_writes": "2 relay strokes, each POST /repos/objectstack-ai/objectstack/dispatches executed by fleet-write.yml as objectstack-fleet[bot]. (1) pr_create (run 39207202749, success): POST /repos/objectstack-ai/objectstack/pulls (draft), POST /repos/objectstack-ai/objectstack/issues/24470/assignees [os-warren], POST /repos/objectstack-ai/objectstack/issues/24470/labels [skip-changeset]. Read-back: body 8662 bytes identical, assignee os-warren; a REST read shows labels size/s and skip-changeset, draft true. (2) this os-dev-report comment via scripts/pm/post-stamped.mjs: POST /repos/objectstack-ai/objectstack/issues/24441/comments. Plus 2 git pushes (not REST).",
"open_questions": [],
"out_of_scope_findings": []
}
ACCEPT → PR #24470 comment 6260842290 · domain:devx seat 1 · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-19T06:13Z. Tier H: the PR stays draft, carries needs-user-decision, and has review requested from os-zhuang and hotlong. On an authorised APPROVED review this seat lands it; the card stays pm:dispatched until then.
PR #24470 merged at 2026-10-19T06:36:04Z, approved by os-zhuang (Tier H)
origin/main at e11ae4b6b0, by content
squash commit e11ae4b6b (PR #24470); the three console-dist key spellings in .github/workflows/ci.yml (:3022 restore, :3086CONSOLE_DIST_CACHE_KEY, :3099 save) are byte-identical and each hashes packages/{core,types,client,formula,sdui-parser,lint}/package.json after packages/spec/tsup.config.ts; the console path filter names the same six manifests
State change: PR #24470 closed this card through Fixes #24441 (completed); pm:dispatched comes off in this act.
Activity
objectstack-fleet commentedon Oct 19, 2026
Triage: priority set, p2 ·
pm:blockedon #24306 stays · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-19T04:03ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
priority:*was set at filing. Triage grades it now.origin/main: theconsole-distkey (.github/workflows/ci.yml:3011) hashespackages/spec/package.jsonandpackages/spec/tsup.config.ts, and none of the other six manifests. The premise holds.cut-rc.yml, on a release lane. Tier H (ci.yml), as the card says.domain:devxis vacant (seat post [PM seat] domain:devx @ objectstack — 🟢 os-warren · session_01FM29ZqLTrnPNXxijioZwMp #6023), so this card waits on tooling(build-console): when the console build installs objectui at.objectui-sha, objectui's@objectstack/*resolve to this framework tree, not objectui's own.objectstack-shabuild (ruling B on objectstack-ai/objectui#12955, step 3) #24306's landing and on a successor.Generated by Claude Code
objectstack-fleet commentedon Oct 19, 2026
Unlock:
pm:blocked→pm:queue· objectuidomain:uiseat 1 ·session_0188TsgPV8kQXfuRuKmkj2ks⛔ Not a claim.
.objectui-sha, objectui's@objectstack/*resolve to this framework tree, not objectui's own.objectstack-shabuild (ruling B on objectstack-ai/objectui#12955, step 3) #24306 closedcompletedwhen PR build-console: objectui's @objectstack/* install from this framework tree when the pin carries .objectstack-sha (ruling B on objectstack-ai/objectui#12955) #24440 merged as2be3d7a5e6.scripts/build-console.shnow carries the.objectstack-shabranch whose refusal this card moves earlier.ci.yml's console-dist key or theconsolefilter. Tier H stands.Blocked-by:line in the body is replaced with anUnblocked:line in the same act.Generated by Claude Code
objectstack-fleet commentedon Oct 19, 2026
Claim: PM loop round 2
Session:
session_01FM29ZqLTrnPNXxijioZwMpAccount:
os-warren(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-24441-console-dist-key-manifestsWorktree:
objectstack-issue-24441Domain:
domain:devxSeat:
domain:devx#1File surface:
.github/workflows/ci.yml, theconsole-distcache key (its restore, verify and save spellings) and theconsolepath filter only;scripts/check-ci-filter-parity.mjsonly if its own reading requires it (stop on breach; explain in the report)..github/workflows/**is Tier H governed: the PR stays draft for an authorised approval.Container & model:
S, near-mechanical (three key spellings and one filter), with a measured hit-rate statement,mode:subagent,model: opus(--tier: no path-derived mandate)Clause-②: no
Responsibility:
n/a — not a defect card(a CI cache key and filter that name one of seven inputs)Thread-read: 6259831962
Serial constraints cleared: none — no open PR touches
.github/workflows/ci.yml,scripts/check-ci-filter-parity.mjsor.changeset/config.json(read at 2026-10-19T05:31Z). #24424 (this seat, in flight) editsspec-shape-gate.yml, a different file.Generated by Claude Code
objectstack-fleet commentedon Oct 19, 2026
os-dev-report
{ "issue": 24441, "status": "done", "branch": "claude/issue-24441-console-dist-key-manifests", "pr": "https://github.com/objectstack-ai/objectstack/pull/24470", "session": "session_01FM29ZqLTrnPNXxijioZwMp — subagent run; the parent's harness-stamped id (Claude-Session trailer on 33a410f07)", "premise_still_valid": true, "summary": "The six manifests packages/{core,types,client,formula,sdui-parser,lint}/package.json are added to the console-dist cache key and to the `console` path filter. The key gains them in all three spellings: restore key (ci.yml:3011 at BASE), verify env CONSOLE_DIST_CACHE_KEY (:3075) and save key (:3088). The three stay byte-identical: one distinct string, 3 occurrences. The filter gains the same six rows, and two comments say what the six are and what they cost. Files changed: .github/workflows/ci.yml only, +15/-4 = 19 lines (budget ~20). No script edit, no new gate, label skip-changeset. Draft PR #24470, assignee os-warren, Tier H, left draft. PM hypotheses, each measured. H1 holds: the three spellings are at :3011/:3075/:3088. H2 holds with one caveat. build-console.sh derives the set at run time from objectui root package.json pnpm.overrides, the names starting @objectstack/. At objectui origin/main 29c19cc1a6 that is exactly client, core, formula, lint, sdui-parser, spec and types. But the pin this tree carries (.objectui-sha 0707b4ae37) has no .objectstack-sha and no @objectstack override, so the OBJECTSTACK_ROOT block does not run at today's pin. .objectstack-sha arrived in objectui at 749ed76 (objectui#12963), 34 commits after the pin. So the change takes effect from the first pin bump to that commit or later. H3 holds: .changeset/config.json has one fixed group of 73 packages, and all seven are in group 0. Hit-rate effect, over a window git-history.mjs proved (--since=2026-09-19 --until=2026-10-19 --ref=ec951e29e, first-parent, floor 2026-09-05, no fetch): 2727 commits. 54 moved an input the key already had. 11 moved one of the six, and 10 of those also moved packages/spec/package.json (7 Version Packages merges and 3 dependency bumps). 1 is new: 54d32e514, a new exports entry in packages/lint/package.json. So the key moves on 55 commits instead of 54, +1.9%. H4 holds: check-ci-filter-parity is green. Deviations: (1) four Build Core dist guards exited 3 PREREQUISITE NOT MET (no full pnpm build) and are declared NOT MEASURED locally; CI Build Core runs them on the PR. (2) No ablation or reverse verification: a workflow-only diff (role file: config, scripts and workflows are not ablated). (3) The commit trailer and the PR footer use the AGENTS.md model-free forms, not the harness reminder's model-named Co-Authored-By. (4) Hit rate was measured over a proven 30-day window rather than the last N merges. Three acceptance notes, no carrier, are in the PR body: the six paths are a hand copy of objectui's run-time override list; the other six tsup entry lists are not keyed; two older job comments are now less exact.", "tests": "Run at head 33a410f07 (git rev-parse --short HEAD), after the final commit. node scripts/check-ci-filter-parity.mjs: exit 0. Before: \"all 9 `console` entr(ies) are literal paths; 6 are build inputs the console dist key hashes and 3 are declared guards; the key is spelled one way in all 3 place(s)\". After: \"all 15 `console` entr(ies) are literal paths; 12 are build inputs the console dist key hashes and 3 are declared guards; the key is spelled one way in all 3 place(s) the `console-pin` job uses it.\" node scripts/check-ci-filter-parity.mjs --self-test: exit 0, \"131 assertions\"; its report-path fixture anchor line packages/spec/tsup.config.ts is unchanged. YAML parse of ci.yml (yaml package): 10 jobs. Key identity: grep of the key expression in ci.yml gives 1 distinct string with count 3. No package touched, so there is no build closure (step 1) and no package test or typecheck (step 2); test:repo was not touched and is declared to CI. No ablation: workflow-only diff.", "gates": "Local subset: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, exit 0, run at 33a410f07 against merge base ec951e29e. 1 path, 19 changed lines, 49 commands. Each command was run with its exit captured before any pipe. 45 exit 0: check-aggregator-roster (+self-test), check-ci-filter-parity (+self-test), check-closing-keyword-parity (+self-test), check-comment-mask-corpus, check-dts-emitted --self-test, check-position-name-fold-loaders (+self-test), check-self-test-wired (+self-test), check-self-test-workflow-commands (+self-test), check-step-collectors (+self-test), check-whole-set-label-write (+self-test), ci/scheduled-full-run --self-test, docs-audit/check-drift-comment, pm/ci-failure --self-test, and these pnpm check scripts: agent-test-spelling, console-injection, console-sha, cross-package-test-inputs, declared-population-live, driver-memory-census, gitlink-declared, node-version, nul-bytes, pm-dispatch-gates, pm-expected-skips, pm-governed-merges, pm-post-stamped, pm-record-recognisers, pnpm-acquisition, pnpm-filter-targets, refd-timer-probe, required-contexts, shard-attestation, stall-guard-budget, stall-guard-headroom, watch-hint-literal, workflow-status-functions, workflow-step-name-quoting. console-injection and console-sha passed vacuously: there is no local console dist. 4 exit 3 PREREQUISITE NOT MET, i.e. NOT MEASURED, declared narrowing: check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content. --ran reconciliation (record as \"command :: exit code\"): exit 0, \"49 derived famil(ies) accounted for — 45 run, 4 NOT-MEASURED (4 DERIVED from a recorded exit 3)\". Roster families under .github/workflows, outside the derivation: check-platform-checklist-watchdog (+self-test), select-shard-timings-run --self-test, pr-labels --self-test and release-verify-npm --self-test, all exit 0. Workflow-valued families were not run: check-required-contexts --verify-required-set, check-shard-attestation emit/verify, check-test-completeness. CI check-runs on 33a410f07, read once after pr_create, 40 runs. success: filter, Check Changeset, Check PR Size, Check Documentation Links, The card this PR closes must claim this branch, No other open PR may claim the same issue, No other open PR may claim the same single-writer path, Part-of PR must not also close its card. in_progress: Build Core, Test Core 1-6/6, Governed Surface Queue Guard, Lint (CI release & engine gates, ESLint, PM dispatch-gates, docs & code guards, repo & tooling gates, three scoped lanes), Type Check (consumer gates, debt ledger, source gates, workspace), Build Docs, Auto Label, Dogfood Regression Gate. skipped: Console Pin Gate, Dogfood shards, Dogfood Verify CLI, Temporal Conformance, Packed-tarball smoke (full battery or opt-in only). Console Pin Gate first runs on main's push battery after the merge, so a cold build-console.sh is NOT MEASURED.", "mcp_calls": "0 — no MCP GitHub tool called", "api_writes": "2 relay strokes, each POST /repos/objectstack-ai/objectstack/dispatches executed by fleet-write.yml as objectstack-fleet[bot]. (1) pr_create (run 39207202749, success): POST /repos/objectstack-ai/objectstack/pulls (draft), POST /repos/objectstack-ai/objectstack/issues/24470/assignees [os-warren], POST /repos/objectstack-ai/objectstack/issues/24470/labels [skip-changeset]. Read-back: body 8662 bytes identical, assignee os-warren; a REST read shows labels size/s and skip-changeset, draft true. (2) this os-dev-report comment via scripts/pm/post-stamped.mjs: POST /repos/objectstack-ai/objectstack/issues/24441/comments. Plus 2 git pushes (not REST).", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 19, 2026
ACCEPT → PR #24470 comment 6260842290 ·
domain:devxseat 1 ·session_01FM29ZqLTrnPNXxijioZwMp· 2026-10-19T06:13Z. Tier H: the PR stays draft, carriesneeds-user-decision, and has review requested fromos-zhuangandhotlong. On an authorised APPROVED review this seat lands it; the card stayspm:dispatcheduntil then.Generated by Claude Code
objectstack-fleet commentedon Oct 19, 2026
Landed ·
domain:devxseat 1 ·session_01FM29ZqLTrnPNXxijioZwMp· 2026-10-19T06:37Zgh-readonly-queue/main/pr-24470-*heads)os-zhuang(Tier H)origin/mainate11ae4b6b0, by contente11ae4b6b(PR #24470); the threeconsole-distkey spellings in.github/workflows/ci.yml(:3022restore,:3086CONSOLE_DIST_CACHE_KEY,:3099save) are byte-identical and each hashespackages/{core,types,client,formula,sdui-parser,lint}/package.jsonafterpackages/spec/tsup.config.ts; theconsolepath filter names the same six manifestsState change: PR #24470 closed this card through
Fixes #24441(completed);pm:dispatchedcomes off in this act.Generated by Claude Code