Repository navigation
docs(qa): 18.0 sweep round 9 — three pin over-claims narrowed, comma-range line citations re-pointed - #24752
Merged
objectstack-fleet[bot] merged 12 commits intoOct 20, 2026
Conversation
…aims narrowed conditional-rules-grid drops grid-file-upload.spec.ts and its stale record (seat ruling) and names the unpinned Product cell; master-detail-atomic-save narrows master-detail.spec.ts to what it asserts carrier-neutrally; field-type-constraints stops citing summary-rollup.spec.ts for invoice.total. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…e citations re-pointed record-view-read-audit anchors read-audit.ts#buildRow; share-link-landing-page names its SharedRecordPage branches in prose (objectui, shipped pin). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…e-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui, in prose read at the shipped pin. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
… line citations re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui, in prose read at the shipped pin. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…ations re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui, in prose read at the shipped pin. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui and test files, in prose. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…citations re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui and test files, in prose. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…citations re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui and test files, in prose. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…citations re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui and test files, in prose. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…ns re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui and test files, in prose. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…ne citations re-pointed Each comma-range citation names the code its line range pointed at, as a file#symbol anchor or, for objectui and test files, in prose. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…quest number Exactly the 23 placeholder history refs change, and nothing else. 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-24579-v18-sweep-round9-citations
branch
October 20, 2026 05:15
This was referenced Oct 20, 2026
This was referenced Oct 20, 2026
This was referenced Oct 20, 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.
Refs #24579
Clause-②: no
Round 9 of the 18.0 release sweep's wave anchor (#24579), claim
6282463055. One PR in two parts. These are checklist defects only: no product code, test, pin or objectui spec changes, in either repository. Each of the 23 edited items takes onerevisionbump and onehistoryrow (3 in part A, 20 in part B). The rows'refis a placeholder in this head; a fill commit replaces exactly those strings with this PR's number.Base:
origin/main39e93b9ef9(fast-forwarded; the branch carries no merge). objectui was read only, withgit showat the shipped pin12dc7b47c340and at the sweep pin4016370af3c9, and older objectui files were fetched as raw text at the pin each item was authored against.Part A —
records-forms.json, the seat ruling and round 8's three half-claimsrecords-forms.conditional-rules-gridautomated.ref,automated.stale(removed),acceptance[2].verify,acceptance[3].verifye2e/live/grid-file-upload.spec.ts(blobfeb5ff39at both pins)/api/v1/batchcarries a receipt with a name and an http(s) url; it never re-reads the line or fetches the file6281811723): named inautomated.refas dropped at revision 8.stale.partialnamed only this spec, so the wholestaleblock goes.acceptance[3].verifyno longer says it pins the clausee2e/live/grid-parent-rules.spec.ts(blobb94e2d63at both pins)readonlyWhen: parent.status == 'paid'(invoice.object.ts)acceptance[2].verifyand the ref's note now say Qty and Unit Price only, and name the Product cell as unpinned.acceptance[0]'s inline-flag narrowing is left as round 8 wrote itrecords-forms.master-detail-atomic-saveacceptance[0].verify,automated.refe2e/live/master-detail.spec.ts(blobfdfaf571at both pins)showcase_project_workspace("New Project + Tasks"): the firstPOST /api/v1/batchthe save sends opens with the populatedshowcase_projectop, and carries oneshowcase_taskop whoseprojectis{$ref: 0}; one child, staged through the per-row formacceptance[0]pass on it (2/2)records-forms.field-type-constraintsacceptance[7].verify,fixtures.knownGaps[0]e2e/live/summary-rollup.spec.ts(blob49338c81at both pins)showcase_project'stotal_estimate(SUM) andtask_count(COUNT) overshowcase_task, through a direct/api/v1/batch; it never readsshowcase_invoice.totalinvoice.total. The spec was never in this item'sautomated.ref(API pins only), so there is nothing to drop there. Bounded in-place fix in the same item:knownGaps[0]'screateColumn ~7354-7368, a tilde line range no gate reads, became thesql-driver.ts#createColumnanchor its own text already namedRun records named in the history rows: #24598 (Tier 1), #24572 (round 1, records-forms) and #24616 (round 2, records-forms).
Part B — the comma-range line-citation sweep
Round 7's report (
6281433885,out_of_scope_findings[1]) named the spellingfile.ts,NNN/file.ts,NNN-MMM. It is the residue of #13786's strip (cd354fd5e8): that commit removed only the first range of each colon list (:A,Bbecame,B), and the line-citation limb reads only the colon spellings, so nothing caught what was left.Census, re-taken over every string of every
areas/*.jsonfile (items and area-level recipes), with a rule wider than round 7's: a comma and 2–5 digits right after a word character, or an extension, a comma, a space and digits.39e93b9ef9347186527dattachments-storage×3,automation×1)access-security.platform-owner-email-anchor, held by open PR #24667cli.dev-automigrate-policyhistory[1],integration-system.datasource-admin-lifecycleacceptance[8],platform-core.settings-hub-roundtriphistory[2],records-forms.adhoc-filter-sort-builderstale.partial)Round 7 counted 21 items; the list it gives has 20, and all 20 hit. The wider rule also found two forms its rule missed: the share-link item's
branch,190-234and the packaged-automation board's(529 clone-dialog validation,516 …).How each was re-pointed. For every citation I found the commit that authored the original colon list (
git log -S, beforecd354fd5e8) and read the cited lines there, then found that code at this base. An objectstack citation became afile#symbolanchor the shared resolver accepts; a test file is cited by its case or block title; an objectui citation names the component, function or branch in prose, read at the shipped pin12dc7b47c340. Where the surrounding words still described the range the strip had removed, the new citation names that code too (for example both auth-manager gates, both code literals of the clone test, both invoice arms). The history rows do not contain any path-qualified anchors or comma ranges, so a later rename never forces an edit to a dated record.Gate readings (
node scripts/check-platform-checklist.mjs): symbol anchors 918/928 at BASE → 949/959 at head, +31 new anchor occurrences (28 resolve asdeclaration, 3 asliteral:#RESOURCE_CONFLICT,#RESOURCE_NOT_FOUND,#regenerate_backup_codes), none refused, 18 file floors held; line citations 0 survive.PM hypotheses, measured:
LINE_ANCHORneeds a colon andPATHLESS_COLON_CITATIONa colon too, so a comma-range passes today; the count rose by exactly the anchors added and none was refused. Two runs on the way caught my own history text writing a colon-digit range and a path-qualified anchor, and both were reworded before any commit.grid-file-upload.spec.tsstays inattachments-storage.inline-grid-receipt-cells'automated.ref, andsummary-rollup.spec.tsstays inrecords-forms.field-type-matrix'ssource[4]and inmaster-detail-atomic-save's dropped-at-revision-5 note; only the three named items changed.Part B mapping (39 fields, 40 citations; the 20 items each carry one revision bump and one history row; the 3 recipes carry neither field)
access-security.record-view-read-auditacceptance[2].clauseread-audit.ts,516-52139e93b9ef9access-security.share-link-landing-pagefixtures.knownGaps[1]SharedRecordPage.tsx,190-23412dc7b47c340access-security.share-link-landing-pageacceptance[1].verifySharedRecordPage.tsx,143-17612dc7b47c340access-security.share-link-landing-pageacceptance[2].verifySharedRecordPage.tsx,178-18612dc7b47c340access-security.share-link-landing-pagesource[1]branch,190-23412dc7b47c340ai.console-ai-surface-gatingsource[0]packages/app-shell/src/hooks/useAiSurface.ts,71-8812dc7b47c340attachments-storage recipe qa-scratch-authzsequence[1].sourcepackages/runtime/src/domains/meta.ts,31939e93b9ef9attachments-storage recipe qa-media-constraintswhyexamples/app-showcase/src/ui/actions/index.ts,33739e93b9ef9attachments-storage recipe qa-media-constraintssequence[1].sourcemeta.ts,31939e93b9ef9attachments-storage.field-accept-maxsize-server-enforcedfixtures.requires[1]storage-routes.ts,25539e93b9ef9attachments-storage.field-accept-maxsize-server-enforcedfixtures.knownGaps[0]examples/app-showcase/src/ui/actions/index.ts,33739e93b9ef9attachments-storage.field-accept-maxsize-server-enforcedsource[5]examples/app-showcase/src/ui/actions/index.ts,33739e93b9ef9automation recipe qa-flow-status-doorssequence[1].sourcepackages/runtime/src/domains/meta.ts,31939e93b9ef9automation.packaged-flow-subflow-disable-refusalsource[4]examples/app-showcase/src/automation/flows/index.ts,707,795,816,1322,133939e93b9ef9automation.packaged-flow-clone-contractacceptance[3].verifyautomation-flow-clone.test.ts,43939e93b9ef9automation.setup-packaged-automation-boardacceptance[6].verifyPackagedAutomationPage.tsx,52912dc7b47c340automation.setup-packaged-automation-boardsource[1](529 clone-dialog validation,51612dc7b47c340cli.dev-automigrate-policysource[4]sql-driver-index-drift.test.ts,322-34239e93b9ef9identity-auth.identity-import-wizardfixtures.knownGaps[1]service-sms/src/sms-plugin.ts,16939e93b9ef9identity-auth.identity-import-wizardsource[2]auth-manager.ts,407439e93b9ef9identity-auth.two-factor-backup-codesacceptance[3].clausesys-two-factor.object.ts,12039e93b9ef9identity-auth.first-run-owner-bootstrapacceptance[0].verifyauth-plugin.ts,1936-194939e93b9ef9identity-auth.first-run-owner-bootstrapsource[6]packages/cli/src/commands/dev.ts,33939e93b9ef9identity-auth.self-signup-gatevariants[0]audience-posture.ts,398-40239e93b9ef9identity-auth.self-signup-gatevariants[1]audience-posture.ts,411-42139e93b9ef9identity-auth.self-signup-gatesource[3]apps/console/src/pages/auth/RegisterPage.tsx,69-8812dc7b47c340identity-auth.self-signup-gatesource[4]apps/console/src/pages/auth/LoginPage.tsx,136,29812dc7b47c340identity-auth.email-verification-loopsteps[1]LoginPage.tsx,346,36012dc7b47c340identity-auth.email-verification-loopsource[6]apps/console/src/pages/auth/LoginPage.tsx,346,36012dc7b47c340platform-core.docs-portal-rendersource[0]AppContent.tsx,176-18512dc7b47c340records-forms.field-unique-enforcementacceptance[2].verifymemory-unique-constraint.test.ts,14139e93b9ef9records-forms.field-unique-enforcementacceptance[3].verifymemory-driver.ts,627-63139e93b9ef9records-forms.delete-behavior-matrixsource[2]examples/app-showcase/src/data/objects/invoice.object.ts,18439e93b9ef9records-forms.field-history-trackingfixtures.requires[1]task.object.ts,6039e93b9ef9records-forms.field-history-trackingsource[3]task.object.ts,6039e93b9ef9search.command-palette-navigationacceptance[0].verifyCommandPalette.tsx,391-40212dc7b47c340search.command-palette-navigationsource[2]examples/app-showcase/src/ui/apps/index.ts,50-65,92-95,102-10539e93b9ef9studio-authoring.org-override-registry-gatesource[5]ResourceEditPage.tsx, 1311-132312dc7b47c340studio-authoring.metadata-diagnostics-sweepsource[5]DirectoryPage.tsx,242-254; console/AppContent.tsx,98212dc7b47c340Area-level provisioning recipes (
qa-scratch-authz,qa-media-constraints,qa-flow-status-doors) carry norevisionorhistory(README, area-level fixtures), so their four edits are recorded here only.Left alone, with reasons
access-security.platform-owner-email-anchorsource[5]/source[7]:env.ts#PLATFORM_OWNER_EMAIL_ENV,200andadmin-routes.ts#manage_platform_settings,261, the same residue behind an anchor that feat(qa): resolve platform-checklist symbol anchors against real source #15159 added later. Open PR feat(objectql,cli,plugin-webhooks)!: 18.x step 4: the walled lift (8b walled half, the os serve lift, the declared-webhook name guard, declared webhooks deployment-wide) #24667's head1e8338d3b669edits this item (steps[0],revision,history), so it is out of this claim, although the dispatch's excluded list does not name it. Read at the authoring commit45397edf53,,200wasresolvePlatformOwnerEmailand,261theDATASOURCE_ADMIN_CAPABILITYdeclaration, which is what a later round should anchor.records-forms.object-hook-lifecycle,cli.migrate-plan-apply-json,cli.organization-ownership-ceremony,access-security.org-admin-assignment-boundary, the seven walled-theme items) andRUNNER.md: none carries a comma-range citation at BASE, and none was edited. PRs fix(types): an unevaluable hook condition's refusal answers 400 VALIDATION_ERROR at every data door #24714, feat(cli,plugin-audit): os migrate audit-mail-bodies masks the mail bodies that pre-#24688 audit and activity copies still hold in clear #24722 and feat(plugin-security): organization administrators assign positions and permission sets inside the D12 organization boundary #24732 have merged since the dispatch; their items stay out of this claim.historyrows.docs/qa/platform-checklist/FOLLOW-UPS.md: 11 comma-range citations. It is the sweeps' decision register, whose own header says "append, never rewrite", and it is outside the area ledger and this claim's file surface.Choice I settled myself: objectui citations in prose, not as
objectui:anchorsThe grammar declares a cross-repo
objectui:form, but this corpus registers no objectui checkout (crossReposis empty), so the gate would report such an anchor as skipped and never judge it. By the four axes: business need — a runner needs the code located, and the component and branch names do that at the pin; long-term fit — an anchor the gate cannot check looks verified and is not, the "declared ≠ enforced" shape; AI-error prevention — a later agent would read a#symbolas gate-checked; no scope creep — the cross-repo form would invite registering a checkout, a new gate surface nobody asked for. Round 7 re-pointed its objectui comma-range (ExternalDatasourcePanel.tsx) in prose too. Each objectui symbol named here was read at12dc7b47c340.Acceptance notes (noted, not filed)
(…), (…)once their colon prefixes went, for exampleautomation.packaged-flow-subflow-disable-refusalsource[1]andsearch.command-palette-navigationsource[0]. They point at no line; a reader loses only the position. 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.records-formscarries prose line numbers ("line 124", "lines …") in the permission-zoo text of one item; no gate reads them. 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.git merge-treeagainst PR feat(cli,runtime)!: the upgrade ceremony opens — v17 and 18.0 databases take it, and a server serves only a database it created or one the ceremony certified (18.x steps 5 and 6) #24681's head exits 1 with three conflicts (content/docs/deployment/cli.mdx,organization-ownership-boot-guard.tsand its test). The same three come fromorigin/mainagainst that head alone, with none of this branch's commits, andcli.jsonauto-merges; the conflict is between feat(cli,runtime)!: the upgrade ceremony opens — v17 and 18.0 databases take it, and a server serves only a database it created or one the ceremony certified (18.x steps 5 and 6) #24681 andmain.Merge-tree against the open PRs that hold excluded items
Measured at head
347186527d(origin/mainwas still39e93b9ef9):git merge-tree --write-treeexitaaec01614444edb2db1e82b8main(control leg:origin/mainagainst that head gives the same 3)1e8338d3b669Gates
Derived with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(no paths; 10 paths vs merge base39e93b9ef): 13 families. All 13 ran on head347186527d, each exit captured before any pipe, all exit 0:node scripts/check-ci-filter-parity.mjs;node scripts/check-closing-keyword-parity.mjs;node scripts/check-closing-keyword-parity.mjs --self-test;node scripts/check-comment-mask-corpus.mjs;pnpm --filter @objectstack/lint run check:doc-formula-expressions;pnpm check:cross-package-test-inputs;pnpm check:doc-authoring;pnpm check:driver-memory-census;pnpm check:gitlink-declared;pnpm check:nul-bytes;pnpm check:platform-checklist;pnpm check:refd-timer-probe;pnpm check:watch-hint-literal.--ran: "13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED".check:doc-formula-expressionsfirst answered exit 3 (its prerequisite:@objectstack/lintunbuilt) and exit 0 afterbash scripts/pm/os-verify-lock.sh -c 'pnpm exec turbo run build --concurrency=2 --filter=@objectstack/formula --filter=@objectstack/lint'("VERDICT command-exit 0").check:platform-checklistruns in no per-PR CI, so the local reading is its evidence: "OK — 16 areas, 328 items (323 active, 1 planned)", symbol anchors 949/959.Editing discipline: every area-file edit went through round 6's span-recording textual editor (
span-edit.mjs, md525b593a1721e1baaadd973794394f622), extended with areplaceop that pins its prior text (exactly one occurrence) and with recipe paths outsideitems. It never re-serialises a file, and it asserts that the new document equals the old with the declared ops applied, that every other item and top-level key is value-equal, that the changed leaf paths are the declared fields plusrevisionand one newhistoryrow, and that the text outside the edited spans is byte-identical.No changeset:
docs/qa/**ships in no package (the root package is private and nofiles[]names it), so the PR carriesskip-changeset.Generated by Claude Code