Skip to content

qa(checklist): 18.2.0 sweep ledger edits — i18n, search, studio-authoring, ux-conventions, RUNNER - #26109

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-jk51nb
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-jk51nb

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
Fixes #25842
Fixes #25847
Fixes #25848
Part of #25849 (4 of its 5 findings; the write-feedback acceptance[1] reading waits on a maintainer ruling, so the card stays open)
Fixes #25850
Clause-②: no
Metadata-protocol: none

Checklist-accuracy findings from the 18.2.0 release sweep, applied to five ledger files, one commit per card. Wave anchor: #25807 (it stays open; this PR only links it). Docs only: nothing under packages/, ui/ or any governed surface moves, so the PR carries skip-changeset.

Every JSON edit revises the item text, bumps its revision, and appends a history row that names the run record the finding came from (QA runs #25815 release-18.2.0-tier1 and #25817 release-18.2.0-manual-set, both at 6679644a; #25812 and #25823 for RUNNER). Each finding was re-read against origin/main at cc378e93 first, with objectui paths read under ui/.

Per card

#25842, areas/i18n.json (9 findings, all applied, 5 items).

  • i18n.flow-copy-translation-and-host-override: the ref adds the three packages/cli/test/i18n-flow-*-coverage tests; the verify for the extract clause says they prove extractTranslations, not the command's file write; the validate clause says translation.test.ts pins the rule and its remedy while the exit code stays the run's.
  • i18n.surface-matrix: the ref says the two objectui pins cover the confirm copy and the successMessage handed to the toast, under stubbed action, confirm and toast handlers (no round-trip), so the network clause stays the run's. It also says acceptance 6, 7 and 9 have no pin: the anonymous-deny dogfood's member 200 control asserts none of the locale set, the group vocabulary or the zz-ZZ shape.
  • i18n.strict-translation-key-rejection: the steps name a snake_case item (the conventional name zh-CN is refused first with 400 INVALID_REQUEST), and the clause scores 422 INVALID_METADATA. A3 cites ADR-0049 and spec 17.0.0, as the live text does. A5 reads the singular label on the record-page badge and the New dialog, and pluralLabel on the list header and nav.
  • i18n.notification-localized-and-clears: the steps and the clause read the server's unreadCount (GET /api/v1/notifications), never the header badge, which also counts pending approvals.

#25847, areas/search.json (6 findings, all applied, 4 items).

  • search.cross-field-object-search: the pin proves the name-hit control by substring, not by naming Acme Retail.
  • search.field-scoped-narrowing: the ref is scoped to acceptance 0. The pin has no $searchFields refusal case and drives only the POST spelling, so acceptance 1 to 3 and both negatives are the run's. The route-handler INVALID_FIELD evidence in packages/rest is named as corroboration.
  • search.global-search-skips-unreadable: the dogfood pin runs on planted skipsearch_* objects, not the showcase objects, and its unscoped case asserts no totalObjects.
  • search.pinyin-flag-both-sides: the run's own paths must not spell pinyin (they polluted the zero-hit grep), and the 6679644 counts are recorded (53 on, 52 off).

#25848, areas/studio-authoring.json (9 findings, all applied). Each automated.ref now says which clauses its pins score: jsdom and unit pins that stop above HTTP score only the test-oracle clause. Affected items are expression-editors, meta-save-preconditions-and-draft-rows, metadata-diagnostics-sweep (its pin's [#8924] describe is named as protocol-layer evidence for acceptance 3 and negative 0), object-designer-roundtrip (F4 is corroboration under a different fixture), org-override-registry-gate and save-door-runs-authoring-rules. In permission-matrix-editor-ux, the ref adds PermissionMatrixEditor.artifactTier.test.tsx for the artifact gate. In record-page-roundtrip, the ref names the run's objectui pin b41ed7f68956 beside cf153eb2e535.

#25849, areas/ux-conventions.json (5 findings: 4 applied, 1 answered). write-feedback:

  • Import Undo works in create and update modes, so the Undo clause is scored on the import instead of blocked(fixture).
  • Discard draft is an in-app dialog.
  • The approvals route has no drawer: a request opens on its record page.
  • The member's refusal row is Mark Done, because the console offers a member no inline edit, selection or drag.
  • Not applied: the run asks for a ruling on object-only success strings ("Task created successfully", "Settings saved", Flow "Reassign Task" completed) under acceptance 1. That is a maintainer decision, so the clause is unchanged and the question is raised in the report on qa(checklist): i18n — 9 ledger edits from the 18.2.0 release sweep (#25807) #25842.

#25850, RUNNER.md (3 findings, all applied; re-read on top of #26052).

  • Walled boot: examples/app-showcase/package.json declares @objectstack/organizations, so a walled run boots from the tree with three variables and no scratch copy.
  • Playwright: /opt/pw-browsers holds chromium 1243, matching playwright-core 1.63.0, and the alias resolves there (re-read in this container at cc378e93). The entry now describes a mismatch as the case to check for.
  • OS_PORT: os dev serves the prebuilt dist/objectstack.json, so the connector metadata's baseUrl can carry the build-time value while the live dispatch reaches the exported port. The Check now reads the self-ping flow's run.
  • Walled personas: after feat(plugin-auth): multi-org Create User joins the administrator's current organization #25626, Create User joins the operator's current organization, so the operator creates an organization and runs set-active before minting personas.

Retired objectui-pin wording in the same files (#26035 left the area JSON to these cards). .objectui-sha, objectui:refresh and "not runnable from this checkout" are rewritten to ui/ paths and pnpm console:build. That covers i18n.studio-follows-app-locale, studio-authoring.first-run-loop, packaged-automation-studio-lock, packaged-display-class-direct-edit, doc-on-app-menu, picklist-bound-select, the four "AUTOMATION IS PINNED IN THE objectui REPO" knownGaps in studio-authoring.json, and RUNNER's objectui-ref standing fact. Re-scan of the five files' non-history text for objectui:(build|refresh|bump|clean), build-console.sh, .objectui-sha, objectui checkout and "PINNED IN THE objectui REPO": 0 hits. History rows are records and are left as written.

Acceptance notes

  • Same stale knownGap in other files, out of scope here. 15 items in records-forms.json (12), automation.json (2) and attachments-storage.json (1) still say their objectui pins are not runnable from this checkout. RUNNER's rewritten fact now tells a runner to read that wording as stale. The items themselves belong to their files' cards, and the report on qa(checklist): i18n — 9 ledger edits from the 18.2.0 release sweep (#25807) #25842 names this for the seat.
  • packages/qa/dogfood/test/search-conformance.ledger.ts names showcase-search.dogfood.test.ts as the proof for search-fields-override (400 INVALID_FIELD), but that file has no refusal case. Noted, not filed.
  • examples/app-showcase/src/system/self-url.ts's header still says the os dev value follows the live environment; at 6679644a the served metadata did not. This goes to the seat with the OS_PORT finding.

Verification

At head bc394208:

  • pnpm check:platform-checklist: exit 0, "OK — 16 areas, 329 items".
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derives 13 families. All 13 ran with exit 0: check:doc-formula-expressions refused with exit 3 until @objectstack/formula and @objectstack/lint were built, then passed.
  • --ran reconciliation: 13 derived, 13 run, 0 NOT-MEASURED.
  • node scripts/check-commit-card-trailers.mjs --range origin/main..HEAD: 5 commits, no card relation, no model identifier.

Five items revised from QA runs release-18.2.0-tier1 and
release-18.2.0-manual-set: the flow-copy pins now include the CLI
extraction tests, surface-matrix's ref says what its objectui pins stub
and which clauses have no pin, the strict-key item names a snake_case
item and scores the 422, and the notification item reads the server's
unreadCount instead of the header badge. The retired .objectui-sha
wording in this file now points at ui/.

Claude-Session: https://claude.ai/code/session_01K6HUHL4N3MV54PMcKnRgP3
Co-authored-by: Claude <[email protected]>
Four items revised from QA runs release-18.2.0-tier1 and
release-18.2.0-manual-set: the refs now say what their dogfood pins
actually assert (the name-hit control by substring, no $searchFields
refusal and no GET spelling, planted skipsearch_* objects instead of the
showcase ones), and the pinyin item records the 6679644 plugin counts
and asks for neutral run paths so the zero-hit grep is not polluted.

Claude-Session: https://claude.ai/code/session_01K6HUHL4N3MV54PMcKnRgP3
Co-authored-by: Claude <[email protected]>
…dings

Eight items revised from QA run release-18.2.0-tier1: each automated.ref
now says which clauses its pins score and which stay the run's (jsdom
and unit pins that stop above HTTP score only the test-oracle clause),
the permission matrix ref adds the artifact-tier pin, and the record
page ref names the run's objectui pin. The retired objectui-pin wording
in this file (.objectui-sha, objectui:refresh, "not runnable from this
checkout") now points at ui/ and pnpm console:build.

Claude-Session: https://claude.ai/code/session_01K6HUHL4N3MV54PMcKnRgP3
Co-authored-by: Claude <[email protected]>
write-feedback revised from QA run release-18.2.0-manual-set: import
Undo works in create and update modes, so the Undo clause is scored on
the import instead of blocked; Discard draft is an in-app dialog; the
approvals route opens a request on its record page, not a drawer; and
the member's refusal row is Mark Done, since the console offers a
member no inline edit, selection or drag. The run's request for a
ruling on object-only success strings is left to the maintainer.

Claude-Session: https://claude.ai/code/session_01K6HUHL4N3MV54PMcKnRgP3
Co-authored-by: Claude <[email protected]>
…facts

Four environment facts re-measured by the 18.2.0 sweep: the showcase now
declares @objectstack/organizations, so a walled run boots from the tree
with three variables; /opt/pw-browsers holds chromium 1243, matching the
store's playwright-core; os dev serves the prebuilt artifact, so the
OS_PORT check reads the live dispatch instead of the connector metadata;
and walled Create User now joins the operator's current organization, so
the operator creates and set-actives one first. The objectui-pinned
automation fact now says those pins resolve under ui/.

Claude-Session: https://claude.ai/code/session_01K6HUHL4N3MV54PMcKnRgP3
Co-authored-by: Claude <[email protected]>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 26, 2026
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · devx seat 2 · 2026-10-26T12:46Z

Seat domain:devx#2 (#20163) · session_01Q4MDXRbEJCNdPAP4SiXwp9 · reviewed head bc39420839 · family dispatch, chain head #25842 (claims 6415922069, 6415936879, 6415951083, 6415957906, 6415989105, all naming this branch).


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 12:55
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 26, 2026 12:55
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit f0eb9bb Oct 26, 2026
59 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-jk51nb branch October 26, 2026 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants