Repository navigation
docs(qa): 18.0 sweep anchor round 4 — §3 accuracy corrections in studio-authoring, records-forms, dashboards and search - #24671
Merged
objectstack-fleet[bot] merged 6 commits intoOct 19, 2026
Conversation
…accelerator toggle, the pinyin roster oracle, global search's perObject cap and stock hidden value, and the contributor recipe's admin doors Checklist ledger only. Three search items take one revision each and the qa-contributor-bound-member recipe names the REST doors QA run #24574 measured; every finding re-read at objectstack f89d29e and, for the console, at the shipped pin 4016370af3c9. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…o free-key door, combo marks are the renderer's, the Interfaces pillar needs an app, the dangling-binding guard sits at publish, and the unexposed cube answers CUBE_NOT_FOUND Checklist ledger only. Five dashboards items take one revision each, every finding re-read at objectstack f89d29e and the console pin 4016370af3c9. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…re-pointed to the shipped console and server (review sheet, autosave, record page on showcase_contact, draft line, Source-tab door, package-scoped matrix, plantable diagnostics row, owner-mismatch and publish-drafts doors, rule ids) Checklist ledger only. Eleven studio-authoring items take one revision each, every finding re-read at objectstack f89d29e and the console pin 4016370af3c9; findings that did not hold are left alone. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…e-pointed to the shipped console and server (wire params without a $, three densities, the server-backed mention bell, hook route and refs, the shipped 500 for an unevaluable hook condition, autonumber off the form, the crypto provider on every CLI boot, and run-proven fixture recipes) Checklist ledger only. Nineteen records-forms items take one revision each, inside the dispatch's 20-item cap; every finding re-read at objectstack f89d29e and the console pin 4016370af3c9. The object-hook ref now names four test files measured at base (83 passed). Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…8-sweep-accuracy-round4
Swaps the 39 '#PENDING-24579R4' placeholders (38 history rows and the qa-contributor-bound-member recipe's provenance line) for #24671. 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-accuracy-round4
branch
October 19, 2026 23:01
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.
Refs #24579
Clause-②: no
The fourth dispatch of the 18.0 release sweep's wave anchor. It covers §3's checklist-accuracy findings for the four UI-facing areas: studio-authoring, records-forms, dashboards and search. It takes round 2's additions for them (comments
6272032736and6272314386), the Tier 1automated.refnotes that land in these files, and the leftovers round 3 named.This PR edits the ledger only. The diff is the four
docs/qa/platform-checklist/areas/files the claim names, with no product code, test or pin in either repository. Each edited item takes onerevisionbump and onehistoryrow that names the run records it rests on. Several findings on one item make one revision. Every finding was re-derived from source before it was edited:f89d29e382, re-checked after mergingorigin/mainbfc1539fe0; no cited source moved in between;.objectui-sha4016370af3c9, cross-checked at objectuimain282b138c07, where every cited fact is the same;Findings that did not hold are left alone, and each is listed below with the reading that refutes it.
The history rows, and the recipe's provenance line, carry the placeholder ref
#PENDING-24579R4, 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.Edited items
studio-authoring (11 items)
studio-authoring.first-run-loopfixtures.knownGaps[0],steps[1],steps[2],steps[3],steps[6]studio-authoring.object-designer-roundtripsteps[4],steps[5]studio-authoring.view-authoring-livepersonas[1],fixtures.requires[0],steps[3]studio-authoring.record-page-roundtrippersonas[1],fixtures.requires[0],acceptance[0].verify,acceptance[3].verify,steps[0],steps[2],steps[3],steps[6]studio-authoring.draft-publish-lifecycleacceptance[6].clause,acceptance[6].verify,steps[2]studio-authoring.authoring-validation-not-persistedacceptance[1].clause,acceptance[1].verify,acceptance[3].verify,steps[1],steps[3]studio-authoring.permission-matrix-editor-uxfixtures.requires[1],acceptance[4].evidence,acceptance[4].verifystudio-authoring.metadata-diagnostics-sweepfixtures.knownGaps[0],acceptance[6].clause,acceptance[6].verify,steps[6],steps[8]studio-authoring.doc-on-app-menusteps[0]studio-authoring.multi-package-item-rowssteps[2],steps[4]studio-authoring.save-door-runs-authoring-rulesacceptance[1].clause,acceptance[1].verifyrecords-forms (19 items, inside the 20-item cap)
records-forms.crud-roundtripnegative[2],fixtures.provisioning.why,acceptance[0].verify,acceptance[6].verify,steps[2]records-forms.field-type-matrixfixtures.knownGaps[2],acceptance[1].evidence,acceptance[1].clause,steps[2]records-forms.list-view-capabilitiesnegative[0],negative[1],steps[4],automated.refrecords-forms.form-view-galleryfixtures.requires[0],steps[7]records-forms.conditional-rules-gridfixtures.requires[1],steps[2]records-forms.related-list-server-paginationnegative[0],fixtures.knownGaps[0],acceptance[0].clause,acceptance[0].verify,steps[1],steps[2],steps[6]records-forms.action-location-matrixsteps[3]records-forms.validation-rule-type-matrixfixtures.requires[0],variants[0]records-forms.gantt-interactionssteps[4]records-forms.adhoc-filter-sort-buildernegative[1],acceptance[0].clause,acceptance[0].verify,acceptance[1].clause,acceptance[1].verify,steps[1],steps[2],steps[7]records-forms.calendar-interactionsacceptance[3].clause,acceptance[3].verify,steps[3],steps[5]records-forms.record-discussion-mentionsacceptance[3].verify,acceptance[4].clause,acceptance[4].verify,steps[3],steps[6],source[2]records-forms.grid-personalizationacceptance[1].clause,acceptance[1].verify,steps[1]records-forms.bulk-select-all-matchingacceptance[2].clause,steps[5]records-forms.import-job-undo-cancelfixtures.knownGaps[2],traps[2],steps[1]records-forms.object-hook-lifecyclenegative[2],fixtures.requires[3],acceptance[8].evidence,acceptance[8].verify,steps[0],automated.refrecords-forms.field-history-trackingnegative[0],acceptance[2].verifyrecords-forms.comment-reactions-and-edit-stampsfixtures.requires[2]records-forms.v18-semantic-defaultspersonas[1],fixtures.knownGaps[0],acceptance[2].clause,steps[0],steps[1]dashboards (5 items)
dashboards.strict-widget-rejects-stray-keyssteps[4]dashboards.chart-type-matrixfixtures.knownGaps[0],acceptance[2].clause,acceptance[4].verify,steps[5]dashboards.dataset-report-authoringnegative[1]dashboards.global-filters-rescopefixtures.requires[2]dashboards.analytics-exposure-gate-and-measure-aggregateacceptance[1].clause,acceptance[3].verify,steps[0],steps[3]search (3 items and the qa-contributor-bound-member recipe)
search.pinyin-flag-both-sidesfixtures.requires[3],fixtures.knownGaps[0],acceptance[3].evidence,acceptance[3].verify,steps[6]search.console-global-searchfixtures.requires[0],acceptance[0].clause,acceptance[2].clause,steps[2]search.global-search-skips-unreadablefixtures.requires[2],steps[4],steps[5]search:qa-contributor-bound-memberfixtures.qa-contributor-bound-member.provenance,fixtures.qa-contributor-bound-member.requires[1],fixtures.qa-contributor-bound-member.sequence[1],fixtures.qa-contributor-bound-member.sequence[2],fixtures.qa-contributor-bound-member.sequence[4]git diff bfc1539fe0 HEAD -- docs/qa/platform-checklist/areas/. Each item's history row says what changed and why.Findings left alone, each with the reading that refutes it
studio-authoring
draft-publish-lifecycle, the draft-discard note ("discarding a draft uses?state=draft"): true of the door, sinceMETA_ITEM_RESET_PARAMSisstate,dropStorage,packageandmember. But no step of any studio-authoring item discards a draft. The only DELETEs in the file are overlay resets, so the note has no clause to correct.draft-publish-lifecycle, "a scratch dashboard in a namespaced package needs the NS_ prefix": refuted. The prefix rule judges objects only.packages/spec/src/kernel/namespace-prefix.tssays "everyobject.name", and publish-drafts' preflight skips non-object drafts (if (d.type !== 'object') continue).draft-publish-lifecycle, rollback refuses?package=: true, but no step sends it, so there is no item claim to correct.expression-editors, both QA run · studio-authoring (15/20) · ba4afcc2 · 2026-10-19 · 13 PASS / 1 PARTIAL / 1 FAIL / 0 BLOCKED / 5 NOT-RUN #24604 notes (validate_expression has no RLS site; the package door has no Save button): already on main through docs(qa): 18.0 sweep anchor round 2 — expression-editors' RLS clauses to the engine's error tier, a consumed-changeset citation, and §3 accuracy corrections in five areas #24632 (revision 4).first-run-loop, step 6's Create-app checkbox already adds the nav item: already stated by the item's knownGaps[1] (SUPERSEDED, QA run QA run · priority:P0 (19/19) · ef1ed17f · 2026-10-01 · 13 PASS / 0 PARTIAL / 6 FAIL / 0 BLOCKED / 0 NOT-RUN #21056).record-page-roundtrip, "arecord:highlightsblock withoutfieldspasses the draft PUT but fails publish": an observation with no clause behind it. The item adds a Card, not an empty highlights block.permission-matrix-editor-ux, the filter "owner" matches only owner_id: no clause names a filter term.packaged-automation-studio-lock, the disabled switch looks green, and canvas nodes are not React Flow nodes: cosmetic, plus a locator hint. The item names neither a colour nor React Flow (0 hits).object-designer-roundtrip, live spec F4/F1 stale: §2's objectui-live-e2e theme (see below).doc-on-app-menuandauthoring-validation-not-persisted: the objectui observations (empty main area, menu highlight, the "Auto-saving…" pill) are product observations, not item claims.records-forms
crud-roundtrip, the Tier 1 note that itsautomated.refover-claims: refuted. The ref already scopes itself: "acceptance[6]'s READONLY half ONLY … Every other clause still needs the run". QA run · tier1:automated-pins (149/166) · ba4afcc2 · 2026-10-19 · 60 PASS / 89 PARTIAL / 0 FAIL / 0 BLOCKED / 17 NOT-RUN #24598 read the same: only the readonly half of clause 6.object-hook-lifecycle, "the steps'$select— the by-id read door acceptsselectonly": no step of this item spells$select, and records-forms.json has 0 hits.list-view-capabilitiesnegative[0], "the refusal code is not INVALID_FILTER": refuted at source.packages/objectql/src/boolean-comparand-declared-type-door.tsrefuses any non-boolean string against a boolean field withINVALID_FILTER/ 400, naming the field, and that file is unchanged sinceba4afcc2. The finding's staging recipe was taken.list-view-capabilitiesstep 7, the switcher lives under Display → Layout: a locator hint. The step names no location.validation-rule-type-matrix, QA run · since:v18 (48/48) · 5b14b7f3 · 2026-10-19 · 38 PASS / 7 PARTIAL / 3 FAIL / 0 BLOCKED / 0 NOT-RUN #24558's "describes the advisory hit as server-log only": already on main (revision 3 reads the write answer'swarnings).field-group-visible-when, the item cites the console pin1fb1ced36243, now4016370af3c9: a dated reading that still holds at the shipped pin.plugin-form/src/fieldGroups.tspassesvisibleWhenthrough,buildDefaultPageSchema.tswrites{ group }references, and both groupVisibleWhen-11630 pins exist. The record's other two notes (the grouped section renders above the ungrouped fields; an invalid CELvisibleWhenis accepted at authoring) are observations. No clause claims either one.predicate-relationship-traversal, "usefilter=JSON, not an OData$filter=": no step of this item sends a list filter.cascading-options, the invite recipe needs accept-invitation: already stated by the item's personas[1] ("a member invited with role 'admin' who has ACCEPTED the invitation"). The RUNNER.md recipe is outside the file surface (see below).import-wizard-encoding-and-hintsstep 3, Contacts' Import entry sits in the overflow menu: no step names the entry's location.concurrent-edit-conflict, the dialog buttons read "Reload latest / Overwrite anyway / Cancel": the item names the two actions by their verbs (Reload / Overwrite), which is accurate shorthand. It is also one of the seven hand-driven now-PASS items, and its stated clauses hold.cascading-multilevel-and-clear(test ids),lookup-picker-create-new(the typed term is not pre-filled, an observation by the record's own words),bulk-select-all-matching(the header search opens the palette),adhoc-filter-sort-builder("Add filter" persists an incomplete row) andgantt-interactions(null-date tasks drawn as milestones): locator hints or product observations, with no item claim behind them.view-type-gallery, the map base style is unreachable from the sandbox: an environment fact, not an item claim. The RUNNER environment table is outside the file surface.action-param-widgets, thep_richtexthelpText contradicts the textarea widget: that copy is showcase metadata, which is product code, and the ruling forbids product edits.record-discussion-mentions, the mentioned member sees "You don't have permission to view comments": a possible by-design observation, with no clause. acceptance[8]'s scratch-object channel is already in steps[12].v18-semantic-defaults, "the canonical file-DB boot works too": a suggestion.dashboards
strict-widget-rejects-stray-keys, "a pending draft is unreadable until publish": refuted.GET /meta/dashboard/NAME?state=draftreads the draft (META_ITEM_READ_PARAMSincludesstate). Only?mode=draft, a save-door parameter, is refused on the read. The inspector half was taken.empty-null-bucket-boundaries, the 79-click 2020 window, the two-month seed and the single-bucket recipe: runner-efficiency suggestions. The step's "a week in 2020" works, and theseed-data-thinandsingle-datapointtraps are already listed.chart-type-matrix, a thin seed for trend charts: thesingle-datapointtrap is already listed.global-filters-rescope, the inspector labels the date bindingdateRange: cosmetic.analytics-exposure-gate-and-measure-aggregate, "stock has no cube over an unexposed object — scratch app required": already stated by fixtures.requires[1]–[2].search
pinyin-flag-both-sides, the lookup-picker part of step 5 was not exercised: run coverage, not an inaccuracy.notifyassignee must be a user id; thejobtimeout probe needs aretryPolicy": these areintegration-system.notify-inbox-deliveryandintegration-system.job-scheduled-run(QA run QA run · integration-system (16/20) · 5b14b7f3 · 2026-10-19 · 11 PASS / 5 PARTIAL / 0 FAIL / 0 BLOCKED / 4 NOT-RUN #24575), andintegration-system.jsonis excluded (open PR feat(plugin-webhooks,runtime)!: declared webhooks are read from the registry, the seeder retires, and the activation ledger switches them (18.x step 1, 8b-0g′) #24588).Named, not acted on
automated.refand were left there:studio-authoring.object-designer-roundtrip(studio-object-designer F1/F4),studio-authoring.record-page-roundtrip(already markedautomated.stale),records-forms.list-view-capabilities(user-filters, inline-edit-polish-2572; only its framework dogfood half was qualified),records-forms.adhoc-filter-sort-builder(user-filters),records-forms.conditional-rules-header(field-conditional-rules),records-forms.conditional-rules-grid(grid-file-upload),records-forms.cascading-optionsandrecords-forms.cascading-multilevel-and-clear(cascading-options.spec:51),records-forms.master-detail-atomic-save(form-view-subforms),records-forms.related-list-server-pagination(detail-related-list),records-forms.concurrent-edit-conflict(inline-edit-polish-2572),records-forms.field-history-tracking(record-history-display, which always skips against showcase).records-forms.action-param-widgets' objectui half,list-row-action-cel.spec.tsforaction-location-matrix/conditional-rules-header, and the seven hand-driven now-PASS items. Their "pin covers no clause" side is left alone. The stated-clause errors on five of them (related-list, adhoc, calendar, grid-personalization, import-job) were taken.records-forms.validation-rule-type-matrixnegative[0] (no door authors a non-evaluable CEL rule).memberand does not say that a non-member role takes effect only afterPOST /api/v1/auth/organization/accept-invitation(QA run QA run · records-forms (38/44) · ba4afcc2 · 2026-10-19 · 34 PASS / 2 PARTIAL / 2 FAIL / 0 BLOCKED / 6 NOT-RUN #24616). RUNNER's environment table would also take the sandbox map-tile fact.Measurements
PM hypothesis 3, the
object-hook-lifecycleref: it named source files,hook-wrappers.tsandhook-binder.ts, which no resolver can run. It now names four test files. Each was run at basef89d29e382underscripts/pm/os-verify-lock.sh(VERDICT command-exit 0), after building@objectstack/objectql's dependency closure under the same lock (13/13 tasks):hook-condition-previous-scope.test.tshook-condition-merged-record.test.tshook-binder.test.tshook-condition-fail-loud.test.tsThat is 83 passed, 0 failed. Each file is mapped in the ref to the clause whose mechanism it asserts: acceptance[3], [5], [7] and [8].
PM hypothesis 1: Studio RLS editor rates a non-lowerable USING predicate a WARNING ("can … WIDEN access") and autosaves it, while publish / os build refuse it as an error (rls-predicate-unenforceable, fail-closed) objectui#13061, [finding]
os servepublishes the REQUESTED port, not the bound one — with--port 0it announces a port nothing is listening on, and the code comment asserts the opposite #13062 and Three broken-sweep mentions inpackages/spec/src/automationstill call the predicate an alert / a query that can tell — the residue outside the fences of #12722 and #12900 #13063 are in state completed. Their repairs are at objectuimain, after the shipped pin4016370af3c9, so none of them makes a clause true again at the pin, and their FAIL clauses keep their product-defect disposition. 18.0 round-2 sweep framework findings: a paid invoice line'samount/totalstays writable while its inputs are locked; an unevaluable hook condition answers 500 INTERNAL_ERROR;remote-tables?schema=never narrows on the SQL drivers #24619 is open. Its row (b) is whyobject-hook-lifecycleacceptance[8] now states the shipped 500 envelope and scores against 18.0 round-2 sweep framework findings: a paid invoice line'samount/totalstays writable while its inputs are locked; an unevaluable hook condition answers 500 INTERNAL_ERROR;remote-tables?schema=never narrows on the SQL drivers #24619 rather than re-filing it.PM hypothesis 2: no disagreement between the pin and objectui
mainfor any cited console fact. All 25 cited objectui files were diffed between4016370af3c9and282b138c07, and the facts in the changed ones were re-read at main.PM hypothesis 4:
check:platform-checklistsymbol anchors stay at 875/885, the count at mergedorigin/mainbfc1539fe0after 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 landed: 0 lost, 10 on the [finding] the platform-checklist corpus resolves symbol anchors with its OWN rule, not the shared resolver — a permissive token match where the ruling says there is to be exactly one implementation #16898 residual, 18 file floors held.Gates: the list was derived with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, which gave 13 families for 4 paths against merge basebfc1539fe. All 13 exited 0 atcccfc9fcb2, each code captured before any pipe.--ranreports: 13 derived, 13 run, 0 NOT-MEASURED.check:platform-checklistruns in no per-PR CI, so this local reading is its evidence:check-platform-checklist: OK — 16 areas, 327 items (322 active, 1 planned).Every area-file edit went through a span-recording textual editor. It re-parses the file and asserts three things: the document equals the old one with the declared operations applied, every other item is unchanged in value, and each edited item's changed leaf paths stay within the declared fields, the
revisionand one new history row.skip-changeset, re-measured:docs/qa/**is in no package'sfiles[], so this diff publishes nothing.Acceptance notes
studio-authoring.record-page-roundtripmoves its object fromshowcase_invoicetoshowcase_contact(§3's own prescription). Round 1's acceptance[0]–[2] verdicts were read onshowcase_invoiceat revision 4, and revision 5 scores them onshowcase_contact.records-forms.crud-roundtrip's non-owner clone recipe (a contributor member cloning a seededshowcase_field_zoorow) is source-derived and not yet run. The item says so and asks the run to record the substitution.visibleWhenonfieldGroupsis accepted at authoring with 200 (QA run QA run · records-forms (30/44) · 5b14b7f3 · 2026-10-19 · 11 PASS / 19 PARTIAL / 0 FAIL / 0 BLOCKED / 14 NOT-RUN #24572). The PM may want to route it.Generated by Claude Code