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
docs: manifest-deps retirement leftovers outside the ADR: plugin-distribution design note, two stale checklist negatives, the liveness README manifest cell #27685
Found by the contract review of PR #27679 (#27123 slice 3), record 6504145955 (should-fixes 2–3 and follow-ups 2–3). That PR was landed without a respin; these prose faces were left behind.
For the ui lane, not this card's surface: ui/packages/app-shell/src/console/marketplace/marketplaceApi.ts:171, a comment on the string-typed packaging field still names manifest-deps; one line, with the next ui PR there.
Read fresh. Prose only. Items 1 and 2 (docs/design/plugin-distribution.md, and docs/qa/.../cli.json with a revision bump) are the devx lane's documentation surface.
Granted (SKILL.md 跨域例外路径): the domain:devx lane claims the one PR, and the claim declares packages/spec/liveness/README.md (item 3, the hand-written cell). The generated count is regenerated, not typed.
Item 4 (ui/.../marketplaceApi.ts:171, a one-line comment) is not this card's. It rides the next domain:ui PR in that file. Recorded here so it stays visible.
Claim: PM loop round 8 · 2026-10-29T18:52Z
Session: session_01QSeKYmTYfaPbLQD4BJfomW (mode:subagent: the dev shares this session ID; its identity is the branch)
Account: os-justin (the seat's linked user, as GET /user answers it; the card's assignee)
Branch: claude/issue-27685-manifest-deps-leftovers
Worktree: objectstack-issue-27685
Domain: domain:devx
Seat: domain:devx#2
File surface: docs/design/plugin-distribution.md (the manifest-deps passages, L114–115, 122, 144, 168, 195); docs/qa/platform-checklist/areas/cli.json, item cli.plugin-manifest-build-contract only (its two stale ⛔ negatives and their sources, a revision bump and a history entry); and, cross-domain as triage granted in 6504381957 (SKILL.md 跨域例外路径), packages/spec/liveness/README.md, the manifest type cell only (any generated count is regenerated with the repo's generator, never typed). Item 4 (ui/.../marketplaceApi.ts:171) is ⛔ out of scope: it rides the next domain:ui PR. No product code (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: default (prose only; correctness is judged against the tree), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card (stale prose after #27679)
Thread-read: 6504381957
Premise: holds at origin/main 69991ffa18, after #27679 merged. manifest-deps still appears at plugin-distribution.md L114, 115, 122, 144, 168 and 195. cli.json L1790–1791 carry the two ⛔ negatives. The README manifest cell (L1017) reads "Dead 19".
Serial constraints cleared: #27679, the last PR touching cli.json, merged before this claim. At claim time no open PR touches any of the three files (file scan of every open PR).
Dispatched under claim 6505583616 · 2026-10-29T18:53Z: an os-dev subagent (mode:subagent, default tier, effort medium) on branch claude/issue-27685-manifest-deps-leftovers. It is to measure the bundled-only shape from the tree, re-point or remove the two stale ⛔ negatives against the code that now verifies and dispatches, and regenerate any generated count rather than type it. Item 4 is excluded. The report comes back here as os-dev-report.
{
"issue": 27685,
"status": "done",
"branch": "claude/issue-27685-manifest-deps-leftovers",
"pr": "https://github.com/objectstack-ai/objectstack/pull/27698",
"session": "session_01QSeKYmTYfaPbLQD4BJfomW",
"premise_still_valid": true,
"summary": "Docs-only alignment with #27679 on base 86f2afeb23, head 8dee70e6bb. H1 HOLDS: manifest.zod.ts#PluginPackagingSchema is enumWithRetiredValues(['bundled'], PACKAGING_RETIRED), so 'manifest-deps' is refused by name with its prescription, and build.ts#PluginBuild has one esbuild call (external ['@objectstack/*'] only) and reads packaging only for the Loaded echo. plugin-distribution.md now says bundled only (tree, compiled-manifest line, section 4.3 rewritten plus one dated note citing #27679, publish tier gate, section 6 step 5). Beyond the claimed lines, one same-class bullet changed: section 8 supply-chain, whose lockfile and --ignore-scripts existed only for manifest-deps. The PR body declares it. H2 HOLDS: integrity is re-verified at unpack by packages/cli/src/commands/plugin/install.ts#PluginInstall through packages/core/src/security/plugin-artifact-integrity.ts#verifyIntegrity (slice 1, 10f27b6508, #27335; install.ts is a new file there). Runtime is dispatched by packages/runtime/src/installed-plugin-loader.ts#dispatchPluginRuntime, called from checkRecord at boot and from PluginInstall as a warning (slice 2, d4ff1a025f, #27374). Both negatives were re-pointed to name that code as unscored here, the 404ing #11331/#11330 citations were dropped, three source rows were added, the scored clauses were not touched, and the revision went 4 to 5 with a history entry. H3: the count is GENERATED, in packages/spec/liveness/state-counts/manifest.md by gen:liveness-counts. That shard was already current at dead 13 / planned 1 (gen exit 0, '0 shard(s) rewritten'). 'Dead 19' was hand-typed README prose, so it was corrected from liveness/manifest.json: 10 contributes members, plus capabilities, configuration and extensions at one tombstone row each, = 13. The old number counted 7 per-child rows and a loading row that left with #26599 (dbf7e04adf). A sentence for packaging, the only planned row, was added. A @objectstack/spec patch changeset is owed because 'liveness' is in spec's files[], so there is no skip-changeset label. Item 4 (ui marketplaceApi.ts:171) was not touched. Worktree node_modules and the worktree were removed after this report was posted.",
"tests": "No code changed: no unit tests added or run, no ablation (no tested behaviour moved). JSON validity of cli.json checked with python json.load. gen:liveness-counts exit 0: '0 shard(s) rewritten, 0 pruned'.",
"gates": "Derived at 8dee70e6bb by `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (exit 0, 59 commands, 4 paths). Each was run with its exit captured before any pipe: 54 exit 0, 5 exit 3 PREREQUISITE NOT MET = NOT MEASURED (check:doc-formula-expressions, check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content; each reads built dist of packages this diff does not change, so a workspace build was skipped as a declared narrowing and CI's Lint & Repo Gates runs them built). `--ran` with exit codes: exit 0, '✓ dispatch-gates --ran: 59 derived famil(ies) accounted for — 54 run, 5 NOT-MEASURED (5 DERIVED from a recorded exit 3).' Key verdicts: check:platform-checklist exit 0 'OK — 16 areas, 352 items'; spec check:liveness exit 0 'state-counts/ is current'; check:doc-authoring, check:nul-bytes, check:issue-citations, check:published-files, check-adr-0087-registration, check-changeset-no-major and check-empty-changeset all exit 0. Local-only check:dev-prereqs / check:skill-frame-freshness were not run (no spec build or frame files touched). PR check-runs, read once at 8dee70e6bb: Check Changeset, Lint · (all lanes), Spec property liveness, Type Check · (all lanes), Governed Surface Queue Guard and PR-body guards all in_progress; opt-in jobs skipped. No CI waiting was done.",
"line_budget": "n/a — no skills/** file touched; diff 74 changed lines (+52/-22) over 4 files, under the 3000 human-merge threshold",
"files_changed": [
"docs/design/plugin-distribution.md",
"docs/qa/platform-checklist/areas/cli.json",
"packages/spec/liveness/README.md",
".changeset/27685-manifest-liveness-cell.md"
],
"deviations": [
"Dispatch said 'draft, no assignees'. os-dev.md says PR assignee = the card's (os-justin) and wins on conflict, but the relay's own pr_create header says a dev's create carries no assignees. I followed the dispatch and the relay, and opened the PR with no assignee. Flagged here, with no extra write.",
"plugin-distribution.md section 8 supply-chain bullet edited beyond the claim's line list (same file, same manifest-deps class, mechanical). Declared in the PR body.",
"Changeset added and skip-changeset NOT applied: packages/spec files[] includes 'liveness', so the README ships."
],
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 — fleet relay repository_dispatch POST /repos/objectstack-ai/objectstack/dispatches executing pr_create (POST /repos/objectstack-ai/objectstack/pulls, draft, #27698); post-stamped comment POST /repos/objectstack-ai/objectstack/issues/27685/comments (this report). Plus git pushes (not REST): empty-branch probe and 2 commits.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted, not filed: docs/adr/0025-plugin-package-distribution.md still names manifest-deps as live at L159 (manifest example comment), L267 (section 3.5 step 5) and L595-596 (consequences bullet), against its own section 3.3. Governed surface, stale prose, no reach. In the PR Acceptance notes.",
"carrier: none · noted, not filed: plugin-distribution.md names tsup as the bundler (section 4.1 tree, section 5 step 1), but build.ts uses esbuild. In the PR Acceptance notes.",
"carrier: none · noted, not filed: no platform-checklist item scores the install-time integrity refusal or the boot-time tier dispatch (coverage observation). In the PR Acceptance notes.",
"carrier: next domain:ui PR in that file (triage 6504381957) · card item 4, ui/packages/app-shell/src/console/marketplace/marketplaceApi.ts:171, untouched"
]
}
Landed: PR #27698, merged as 2b4b970715 · 2026-10-29T20:27Z
The merged diff matches the reviewed head 8dee70e6bb: the sorted +/− lines are hash-identical. ACCEPT → PR #27698 comment 6506692488. Fixes #27685 closed the card, and pm:dispatched is removed in this act. The dev ran as mode:subagent, so there is no cloud session to archive.
What remains elsewhere:
Item 4 (marketplaceApi.ts:171) rides the next domain:ui PR, per triage 6504381957.
Activity
objectstack-fleet commentedon Oct 29, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P①
Triage: p2 ·
domain:devx·area:devpath· cross-domain exception, one PR · 2026-10-29T17:57Z⛔ Not a claim.
docs/design/plugin-distribution.md, anddocs/qa/.../cli.jsonwith a revision bump) are the devx lane's documentation surface.domain:devxlane claims the one PR, and the claim declarespackages/spec/liveness/README.md(item 3, the hand-written cell). The generated count is regenerated, not typed.ui/.../marketplaceApi.ts:171, a one-line comment) is not this card's. It rides the nextdomain:uiPR in that file. Recorded here so it stays visible.documentation,pm:queue.Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
Claim: PM loop round 8 · 2026-10-29T18:52Z
Session:
session_01QSeKYmTYfaPbLQD4BJfomW(mode:subagent: the dev shares this session ID; its identity is the branch)Account:
os-justin(the seat's linked user, asGET /useranswers it; the card's assignee)Branch:
claude/issue-27685-manifest-deps-leftoversWorktree:
objectstack-issue-27685Domain:
domain:devxSeat:
domain:devx#2File surface:
docs/design/plugin-distribution.md(themanifest-depspassages, L114–115, 122, 144, 168, 195);docs/qa/platform-checklist/areas/cli.json, itemcli.plugin-manifest-build-contractonly (its two stale ⛔ negatives and their sources, a revision bump and a history entry); and, cross-domain as triage granted in 6504381957 (SKILL.md 跨域例外路径),packages/spec/liveness/README.md, themanifesttype cell only (any generated count is regenerated with the repo's generator, never typed). Item 4 (ui/.../marketplaceApi.ts:171) is ⛔ out of scope: it rides the nextdomain:uiPR. No product code (stop on breach; explain in the report)Container & model:
S,mode:subagent,model: default(prose only; correctness is judged against the tree),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card (stale prose after #27679)
Thread-read: 6504381957
Premise: holds at origin/main
69991ffa18, after #27679 merged.manifest-depsstill appears atplugin-distribution.mdL114, 115, 122, 144, 168 and 195.cli.jsonL1790–1791 carry the two ⛔ negatives. The READMEmanifestcell (L1017) reads "Dead 19".Serial constraints cleared: #27679, the last PR touching
cli.json, merged before this claim. At claim time no open PR touches any of the three files (file scan of every open PR).Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
Dispatched under claim 6505583616 · 2026-10-29T18:53Z: an
os-devsubagent (mode:subagent, default tier, effort medium) on branchclaude/issue-27685-manifest-deps-leftovers. It is to measure the bundled-only shape from the tree, re-point or remove the two stale ⛔ negatives against the code that now verifies and dispatches, and regenerate any generated count rather than type it. Item 4 is excluded. The report comes back here asos-dev-report.Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
os-dev-report
{ "issue": 27685, "status": "done", "branch": "claude/issue-27685-manifest-deps-leftovers", "pr": "https://github.com/objectstack-ai/objectstack/pull/27698", "session": "session_01QSeKYmTYfaPbLQD4BJfomW", "premise_still_valid": true, "summary": "Docs-only alignment with #27679 on base 86f2afeb23, head 8dee70e6bb. H1 HOLDS: manifest.zod.ts#PluginPackagingSchema is enumWithRetiredValues(['bundled'], PACKAGING_RETIRED), so 'manifest-deps' is refused by name with its prescription, and build.ts#PluginBuild has one esbuild call (external ['@objectstack/*'] only) and reads packaging only for the Loaded echo. plugin-distribution.md now says bundled only (tree, compiled-manifest line, section 4.3 rewritten plus one dated note citing #27679, publish tier gate, section 6 step 5). Beyond the claimed lines, one same-class bullet changed: section 8 supply-chain, whose lockfile and --ignore-scripts existed only for manifest-deps. The PR body declares it. H2 HOLDS: integrity is re-verified at unpack by packages/cli/src/commands/plugin/install.ts#PluginInstall through packages/core/src/security/plugin-artifact-integrity.ts#verifyIntegrity (slice 1, 10f27b6508, #27335; install.ts is a new file there). Runtime is dispatched by packages/runtime/src/installed-plugin-loader.ts#dispatchPluginRuntime, called from checkRecord at boot and from PluginInstall as a warning (slice 2, d4ff1a025f, #27374). Both negatives were re-pointed to name that code as unscored here, the 404ing #11331/#11330 citations were dropped, three source rows were added, the scored clauses were not touched, and the revision went 4 to 5 with a history entry. H3: the count is GENERATED, in packages/spec/liveness/state-counts/manifest.md by gen:liveness-counts. That shard was already current at dead 13 / planned 1 (gen exit 0, '0 shard(s) rewritten'). 'Dead 19' was hand-typed README prose, so it was corrected from liveness/manifest.json: 10 contributes members, plus capabilities, configuration and extensions at one tombstone row each, = 13. The old number counted 7 per-child rows and a loading row that left with #26599 (dbf7e04adf). A sentence for packaging, the only planned row, was added. A @objectstack/spec patch changeset is owed because 'liveness' is in spec's files[], so there is no skip-changeset label. Item 4 (ui marketplaceApi.ts:171) was not touched. Worktree node_modules and the worktree were removed after this report was posted.", "tests": "No code changed: no unit tests added or run, no ablation (no tested behaviour moved). JSON validity of cli.json checked with python json.load. gen:liveness-counts exit 0: '0 shard(s) rewritten, 0 pruned'.", "gates": "Derived at 8dee70e6bb by `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (exit 0, 59 commands, 4 paths). Each was run with its exit captured before any pipe: 54 exit 0, 5 exit 3 PREREQUISITE NOT MET = NOT MEASURED (check:doc-formula-expressions, check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content; each reads built dist of packages this diff does not change, so a workspace build was skipped as a declared narrowing and CI's Lint & Repo Gates runs them built). `--ran` with exit codes: exit 0, '✓ dispatch-gates --ran: 59 derived famil(ies) accounted for — 54 run, 5 NOT-MEASURED (5 DERIVED from a recorded exit 3).' Key verdicts: check:platform-checklist exit 0 'OK — 16 areas, 352 items'; spec check:liveness exit 0 'state-counts/ is current'; check:doc-authoring, check:nul-bytes, check:issue-citations, check:published-files, check-adr-0087-registration, check-changeset-no-major and check-empty-changeset all exit 0. Local-only check:dev-prereqs / check:skill-frame-freshness were not run (no spec build or frame files touched). PR check-runs, read once at 8dee70e6bb: Check Changeset, Lint · (all lanes), Spec property liveness, Type Check · (all lanes), Governed Surface Queue Guard and PR-body guards all in_progress; opt-in jobs skipped. No CI waiting was done.", "line_budget": "n/a — no skills/** file touched; diff 74 changed lines (+52/-22) over 4 files, under the 3000 human-merge threshold", "files_changed": [ "docs/design/plugin-distribution.md", "docs/qa/platform-checklist/areas/cli.json", "packages/spec/liveness/README.md", ".changeset/27685-manifest-liveness-cell.md" ], "deviations": [ "Dispatch said 'draft, no assignees'. os-dev.md says PR assignee = the card's (os-justin) and wins on conflict, but the relay's own pr_create header says a dev's create carries no assignees. I followed the dispatch and the relay, and opened the PR with no assignee. Flagged here, with no extra write.", "plugin-distribution.md section 8 supply-chain bullet edited beyond the claim's line list (same file, same manifest-deps class, mechanical). Declared in the PR body.", "Changeset added and skip-changeset NOT applied: packages/spec files[] includes 'liveness', so the README ships." ], "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 — fleet relay repository_dispatch POST /repos/objectstack-ai/objectstack/dispatches executing pr_create (POST /repos/objectstack-ai/objectstack/pulls, draft, #27698); post-stamped comment POST /repos/objectstack-ai/objectstack/issues/27685/comments (this report). Plus git pushes (not REST): empty-branch probe and 2 commits.", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted, not filed: docs/adr/0025-plugin-package-distribution.md still names manifest-deps as live at L159 (manifest example comment), L267 (section 3.5 step 5) and L595-596 (consequences bullet), against its own section 3.3. Governed surface, stale prose, no reach. In the PR Acceptance notes.", "carrier: none · noted, not filed: plugin-distribution.md names tsup as the bundler (section 4.1 tree, section 5 step 1), but build.ts uses esbuild. In the PR Acceptance notes.", "carrier: none · noted, not filed: no platform-checklist item scores the install-time integrity refusal or the boot-time tier dispatch (coverage observation). In the PR Acceptance notes.", "carrier: next domain:ui PR in that file (triage 6504381957) · card item 4, ui/packages/app-shell/src/console/marketplace/marketplaceApi.ts:171, untouched" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
ACCEPT → PR #27698 comment 6506692488 · 2026-10-29T19:46Z · ready + auto-merge armed.
Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
Landed: PR #27698, merged as
2b4b970715· 2026-10-29T20:27ZThe merged diff matches the reviewed head
8dee70e6bb: the sorted +/− lines are hash-identical. ACCEPT → PR #27698 comment 6506692488.Fixes #27685closed the card, andpm:dispatchedis removed in this act. The dev ran asmode:subagent, so there is no cloud session to archive.What remains elsewhere:
marketplaceApi.ts:171) rides the nextdomain:uiPR, per triage 6504381957.manifest-depsstill reads as live in ADR-0025 (L159, L267, L595–596, against its own §3.3), and plugin-distribution.md names tsup whereos plugin builduses esbuild #27700, which is now unblocked.manifest-depsand the pre-M1 install gap; the #27123 Tier H docs follow-up #27684.Generated by Claude Code