Repository navigation
docs(qa): 57 platform-checklist rows from the #23104 browser pass re-pointed to the product at the pin (#23169) - #23278
Merged
Conversation
…23169) keyboard-shortcut-surface C2/C3/C4 flip to positive assertions (objectui#11674), theme-mode-persistence reads object-ui-theme under the avatar menu, the two marketplace items and RUNNER boot installs from a scratch copy, and lifecycle-retention-sweep boots at OS_LOG_LEVEL=info with the idle-sweep ruling recorded as owed. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
…23169) Eleven items: the draft-first saved-view create, the opt-in export grant, record-edit-undo blocked on a packaged undoable action, the locations-less probe half blocked on a packaged specimen, bulk-select re-pointed to the showcase_task Bulk Actions view, the form overlay's isDefault, objectui pins run from the repo root, the deliberate Cancel, the gantt near-miss pin, the detail page's group gate (objectui#11630 fixed) and the hook log wording. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
…browser pass (#23169) global-filters-rescope names the scratch dashboard D2/D3 need; system-overview-live-counts reads the live-session filter, the server's widget strip and the two security tiles; write-feedback, disabled-control-reason and labels-over-machine-names turn their fixed expected-fail knownGaps into regression rows and name the run's new cards. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
…3104 browser pass (#23169) The palette visibility recipe is run-proven; the contributor recipe's own-row invoice carries its owner; global search reaches /search by URL; i18n reads _sections on the surfaces the console renders and relative dates on the Data pillar grid; the API console is a deep link on a stock boot; the AI approvals route's K2 expected-fail flips positive (objectui#11736). Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
…wser pass (#23169) notification-deep-link mints through the opening or reassign (remind is submitter-only); ooo-delegation-reroute starts its scratch flow from a record; screen-flow-roundtrip reads the action door; the packaged automation board records the measured member posture unadjudicated; the Flow Runs page leaves new_assignee empty; the node matrix's task carries an assignee. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
#23169) The Automations pillar lock's expected-fails flip to the fixed shape (objectui#11124); html compile errors are met at the save door and in the draft preview; stats.locked is the envelope lock; the empty picklist row is added after real options; record pages set their type; the lifecycle diff names the publish versions off /history; the doc recipe drives the writable base over ?package=. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
…klist rows from the #23104 browser pass (#23169) The connector picker's lock note is re-measured; webhook delivery moves onto an in-organization webhook with the bulk pair blocked on a maintainer question; email templates read from the registry; the federation fixture reports 7 columns and 'unreachable' is labelled; the 501 and mandatory-topic halves name why they cannot run on stock; the walled posture's boot prerequisites, the deployment-level meta read, the GET verify-email, the distinct IdP sub, the one scaffold template and persona B's attachment read. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
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.
Part of #23169
Clause-②: no
The browser pass of #23104 recorded two runs: QA run #23163 (
surface:browser) and QA run #23166 (surface:mixed). Both ran at objectstack36b2889cwith objectui1fb1ced36243. After #23121 closed, they parked 59 checklist rows on it, and two more rows were appended to it after its claim. #23169 carries all 61.This PR lands 57 of the 61 rows. It revises 51 items across 15 area files, two area recipes and one RUNNER.md environment fact. Each revised item gets
revision+1 and one appendedhistoryentry. The entry names the row, its run and the fields it touched. No product code, test or fixture changes.#23169 stays open after this PR:
access-security.share-link-landing-pageC3 waits for PR feat(plugin-security)!: retire the four security-catalog row objects (#15204 stage 8) #23222, which editsaccess-security.json.platform-core.lifecycle-retention-sweepsteps[4] waits on a maintainer ruling (below).How each row was checked.
.objectui-shaonmainis still1fb1ced36243, the console both runs drove.6d7f4df3c.A0,C2, …) is in brackets.Rows landed
platform-core.keyboard-shortcut-surface⌘ Band none of the five dead keys, and it lists⌘⇧O/⌘⇧Sonly on the AI chat page. Read:advertisedShortcuts.tsand the pinKeyboardShortcutsDialog.wiredOnly-11674.test.tsxplatform-core.theme-mode-persistenceobject-ui-theme(set inConsoleShell.tsx), and ModeToggle sits in the avatar menu's Preferences groupplatform-core.marketplace-console-honesty,…marketplace-install-local-lifecycleprocess.cwd()(local-manifest-source.ts#DEFAULT_INSTALLED_PACKAGES_DIR). RUNNER.md gains the same fact, with alscheck: the path is gitignored, sogit statuscannot see itplatform-core.lifecycle-retention-sweepOS_LOG_LEVEL=info: the sweep line is INFO, andos devdefaults to warn. steps[4] is not rewritten; a knownGap records the open rulingrecords-forms.saved-view-managementPUT …?mode=draft, ADR-0034) that lands on?preview=draft, and the new Publish leg isPOST …/publish. Read:ObjectView.tsxandcreateRuntimeMetadatarecords-forms.list-view-capabilitiesallowRead+allowExport, bound by the set's NAME. Export is opt-in (resolveUserExportAllowed)records-forms.record-edit-undoundoableactions push an Undo op. The showcase declares none, and runtime-authored actions are not served. The item gets ablockedannotation (see deviations)records-forms.action-location-matrixrecords-forms.bulk-select-all-matchingshowcase_contactdeclares no bulkActions, and its 34 rows fit one pagerecords-forms.form-view-galleryisDefault:true. Without it,MetadataProvider.applyViewItemnever sets the default form (objectui#11539)records-forms.form-dirty-guardhandleCancel), told apart from the X / Escape / backdrop closesrecords-forms.import-wizard-encoding-and-hintsrecords-forms.gantt-interactionsGanttView.tree.test.tsx), which proves missing grips, not a dragrecords-forms.field-group-visible-when{ group }references, and record:details evaluatesvisibleWhen. Pin:record-details.groupVisibleWhen-11630.test.tsxrecords-forms.object-hook-lifecycleonError:'log'hook logs[hook] handler failed (onError=log; suppressing)(hook-wrappers.ts runWithErrorPolicy)dashboards.global-filters-rescopeoptionsFromfilter, which no stock dashboard declaresdashboards.system-overview-live-countswidget_organizations(filterDashboardForUser), so 8 of the 9 declared widgets are servedux-conventions.write-feedbackInvitation sent to ${result.email}. Studio discard is driven on the metadata designer. acceptance[5] scores blocked(fixture), because no stock surface offers Undoux-conventions.disabled-control-reasonux-conventions.labels-over-machine-namessearch.command-palette-navigationsearch.console-global-search+ recipeqa-contributor-bound-memberownerto the member's email, and a recipe knownGap gives the same rule for taskassignee./searchis reached by URL, because Open Full Search Page is offered only for an empty or matching queryi18n.surface-matrix_sectionsis read on the New form, the record page and the contact form.…/view/tabbedrenders the gridi18n.studio-follows-app-localeapi-backend.api-console-discovery-execute/_console/apps/setup/developer/api-console.nav_api_consolelives only instudio.app.tsai.console-ai-surface-gatingapprovals.notification-deep-link/reassign, not by/remind.remindis submitter-only (approval-service.ts)approvals.ooo-delegation-rerouterecord-after-create).POST …/triggercannot open an approval, becausebuildAutomationContextpasses params only and the approval node reads$recordautomation.screen-flow-roundtripPOST /api/v1/actions/showcase_task/showcase_bulk_reassign, the declared-action door (objectui#12037)automation.setup-packaged-automation-boardautomation.flow-runs-page-test-triggernew_assigneeis left empty, so the run pausesautomation.flow-node-type-matrixstudio-authoring.packaged-automation-studio-lockStudioDesignSurface.automationsReadOnly-11124.test.tsx). The expected-fail wording is droppedstudio-authoring.custom-page-source-tiersHTML_PAGE_SOURCE_COMPILE). Its panel shows only in the designer's draft previewstudio-authoring.metadata-diagnostics-sweepstats.lockedis the served envelope lock (#21694)studio-authoring.object-designer-roundtripstudio-authoring.record-page-roundtripstudio-authoring.draft-publish-lifecycle/history. History counts drafts too, so the publishes are v2 and v4studio-authoring.doc-on-app-menu?package=integration-system.flow-connector-pickerPOST /api/v1/automationopens editable. The older reading, for flows written over the metadata API, is kept and marked not re-measuredintegration-system.webhook-lifecycleintegration-system.email-template-renderGET /api/v1/meta/email_template/NAME); nosys_email_templaterow exists since #22875.categoryis retired (#22876). The declared-source half needs a writable showcase copyintegration-system.external-schema-browser-uiunreachableis labelled at the pinintegration-system.notify-inbox-deliveryrequiresmessaging, so no showcase boot can serve the 501 halfintegration-system.notification-preference-suppressionmandatoryTopicsis a plugin constructor option. The bypass's unit pin is namedidentity-auth.workspace-org-switch@objectstack/organizations,OS_PLATFORM_OWNER_EMAIL,OS_AUTH_MEMBERSHIP_POLICYand accept-invitation. The /meta read is now identical across the switch, because metadata is deployment-level (ADR-0131 D6/D7)identity-auth.email-verification-loopVerifyEmailPage.tsx)identity-auth.implicit-account-linking-ownershipsubcli.scaffold-first-runblankattachments-storage.download-authz-both-sides+ recipeqa-scratch-authzsys_attachmentread. Without it, the panel refuses before any download is attemptedWhere this differs from the card's suggested edit
records-forms.record-edit-undogets ablocked: { by: 'fixture', ref: … }annotation, so the item "stays BLOCKED" as the card says.refnames the gap in words.scripts/checklist-select.mjshides the item from default runs, and--include-blockedlists it.dashboards.system-overview-live-countsA3. The card sayssystem_overviewhas "nowidget_organizations".widget_organizationsis one of them.requiresService, so the served body carries 8. The run read the served body.integration-system.notify-inbox-deliveryA3-501. The card lists it as "(in knownGaps)", but the item had no such knownGap. One was added.platform-core.lifecycle-retention-sweepC1. Only the step-3 half is applied. steps[4] (idle sweep) is left with a "ruling owed" knownGap and is not rewritten.search:qa-contributor-bound-memberstep 5,attachments-storage:qa-scratch-authzstep 6). Recipes carry no revision, so only the item each row names is bumped.search.rls-both-personas,search.global-search-skips-unreadable,records-forms.crud-roundtrip, and the other twoqa-scratch-authzusers.provenancenames the correction.Rows not edited
approvals.quorum-m-of-nA0 (fixture gap, known)seed-approval-demo.tsis unchanged at6d7f4df3c(Ada holds onlyauditor). Shipping a distinct-holder fixture is showcase workapprovals.decision-action-matrixA9-wire (fixture gap, in knownGaps)studio-authoring.metadata-diagnostics-sweepA6 (fixture gap, in knownGaps)integration-system.webhook-lifecycleN1 / N2access-security.share-link-landing-pageC3Maintainer ruling owed
platform-core.lifecycle-retention-sweepsteps[4]: should an idle sweep log nothing? It logs18 policy(ies) applied, ~0 rows reapedtoday.report.swept.length. Every applied policy pushes an entry,deleted: 0included, andLifecycleSweepReport.swept's docblock says "one entry per (object, policy)".Gates
All gates ran at
ec744f7fd3, the head after mergingorigin/main(b4d573a0e). Each ran in its own process with its own log, and its exit code was read before any pipe.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 13 families for the 16 paths.--ranwith exit codes printed✓ … 13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED (a DERIVED zero …).node scripts/check-ci-filter-parity.mjsOK: all 21 build input(s) turbo.json declares outside the packages …node scripts/check-closing-keyword-parity.mjscheck-closing-keyword-parity: OK (3 parsers agree on all 9 keywords …)node scripts/check-closing-keyword-parity.mjs --self-test✓ … 40 assertions, 5 mutations of the shipped parsers each driven to red.node scripts/check-comment-mask-corpus.mjs✓ comment-mask corpus sweep …: 8975 files, 0 disagree, 0 unparseablepnpm --filter @objectstack/lint run check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 474 files …(afterpnpm --filter '@objectstack/lint...' buildunderos-verify-lock,VERDICT command-exit 0)pnpm check:cross-package-test-inputsOK: 30 package(s) read outside themselves, all declared …pnpm check:doc-authoring✓ doc authoring guard: …pnpm check:driver-memory-censuscheck-driver-memory-census: OK …pnpm check:gitlink-declaredcheck-gitlink-declared: OK (11258 index entries …)pnpm check:nul-bytescheck-nul-bytes: OK (scanned 11249 text file(s) … no raw ASCII control bytes).pnpm check:platform-checklistcheck-platform-checklist: 8 problem(s). These are the same 8 lines as at base6d7f4df3c(the sorted problem lines diff empty), and none is in an item this PR touchespnpm check:refd-timer-probeOK check-refd-timer-probe: 8969 source file(s) swept …pnpm check:watch-hint-literal✓ check-watch-hint-literal: 73 declaration(s) across 4 rostered name(s) …--anchor-censusbase vs head: 716 → 725 resolved). Per file: api-backend 66 → 67, dashboards 22 → 24, identity-auth 90 → 91, platform-core 67 → 69, records-forms 94 → 96, studio-authoring 36 → 37. No file fell.skip-changeset:docs/qa/**ships in no package, and nopackage.jsonnames it.Acceptance notes
These are noted, not filed: each is a source read without a reproduction, or an observation.
check:platform-checklistproblems predate this PR. They are inaccess-security.public-form-withdrawal-layers,attachments-storage.attach-requires-parent-editandsearch.rls-both-personas. The daily platform-checklist watchdog reports them; check:platform-checklist is red on main #23139 closed themnot_planned.vite-ui-theme, while the shell storesobject-ui-theme. At objectui1fb1ced36243,apps/console/index.htmlreads the first key andConsoleShell.tsxstores the second. From source, a user who picked Dark on a light-OS machine may get a light first frame. Not reproduced.sys-metadata-activation.object.tssays "Reads stay open", but QA run QA run · surface:browser (65/65) · 36b2889c · 2026-10-12 · 50 PASS / 2 PARTIAL / 12 FAIL / 1 BLOCKED / 0 NOT-RUN #23163 measured a member's activation read answering 403. That item's maintainer question covers it.actions[]. QA run QA run · surface:browser (65/65) · 36b2889c · 2026-10-12 · 50 PASS / 2 PARTIAL / 12 FAIL / 1 BLOCKED / 0 NOT-RUN #23163 measured this and recorded it as a fixture gap, and this PR records it the same way. Whether runtime action authoring should reach the served object is not judged here.showcase_task_changedwebhook showsactive:truein Setup but can never fan out on the org-walled showcase, because it materializes org-less. The run's maintainer question on in-org bulk events is the nearest open thread.Generated by Claude Code