Skip to content

docs(qa): 18.0 sweep anchor round 14 — drop the eleven automated.stale markers objectui 0b36ffa repaired, re-read at the console pin 616df6598b42 - #24857

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/issue-24579-v18-sweep-round14
Oct 20, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/issue-24579-v18-sweep-round14

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Refs #24579
Clause-②: no

Round 14 of the 18.0 sweep's wave anchor. Round 6 (PR #24697) marked eleven checklist items automated.stale because their objectui live specs were red or skipped at the console pin. objectui#13132 repaired those specs, and it landed as objectui 0b36ffa (pointer 6284006658 on the anchor). PR #24829 then moved .objectui-sha to 616df6598b42, which contains 0b36ffa. This PR removes the eleven markers.

Only ledger text changes, in platform-core.json (1 item), records-forms.json (8) and studio-authoring.json (2). Each edited item gets one revision bump and one history row. Each row names the pointer 6284006658, objectui 0b36ffa and the pin 616df6598b42. There is no product code, test, pin, objectui spec, changeset or RUNNER.md change. After this PR, no item in any area file carries automated.stale (11 before, 0 after).

The history rows were committed with the placeholder #PENDING-24579R14, because a row's ref names this PR and the PR had no number yet. A follow-up commit on this branch swaps in this PR's number and changes nothing else.

How each verdict was read

Every verdict comes from the spec's bytes, not from the pointer's wording.

  • objectui history. I used a full, non-shallow read-only clone of objectui; the local checkout is shallow.
    • merge-base --is-ancestor 0b36ffa 616df6598b42 → exit 0.
    • Control: 12dc7b47c340 is an ancestor of 0b36ffa → exit 0.
    • Reverse: 616df6598b42 is an ancestor of 0b36ffa → exit 1.
  • The pin at BASE. .objectui-sha at BASE 41646a5788 is 616df6598b429d2b3687301a2041198928e68971.
  • What changed in e2e/live/.
    • Between the old pin 12dc7b47c340 and the new pin 616df6598b42: 11 specs modified, all by objectui#13132, plus one new spec (declared-sharing-rules-reach-13091.spec.ts) that no item here cites.
    • Between 0b36ffa and 616df6598b42 (10 commits): nothing in e2e/live/. So each repaired spec has the same blob at 0b36ffa and at the new pin. Each also has the same blob at the old pin and at 0b36ffa's parent, so the only change is Watch the logger receiver-detach class repo-wide, on an anchored receiver vocabulary #13132's.
  • Live evidence. The only live reading is objectui's own: the whole live suite measured 61 passed (11.0m) at 0b36ffa, on the shipped showcase. That is objectui's measurement at 0b36ffa, not a run at 616df6598b42. No live run exists at the new pin, so the verdict there is NOT MEASURED. Ten objectui commits between 0b36ffa and the pin touch product source, app-shell, plugin-list and plugin-grid among it, so green at 0b36ffa does not carry over to the pin.
  • Rule applied. A spec that loses its stale marker keeps only the clauses its ref (or the stale record's runnerRule) already claimed for it. I re-read each one against what it asserts at the new pin. Where it asserts less, the ref narrows and says so. Nothing widens.

Per item

Blob ids are the spec at 12dc7b47c340 / 0b36ffa / 616df6598b42. Every spec below changed between the old pin and the new one, and objectui#13132 touched it, so every one is repaired and its marker goes. Every stale.partial named only repaired specs, so each whole stale block goes.

item rev spec blobs ref change other fields
platform-core.metadata-authoring-roundtrip 4 → 5 studio-record-page 181b2562c18d / 3844a60ccd79 / 3844a60ccd79 scoped to acceptance[2] (the PUT the Studio create issues: type, object, seeded record:highlights) acceptance[2].verify
studio-object-designer (F1, F4) 5967807df335 / 58a7f1cbf024 / 58a7f1cbf024 now says it scores no clause of this item
studio-authoring.object-designer-roundtrip 6 → 7 studio-object-designer (F1, F4) 5967807df335 / 58a7f1cbf024 / 58a7f1cbf024 scoped per case, as the old runnerRule had it: F3 → acceptance[1]'s designer half, F2 → acceptance[2]. Narrowed: F4 → acceptance[3]'s banner half only (one real option, not three; no publish, no meta read). F1 asserts no clause steps[3] (its note that F4 collides with the no-option banner is no longer true)
studio-authoring.record-page-roundtrip 6 → 7 studio-record-page 181b2562c18d / 3844a60ccd79 / 3844a60ccd79 scoped to acceptance[0], carrier-neutrally (the spec binds showcase_invoice, the item showcase_contact) acceptance[0].verify, acceptance[1].verify, steps[3], source[0], source[1]
studio-editor (named in the stale why, never in the ref) e442b4c1a29e / 19f9cc131654 / 19f9cc131654 not added: the ref never named it, so acceptance[1] stays driven by hand rather than widening the ref
records-forms.list-view-capabilities 5 → 6 user-filters (4 of 6 cases) aa52b2b8de2a / ab50146bcfd0 / ab50146bcfd0 narrowed: acceptance[7]'s whitelist half only. The switcher case reads the six entries, switches only to Kanban and reads no records. The lookup quick-filter case is named as retired
inline-edit-polish-2572 84e0677df02e / 4cc1557d475f / 4cc1557d475f narrowed: acceptance[5]'s PATCH half only, on a Project record page's inline edit. It never re-reads the row. saved-view-filter (94a201c63a0a at all three) keeps acceptance[1] acceptance[5].verify (it said "same contract … pins")
records-forms.conditional-rules-header 3 → 4 field-conditional-rules c37a93cdc839 / 4e8c3d6ebec3 / 4e8c3d6ebec3 kept: acceptance[0]'s required marker, acceptance[2]'s client lock and acceptance[3], all asserted at the new pin; only the stale note goes
records-forms.cascading-options 4 → 5 cascading-options (re-filter case) 648d5c917d19 / 5f65228948b7 / 5f65228948b7 narrowed: acceptance[0]'s re-filter and clear halves only. The case never reads the province before a country is chosen. The server case keeps acceptance[1] acceptance[0].verify
records-forms.master-detail-atomic-save 6 → 7 form-view-subforms 4f2a95b529f3 / 9485f378abd7 / 9485f378abd7 scoped to acceptance[4], the clause the stale record sent to hand-driving
records-forms.related-list-server-pagination 6 → 7 detail-related-list 48a1d10e59da / f12f7237fd6f / f12f7237fd6f kept: acceptance[2]; only the stale note goes
records-forms.adhoc-filter-sort-builder 5 → 6 user-filters (4 of 6 cases) aa52b2b8de2a / ab50146bcfd0 / ab50146bcfd0 kept: acceptance[4]. The uf__tab half now rests on the filter-tabs case on the Task Triage page, the uf_FIELD half on the dropdown case
records-forms.cascading-multilevel-and-clear 4 → 5 cascading-options (re-filter case) 648d5c917d19 / 5f65228948b7 / 5f65228948b7 narrowed: acceptance[0] without its submit half (the case never submits). The objectql pin's scope (acceptance[1] and [2]), which only the old runnerRule carried, moves into the ref unchanged
records-forms.field-history-tracking 4 → 5 record-history-display 2c4d8a674f81 / 7ebc45106cff / 7ebc45106cff now says it claims no clause of this item. It pins the History tab's display contract, which negative[3] assigns to crud-roundtrip

Every edited item loses automated.stale and gains one history row; the table names every other field changed.

The retired case. user-filters' lookup quick-filter case was deleted at 0b36ffa because the shipped showcase declares no lookup user filter. The one item whose record cited it, list-view-capabilities (its stale why), no longer cites it, and its ref names the case as retired. No clause in any item rested on it. adhoc-filter-sort-builder counted it only inside "4 of 6 cases".

screen-flow (named "unchanged" in the pointer). Its blob is 6713a1875a8e at all three shas. No item in these three files cites it, so there is no marker to judge.

Items left alone

In the three claimed files:

  • studio-authoring.custom-page-render-and-blocks mentions "user-filters" as a product feature (acceptance[4]), not the spec or its retired case.
  • records-forms.crud-roundtrip, form-view-gallery, concurrent-edit-conflict and conditional-rules-grid, and studio-authoring.first-run-loop, cite a repaired spec but carry no automated.stale, so they are outside the claim (see Acceptance notes for two of them).

Outside the three files:

  • attachments-storage.inline-grid-receipt-cells (grid-file-upload) and automation.screen-flow-roundtrip (screen-flow) carry no automated.stale.
  • cli.json, access-security.json, approvals.json and RUNNER.md are excluded by the claim.

Mechanism hypotheses

  1. "Every item's stale specs are among the pointer's repaired specs, so every stale block goes." Holds. The stale records name 10 distinct specs, and all 10 are in the pointer's repaired list. All 11 blocks go.
  2. "The pointer's spec names map one-to-one onto the specs the stale records cite, studio-editor a twelfth row that may appear in no item." Partly falsified.

Acceptance notes

Verification

Editing. Every area-file edit went through a scripted span editor that never re-serialises a file. It splices only the declared value spans, then re-parses and asserts four things:

  • the document equals the old one with the declared ops applied;
  • every other item and every top-level key is value-equal;
  • each edited item's changed leaf paths are a subset of its declared fields, plus revision and the one new history row;
  • the text outside the edited items' spans is byte-identical.

All three files passed, against 18 + 33 + 39 unedited items.

Merge. origin/main b3fc122f07 was merged at 647dfb355c, cleanly. PR #24850 had merged by then (10:48:41Z) and touched only cli.json, access-security.json and approvals.json; git merge-tree --write-tree HEAD 19eb546d9c (its head) → exit 0. No open PR touches the three files: I read all 12 open PRs' file lists, including all 1285 files of the Version Packages PR.

Gates. Derived by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 647dfb355c: 13 families for the 3 changed paths, against merge base b3fc122f0. All 13 ran at 647dfb355c, each exit captured before any pipe:

command exit
node scripts/check-ci-filter-parity.mjs 0
node scripts/check-closing-keyword-parity.mjs 0
node scripts/check-closing-keyword-parity.mjs --self-test 0
node scripts/check-comment-mask-corpus.mjs 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions 0
pnpm check:cross-package-test-inputs 0
pnpm check:doc-authoring 0
pnpm check:driver-memory-census 0
pnpm check:gitlink-declared 0
pnpm check:nul-bytes 0
pnpm check:platform-checklist 0
pnpm check:refd-timer-probe 0
pnpm check:watch-hint-literal 0

check:platform-checklist runs in no per-PR CI, so this local reading is its evidence. "OK — 16 areas, 328 items (323 active, 1 planned)" at every reading:

tree line citations symbol anchors
BASE 41646a5788 0 survive / 21 swept documents 954/964, 428 cited sources, 18 file floors held
this diff on BASE (6cf48cdc7b) 0 / 21 954/964, 428
merged main b3fc122f07 (these files at main) 0 / 21 965/975, 430
head 647dfb355c 0 / 21 965/975, 430

So this diff loses no anchor and adds none.

There is no ablation, because no tested behaviour changed.

skip-changeset, re-measured. None of the 73 non-private package.json manifests (of 86 tracked) has a directory containing docs/qa, and no files[] entry names it. The root package is private. Positive control: the same probe maps packages/spec/src/index.ts to packages/spec/package.json.


Generated by Claude Code

…i 0b36ffa repaired

object-designer-roundtrip and record-page-roundtrip: the stale records go,
the refs are scoped to the clauses they already claimed, re-read at the
console pin 616df6598b42. History rows carry a placeholder PR ref that a
follow-up commit swaps for this PR's number.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…ated.stale marker

Both objectui specs it named were repaired at objectui 0b36ffa, which the
console pin 616df6598b42 contains; the ref now says which clause each claims.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
…ctui 0b36ffa repaired

list-view-capabilities, conditional-rules-header, cascading-options,
master-detail-atomic-save, related-list-server-pagination,
adhoc-filter-sort-builder, cascading-multilevel-and-clear and
field-history-tracking: each repaired spec keeps only the clauses its ref
already claimed, re-read at the console pin 616df6598b42, and the refs
narrow where a spec asserts less. user-filters' retired lookup
quick-filter case is named as retired.

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 20, 2026
Swaps the placeholder ref #PENDING-24579R14 for #24857 in the eleven
history rows; 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-20T11:18Z · head 89096113f9 · card #24579, round 14 (claim 6288926919)

  • Form. Draft, base main. The first line is Refs #24579, then Clause-②: no. Assignee os-warren, labels size/m and skip-changeset. node scripts/pm/check-governed-merges.mjs --pr 24857 → NOT governed. git merge-tree against main is clean, and no other open PR touches docs/qa/platform-checklist/.
  • Ledger invariants, parsed, merge base b3fc122f07 vs head.
    • 3 area files, 11 items: 1 in platform-core, 8 in records-forms, 2 in studio-authoring. Each has exactly one revision bump and one appended history row with ref: "#24857".
    • No item is added, removed or reordered, and no top-level key changes.
    • automated.stale blocks across the whole ledger at the head: 0 (11 before).
  • The repair, re-read by blob.
    • The seat spot-checked objectui's e2e/live/user-filters.spec.ts: aa52b2b8de2a at 12dc7b47c340 → ab50146bcfd0 at 0b36ffa and at the shipped pin 616df6598b42.
    • It also checked cascading-options.spec.ts: 648d5c917d19 → 5f65228948b7 → 5f65228948b7.
    • That matches the dev's table. All ten specs the stale records named changed only through objectui#13132, and are identical at 0b36ffa and the pin.
    • The live verdict at the pin is stated as NOT MEASURED. objectui's "61 passed (11.0m)" is cited as its own measurement at 0b36ffa, ⛔ not as a run at the pin.
  • No ref widens; five narrow. The narrowings are object-designer F4, list-view-capabilities ×2, cascading-options and cascading-multilevel-and-clear. Each repaired spec, read at the new pin, asserts less than its ref claimed.
    • studio-editor.spec.ts is kept out of record-page-roundtrip's ref, though it now asserts acceptance[1] carrier-neutrally. That follows the no-widening ruling, and it is noted for a later round.
    • The retired user-filters lookup quick-filter case is named as retired in list-view-capabilities, the one item whose record cited it.
  • Gates.
    • The seat ran node scripts/check-platform-checklist.mjs at the head. Exit 0: 16 areas, 328 items, line citations: 0 survive, symbol anchors: 965/975 resolved, 18 file floors held.
    • The dev's dispatch-gates union is 13 derived, 13 run, all exit 0; --ran reconciles.
    • Check-runs at 89096113f9: 40, 31 success, 9 skipped, 0 failing or pending. node scripts/pm/check-expected-skips.mjs --pr 24857 → OK. No review, no comment.
  • Carried to 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's next round (the dev's out-of-scope findings):
    • records-forms.crud-roundtrip acceptance[4].verify: "on showcase Project" now reads showcase_account;
    • studio-authoring.first-run-loop acceptance[0].verify: the F1 testids have moved;
    • the two theme-B widening candidates (studio-editor, form-view-subforms).

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


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 20, 2026 11:18
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 20, 2026 11:18
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 20, 2026
Merged via the queue into main with commit 81120ca Oct 20, 2026
41 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-24579-v18-sweep-round14 branch October 20, 2026 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m 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