Skip to content

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 into
mainfrom
claude/issue-24579-v18-sweep-accuracy-round4
Oct 19, 2026
Merged

objectstack-fleet[bot] merged 6 commits into
mainfrom
claude/issue-24579-v18-sweep-accuracy-round4

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

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 6272032736 and 6272314386), the Tier 1 automated.ref notes 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 one revision bump and one history row 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:

  • the server at objectstack base f89d29e382, re-checked after merging origin/main bfc1539fe0; no cited source moved in between;
  • the console at the shipped pin .objectui-sha 4016370af3c9, cross-checked at objectui main 282b138c07, where every cited fact is the same;
  • the run's own captured evidence, where the record has it.

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)

item fields edited revision run record finding rests on
studio-authoring.first-run-loop fixtures.knownGaps[0], steps[1], steps[2], steps[3], steps[6] 3 → 4 #24571, #24556 objectui 4016370af3c9 (pin; same at main 282b138c07)
studio-authoring.object-designer-roundtrip steps[4], steps[5] 4 → 5 #24604 objectui 4016370af3c9 (pin; same at main 282b138c07)
studio-authoring.view-authoring-live personas[1], fixtures.requires[0], steps[3] 2 → 3 #24571 objectstack f89d29e
studio-authoring.record-page-roundtrip personas[1], fixtures.requires[0], acceptance[0].verify, acceptance[3].verify, steps[0], steps[2], steps[3], steps[6] 4 → 5 #24571, #24604 (§3 bullet) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
studio-authoring.draft-publish-lifecycle acceptance[6].clause, acceptance[6].verify, steps[2] 6 → 7 #24604 (6272314386) objectui 4016370af3c9 (pin; same at main 282b138c07); objectstack f89d29e
studio-authoring.authoring-validation-not-persisted acceptance[1].clause, acceptance[1].verify, acceptance[3].verify, steps[1], steps[3] 3 → 4 #24571 objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
studio-authoring.permission-matrix-editor-ux fixtures.requires[1], acceptance[4].evidence, acceptance[4].verify 3 → 4 #24604 objectui 4016370af3c9 (pin; same at main 282b138c07)
studio-authoring.metadata-diagnostics-sweep fixtures.knownGaps[0], acceptance[6].clause, acceptance[6].verify, steps[6], steps[8] 4 → 5 #24604 (6272314386) run evidence #24604; objectstack f89d29e
studio-authoring.doc-on-app-menu steps[0] 3 → 4 #24571 the item's own knownGaps[2]
studio-authoring.multi-package-item-rows steps[2], steps[4] 1 → 2 #24558 objectstack f89d29e
studio-authoring.save-door-runs-authoring-rules acceptance[1].clause, acceptance[1].verify 1 → 2 #24558 (§3 since:v18 bullet) objectstack f89d29e

records-forms (19 items, inside the 20-item cap)

item fields edited revision run record finding rests on
records-forms.crud-roundtrip negative[2], fixtures.provisioning.why, acceptance[0].verify, acceptance[6].verify, steps[2] 10 → 11 #24572, #24556 objectstack f89d29e
records-forms.field-type-matrix fixtures.knownGaps[2], acceptance[1].evidence, acceptance[1].clause, steps[2] 3 → 4 #24616 (6272314386) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.list-view-capabilities negative[0], negative[1], steps[4], automated.ref 3 → 4 #24572, #24616 (6272314386) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.form-view-gallery fixtures.requires[0], steps[7] 3 → 4 #24572 run evidence #24572; objectstack f89d29e
records-forms.conditional-rules-grid fixtures.requires[1], steps[2] 4 → 5 #24616 objectstack f89d29e
records-forms.related-list-server-pagination negative[0], fixtures.knownGaps[0], acceptance[0].clause, acceptance[0].verify, steps[1], steps[2], steps[6] 4 → 5 #24616 (6272314386) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.action-location-matrix steps[3] 11 → 12 #24616 objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.validation-rule-type-matrix fixtures.requires[0], variants[0] 3 → 4 #24572 objectstack f89d29e
records-forms.gantt-interactions steps[4] 4 → 5 #24616 run evidence #24616
records-forms.adhoc-filter-sort-builder negative[1], acceptance[0].clause, acceptance[0].verify, acceptance[1].clause, acceptance[1].verify, steps[1], steps[2], steps[7] 3 → 4 #24616 (6272314386) objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.calendar-interactions acceptance[3].clause, acceptance[3].verify, steps[3], steps[5] 2 → 3 #24616 (6272314386) objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.record-discussion-mentions acceptance[3].verify, acceptance[4].clause, acceptance[4].verify, steps[3], steps[6], source[2] 3 → 4 #24616 (6272314386) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.grid-personalization acceptance[1].clause, acceptance[1].verify, steps[1] 4 → 5 #24616 (6272314386) objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.bulk-select-all-matching acceptance[2].clause, steps[5] 3 → 4 #24616 objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.import-job-undo-cancel fixtures.knownGaps[2], traps[2], steps[1] 4 → 5 #24616 (6272314386) objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.object-hook-lifecycle negative[2], fixtures.requires[3], acceptance[8].evidence, acceptance[8].verify, steps[0], automated.ref 5 → 6 6272032736, #24598, #24616 objectstack f89d29e (4 pins measured)
records-forms.field-history-tracking negative[0], acceptance[2].verify 1 → 2 #24616 (6272314386) objectui 4016370af3c9 (pin; same at main 282b138c07)
records-forms.comment-reactions-and-edit-stamps fixtures.requires[2] 1 → 2 #24558 run evidence #24558
records-forms.v18-semantic-defaults personas[1], fixtures.knownGaps[0], acceptance[2].clause, steps[0], steps[1] 1 → 2 #24558, #24616 (6272314386) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)

dashboards (5 items)

item fields edited revision run record finding rests on
dashboards.strict-widget-rejects-stray-keys steps[4] 2 → 3 #24573 objectui 4016370af3c9 (pin; same at main 282b138c07)
dashboards.chart-type-matrix fixtures.knownGaps[0], acceptance[2].clause, acceptance[4].verify, steps[5] 5 → 6 #24573 (§3 bullet) objectstack f89d29e; objectui 4016370af3c9 (pin; same at main 282b138c07)
dashboards.dataset-report-authoring negative[1] 2 → 3 #24612 (6272314386) objectstack f89d29e
dashboards.global-filters-rescope fixtures.requires[2] 4 → 5 #24573 objectui 4016370af3c9 (pin; same at main 282b138c07)
dashboards.analytics-exposure-gate-and-measure-aggregate acceptance[1].clause, acceptance[3].verify, steps[0], steps[3] 1 → 2 #24558 objectstack f89d29e

search (3 items and the qa-contributor-bound-member recipe)

item fields edited revision run record finding rests on
search.pinyin-flag-both-sides fixtures.requires[3], fixtures.knownGaps[0], acceptance[3].evidence, acceptance[3].verify, steps[6] 4 → 5 #24574 objectstack f89d29e
search.console-global-search fixtures.requires[0], acceptance[0].clause, acceptance[2].clause, steps[2] 4 → 5 #24574 (§3 bullet) objectui 4016370af3c9 (pin; same at main 282b138c07)
search.global-search-skips-unreadable fixtures.requires[2], steps[4], steps[5] 2 → 3 #24593 (6272314386) objectstack f89d29e
recipe search:qa-contributor-bound-member fixtures.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] n/a (recipes carry no revision) #24574, #24593 objectstack f89d29e
The verbatim before and after of every field is this PR's diff, 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, since META_ITEM_RESET_PARAMS is state, dropStorage, package and member. 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.ts says "every object.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, "a record:highlights block without fields passes 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-menu and authoring-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 its automated.ref over-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 accepts select only": no step of this item spells $select, and records-forms.json has 0 hits.
  • list-view-capabilities negative[0], "the refusal code is not INVALID_FILTER": refuted at source. packages/objectql/src/boolean-comparand-declared-type-door.ts refuses any non-boolean string against a boolean field with INVALID_FILTER / 400, naming the field, and that file is unchanged since ba4afcc2. The finding's staging recipe was taken.
  • list-view-capabilities step 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's warnings).
  • field-group-visible-when, the item cites the console pin 1fb1ced36243, now 4016370af3c9: a dated reading that still holds at the shipped pin. plugin-form/src/fieldGroups.ts passes visibleWhen through, buildDefaultPageSchema.ts writes { group } references, and both groupVisibleWhen-11630 pins exist. The record's other two notes (the grouped section renders above the ungrouped fields; an invalid CEL visibleWhen is accepted at authoring) are observations. No clause claims either one.
  • predicate-relationship-traversal, "use filter= 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-hints step 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) and gantt-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, the p_richtext helpText 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=draft reads the draft (META_ITEM_READ_PARAMS includes state). 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 the seed-data-thin and single-datapoint traps are already listed.
  • chart-type-matrix, a thin seed for trend charts: the single-datapoint trap is already listed.
  • global-filters-rescope, the inspector labels the date binding dateRange: 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].
  • The console route spelling note: both spellings work, and no item claims otherwise.

search

Named, not acted on

  • §2 objectui-live-e2e theme: these items cite red or stale objectui live specs in automated.ref and were left there: studio-authoring.object-designer-roundtrip (studio-object-designer F1/F4), studio-authoring.record-page-roundtrip (already marked automated.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-options and records-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).
  • §2, pins that cover no full clause: records-forms.action-param-widgets' objectui half, list-row-action-cel.spec.ts for action-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.
  • §4 fixture gaps: records-forms.validation-rule-type-matrix negative[0] (no door authors a non-evaluable CEL rule).
  • Outside the file surface: RUNNER.md's "Invite, then sign up" recipe invites with role member and does not say that a non-member role takes effect only after POST /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.
  • Over the cap: none. records-forms took 19 of its 20.

Measurements

Acceptance notes

  • studio-authoring.record-page-roundtrip moves its object from showcase_invoice to showcase_contact (§3's own prescription). Round 1's acceptance[0]–[2] verdicts were read on showcase_invoice at revision 4, and revision 5 scores them on showcase_contact.
  • records-forms.crud-roundtrip's non-owner clone recipe (a contributor member cloning a seeded showcase_field_zoo row) is source-derived and not yet run. The item says so and asks the run to record the substitution.
  • Observed, not filed: the record notes that an invalid CEL visibleWhen on fieldGroups is 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

…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>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 19, 2026
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>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Seat review

ACCEPT · domain:devx seat 1 · os-warren · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-19T22:34Z · head 7d32eecf3b · card #24579 round 4 (claim 6277591296)

  • Form. Draft, base main. First lines are Refs #24579 and Clause-②: no. Assignee is os-warren; labels are size/l and skip-changeset. node scripts/pm/check-governed-merges.mjs --pr 24671 → NOT governed, 553 changed lines (≤ 3000). git merge-tree against main bfc1539fe0 is clean.
  • Scope. The four claimed files under docs/qa/platform-checklist/areas/, +372 / −181, and no other path. No package, test, pin or gate is touched, in either repository.
  • Ledger invariants, checked by parse against the merge base bfc1539fe0.
  • Spot-checked.
    • records-forms.object-hook-lifecycle's ref now names four existing tests in place of two source files: hook-condition-previous-scope, hook-condition-merged-record, hook-binder and hook-condition-fail-loud, with 83 passing under the verify lock. Each is mapped to the clause it asserts.
    • The density note reads three modes, and the shipped console pin 4016370af3c9's useDensityMode names compact, comfortable and spacious.
    • The report names, for every edited item, the repo and sha its finding rests on. Console facts were read at the shipped pin and cross-checked at objectui main, and none differs (PM H2 falsified).
  • Gates.
    • The dev's dispatch-gates union: 13 derived, 13 run, all exit 0 at 7d32eecf3b.
    • check:platform-checklist holds 875/885 anchors, none lost.
    • Check-runs at 7d32eecf3b: 39, all completed, 31 success and 8 skipped. node scripts/pm/check-expected-skips.mjs --pr 24671 → OK — 8 skipped check-run(s), every one in the roster (exit 0).
    • No review and no comment.
  • Left alone, accepted. The report lists each finding it did not take, with the refuting reading. Two examples:
    • list-view-capabilities negative[0]'s "not INVALID_FILTER" is refuted by boolean-comparand-declared-type-door.ts.
    • strict-widget-rejects-stray-keys's "draft unreadable until publish" is refuted by META_ITEM_READ_PARAMS carrying state.
  • Carried on the card, for the next round.

This seat readies the PR and queues it with auto-merge.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/l skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants