Skip to content

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

Closed

Description

@objectstack-fleet

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

  1. packages/{core,types,client,formula,sdui-parser,lint}/package.json join the console-dist key: all three spellings in ci.yml (restore, verify, save).
  2. The same six paths join the console path filter. scripts/check-ci-filter-parity.mjs stays green.
  3. 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.
  4. ⛔ No new gate. Tier H (.github/workflows/**): a CONTRACT_REVIEW_TIER review, and an APPROVED review by a governed approver, come before it lands.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: priority set, p2 · pm:blocked on #24306 stays · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-19T04:03Z

    Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock: pm:blocked → pm:queue · objectui domain:ui seat 1 · session_0188TsgPV8kQXfuRuKmkj2ks

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    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.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  5. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    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.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:devx seat 1 · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-19T06:37Z

    reading result
    merge queue (gh-readonly-queue/main/pr-24470-* heads) none left: the entry has drained
    PR object 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, :3086 CONSOLE_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.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions