Repository navigation
docs(qa): 18.0 sweep round 12 — QA round 3's api and build checklist-accuracy findings outside cli.json: refs narrowed per clause, stale steps and wording corrected - #24824
Conversation
…d to negative[0], degraded-recovery view body QA run #24779 checklist-accuracy findings 1 and 8 (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…per clause QA run #24779 checklist-accuracy finding 2 (wave anchor #24579 round 12, claim 6286008102): acceptance[4] and [5] have no full-clause pin. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…e scan-cap clause per ADR-0139 QA run #24779 checklist-accuracy findings 3 and 4 (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
… the os dev walled sentence in two more items QA run #24779 checklist-accuracy finding 5 and round 11's carried finding 3 (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…dentity_email QA run #24779 checklist-accuracy finding 6 (wave anchor #24579 round 12, claim 6286008102); ADR-0131 D7. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…GNAL body and 404 code, flow-authoring ref narrowed QA run #24779 checklist-accuracy finding 7 and QA run #24786 C8 (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…, two knownGaps lines QA run #24779 checklist-accuracy findings 9, 10 and 11 (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
retired-def-refusal's prefixes, the migrate advisory's headline, the showcase's one today() use, and the routes tombstone ref per clause (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
Fills the 18 history rows written with the branch name before the PR existed (wave anchor #24579 round 12, claim 6286008102). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
Seat reviewACCEPT ·
This seat readies the PR and queues it with auto-merge. Generated by Claude Code |
Refs #24579
Clause-②: no
Round 12 of the 18.0 sweep's wave anchor (claim 6286008102). It applies QA round 3's
surface:apifindings (#24779) andsurface:buildfindings B1–B4 (#24787) outsidecli.json, #24786's C8, round 11's carried finding 3, and the draft-read spelling sweep.Checklist text only. 18 items in 8 area files, each with one
revisionbump and onehistoryrow. No product code, test, pin, changeset text orRUNNER.mdchanged.cli.jsonand the three items PR #24811 edits are untouched.307ce4c4b4.origin/mainc56115bf96is merged in0f2f4de9f1, which touches nodocs/qa/**file.refis written as this branch's name. The commit after this body fills it with this PR's number.Findings applied
integration-system.connector-declarative-bootautomated.refnegative[0] ONLY; names the mcp-variant and state-only halves; acceptance[0]–[5] and negative[1] are driven by handshowcase-declarative-mcp.dogfood.test.ts: two cases,showcase_erp_catalogabsent (n0); a0–a2 asserted as halves onlyapprovals.email-action-token-doorautomated.refremind()mints no token and attaches no link;issueActionTokenshas test callers only; no step harvests a token fromsys_notification.payload.actions(the three ledger hits state its absence). The token source is already named infixtures.requires[1]: the pins' in-process mintattachments-storage.field-accept-maxsize-server-enforcedautomated.reffile-reference-lifecycle.test.ts› 'accept / maxSize enforcement' › 'refuses an UPDATE onto an oversize file with the same envelope, leaving the record and both files as they were' (refusal envelope; record and both files unchanged)attachments-storage.read-inherits-parent-rlsacceptance[3]clause, verify, evidenceattachment-access-hooks.tsinstallAttachmentReadVisibilitydocblock,READ_SCAN_LIMIT; the scan-cap pin asserts no-row caplineaccess-security.sharing-rules-widensteps[0]singleposture; no clause needsOS_TENANCY_POSTURE=isolatedresolveTenancyPosturedefaults tosingle; RUNNER's "isolated boot" is the own-port, own-DB bootidentity-auth.self-service-password-resetfixtures.requires[0],knownGaps[0],steps[1],acceptance[0]verify and evidencesys_email→sys_identity_emailauth-manager.ts(theauth.password_resetsend passesidentityMail: true),email-service.tsemailLogObjectOf,email-log-objects.ts; the object readsget/listfor the platform adminautomation.trigger-status-contractsteps[5],steps[2],acceptance[0]clause and verify{"output":{"$x":1}}→{"inputs":{"new_assignee":"…"},"output":{"$x":1}}; "404 (no such flow)" → "404 RESOURCE_NOT_FOUND"engine.ts:refuseInvalidScreenInputruns beforeapplyResumeSignal; the wizard'scollectscreen requiresnew_assignee;flow-dispatch-status.ts404 row carries no code, sobuildApiErrortakesHttpStatusErrorCodeMap[404](packages/spec/src/api/errors.zod.ts)integration-system.connector-degraded-recoverysteps[6]{ name: 'OBJECT.NAME', object, viewKind: 'list', config: { type: 'grid', data, columns } }; a flat body answers 422ViewItemSchema(view.zod.ts): discriminated onviewKind, dottednamerequiredplatform-core.marketplace-install-local-lifecyclefixtures.requires[1],steps[2],steps[6],steps[7],acceptance[4].verifypnpm buildwrites, and rebuild only when it is absent; "sampleDataPurged persisted on the ledger entry" → the listing readswithSampleData:false, andsampleDataPurged:trueis in the ledger filehandleListserveswithSampleDatafromsampleDataInScope(#21775), with nosampleDataPurged;local-manifest-source.tskeeps both inSTORAGEDIR/MANIFESTID.json;@objectstack/example-crmhasbuild: objectstack build, andexamples/*/dist/is gitignoredplatform-core.docs-audience-gatefixtures.knownGaps[2](new)book.test.tsaudienceAllowscases drive three shapes only;book.zod.tsfinalreturn false. The item has noautomated.ref, so there is nothing to narrowplatform-core.seed-mode-matrixfixtures.knownGaps[2](new)seed-loader.tsloadExistingRecords:map.set(key, record)over an unordered find, so the last row winsapi-backend.retired-def-refusalsteps[0],acceptance[3].clauseretired-defs/entries: 53 at prefix 17, 171 at prefix 18;PROTOCOL_VERSION = '18.0.0'api-backend.enforce-or-remove-authoring-gatessteps[1]⚠ [protocol 17] data.filter $regex / $options — …; the id appears only in--jsontodos[].idmigrate/meta.tsprintNoticeprints[protocol N] surface → replacement; the entry declares norelevantWhen, so it is always listedapi-backend.formula-gatesacceptance[3].clausetoday()use, a less-than comparison ofrecord.f_dateagainsttoday()predicate-matrix.action.tsis the onlytoday()call underexamples/app-showcase/srcapi-backend.rest-route-generation-tombstonesautomated.refnameTransform: 'plural'by hand); a4's empty-block half (§E), theroutesstrip unpinned; no pin for a2 or a3rest-sub-config-parse-not-cast.test.ts§B, §C and §E case namesautomation.flow-authoring-refusals-v18automated.refacceptance[0] ONLY; a1–a3 are driven by hand with the CLI and a bootos validateorPUT /api/v1/meta/flowaccess-security.grant-table-write-contract,access-security.parent-and-organization-write-guardsfixtures.knownGaps[0]serve.ts"AuthPlugin skipped — set OS_AUTH_SECRET" branch, unchanged after the merge; the ledger now holds 6 of the new sentence and 0 of the oldNarrower than the record, said out loud (finding 15). The record reads "§E covers a0, a1 and a4". At base:
batch.defaultAtomic.nameTransformwith'none'only, while acceptance[0] names both former values.batchandmetadata.endpoints, neverroutes.The draft-read spelling sweep (finding 18)
How the routes read the query at base, in both the
RestServerand the runtime-dispatcher transports:GET /meta/:type/:nameadmitslayers, state, preview, package, locale, member(META_ITEM_READ_PARAMS,meta-item-read-gate.ts). A GET carryingmodeanswers 400VALIDATION_ERROR, and a draft read is?state=draft.PUT /meta/:type/:nameadmitsforce, package, mode, surface(META_ITEM_SAVE_PARAMS).metaSaveRequestOptions(meta-save-request.ts) reads?mode=draftas a draft save.DELETEadmitsstate(META_ITEM_RESET_PARAMS), and/publishadmitspackage, member.So the route that takes
mode=draftis the save door, not a view or page preview.Each hit judged by its route and its role:
PUT …?mode=draft, or "a ?mode=draft save").ai.agent-tool-skill-metadata-roundtripacceptance[3].verify).?mode=draft, so none is corrected. None of the hits is inside the three excluded items.Left alone, and why
cli.jsonbelongs to round 13, andRUNNER.mdis outside this claim. PR qa(checklist): clauses for three round-3 defects outside the ledger, plus two RUNNER rules — a pin scores only the layer it drives, and an off-clause probe budget #24811 owns three items:access-security.no-active-org-session-semantics,api-backend.batch-transactional-discoveryandrecords-forms.validation-rule-type-matrix.STORE_UNAVAILABLE, the MFA grace-0 boot and the raw-404 leg.sys_notification.payload.actions, andfixtures.requires[1]already names the in-process mint.automatedfield.mode=draftis the PUT save door.Acceptance notes
These are noted, not filed.
cli.json, after this PR. QA run QA run · surface:api (116/130) · 580fd4ed · 2026-10-20 · 62 PASS / 54 PARTIAL / 0 FAIL / 0 BLOCKED / 14 NOT-RUN #24779's runner read it as theisolatedtenancy posture. Only finding 5's item is reworded here. Carrier: qa(checklist): 18.0 release sweep anchor at 5b14b7f3 — re-point 5 red-row clauses + the wave's checklist-accuracy findings, fixture gaps and not-run handover (18 records) #24579.approvals.email-action-token-doornegative[2]: action-page-member's dead-link case compares each page torenderResultPage(kind)with no request, which renders no summary rows. That is arguably a pin for negative[2], which QA run · surface:api (116/130) · 580fd4ed · 2026-10-20 · 62 PASS / 54 PARTIAL / 0 FAIL / 0 BLOCKED / 14 NOT-RUN #24779 scored unpinned. Not changed. Carrier: qa(checklist): 18.0 release sweep anchor at 5b14b7f3 — re-point 5 red-row clauses + the wave's checklist-accuracy findings, fixture gaps and not-run handover (18 records) #24579.access-security.owd-save-gateacceptance[0].verify says "a follow-up GET finds no qa_owd_probe" and names no draft read for the?mode=draftleg. QA run QA run · surface:api (116/130) · 580fd4ed · 2026-10-20 · 62 PASS / 54 PARTIAL / 0 FAIL / 0 BLOCKED / 14 NOT-RUN #24779 met the GET's 400 there. It is not amode=draftread instruction, so the sweep leaves it. Carrier: qa(checklist): 18.0 release sweep anchor at 5b14b7f3 — re-point 5 red-row clauses + the wave's checklist-accuracy findings, fixture gaps and not-run handover (18 records) #24579.Gates
Local subset at
0f2f4de9f1, fromnode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(13 commands). Each exit code was captured before any pipe:node scripts/check-ci-filter-parity.mjsnode scripts/check-closing-keyword-parity.mjsnode scripts/check-closing-keyword-parity.mjs --self-testnode scripts/check-comment-mask-corpus.mjspnpm --filter @objectstack/lint run check:doc-formula-expressions(after a lockedturbo run build --filter=@objectstack/lint... --filter=@objectstack/formula... --concurrency=2,VERDICT command-exit 0)pnpm check:cross-package-test-inputspnpm check:doc-authoringpnpm check:driver-memory-censuspnpm check:gitlink-declaredpnpm check:nul-bytespnpm check:platform-checklistpnpm check:refd-timer-probepnpm check:watch-hint-literal--ranreconciliation: "13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN", a derived zero, since every line carries its exit code.check:platform-checklistruns in no per-PR CI, so this local reading is its evidence. At base307ce4c4b4: line citations 0, symbol anchors 954/964 resolved, 10 on the named residual. At0f2f4de9f1: the same, line citations 0 and symbol anchors 954/964.git merge-tree --write-tree 0f2f4de9f1 2a799d9c1f(PR qa(checklist): clauses for three round-3 defects outside the ledger, plus two RUNNER rules — a pin scores only the layer it drives, and an off-clause probe budget #24811's head, fetched frompull/24811/head): exit 0, treebbdaf1d5b2. The two shared files,access-security.jsonandapi-backend.json, are notmerge=os-regenpaths.skip-changeset:docs/qa/**ships in none of the 86 package manifests'files[], and the repo root is private.Generated by Claude Code