Repository navigation
docs(qa): 18.0 sweep anchor round 8 — drop or narrow the three pins round 6 named that cover no full clause - #24723
Merged
objectstack-fleet[bot] merged 3 commits intoOct 20, 2026
Conversation
…cover no full clause Round 6's three named leftovers of the wave anchor's §2 theme "pins that cover no full clause": - studio-authoring.draft-publish-lifecycle: automated dropped (the dogfood pin saves, publishes and reads back a layout-less dashboard, acceptance[1]'s post-publish half only) and a knownGaps line added; the P1 item is now Tier 2. - records-forms.master-detail-atomic-save: summary-rollup.spec.ts rolls up showcase_project, never invoice.total, so it is dropped from the ref and named there; acceptance[2].verify no longer says it pins the clause. - records-forms.conditional-rules-grid: the ref now says grid-conditional-rules.spec.ts claims acceptance[0]'s inline-flag half only. History refs carry a placeholder until the PR exists. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…8-sweep-round8-leftovers
Swaps the placeholder #PENDING-24579R8 for #24723 in the three history rows round 8 added; nothing else changes. 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-round8-leftovers
branch
October 20, 2026 02:37
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 8 of the 18.0 sweep's wave anchor. It takes the three leftovers that round 6's report (
6280484387,out_of_scope_findings[1]) named under the anchor's §2 theme "pins that cover no full clause". Only ledger text changes: three items, one instudio-authoring.jsonand two inrecords-forms.json, each take onerevisionbump and onehistoryrow. There is no product code, test, pin or objectui spec change in either repository.The rule is round 6's theme-B rule (
theme_b_choicesin that report):automated.refsays which clauses each pin covers, and a pin that scores none is dropped from the ref and named there.automatedwhere no pin asserts a full clause even when green.fixtures.knownGapsthen says what the pin does assert and whenautomatedmay return.The three items
studio-authoring.draft-publish-lifecycleautomatedremoved;fixtures.knownGaps[0]addedpackages/qa/dogfood/test/dashboard-designer-roundtrip.dogfood.test.ts{ type, name, item }with 3 widgets and no layout. That is acceptance[1]'s post-publish half. No state:'draft' receipt, no pre-publish read, and nothing of acceptance[2]–[11]. No full clause →automateddropped; the P1 item is now Tier 2records-forms.master-detail-atomic-saveautomated.ref,acceptance[2].verifye2e/live/summary-rollup.spec.tsshowcase_task.estimate_hoursup intoshowcase_project(total_estimateSUM,task_countCOUNT) through a directPOST /api/v1/batch, and reads both back after that create and after a child delete. It never opens the invoice form and never readsinvoice.total. No clause of this item → dropped from the ref and named there;acceptance[2].verifyno longer says it pins the clauserecords-forms.conditional-rules-gridautomated.refe2e/live/grid-conditional-rules.spec.tsWhat stays as it was:
master-detail-atomic-savestill citesmaster-detail.spec.tsandform-view-subforms.spec.ts, as before.conditional-rules-gridstill citesgrid-parent-rules.spec.tsandgrid-file-upload.spec.ts, as before.automated.stalerecord that round 6 wrote (theform-view-subforms.spec.tsrecord and thegrid-file-upload.spec.tsrecord).conditional-rules-grid'sacceptance[0].verifyalready scopes that spec to the inline flag ("pinned for the inline flag …; the objectui pin asserts only the inline required flag"), so it needed no change.The objectui pins
The sweep ran its live specs at objectui
4016370af3c9. The shipped console pin is12dc7b47c340(.objectui-shaatmain54159fd742).summary-rollup49338c81,grid-conditional-rules43662daf,master-detailfdfaf571,grid-parent-rulesb94e2d63,form-view-subforms4f2a95b5andgrid-file-uploadfeb5ff39.git diff --stat 4016370af3c9 12dc7b47c340 -- e2e/live/changes onlye2e/live/ci/backend.env. So one reading of each spec serves both pins.4016370af3c9. At12dc7b47c340they are NOT MEASURED, because no live run exists at the new pin.ba4afcc2and this branch's base.Acceptance notes
These are further findings. Each is named here and not acted on: the dispatch scopes this round to the three items' named claims. Several sit on the same two items, and those are left for the next pass or for a ruling.
conditional-rules-grid,grid-parent-rules.spec.ts: on the New Invoice dialog, it asserts that Qty and Unit Price lock on paid and unlock on draft. It never asserts the Product cell, althoughproductcarries the samereadonlyWhen(examples/app-showcase/src/data/objects/invoice.object.ts) and acceptance[2] says "the three cells".acceptance[2].verifysays the spec pins the clause, and QA run · tier1:automated-pins (149/166) · ba4afcc2 · 2026-10-19 · 60 PASS / 89 PARTIAL / 0 FAIL / 0 BLOCKED / 17 NOT-RUN #24598 scored it pass.conditional-rules-grid,grid-file-upload.spec.ts(stale): even with its locator repaired, it would assert only the upload cell and areceiptobject, with a name and an http URL, in the submitted batch. It never re-reads the line or fetches the file, which is what acceptance[3] scores. Its receipt-object expectation also differs from the ADR-0104 stored form, an opaque file id: QA run · records-forms (38/44) · ba4afcc2 · 2026-10-19 · 34 PASS / 2 PARTIAL / 2 FAIL / 0 BLOCKED / 6 NOT-RUN #24616 saw the batch send a bare id at4016370a. That is a second stale cause, which the stale record'swhydoes not name. Under the theme-B rule this spec scores no clause even when green, so it would be dropped. The dispatch keeps its stale record, so it stays.master-detail-atomic-save,master-detail.spec.ts: it drivesshowcase_project_workspace("New Project + Tasks", one task child added through the row form), not the invoice grid with two lines.acceptance[0].verifycites its two test names, and QA run · tier1:automated-pins (149/166) · ba4afcc2 · 2026-10-19 · 60 PASS / 89 PARTIAL / 0 FAIL / 0 BLOCKED / 17 NOT-RUN #24598 scored acceptance[0] pass on it. It is the same carrier class assummary-rollup. The clause text is carrier-neutral, but the verify's "both line ops" is not.records-forms.field-type-constraintsacceptance[7].verifycitessummary-rollup.spec.tsforshowcase_invoice.total. That is the same carrier mismatch, on an item outside this claim.draft-publish-lifecycle'ssource[]namespackages/objectql/src/protocol-publish-package-drafts.test.tsandpackages/rest/src/meta-write-actor-identity.test.ts. These were neverautomatedrefs, and they were not measured as pins here. They may bear on acceptance[4] and acceptance[11] at the protocol and route layer. Measuring them is the wayautomatedcould return.master-detail-atomic-savelabel the roll-up and failing-child clauses one index high. Its "acceptance[3]" is the text of acceptance[2], and its "acceptance[4]" is the text of acceptance[3]. acceptance[4] (the derived subform) was not hand-driven there. That run record is final, so this is only noted.Verification
Every area-file edit went through round 6's span-recording textual editor, which never re-serialises a file. It splices only the declared value spans, then re-parses the whole file and asserts four things:
items, is value-equal.revisionand the one new history row.The editor's reported changed paths were exactly:
revision,fixtures.knownGaps,automated,history[7]·revision,automated.ref,history[6]·revision,acceptance[2].verify,automated.ref,history[4].Gates come from
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack. It derived 13 families for the 2 changed paths, and the list is the same at14284d5372and at the merge head23ccd80f74(merge base54159fd742). All 13 ran at23ccd80f74. Each exit code was captured before any pipe, and all were 0: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-expressionspnpm 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--ranreconciles: "13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED (a DERIVED zero — all 13 recorded an exit code and none of them is 3)".At
14284d5372,check:doc-formula-expressionsfirst refused with exit 3, a prerequisite:@objectstack/formulaand@objectstack/lintwere not built. I built both under the shared verify lock (VERDICT command-exit 0), and the rerun exited 0. After the merge I rebuilt them again (packages/lint/srcmoved onmain), and the run above is from after that rebuild.check:platform-checklistruns in no per-PR CI, so this local reading is its evidence:Symbol anchors read 886/896 against 413 cited sources, with 18 file floors held, at base
73d4cc7391, at14284d5372and at23ccd80f74. So 0 were lost and 0 added.On the
automateddrop: the gate checksautomated.refonly whenautomatedis present (scripts/check-platform-checklist.mjs, the"automated.ref" must point at the pinning testcheck). So a leftoverautomated: {}would be refused. The earlier drops removed the key, and so does this one.The history rows were committed with the placeholder
#PENDING-24579R8, because a historyrefnames this PR and the PR had no number yet. A follow-up commit swaps in this PR's number and changes nothing else. The gate re-run at that head is reported on the card.There is no ablation, because no tested behaviour changed. On
skip-changeset:docs/qa/**appears in none of the 86 package manifests'files[], and the repo root is private.Generated by Claude Code