Repository navigation
docs(qa): re-word three v18 checklist clauses the 18.0 QA sweep found mis-asserted - #24592
Merged
objectstack-fleet[bot] merged 4 commits intoOct 19, 2026
Merged
Conversation
… mis-asserted platform-core.v18-boot-refusals acceptance[2]: the refused boot wrote no row and ran no D10 step, read as a row-level SQLite diff that includes the -wal, not a file checksum (the additive schema sync before the guard is expected). steps[0] stops passing -d to os serve. access-security.security-catalog-one-holder-and-boot-report acceptance[1] and title: an inline-manifest install-local answers 422 PLUGIN_REGISTER_FAILED whose message names each conflicting name and its holder, and nothing is installed; no conflicts[] on that door. approvals.act-door-and-admin-rescue-slate acceptance[1] and title: a PUT neither wire door claims is the door's ordinary 404 miss with no Allow header; 405 + Allow: GET, POST is the in-process member's answer only. Each item: revision 1 -> 2, one history entry naming its QA source. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…ecklist-v18-sweep-clauses
…l verify Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
Seat reviewACCEPT ·
This seat readies the PR and queues it with auto-merge. Generated by Claude Code |
objectstack-fleet
Bot
deleted the
claude/issue-24567-checklist-v18-sweep-clauses
branch
October 19, 2026 16:28
This was referenced Oct 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #24543
Refs #24567 (rows 1–2)
Clause-②: no
What this changes
Three platform-checklist clauses that the 18.0 QA sweep scored
failare assertion defects: the product is right and the clause is wrong. This PR re-words the three clauses, and nothing else: no product code, no test, no pin. Each item getsrevision1 → 2 and onehistoryentry that names its QA source. The entry'srefis this PR, set by a one-token follow-up commit once the number existed.platform-core.v18-boot-refusalsacceptance[2](clause, verify, evidence),steps[0]access-security.security-catalog-one-holder-and-boot-reportacceptance[1](clause, verify, evidence),title(install-local parenthetical)approvals.act-door-and-admin-rescue-slateacceptance[1](clause, verify, evidence),title(PUT leg)Files:
docs/qa/platform-checklist/areas/platform-core.json,docs/qa/platform-checklist/areas/access-security.json,docs/qa/platform-checklist/areas/approvals.json.1 ·
platform-core.v18-boot-refusalsacceptance[2] (rev 2)Before:
After:
Why the new clause is true of the code, re-measured against the source at this PR's base:
packages/runtime/src/organization-ownership-boot-guard.ts(module doc, "When it judges"): the guard judges in its ownstart(), ordered after the engine, whosestart()connects the drivers and runs the additive schema sync, and ahead of every plugin that writes at start. The doc also says the ceremony's boot "must write nothing before it is refused". So schema additions on a refused boot are the design, and rows written would be the defect. The new clause asserts exactly that.docs/adr/0131-total-organization-ownership-no-null-organization-id.mdD10: the four fates (column dropped, mirror deleted, attributed, reported) are the ceremony's. D10 item 5 says the refusing runtime "never auto-migrates". Nothing in D10 forbids additive sync. Each fate is visible in the row diff as a lost column, a lost row or a changedorganization_id. The ceremony's completion marker isORGANIZATION_OWNERSHIP_MIGRATION_ID = 'adr-0131-organization-ownership'inDATA_MIGRATION_FLAG_OBJECT = 'sys_migration'(packages/spec/src/system/migration.zod.ts).steps[0]:os servedeclares onlyport/dev/ui/console/server/prebuilt/preset/log-level/verbose/cert/key(packages/cli/src/commands/serve.ts,Serve.flags). There is no-dflag, so the old step is an invocation error. The QA run booted withOS_DATABASE_URL. The step had to change anyway, because it was the checksum procedure the old verify read. The-dcorrection rides along; see Deviations.2 ·
access-security.security-catalog-one-holder-and-boot-reportacceptance[1] (rev 2)Before:
After:
Re-measured against the source:
packages/cloud-connection/src/marketplace-install-local-plugin.ts, register step 3: whenmanifestService.registerthrows and the body carried an inline manifest (body.manifest), the door returns422 { error: { code: 'PLUGIN_REGISTER_FAILED', message: 'Failed to register imported manifest: ' + the error's message } }before step 4 persists anything. A cloud-fetched manifest takes the lenient path instead and IS installed (200,hotLoaded: false). That is why the clause now names the inline shape: without it, "nothing is recorded as installed" is false on the other source.packages/objectql/src/registry.ts,SecurityCatalogNameConflictError: the message lists every conflict asTYPE "name" is already held by HOLDER, joined with;. So "names each conflicting name and its holder" holds for one conflict and for several.packages/spec/src/api/error-code-ledger.zod.tsdocuments this door answering its ownPLUGIN_REGISTER_FAILEDat 422 and interpolating only the message.automated.reffiles mentions install-local. Agrep -lforinstall-local|installLocal|marketplaceover them exits 1, and all six paths exist. The.conflictsassertions inpackages/runtime/src/standalone-stack-security-catalog-one-holder.test.tsare made on the boot-refusal throw.422 NAMESPACE_CONFLICT on install-localsat in the title. Leaving it would have left the item contradicting its own clause; see Deviations.conflicts[]enhancement here, as ruled.3 ·
approvals.act-door-and-admin-rescue-slateacceptance[1] (rev 2)Before:
After:
Re-measured against the source. The two wire doors miss with different codes, and the clause names both:
os dev/os serve, the RUNNER's boot).packages/plugins/plugin-approvals/src/approvals-plugin.tsmountActionPagesputsrawApp.getandrawApp.poststraight on the raw Hono app, outside the adapter'sregisteredRoutes. A PUT therefore reaches the adapter'snotFoundseam. ThereallowedMethodsForPathfinds no registered method for the path, andunmatchedResponseanswers404 { error: { code: 'ENDPOINT_NOT_FOUND' } }with noAllowheader (packages/plugins/plugin-hono-server/src/adapter.ts). That is exactly what the QA run measured, twice; DELETE and PATCH answered the same.createHonoAppcatch-all, nohttp.server).packages/runtime/src/domains/approvals.tsdeclaresAPPROVALS_ACT_METHODS = ['GET', 'HEAD', 'POST'], and every other method "is not claimed and falls through". The item's own pinpackages/runtime/src/domains/approvals-act.test.tsasserts{ status: 404, code: 'ROUTE_NOT_FOUND' }for PUT, withhandleActionPagenever called.ApprovalService.handleActionPage(packages/plugins/plugin-approvals/src/approval-service.ts) returns405withAllow: GET, POSTfor any other method.action-page-member.integration.test.tspins that in-process for PUT, DELETE, PATCH, HEAD and OPTIONS.ROUTE_NOT_FOUND, the pin's code, while the QA run onos devsawENDPOINT_NOT_FOUND. Both are right for their door.Verification
git merge-base --is-ancestor 5b14b7f3 de43524606exits 0.git diff --stat 5b14b7f3 de43524606over the eleven files these clauses rest on (the boot guard, the install-local plugin, the approvals domain, plugin and service, the hono-server adapter, the registry, the dispatcher plugin,serve.ts, both approvals pins) plus the three area files shows one changed file:packages/objectql/src/registry.ts, from fix(objectql): report a bound action named like one its target already lists, and registerAction replacing another owner's handler #24526's bound-action reporting. None of its changed lines touchSecurityCatalogNameConflictError. The QA runs' live measurements therefore stand on this base unchanged.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands(change set from git: 3 paths, 48 changed lines; 13 families). All 13 ran atad55c68f84, and every exit code was captured before any pipe:node scripts/check-ci-filter-parity.mjs· exit 0node scripts/check-closing-keyword-parity.mjs· exit 0node scripts/check-closing-keyword-parity.mjs --self-test· exit 0node scripts/check-comment-mask-corpus.mjs· exit 0pnpm --filter @objectstack/lint run check:doc-formula-expressions· exit 0. The first attempt answeredPREREQUISITE NOT MET(exit 3:@objectstack/formula/@objectstack/lintnot built). That attempt measured nothing; it was re-run afterturbo run build --filter=@objectstack/formula --filter=@objectstack/lint, taken under the shared verify lock.pnpm check:cross-package-test-inputs· exit 0pnpm check:doc-authoring· exit 0pnpm check:driver-memory-census· exit 0pnpm check:gitlink-declared· exit 0pnpm check:nul-bytes· exit 0pnpm check:platform-checklist· exit 0. Its line:OK — 16 areas, 327 items …; symbol anchors: 855/865 resolved …, 18 file floors held. That is the same anchor count as on the untouched base, so no anchor was lost or added.pnpm check:refd-timer-probe· exit 0pnpm check:watch-hint-literal· exit 0--ranreconciliation:13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN.check:platform-checklistis not per-PR CI. It runs in the daily watchdog, so the local reading above is its evidence for this PR.packages/plugins/plugin-auth/src/checklist-refusal-envelope-consistency.test.tsreads every area file for its retired-convention absence regex. Run over all 5715 strings of the three edited files, the regex matches 0 times; its positive control matches. CI's Test Core runs the file itself.@objectstack/cli@17.7.0, and two showcase boots, all in a container shared with another dev agent. The dispatch asked for a source re-measurement, which is above. Each clause's verify step is concrete and runnable: the SQLite row diff (row 1), the 422 body'scodeandmessageplus the package list (row 2), and the PUT's status,codeand absentAllowheader (approvals checklist: act-door-and-admin-rescue-slate clause 1 pins PUT 405 Allow on the wire, but both wire doors answer 404 by design (its own pin asserts the 404) - re-word #24543).docs/qa/**is inside no package's publishedfiles), soskip-changeset.Deviations (each beyond the three clause texts, inside the three claimed files)
platform-core.v18-boot-refusalssteps[0]: re-worded. It was the checksum procedure the old verify read, and it passed-dtoos serve, which has no such flag. That-dwas a checklist-accuracy finding of QA run QA run · priority:P0 (23/23) · 5b14b7f3 · 2026-10-19 · 17 PASS / 5 PARTIAL / 1 FAIL / 0 BLOCKED / 0 NOT-RUN #24556, and the fix is mechanical: the run booted withOS_DATABASE_URL.access-security.security-catalog-one-holder-and-boot-reporttitle: its install-local parenthetical carried the same falseNAMESPACE_CONFLICT.approvals.act-door-and-admin-rescue-slatetitle: its PUT leg, as the dispatch allowed.Acceptance notes
Row 1's open question for the maintainer, quoted unchanged from platform-checklist + cli: three findings from the 18.0 QA sweep at 5b14b7f3 — two clauses mis-asserted against documented contracts, and a refusal that prescribes a withdrawn command (family card) #24567:
This PR does not answer it. The new clause records the additive schema as expected only because the guard's own contract orders it.
platform-checklist + cli: three findings from the 18.0 QA sweep at 5b14b7f3 — two clauses mis-asserted against documented contracts, and a refusal that prescribes a withdrawn command (family card) #24567 row 3 remains open: the drop-gate refusal text in
packages/cli/src/commands/migrate/apply.tsand the help example inorganization-ownership.tsbelong to thedomain:clilane. This PR leavespackages/**untouched.Checklist-accuracy findings that the same QA records list for these three items, not taken here. They close out through the wave's anchor card, per RUNNER's extraction obligation; that card has no number yet.
platform-core.v18-boot-refusals: steps[1]'sos devwithservices:{auth:false}is refused earlier on three counts; and clause 1 names the codeORGANIZATION_OWNERSHIP_MIGRATION_REQUIRED, which the CLI output does not print.access-security.security-catalog-one-holder-and-boot-report: clause 4's clean-boot info line shows only withOS_LOG_LEVEL=info.approvals.act-door-and-admin-rescue-slate:fixtures.requiresasks for a dev mail transport capture, but the action links already sit insys_notification.payload.actionsafter a remind.Observation, not filed.
packages/cloud-connection/src/marketplace-install-local-hot-loaded.test.tsandmarketplace-install-local-convert-forward.test.tsassertPLUGIN_REGISTER_FAILEDat this door. Whether either pins the catalog-conflict message, which would make it a candidate for the item'sautomated.ref(RUNNER rule 6, reverse direction), was not judged. ⛔ No pin was changed.Generated by Claude Code