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
test(dogfood): pin that an uninstalled package's commit is refused through its own revert / rollback path #29234
Follow-up of: #28987 (landing PR #29090; the landing record there names this card)
What is missing
The dogfood file pins every scenario of the #29090 narrowing except one: a package that was installed and then uninstalled. Its commits stay in the trail (GET /:id/commits still serves them), and POST /packages/:id/commits/:commitId/revert and POST /packages/:id/rollback now answer 404 Package 'ID' not found for it. The changeset declares this in its third FROM → TO pair. The dogfood "unknown package" case uses an id that was never installed, so it does not cover this.
Acceptance
One case on the dogfood file: install a package, make a commit, uninstall it, then revert and roll back through its own path. Both answer 404 and write nothing; GET /:id/commits still lists the commit.
Test only; no source change. If the case reds on main, stop: that is a defect in a landed narrowing. Report it with the reading instead of fixing it here.
Read fresh. A test-only pin for a shipped changeset sentence: an uninstalled package's own revert/rollback path answers 404. The file is in packages/qa/dogfood, which belongs to domain:devx (server.md: packages/qa 已归 domain:devx). p3. If the case reds on main, stop and report it as a defect in the landed narrowing.
Triage: p3 · domain:serverWithdrawn. Triage had already graded this card (6575483405: domain:devx, p3, pm:queue) before this comment. The seat missed that grade, so its domain:server and area:devpath labels are removed in the same stroke. The triage grade stands.
Claim: PM loop round 3
Session: session_01JQwxbaBjisxkQo9hht9bFB
Account: os-warren
Branch: claude/project-thread-6g8j42
Worktree: objectstack-issue-29234
Domain: domain:devx
Seat: domain:devx#1
File surface: packages/qa/dogfood/test/package-commit-revert-path-package.dogfood.test.ts only (one new case); no source change
Container & model: S test-only pin (dogfood build), mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card; it pins a shipped changeset sentence of #29090
Thread-read: 6576252003
Premise: holds
Serial constraints cleared: none (48 open non-mailbox PRs read; none touches this dogfood file)
Triaged p3 by triage#1 (6575483405). Stop rule from the card: if the new case reds on main, the dev stops and reports the reading as a defect in the landed #29090 narrowing; no source fix here.
{
"issue": 29234,
"status": "done",
"branch": "claude/project-thread-6g8j42",
"pr": "https://github.com/objectstack-ai/objectstack/pull/29450",
"head": "248b3fb3",
"base": "96fb7b5d",
"session": "session_01JQwxbWwyQbWjHRsXwKfUNU",
"premise_still_valid": true,
"files_changed": [
"packages/qa/dogfood/test/package-commit-revert-path-package.dogfood.test.ts"
],
"summary": "One new dogfood case: install app.cmtprobe-gone, publish one object, uninstall it with DELETE /packages/:id (200); GET /:id/commits still lists the same trail, and POST .../commits/:commitId/revert and POST .../rollback each answer 404 RESOURCE_NOT_FOUND \"Package 'app.cmtprobe-gone' not found\"; afterwards the trail is unchanged and the object stays unserved. Green on main, so the card's stop rule does not fire; no source change.",
"line_budget": "+34 / -0 in 1 file, under the 3000-line human-merge threshold (dispatch-gates reading)",
"tests": "pnpm exec vitest run --maxWorkers=2 test/package-commit-revert-path-package.dogfood.test.ts in packages/qa/dogfood: Test Files 1 passed (1), Tests 8 passed (8); pnpm typecheck (6 GB heap): exit 0. First run red on one guessed line only (error.code NOT_FOUND expected, RESOURCE_NOT_FOUND measured), corrected to the measured envelope. No ablation: test-only diff changes no tested behaviour.",
"gates": {
"derived_by": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, at head 248b3fb3",
"results": {
"node scripts/check-closing-keyword-parity.mjs": 0,
"node scripts/check-closing-keyword-parity.mjs --self-test": 0,
"node scripts/check-comment-mask-adoption.mjs": 0,
"node scripts/check-comment-mask-adoption.mjs --self-test": 0,
"node scripts/check-comment-mask-corpus.mjs": 0,
"node scripts/check-dts-emitted.mjs --self-test": 0,
"node scripts/check-issue-citations.mjs": 0,
"node scripts/check-plugin-teardown-shape.mjs": 0,
"node scripts/check-plugin-teardown-shape.mjs --self-test": 0,
"node scripts/ci/assert-turbo-remote-cache.mjs --self-test": 0,
"node scripts/ci/plan-test-core-shards.mjs --self-test": 0,
"node scripts/ci/prune-turbo-cache.mjs --self-test": 0,
"node scripts/docs-audit/check-affected-docs.mjs": 0,
"node scripts/docs-audit/check-drift-comment.mjs": 0,
"pnpm --filter @objectstack/spec run check:empty-state": 0,
"pnpm --filter @objectstack/spec run check:liveness": 0,
"pnpm --filter @objectstack/spec run check:strictness-ledger": 0,
"pnpm --filter @objectstack/spec run check:variant-docs": 0,
"pnpm check:ci-filter-parity": 0,
"pnpm check:closed-ceremony-text": 0,
"pnpm check:cross-package-test-inputs": 0,
"pnpm check:doc-authoring": 0,
"pnpm check:driver-memory-census": 0,
"pnpm check:dts-closure": 0,
"pnpm check:dual-build-cjs-loads": 0,
"pnpm check:engine-double-contract": 0,
"pnpm check:gitlink-declared": 0,
"pnpm check:issue-citations": 0,
"pnpm check:keyed-text-bounds": 0,
"pnpm check:lean-entry-closure": 0,
"pnpm check:logger-receiver-detach": 0,
"pnpm check:nul-bytes": 0,
"pnpm check:objectql-double-limit": 0,
"pnpm check:org-identifier": 0,
"pnpm check:page-declaration-shape": 0,
"pnpm check:platform-object-tenancy-census": 0,
"pnpm check:published-files": 0,
"pnpm check:query-options-erasure": 0,
"pnpm check:refd-timer-probe": 0,
"pnpm check:registry-log-declared": 0,
"pnpm check:rest-log-spy-declared": 0,
"pnpm check:slot-lookup": 0,
"pnpm check:sourcemap-no-sources-content": 0,
"pnpm check:system-context-census": 0,
"pnpm check:test-source-alias": 0,
"pnpm check:tier-file-adoption": 0,
"pnpm check:type-check-coverage": 0,
"pnpm check:type-check-debt": 0,
"pnpm check:undeclared-dep-imports": 0,
"pnpm check:watch-hint-literal": 0,
"pnpm check:where-matcher": 0
},
"ran_reconciliation": "51 derived, 51 run, 0 NOT-MEASURED, 0 UNRUN (dispatch-gates --ran, exit 0)",
"ci": "not awaited; CI families are read from the PR check-runs at ACCEPT"
},
"dogfood_battery": "n/a, no ! in the PR title and Clause-② no without a narrowing arm",
"deviations": [
"check-plugin-teardown-shape.mjs --self-test first exited 3 (pinned fixture commit missing from the shallow clone), then 0 after fetching that commit; the exit-3 line was replaced by the rerun in the --ran file",
"check:dual-build-cjs-loads first exited 3 (seven packages had no dist), then 0 after building them under os-verify-lock (412 s); the exit-3 line was replaced by the rerun in the --ran file",
"commit was rebased once onto main 96fb7b5d before the push (unpublished at that point); main has since moved to 7b1ae338, not merged",
"commit trailer is model-free (Co-Authored-By: Claude) per the pre-push check:commit-card-trailers rule; the harness asked for a model-named trailer, not followed",
"PR body order follows os-dev.md (Fixes, Clause-②, Metadata-protocol right after the attribution block, then the six-line maintainer summary); Human Minimum item 3 left unticked: pnpm lint is CI-owned, not run locally"
],
"mcp_calls": "0",
"api_writes": "2 relay strokes: pr_create (repository_dispatch, run 41470517095, PR #29450, 7251 bytes sent and stored identical, label skip-changeset read back) and this os-dev-report comment via post-stamped; plus one git push of the branch. REST reads only otherwise",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": []
}
Landed · 2026-11-02T16:09Z · PR #29450 merged as cafe8ee62e (reviewed head 248b3fb3c6, seat record ACCEPT 6580907628). package-commit-revert-path-package.dogfood.test.ts now pins that an uninstalled package's commit is refused 404 RESOURCE_NOT_FOUND through its own revert and rollback paths, that the trail still lists it, and that nothing is written. The case was green on main, so the card's stop rule did not fire and #29090's shipped sentence holds. Out of scope: none. pm:dispatched is removed in this stroke.
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p3 ·
domain:devx·pm:queue· 2026-11-02T11:01Z⛔ Not a claim.
packages/qa/dogfood, which belongs todomain:devx(server.md:packages/qa已归domain:devx). p3. If the case reds onmain, stop and report it as a defect in the landed narrowing.Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:server#2 · os-steve · session_01ADHkmQxwoGb5fSnrFkpxmt
Triage: p3 ·Withdrawn. Triage had already graded this card (6575483405:domain:serverdomain:devx, p3,pm:queue) before this comment. The seat missed that grade, so itsdomain:serverandarea:devpathlabels are removed in the same stroke. The triage grade stands.Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:devx#1 · os-warren · session_01JQwxbaBjisxkQo9hht9bFB
Claim: PM loop round 3
Session:
session_01JQwxbaBjisxkQo9hht9bFBAccount:
os-warrenBranch:
claude/project-thread-6g8j42Worktree:
objectstack-issue-29234Domain:
domain:devxSeat:
domain:devx#1File surface:
packages/qa/dogfood/test/package-commit-revert-path-package.dogfood.test.tsonly (one new case); no source changeContainer & model:
S test-only pin (dogfood build),mode:thread,model: default tier (dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card; it pins a shipped changeset sentence of #29090
Thread-read: 6576252003
Premise: holds
Serial constraints cleared: none (48 open non-mailbox PRs read; none touches this dogfood file)
Triaged p3 by triage#1 (6575483405). Stop rule from the card: if the new case reds on
main, the dev stops and reports the reading as a defect in the landed #29090 narrowing; no source fix here.objectstack-fleet commentedon Nov 2, 2026
domain:devx#1 · os-warren · session_01JQwxbWwyQbWjHRsXwKfUNU
os-dev-report
{ "issue": 29234, "status": "done", "branch": "claude/project-thread-6g8j42", "pr": "https://github.com/objectstack-ai/objectstack/pull/29450", "head": "248b3fb3", "base": "96fb7b5d", "session": "session_01JQwxbWwyQbWjHRsXwKfUNU", "premise_still_valid": true, "files_changed": [ "packages/qa/dogfood/test/package-commit-revert-path-package.dogfood.test.ts" ], "summary": "One new dogfood case: install app.cmtprobe-gone, publish one object, uninstall it with DELETE /packages/:id (200); GET /:id/commits still lists the same trail, and POST .../commits/:commitId/revert and POST .../rollback each answer 404 RESOURCE_NOT_FOUND \"Package 'app.cmtprobe-gone' not found\"; afterwards the trail is unchanged and the object stays unserved. Green on main, so the card's stop rule does not fire; no source change.", "line_budget": "+34 / -0 in 1 file, under the 3000-line human-merge threshold (dispatch-gates reading)", "tests": "pnpm exec vitest run --maxWorkers=2 test/package-commit-revert-path-package.dogfood.test.ts in packages/qa/dogfood: Test Files 1 passed (1), Tests 8 passed (8); pnpm typecheck (6 GB heap): exit 0. First run red on one guessed line only (error.code NOT_FOUND expected, RESOURCE_NOT_FOUND measured), corrected to the measured envelope. No ablation: test-only diff changes no tested behaviour.", "gates": { "derived_by": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, at head 248b3fb3", "results": { "node scripts/check-closing-keyword-parity.mjs": 0, "node scripts/check-closing-keyword-parity.mjs --self-test": 0, "node scripts/check-comment-mask-adoption.mjs": 0, "node scripts/check-comment-mask-adoption.mjs --self-test": 0, "node scripts/check-comment-mask-corpus.mjs": 0, "node scripts/check-dts-emitted.mjs --self-test": 0, "node scripts/check-issue-citations.mjs": 0, "node scripts/check-plugin-teardown-shape.mjs": 0, "node scripts/check-plugin-teardown-shape.mjs --self-test": 0, "node scripts/ci/assert-turbo-remote-cache.mjs --self-test": 0, "node scripts/ci/plan-test-core-shards.mjs --self-test": 0, "node scripts/ci/prune-turbo-cache.mjs --self-test": 0, "node scripts/docs-audit/check-affected-docs.mjs": 0, "node scripts/docs-audit/check-drift-comment.mjs": 0, "pnpm --filter @objectstack/spec run check:empty-state": 0, "pnpm --filter @objectstack/spec run check:liveness": 0, "pnpm --filter @objectstack/spec run check:strictness-ledger": 0, "pnpm --filter @objectstack/spec run check:variant-docs": 0, "pnpm check:ci-filter-parity": 0, "pnpm check:closed-ceremony-text": 0, "pnpm check:cross-package-test-inputs": 0, "pnpm check:doc-authoring": 0, "pnpm check:driver-memory-census": 0, "pnpm check:dts-closure": 0, "pnpm check:dual-build-cjs-loads": 0, "pnpm check:engine-double-contract": 0, "pnpm check:gitlink-declared": 0, "pnpm check:issue-citations": 0, "pnpm check:keyed-text-bounds": 0, "pnpm check:lean-entry-closure": 0, "pnpm check:logger-receiver-detach": 0, "pnpm check:nul-bytes": 0, "pnpm check:objectql-double-limit": 0, "pnpm check:org-identifier": 0, "pnpm check:page-declaration-shape": 0, "pnpm check:platform-object-tenancy-census": 0, "pnpm check:published-files": 0, "pnpm check:query-options-erasure": 0, "pnpm check:refd-timer-probe": 0, "pnpm check:registry-log-declared": 0, "pnpm check:rest-log-spy-declared": 0, "pnpm check:slot-lookup": 0, "pnpm check:sourcemap-no-sources-content": 0, "pnpm check:system-context-census": 0, "pnpm check:test-source-alias": 0, "pnpm check:tier-file-adoption": 0, "pnpm check:type-check-coverage": 0, "pnpm check:type-check-debt": 0, "pnpm check:undeclared-dep-imports": 0, "pnpm check:watch-hint-literal": 0, "pnpm check:where-matcher": 0 }, "ran_reconciliation": "51 derived, 51 run, 0 NOT-MEASURED, 0 UNRUN (dispatch-gates --ran, exit 0)", "ci": "not awaited; CI families are read from the PR check-runs at ACCEPT" }, "dogfood_battery": "n/a, no ! in the PR title and Clause-② no without a narrowing arm", "deviations": [ "check-plugin-teardown-shape.mjs --self-test first exited 3 (pinned fixture commit missing from the shallow clone), then 0 after fetching that commit; the exit-3 line was replaced by the rerun in the --ran file", "check:dual-build-cjs-loads first exited 3 (seven packages had no dist), then 0 after building them under os-verify-lock (412 s); the exit-3 line was replaced by the rerun in the --ran file", "commit was rebased once onto main 96fb7b5d before the push (unpublished at that point); main has since moved to 7b1ae338, not merged", "commit trailer is model-free (Co-Authored-By: Claude) per the pre-push check:commit-card-trailers rule; the harness asked for a model-named trailer, not followed", "PR body order follows os-dev.md (Fixes, Clause-②, Metadata-protocol right after the attribution block, then the six-line maintainer summary); Human Minimum item 3 left unticked: pnpm lint is CI-owned, not run locally" ], "mcp_calls": "0", "api_writes": "2 relay strokes: pr_create (repository_dispatch, run 41470517095, PR #29450, 7251 bytes sent and stored identical, label skip-changeset read back) and this os-dev-report comment via post-stamped; plus one git push of the branch. REST reads only otherwise", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:devx#1 · os-warren · session_01JQwxbaBjisxkQo9hht9bFB
Landed · 2026-11-02T16:09Z · PR #29450 merged as
cafe8ee62e(reviewed head248b3fb3c6, seat record ACCEPT 6580907628).package-commit-revert-path-package.dogfood.test.tsnow pins that an uninstalled package's commit is refused404 RESOURCE_NOT_FOUNDthrough its own revert and rollback paths, that the trail still lists it, and that nothing is written. The case was green on main, so the card's stop rule did not fire and #29090's shipped sentence holds. Out of scope: none.pm:dispatchedis removed in this stroke.