Skip to content

docs(qa): 18.0 sweep anchor round 3 — the approvals token door after the reminder link removal, a consumed-changeset citation, and §3 accuracy corrections in six areas - #24649

Merged
objectstack-fleet[bot] merged 8 commits into
mainfrom
claude/issue-24579-v18-sweep-accuracy-round3
Oct 19, 2026
Merged

objectstack-fleet[bot] merged 8 commits into
mainfrom
claude/issue-24579-v18-sweep-accuracy-round3

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Refs #24579
Clause-②: no

The third dispatch of the 18.0 release sweep's wave anchor: one PR in three parts, checklist ledger only. It changes the seven docs/qa/platform-checklist/areas/ files the claim names and nothing else: no product code, no test, no pin. Each edited item takes one revision bump and one history row naming the run records it rests on. Every finding was re-derived from source at base 9a7838edf5 (merged up to origin/main 7c7741dcb4 before this PR opened) before an edit, and the console claims were read on objectui. Findings that did not hold are listed below with the reading that refuted them.

The history rows carry the placeholder ref #PENDING-24579R3, because the PR has no number until it is created. A follow-up commit on this branch swaps exactly those strings for this PR's number.

Part (a): §1's last row, after PR #24620

PR #24620 (65a8eeb7d4, the repair of #24564) took the one-tap link off the reminder payload. On main remind() mints no token and attaches no link, issueActionTokens has no production caller, and no REST door reaches it, so no stock boot holds a live action token. The live-token legs move to the pins, now named per clause in a new automated.ref. The live run keeps three legs: the at-rest read (the reminder row carries no link), the token=garbage page, and the anonymous-client proof. act-door-and-admin-rescue-slate's fixtures.requires follows; #24620 refutes QA run #24542's reading that the raw links sit in sys_notification.payload.actions.

item fields edited revision run record
approvals.act-door-and-admin-rescue-slate fixtures.requires[1], steps[0], acceptance[1].verify, acceptance[1].evidence 2 → 3 #24542, #24558
approvals.email-action-token-door personas[0], fixtures.requires[0], fixtures.requires[1], fixtures.knownGaps, steps, acceptance[0].clause, acceptance[0].verify, acceptance[0].evidence, acceptance[1].oracle, acceptance[1].verify, acceptance[1].evidence, acceptance[2].oracle, acceptance[2].verify, acceptance[2].evidence, acceptance[3].oracle, acceptance[3].verify, acceptance[3].evidence, acceptance[4].verify, acceptance[4].evidence, acceptance[5].verify, acceptance[5].evidence, automated, source[2], source[4], source 3 → 4 #24542, #24558 (§1 row from 6272314386)

Pins measured at base 9a7838edf5 under scripts/pm/os-verify-lock.sh (VERDICT command-exit 0), plugin-approvals vitest: approval-service.test.ts 367, action-page-member.integration.test.ts 12, sys-approval-token-generic-door.integration.test.ts 6, reminder-action-link-at-rest.integration.test.ts 4, approval-token-internal-hash.integration.test.ts 1. All 390 passed, 0 failed.

Part (b): the rider

cli.organization-ownership-ceremony fixtures.knownGaps[0] quoted QA run #24551 with the consumed path .changeset/pre/15212-180-guards-fresh-single-only.md inside the quotation. The quotation now ends before the path. The carrier is named in the item's own prose as the changeset 15212-180-guards-fresh-single-only, the spelling its source list uses. This is a citation fold, so no revision is taken and no history row is added. Round 2 measured the same rule: a semantic edit needs a revision, and a citation fold does not.

item fields edited revision run record
cli.organization-ownership-ceremony fixtures.knownGaps[0] 2 → 2 #24551 (rider)

Part (c): §3 checklist-accuracy findings, six areas

cli (13 items)

item fields edited revision run record
cli.build-own-contract steps[2], steps[5] 5 → 6 #24551
cli.datasource-introspect-codegen steps[1], fixtures.knownGaps[2] 5 → 6 #24551
cli.dev-automigrate-policy steps[4], acceptance[5].clause, acceptance[5].verify, source[3] 2 → 3 #24551
cli.doctor-health-report steps[1], acceptance[5].clause, acceptance[5].verify 3 → 4 #24551
cli.hook-body-extraction-gates steps[0], acceptance[0].clause, acceptance[0].verify, acceptance[0].evidence 3 → 4 #24551
cli.meta-package-flags-and-explain fixtures.requires, steps[0] 1 → 2 #24551, #24558
cli.migrate-duplicates-inventory steps[4], acceptance[3].verify 7 → 8 #24551
cli.migrate-meta-write-stored-and-all fixtures.requires[1], steps[1] 1 → 2 #24551, #24558
cli.migrate-plan-apply-json steps[1], automated.ref 4 → 5 #24551, #24598
cli.qa-suite-execution steps[6] 6 → 7 #24551
cli.scaffold-console-first-paint fixtures.requires, fixtures.knownGaps[2] 4 → 5 #24551, #24598
cli.verify-derived-proof-families steps[1], acceptance[2].clause, acceptance[2].verify 1 → 2 #24558
cli.verify-verdict-exit-mapping automated.ref 1 → 2 #24598

api-backend (17 items)

item fields edited revision run record
api-backend.action-activation-door-contract fixtures.knownGaps, acceptance[4].verify 2 → 3 #24541
api-backend.aggregate-contract-matrix steps[3], steps[5], fixtures.knownGaps[1], negative[2] 2 → 3 #24541, #24595
api-backend.api-methods-verb-gate fixtures.requires[1], steps[6], acceptance[2].verify 1 → 2 #24541
api-backend.bulk-write-contract steps[3], acceptance[2].verify 2 → 3 #24541
api-backend.data-request-shape-and-query-arity steps[4] 1 → 2 #24558
api-backend.enforce-or-remove-authoring-gates steps[1] 4 → 5 #24541
api-backend.error-envelope-ledger acceptance[3].clause, acceptance[3].verify 4 → 5 #24541
api-backend.error-sentences-and-unique-violation-wire-code fixtures.requires[2], steps[0], steps[2], acceptance[1].clause, acceptance[1].verify 2 → 3 #24541, #24558
api-backend.formula-stdlib-matrix steps[2] 2 → 3 #24541
api-backend.meta-read-doors-v18 fixtures.requires[1], steps[4], acceptance[4].clause, acceptance[4].verify 1 → 2 #24541, #24558
api-backend.packaged-action-disabled-dispatch steps[5] 3 → 4 #24556
api-backend.query-contract-matrix steps[4] 3 → 4 #24556
api-backend.rest-batch-config-contract fixtures.knownGaps[1], automated.ref 2 → 3 #24541
api-backend.rest-crud-config-contract fixtures.knownGaps[1], automated.ref, acceptance[2] 2 → 3 #24541
api-backend.rest-metadata-config-contract steps[8], acceptance[4].clause, acceptance[4].verify, personas[1] 4 → 5 #24541
api-backend.retired-def-refusal steps[4] 2 → 3 #24541
api-backend.second-object-exposure-and-internal-fields steps[0], steps[1], acceptance[1].clause 1 → 2 #24541, #24558

automation (13 items)

item fields edited revision run record
automation.flow-authoring-refusals-v18 steps[0], acceptance[1].clause, acceptance[1].verify 2 → 3 #24545, #24558
automation.flow-error-handling fixtures.requires[1], steps[4] 4 → 5 #24545
automation.flow-node-type-matrix acceptance[1].clause, acceptance[1].verify, steps[1], automated.ref 6 → 7 #24545, #24598
automation.flow-registration-verdict-on-read fixtures.requires[1] 1 → 2 #24545
automation.flow-run-semantics-v18 fixtures.requires[2], steps[0] 1 → 2 #24598, #24558
automation.flow-run-step-nesting acceptance[1].clause, acceptance[1].verify 5 → 6 #24545
automation.packaged-flow-clone-contract acceptance[1].clause, acceptance[1].verify 3 → 4 #24545
automation.packaged-flow-subflow-disable-refusal acceptance[0].clause 3 → 4 #24545
automation.paused-run-trigger-record-masked fixtures.requires[2] 1 → 2 #24545
automation.rollup-summary-filter steps[6], acceptance[4].verify 4 → 5 #24545
automation.setup-packaged-automation-board steps[2], steps[3], acceptance[1].clause 3 → 4 #24545
automation.trigger-status-contract personas, steps[2], steps[5] 2 → 3 #24545, #24596
automation.trigger-type-matrix acceptance[4].verify, automated.ref 4 → 5 #24545, #24598

i18n (2 items)

item fields edited revision run record
i18n.flow-copy-translation-and-host-override fixtures.requires[2], steps[2], acceptance[4].verify 1 → 2 #24553, #24558
i18n.surface-matrix acceptance[2].verify 8 → 9 #24553

ai (5 items)

item fields edited revision run record
ai.agent-tool-skill-metadata-roundtrip steps[1], acceptance[3].verify 5 → 6 #24540
ai.mcp-coded-refusals-and-runtime-exposure fixtures.requires[2], steps[0] 1 → 2 #24540, #24558
ai.mcp-http-surface variants[0], steps[5] 3 → 4 #24540
ai.mcp-run-action-exposure-gate acceptance[4].clause 3 → 4 #24540
ai.skill-instructions-mcp-prompts fixtures.requires[0] 2 → 3 #24540

ux-conventions (3 items)

item fields edited revision run record
ux-conventions.disabled-control-reason fixtures.knownGaps[1] 3 → 4 #24570
ux-conventions.labels-over-machine-names fixtures.knownGaps[0] 3 → 4 #24570
ux-conventions.write-feedback fixtures.knownGaps[1], steps[3], steps[4] 3 → 4 #24570

No area exceeds 20 edited items. Each item's history row states what the finding was, the source it was re-derived from, and whether any clause changed.

Pins added to automated.ref or named in a clause (PM hypothesis 2): each was measured at base 9a7838edf5 under the verify lock before it was cited. rest-config-mount-table.pin.test.ts has 24 tests (rest-crud / rest-batch-config-contract). api-derivation.test.ts has 32 (api-methods-verb-gate). plugin.translations.test.ts has 10 (i18n.flow-copy). The five approvals pins are listed above. All passed. Four over-claiming refs are narrowed to the clause their pin covers, as round 2 did for scope-depth-asymmetry, and no pin is deleted: cli.migrate-plan-apply-json (acceptance[2] only), cli.verify-verdict-exit-mapping (acceptance[4] only), automation.trigger-type-matrix (acceptance[5] only) and automation.flow-node-type-matrix (one variant of acceptance[1]).

ux-conventions (objectui read): objectstack-ai/objectui#12690, #12303, #12691 and #12693 are each closed as completed. They landed through objectui PR #12830 (0f42aaf8), #12324 (b64fda3f), #12833 (d0a00d79) and #12834 (cda4076b). Each merge is an ancestor of the console pin 4016370a and of objectui main 2a75c83 (merge-base --is-ancestor exit 0), and the fixed code is present on main. QA run #24570 at 4016370a is the evidence that the old expected FAILs no longer reproduce.

Findings left alone, with the reading that refuted each

Named, not acted on

Gates

The gate list was derived with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on this diff (13 families, 7 paths against merge base 7c7741dcb). All 13 were run at f8fe79c742, with each exit code captured before any pipe, and every one exited 0: check-ci-filter-parity, check-closing-keyword-parity, check-closing-keyword-parity --self-test, check-comment-mask-corpus, @objectstack/lint check:doc-formula-expressions, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist, check:refd-timer-probe and check:watch-hint-literal. The --ran reconciliation reads: '13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN'.

check:platform-checklist runs in no per-PR CI, so this local reading is its evidence: check-platform-checklist: OK — 16 areas, 327 items (322 active, 1 planned). Symbol anchors went from 873/883 at base 9a7838edf5 to 875/885 at head: 2 added, 0 lost, 10 on the #16898 residual, and all 18 file floors held (PM hypothesis 3). The two new anchors come from cli.dev-automigrate-policy source[3], which now names the decision's home and its three readers. approval-service.ts#approver became #remind, so that swap leaves the count unchanged.

skip-changeset, re-measured: docs/qa/** is part of no package's files[], so this diff publishes nothing. The full farm is CI's.

Acceptance notes


Generated by Claude Code

…removal; the ownership ceremony's knownGap names its consumed changeset

approvals.email-action-token-door rev 4: no stock door mints an action token
since the reminder stopped carrying a link, so the live-token legs move to the
pinned tests (now in automated.ref) and the live run keeps the at-rest read,
the garbage-token page and the anonymous-client proof.
approvals.act-door-and-admin-rescue-slate rev 3: its live-token fixture and
legs follow. cli.organization-ownership-ceremony: knownGaps[0] spells the
consumed changeset by name (citation fold, no revision).

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…uracy findings

Thirteen cli items revised once each: the deliberate build breaks sit on
plain-literal objects, the hook-body gate counts every forbidden pattern, the
doctor's clean baseline stages a view over the starter object, the qa-suite
step reads the transcript, the dev self-heal names its one decision home, and
two over-claiming automated refs say which clause their pin covers.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…ep's accuracy findings

Seventeen api-backend items revised once each: doors and spellings the
sweep measured (the timezone lever's analytics door, the by-id expand
spelling, the filter.t_ref location, continueOnError, the seven cache
carve-outs), pins that now exist (the REST mount table), and arms that
neither a stock boot nor a pin reaches.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…p's accuracy findings

Thirteen automation items revised once each: the clone's ten dropped keys,
the caller-specific remedy, the resume arms' specimens and spellings (the
409 slow-node recipe included), where an unpackaged probe lands, taken vs
untaken end steps, the namespace prefix a scratch base needs, the refused
flow a verdict read can store, the member persona's real grants, and two
over-claiming automated refs narrowed to the clause their pin covers.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…nst the 18.0 sweep's accuracy findings

i18n (2 items): the extract flag that emits flow keys, the scratch flow
specimens, the coverage baseline being a count, the pin for the second load
order. ai (5 items): the authoring warning an app agent draws, both
code-only refusal shapes, the full data:read tool family, both system-object
guard spellings, the skill body's required tools, the MCP argument names.
ux-conventions (3 items): the expected FAILs objectui has since fixed become
regression rows, and the write-feedback member and validation-rule rows name
what stock can drive.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…hat landed on main

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 19, 2026
Swaps exactly the 55 placeholder history refs for the PR's number.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Seat review

ACCEPT · domain:devx seat 1 · os-warren · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-19T21:19Z · head 2b4fabb25f · card #24579 round 3 (claim 6275661103)

  • Form.
    • Draft, base main. First lines are Refs #24579 and Clause-②: no. Assignee os-warren; labels size/l and skip-changeset.
    • node scripts/pm/check-governed-merges.mjs --pr 24649 → NOT governed, 707 changed lines (≤ 3000).
    • git merge-tree against main f89d29e382 is clean.
  • Scope. The seven claimed files under docs/qa/platform-checklist/areas/, +483 / −224, and no other path. No package, test, pin or gate is touched.
  • Ledger invariants, checked by parse against the merge base 7c7741dcb4.
  • Spot-checked against the head's source.
    • Part (a), approvals.email-action-token-door (rev 4). The live-token legs move to oracle test, with a per-clause automated.ref. All four pins it names exist in packages/plugins/plugin-approvals/src/: approval-service.test.ts, action-page-member.integration.test.ts, sys-approval-token-generic-door.integration.test.ts and reminder-action-link-at-rest.integration.test.ts, with approval-token-internal-hash.integration.test.ts beside them. PR fix(plugin-approvals): a reminder's notification payload carries no one-tap action token #24620's change is the premise.
    • New pins elsewhere. rest-config-mount-table.pin.test.ts, plugin.translations.test.ts and spec/src/data/api-derivation.test.ts exist. All nine new pins were run at base under the verify lock: 390 + 24 + 32 + 10 passed (dev report 6277457406).
    • Narrowed refs. Four over-claiming refs (cli.migrate-plan-apply-json, cli.verify-verdict-exit-mapping, automation.trigger-type-matrix and automation.flow-node-type-matrix) are narrowed per clause, and no pin is deleted.
  • Gates.
    • The dev's dispatch-gates union: 13 derived, 13 run, all exit 0 at 2b4fabb25f.
    • check:platform-checklist anchors go from 873/883 to 875/885 (+2, none lost).
    • Check-runs at 2b4fabb25f: 39, all completed, 31 success and 8 skipped. node scripts/pm/check-expected-skips.mjs --pr 24649 → OK — 8 skipped check-run(s), every one in the roster (exit 0).
    • No review and no comment.
  • Left alone, accepted. The report lists each finding it did not take, with the refuting reading. Two examples:
    • the migrate-meta-codemod throw claim is refuted by authoredSourcePlugin;
    • the OS_METADATA_WRITABLE object/flow halves are refuted, because allowRuntimeCreate is true for both.
  • Filed from this round: spec: 18.0 still tells authors that "only 'object_operation' and 'flow' endpoints execute in 17.x" — the endpoint publish refusal, its runtime hint and two published schema describes name the wrong major #24654. The 18.0 endpoint publish refusal, its runtime hint and two published .describe texts still say "execute in 17.x". That card is in the spec lane, out of this card's scope.
  • Carried on this card.

This seat readies the PR and queues it with auto-merge.


Generated by Claude Code

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

Labels

size/l skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants