Skip to content

qa(checklist): api-backend — pin the Tier 1 clauses the 18.2.0 sweep scored partial at the layer their oracle names (11 items) #26572

Closed

Description

@objectstack-fleet

Filing gate: ③ a maintainer-directed task — in the 18.2.0 wave-2 session (2026-10-27) the PM proposed per-area pin-upgrade cards for the PARTIAL coverage, starting with access-security, api-backend and records-forms; the maintainer answered, verbatim: 「同意」.
Business reason: in the 18.2.0 release-candidate Tier 1 run (#26468) every pin was green, yet these api-backend items scored PARTIAL — their pins assert the clause below the layer the clause's oracle names (unit / in-process, where the clause wants a live HTTP boot or the browser), or no pin asserts the clause at all. Each release sweep re-pays that gap as live legs or carries it as partial; pinning at the oracle's layer turns it into a standing, re-runnable proof.
Reader: the lane owning docs/qa/platform-checklist/** and packages/qa/dogfood/** (domain:devx): add or extend the pins, then revise each item's automated.ref (bump revision, append history citing this card) and keep node scripts/check-platform-checklist.mjs green.
Dedupe (open AND closed): "pin upgrade checklist area automated.ref oracle layer partial access-security api-backend records-forms" → 36 hits, none a pin-upgrade card; the nearest are the closed wave-1 ledger-edit cards #25835 / #25846 (accuracy edits, not pins).

Items and clauses (from #26468's close-out, wave anchor #25807)

Each line is the record's own Parked-on: line: "partial" = a pin asserts the clause below its oracle's layer; "no pin" / "unpinned / half-asserted" = nothing asserts it at any layer. Per-clause reasons (pin file, layer, missing layer) are in #26468's detail comments.

Parked-on: #25807 · api-backend.declarative-endpoint-execution · 2 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.packaged-action-disabled-dispatch · 5 clause(s) pinned below the oracle's layer; 4 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.action-activation-door-contract · 3 clause(s) pinned below the oracle's layer; 7 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.rest-crud-config-contract · 5 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.rest-batch-config-contract · 1 clause(s) pinned below the oracle's layer; 3 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.rest-metadata-config-contract · 2 clause(s) pinned below the oracle's layer; 5 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.rest-route-generation-tombstones · 6 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.second-object-exposure-and-internal-fields · 1 clause(s) pinned below the oracle's layer; 1 clause(s) unpinned/half-asserted/procedural, live leg not driven
Parked-on: #25807 · api-backend.data-request-shape-and-query-arity · 5 clause(s) pinned below the oracle's layer
Parked-on: #25807 · api-backend.meta-read-doors-v18 · 4 clause(s) pinned below the oracle's layer
Parked-on: #25807 · api-backend.error-sentences-and-unique-violation-wire-code · 3 clause(s) pinned below the oracle's layer

Done when

  • Every clause listed above either carries a pin at the layer its oracle names (an HTTP-in-process dogfood case is the usual shape for an api oracle; a live-boot or Playwright spec for browser), or the item text says why it stays a live leg.
  • Each touched item's automated.ref names the new pin, with revision bumped and a history row citing this card.
  • Procedural clauses (scoring rules, record-completeness rules) are left as they are — they are not pinnable and are not part of this card.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — tests · priority:p2 · domain:devx · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T08:58Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 6 · 2026-10-27T14:50Z
    Session: session_01JQwxbWUpGqdpDRiD79LqXV (card thread cmsg_01U5RdnAAmkSQmZbqh6FtqZ8VsCYkn9rw8Z1i5vq5MHxL4, dispatched by seat session session_01JQwxbaFpnMwgpCgneKe2qS)
    Account: os-warren (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-0g4hto (the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record)
    Worktree: objectstack-issue-26572
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: docs/qa/platform-checklist/areas/api-backend.json (the slice's items: automated.ref, revision, history) and new or extended pins under packages/qa/dogfood/**; first slice of about 5 of the 11 items, PR Refs #26572 (items …). ⛔ No new CI lane, no product change, no other area file (stop on breach)
    Container & model: L, mode:thread (Warren's 「opus 很多,并发5」, 2026-10-27), model: default (dispatch-gates --tier: "no path-derived mandate … default opus"), effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — maintainer-directed filing (wave-2 session, quoted in the card body); triage 6437722483
    Thread-read: 6437722483
    Premise: holds by the paths (the card's items are read on origin/main by the thread before its first edit; its report records any item already pinned)
    Serial constraints cleared: none blocking. Draft #26337 touches docs/qa/platform-checklist/coverage.json and packages/qa/dogfood/test (merge origin/main before each push); sibling card threads #26571, #26572, #26573 and #26621 each edit their own areas/<area>.json; no other devx seat is seated


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
    "issue": 26572,
    "status": "done",
    "branch": "claude/project-thread-0g4hto",
    "pr": "#26787",
    "head": "19a4d705f118b032936cf8b5f92e74897708d7bc",
    "slice": "1 of about 3 — items declarative-endpoint-execution, second-object-exposure-and-internal-fields, data-request-shape-and-query-arity, meta-read-doors-v18, error-sentences-and-unique-violation-wire-code. Left for later slices: packaged-action-disabled-dispatch, action-activation-door-contract, rest-crud-config-contract, rest-batch-config-contract, rest-metadata-config-contract, rest-route-generation-tombstones",
    "session": "session_01JQwxbWUpGqdpDRiD79LqXV",
    "premise_still_valid": true,
    "summary": "Every clause the 18.2.0 sweep (#26468) scored partial or half-asserted on the five slice items now carries a pin at its oracle's layer: HTTP on a booted stack through @objectstack/verify (Hono request injection), and the CLI's own bin as a child process for the one build oracle (os validate / os build refusing script and proxy endpoints). Four new dogfood files, one new scratch-app fixture, two extended pins and one fixture field (sox_source.internal_f); each item's automated.ref, affected verify texts, revision and a history row citing #26572 are revised. Every expectation was measured on a probe boot first and checked against the clause; all answered as the items say, so no product defect was found. No clause text and no product code changed.",
    "tests": "Final head 19a4d70 after rebuilding driver-sql (the one package main moved since base 74db43e): pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=2 over the 7 touched/sharing files → Test Files 7 passed (7), Tests 119 passed (119), os-verify-lock VERDICT command-exit 0. No ablation: the diff changes no tested behaviour.",
    "gates": "node scripts/check-platform-checklist.mjs exit 0 (OK — 16 areas, 329 items). dispatch-gates --commands at 19a4d70: 55 commands, 53 exit 0, 2 exit 3 PREREQUISITE NOT MET (check-plugin-teardown-shape --self-test: control commit outside the shallow clone; check:dual-build-cjs-loads: dist of packages outside the dogfood closure) — NOT MEASURED, both in CI Lint & Repo Gates. --ran reconciliation: 55 accounted, 53 run, 2 NOT-MEASURED, 0 unrun. pnpm --filter @objectstack/dogfood run typecheck exit 0. eslint --no-inline-config over the 8 touched TS files exit 0. PR check-runs: in_progress at report time.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm; the touched files ran as above",
    "mcp_calls": "0",
    "api_writes": "2 — relay pr_create (#26787, draft, assignee os-warren, label skip-changeset; read-back 7810 bytes sent = stored) and this os-dev-report comment via post-stamped; git push is not a REST write",
    "files_changed": [
    "docs/qa/platform-checklist/areas/api-backend.json",
    "packages/qa/dogfood/test/data-request-shape-live.dogfood.test.ts",
    "packages/qa/dogfood/test/declarative-endpoint-authoring-refusal.dogfood.test.ts",
    "packages/qa/dogfood/test/error-sentences-live.dogfood.test.ts",
    "packages/qa/dogfood/test/fixtures/error-sentences-fixture.ts",
    "packages/qa/dogfood/test/fixtures/second-object-exposure-fixture.ts",
    "packages/qa/dogfood/test/meta-read-doors-live.dogfood.test.ts",
    "packages/qa/dogfood/test/second-object-exposure.dogfood.test.ts",
    "packages/qa/dogfood/test/showcase-declarative-endpoints.dogfood.test.ts"
    ],
    "deviations": [
    "Dogfood Regression Gate does not run on pull_request or merge_group (its if: excludes both), so the PR's CI never runs these pins; the local run is their evidence until main's next battery",
    "2 derived gates NOT MEASURED (exit 3, prerequisite), named in gates",
    "the first closure build passed --concurrency=2 after the pnpm filter, which forwarded it into each package script (cli tsc exit 2); rebuilt through turbo run build, exit 0 — no effect on the result",
    "the PR body folds .github/PULL_REQUEST_TEMPLATE.md headings (Why, Human Minimum) into the os-dev section order; its line 3 is Refs #26572, not the template's Fixes line, per the order",
    "the first commit was reworded (no card number in the subject) before its first push; nothing shared was rewritten"
    ],
    "body_amendments": [],
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: none · noted, not filed: a sandboxed hook's declared 400 refusal on POST /data/OBJECT also logs '[REST] Unhandled error: SandboxError …' with a stack on the server — log noise on a handled refusal, no wrong answer at any door"
    ]
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #26787 comment 6446793009


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: slice 1 via PR #26787, merged as f7c95cd191 · 2026-10-27T16:56Z

    Five items are pinned at their oracle layer: declarative-endpoint-execution, second-object-exposure-and-internal-fields, data-request-shape-and-query-arity, meta-read-doors-v18 and error-sentences-and-unique-violation-wire-code. ACCEPT → PR #26787 comment 6446793009. The card stays pm:dispatched, and the same card thread takes slice 2 on the same branch (claim 6445168911 still holds). Slices 2 and 3 remain.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
    "issue": 26572,
    "status": "done",
    "branch": "claude/project-thread-0g4hto",
    "pr": "#26829",
    "head": "14a3213a252db81df8c4827b857253325a0eba50",
    "slice": "2 of about 3 — items packaged-action-disabled-dispatch, action-activation-door-contract, rest-crud-config-contract, rest-batch-config-contract, rest-metadata-config-contract. Left for slice 3: rest-route-generation-tombstones",
    "session": "session_01JQwxbWUpGqdpDRiD79LqXV",
    "premise_still_valid": true,
    "summary": "Every clause the 18.2.0 sweep (#26468) scored partial, half-asserted or unpinned on the five slice items now carries a pin at its oracle's layer, procedural clauses aside. api legs: HTTP on booted stacks through @objectstack/verify, plus the live POST /api/v1/mcp run_action transport and a cold boot on one database file. test legs: a real RestServer constructed with the config under test, the method the three config items prescribe (#15543 posture). Four new dogfood files and one new scratch fixture (one action name declared on two objects, for the activation door's ambiguity arm). Each item's automated.ref, the affected verify texts, revision and a history row citing #26572 are revised; activation-door-contract's automated.kind and the three config items' move from unit to dogfood, and its fixtures.knownGaps[0] gains one sentence that the colliding scratch package now exists. Every expectation was measured on a probe boot first and checked against the clause; all answered as the items say, so no product defect was found. No clause text and no product code changed. Not covered, as the items already record: the activation door's metadata-plane 503 and its 501/503 durability arms (no stock door).",
    "tests": "Head 14a3213 after merging main 0ea90c7 and rebuilding the dogfood closure: pnpm exec vitest run --maxWorkers=2 over the 4 touched test files → Test Files 4 passed (4), Tests 29 passed (29), under os-verify-lock, chained with && after the closure build and check-platform-checklist. No ablation: the diff changes no tested behaviour.",
    "gates": "node scripts/check-platform-checklist.mjs exit 0 (OK — 16 areas, 329 items). dispatch-gates --commands: 55 commands, 54 exit 0, 1 exit 3 PREREQUISITE NOT MET (check:dual-build-cjs-loads: dist of packages outside the dogfood closure) — NOT MEASURED, runs in CI Lint & Repo Gates; check-plugin-teardown-shape --self-test passed after fetching its control commit. Measured on the tree of the slice commit; after merging main the derived list is unchanged and the gates whose scripts the merge moved (check-closing-keyword-parity and --self-test, check-issue-citations) plus check:platform-checklist were re-run on the merge head, exit 0. --ran: 55 accounted, 54 run, 1 NOT-MEASURED, 0 unrun. pnpm --filter @objectstack/dogfood run typecheck exit 0. eslint over the 5 touched TS files exit 0. PR check-runs: pending at report time.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm; the touched files ran as above",
    "mcp_calls": "0",
    "api_writes": "2 — relay pr_create (#26829, draft, assignee os-warren, label skip-changeset; read-back 8964 bytes sent = stored) and this os-dev-report comment via post-stamped; git push is not a REST write",
    "files_changed": [
    "docs/qa/platform-checklist/areas/api-backend.json",
    "packages/qa/dogfood/test/action-activation-door-live.dogfood.test.ts",
    "packages/qa/dogfood/test/fixtures/activation-ambiguity-fixture.ts",
    "packages/qa/dogfood/test/packaged-action-disabled-dispatch-live.dogfood.test.ts",
    "packages/qa/dogfood/test/rest-config-contract-harness.test.ts",
    "packages/qa/dogfood/test/rest-config-contract-live.dogfood.test.ts"
    ],
    "deviations": [
    "Dogfood Regression Gate does not run on pull_request or merge_group (its if: excludes both), so the PR's CI never runs these pins; the local run is their evidence until main's next battery",
    "1 derived gate NOT MEASURED (exit 3, prerequisite), named in gates",
    "the harness imports RestServer through @objectstack/runtime's re-export: @objectstack/rest is not a dogfood dependency and adding it would move pnpm-lock.yaml, outside the claim's file surface",
    "the first push was refused by check:commit-card-trailers (a Refs #26572 trailer and a model-named co-author line); the unpublished commit was reworded to the model-free pair and the merge of main redone on top, same tree — nothing published was rewritten",
    "the PR body folds .github/PULL_REQUEST_TEMPLATE.md headings (Why, Human Minimum) into the os-dev section order; its line 3 is Refs #26572, not the template's Fixes line, per the order"
    ],
    "body_amendments": [],
    "open_questions": [],
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #26829 comment 6450066188


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: slice 2 via PR #26829, merged as abecc12b60 · 2026-10-27T18:47Z

    Five items are pinned at their oracle layer: packaged-action-disabled-dispatch, action-activation-door-contract, rest-crud-config-contract, rest-batch-config-contract and rest-metadata-config-contract. ACCEPT → PR #26829 comment 6450066188. The card stays pm:dispatched, and the same card thread takes slice 3 on the same branch (claim 6445168911 still holds), starting with rest-route-generation-tombstones.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
    "issue": 26572,
    "status": "done",
    "branch": "claude/project-thread-0g4hto",
    "pr": "#26887",
    "head": "bbe0f12f563dece67e33fc050ea08854b6e42be7",
    "slice": "3 of 3, the last — item rest-route-generation-tombstones. With slices 1 (#26787) and 2 (#26829) all 11 card items are pinned; the PR says Fixes #26572",
    "session": "session_01JQwxbWUpGqdpDRiD79LqXV",
    "premise_still_valid": true,
    "summary": "rest-route-generation-tombstones now carries a pin at each clause's oracle layer in one new non-booting dogfood file. It covers acceptance[0] (every retired routes key, nameTransform at both former values, refused on a real RestServer naming RouteGenerationConfigSchema and the spec-17 removal) and acceptance[1] (the same through createRestApiPlugin(...).start(), beside a booting control). For acceptance[2] each prescription's surface was checked: the enable.apiEnabled / apiMethods keys declared on the strict ObjectCapabilities, crud.dataPrefix moving a real server's routes, the :object segment, and object_operation parsed. acceptance[3] has tsc failing on the key's own line for each authored key, naming '[REMOVED] Key retired', beside a clean control. acceptance[4] covers routes: {} normalizing to {} and an unknown key stripped. The item's automated.kind (dogfood), automated.ref, revision and a history row citing #26572 are revised. No clause text and no product code changed, and no product defect was found. Left unpinned across the card, as the items already record (no stock door): the activation door's metadata-plane 503 and its 501/503 durability arms; procedural clauses are out of the card's scope.",
    "tests": "Head bbe0f12 after merging main 1a8b7eb and rebuilding the dogfood closure: vitest run test/rest-route-generation-tombstones.test.ts → Test Files 1 passed (1), Tests 10 passed (10), under os-verify-lock. No ablation: the diff changes no tested behaviour.",
    "gates": "check-platform-checklist exit 0 (OK — 16 areas, 329 items). dispatch-gates --commands: 55 commands on merge head a4e98b2 after a closure rebuild, all 55 exit 0 (dual-build-cjs-loads measured this time). The first pass's dogfood typecheck caught a TS2339 in the new pin (.then on start()'s void | Promise); it was fixed in a4e98b2 and the second pass was all green. --ran: 55 accounted, 55 run, 0 NOT-MEASURED, 0 unrun. eslint on the touched file exit 0. After merging the next main (1a8b7eb) the derived list was unchanged; the closure was rebuilt and check-platform-checklist, the dogfood typecheck and the test file were re-run on the head, exit 0. PR check-runs: pending at report time.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm; the touched file ran as above",
    "mcp_calls": "0",
    "api_writes": "2 — relay pr_create (#26887, draft, assignee os-warren, label skip-changeset; read-back 7234 bytes sent = stored) and this os-dev-report comment via post-stamped; git push is not a REST write",
    "files_changed": [
    "docs/qa/platform-checklist/areas/api-backend.json",
    "packages/qa/dogfood/test/rest-route-generation-tombstones.test.ts"
    ],
    "deviations": [
    "the PR line 3 is Fixes #26572, per the seat's order, because no card item remains after this slice",
    "the new file is *.test.ts, not *.dogfood.test.ts: it boots no app (the isolated project's glob takes both)",
    "RestServer and createRestApiPlugin come through @objectstack/runtime's re-export; adding @objectstack/rest to dogfood would move pnpm-lock.yaml",
    "the PR body folds .github/PULL_REQUEST_TEMPLATE.md headings (Why, Human Minimum) into the os-dev section order"
    ],
    "body_amendments": [],
    "open_questions": [],
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #26887 comment 6452333416 · 2026-10-27T20:06Z


    Generated by Claude Code

  11. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: slice 3 (the last) via PR #26887, merged as 247a0889a4 · 2026-10-27T20:54Z

    rest-route-generation-tombstones is pinned at each clause's oracle layer (constructor and plugin path for every retired key at every former value, each prescription's surface, the tsc error on the key's own line, the empty-block and unknown-key controls). With slices 1 (#26787) and 2 (#26829) all 11 items on this card carry a pin at their oracle's layer; only what the items already record as having no stock door stays a live leg. ACCEPT → PR #26887 comment 6452333416. The card closes and leaves pm:dispatched.


    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, M3tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions