Repository navigation
qa(checklist): re-point 25 clauses that the 17.7 pre-release console runs (#21782 / #21784) proved stale, mis-asserted or mis-paired #21797
Description
Activity
objectstack-fleet commented
on Oct 5, 2026 ContributorAuthorMore actionsPath: fleet decision — the checklist verifies the definition (North Star, "what counts as done") | the 25 items listed on this card | none
Triage: first grade —
documentation·priority:p2·domain:devx·area:devpath·pm:queue. The same grade as its first half, #21735Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-05T03:04Z. ⛔ Not a claim, ⛔ not a dispatch.Triage: lands in
docs/qa/platform-checklist/areas/*.json⇒domain:devx; rationale: the product is right in every entry, and the item text is wrong, so this is the checklist half of a documentation disconnect (triage-duties.mdline 35).- Why p2. Each stale clause makes the next pre-release run report a false fail and spend a verifier on it. The first half, qa(checklist): re-point 17 clauses on 16 items that the 17.7 pre-release runs (#21720 / #21721 / #21722) proved stale or mis-asserted #21735, was graded p2 and closed by docs(qa): re-point 17 platform-checklist clauses the 17.7 pre-release runs proved stale or mis-asserted #21741.
- Direction. Each entry is revised as the card states, with a
historyentry citing QA run · surface:browser (61/61) · 316be321 · 2026-10-04 · 38 PASS / 8 PARTIAL / 15 FAIL / 0 BLOCKED / 0 NOT-RUN #21782 or QA run · surface:mixed (86/86) · 316be321 · 2026-10-04 · 57 PASS / 5 PARTIAL / 24 FAIL / 0 BLOCKED / 0 NOT-RUN #21784. Where the verifier's disposition differs from the lane's, the verifier's is used, as the card already says. - ⛔ No product change rides this card. An entry found to be a product defect on re-read is filed where its fix lands.
Generated by Claude Code
- addedarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iterateThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationImprovements or additions to documentationpriority:p2Medium: important, M3Medium: important, M3and removed
on Oct 5, 2026 objectstack-fleet commented
on Oct 5, 2026 ContributorAuthorMore actionsClaim: PM loop round 57
Session:session_01VDtqoecgES7ScQYGbFVDRv
Branch:claude/issue-21797-checklist-console-repoint(cut fromorigin/main18c2ddc1ec)
Worktree:objectstack-issue-21797
Domain:domain:devx
Seat:domain:devx#1
File surface:docs/qa/platform-checklist/areas/*.json: the 25 entries the card lists. Each item gets one revision bump and onehistoryentry citing QA run · surface:browser (61/61) · 316be321 · 2026-10-04 · 38 PASS / 8 PARTIAL / 15 FAIL / 0 BLOCKED / 0 NOT-RUN #21782 or QA run · surface:mixed (86/86) · 316be321 · 2026-10-04 · 57 PASS / 5 PARTIAL / 24 FAIL / 0 BLOCKED / 0 NOT-RUN #21784, as docs(qa): re-point 17 platform-checklist clauses the 17.7 pre-release runs proved stale or mis-asserted #21741 did for qa(checklist): re-point 17 clauses on 16 items that the 17.7 pre-release runs (#21720 / #21721 / #21722) proved stale or mis-asserted #21735.- Where the verifier's disposition differs from the lane's, the verifier's is used, as the card states.
- For invalid pairing entries, the fixture or recipe text in the item is revised. A fixture change under
examples/**is a breach to report, not to make. - Measure, don't copy. Each entry's cited objectui or framework source is re-read at the current pin (
.objectui-sha9dfaca6543, moved by chore(objectui): bump the console pin past objectuic096f03— it carries objectui#11611, #11614 and #11619, which unlock #21714, #21765 and #21768 #21772 since the runs'2e818d0b51ec). Any divergence is recorded in the report. coverage.jsononly if a mapping moves. The checklist validators stay green.- ⛔ No product change, no run record, and no write to QA run · surface:browser (61/61) · 316be321 · 2026-10-04 · 38 PASS / 8 PARTIAL / 15 FAIL / 0 BLOCKED / 0 NOT-RUN #21782 / QA run · surface:mixed (86/86) · 316be321 · 2026-10-04 · 57 PASS / 5 PARTIAL / 24 FAIL / 0 BLOCKED / 0 NOT-RUN #21784. An entry that re-reads as a product defect is reported, not changed.
Stop on a breach and explain it in the report.
Container & model:M(25 clause rewrites, each re-derived),mode:subagent,model: opus
Clause-②: no
Thread-read:5987373027
Serial constraints cleared: board read at 2026-10-05T03:52Z. No open PR touchesdocs/qa/platform-checklist/**. This round's parallel claims (#21802 and #14490) touch disjoint files.Priority rule 3 reading:
domain:devxhas no open P0/P1. This is the release instrument's second half, after #21735.docs/qa/**is not a contract-review face, and nothing publishes, so the PR carriesskip-changeset.
Generated by Claude Code
objectstack-fleet commented
on Oct 5, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 21797, "status": "done", "pr": "https://github.com/objectstack-ai/objectstack/pull/21811", "head_sha": "f5d1e37346766b44fcc9ca1986bb5ca67dd65203", "branch": "claude/issue-21797-checklist-console-repoint", "session": "session_01VDtqoecgES7ScQYGbFVDRv", "premise_still_valid": true, "summary": "Re-pointed the card's 25 clauses on 20 items in docs/qa/platform-checklist/areas (8 area files). Each item got one revision bump and one history entry citing #21782 or #21784, the verifier, and #21797. Every entry was re-read at objectui 9dfaca6543 (diffed against the runs' 2e818d0b51ec) and framework 18c2ddc1ec. All 25 match the card in substance. Six measured divergences, D1-D6, are written into the item text and the PR body. Three checklist clauses retired with their badge negative (home-admin-cluster-links A4/N3 and the two badge steps). No product, examples/** or coverage.json change.", "files_changed": [ "docs/qa/platform-checklist/areas/access-security.json", "docs/qa/platform-checklist/areas/ai.json", "docs/qa/platform-checklist/areas/approvals.json", "docs/qa/platform-checklist/areas/automation.json", "docs/qa/platform-checklist/areas/dashboards.json", "docs/qa/platform-checklist/areas/identity-auth.json", "docs/qa/platform-checklist/areas/platform-core.json", "docs/qa/platform-checklist/areas/records-forms.json" ], "rows": [ { "item": "platform-core.docs-portal-render", "clause": "A5 (+S5, persona)", "matches_card": "Y", "source_reread": "objectui HomeLayout.tsx:1-6, ConsoleLayout.tsx:130, AppHeader.tsx:792-795", "note": "VF4 wording; persona invite + sign-up" }, { "item": "platform-core.home-admin-cluster-links", "clause": "A2", "matches_card": "Y", "source_reread": "apps/console AppContent.tsx:192-194, :203; SystemHubPage absent at both pins", "note": "VF4 wording" }, { "item": "platform-core.home-admin-cluster-links", "clause": "A4 (+N3, badge steps 5-6)", "matches_card": "Y", "source_reread": "same retirement (objectui#3743 / objectui#10507)", "note": "clause, negative and two steps removed" }, { "item": "platform-core.home-admin-cluster-links", "clause": "A5 (+whole item: S1-3, S7, A1, N1, N4, title, knownGap)", "matches_card": "Y", "source_reread": "UnifiedSidebar.tsx:340-402, ConsoleLayout.tsx:130", "note": "adminItems walked as target URLs" }, { "item": "platform-core.marketplace-console-honesty", "clause": "A4 (+N3, S5, title)", "matches_card": "Y", "source_reread": "MarketplacePage.tsx:216, :233-235; MarketplacePackagePage.tsx:568", "note": "nuance D1" }, { "item": "ai.console-ai-surface-gating", "clause": "A4 (+S6-7, N3, source, title)", "matches_card": "Y", "source_reread": "apps/console AppContent.tsx:207 (route still ungated)", "note": "VF4 wording" }, { "item": "records-forms.form-view-gallery", "clause": "A1 (+S1-5, fixtures, N2, revert step, sources)", "matches_card": "Y", "source_reread": "RecordFormPage.tsx:282-289; recordFormNavigation.ts:133-153; showcase task-desk.page.ts:50, :58", "note": "derived (VF3 gave none); D2, D3" }, { "item": "records-forms.conditional-rules-grid", "clause": "A5 (+S3, fixture)", "matches_card": "Y", "source_reread": "GridField.tsx:778-789; masterDetailTx.ts:172; deriveMasterDetail.ts:497", "note": "derived; D4 (key renamed to sortField, mechanism unchanged)" }, { "item": "records-forms.action-location-matrix", "clause": "A1 (+A3, S2, knownGap)", "matches_card": "Y", "source_reread": "RelatedRecordActionsBridge.tsx:197; showcase task-detail.page.ts:24, project-detail.page.ts:72, task.object.ts:37", "note": "VF4 wording; fixture change reported as breach B-1" }, { "item": "approvals.inbox-metadata-actions", "clause": "A2 (+personas, S1/S2/S4, A3 verify, fixture)", "matches_card": "Y", "source_reread": "plugin-approvals sys-approval-request.object.ts:550, :556-595", "note": "VF4 wording; non-override approver persona added" }, { "item": "dashboards.global-filters-rescope", "clause": "A6 (+S8)", "matches_card": "Y", "source_reread": "showcase ops-dashboard.dashboard.ts:87-88", "note": "VF4 wording" }, { "item": "access-security.readonly-package-locks-studio", "clause": "A3 (+S5, fixture, A2 code set)", "matches_card": "Y", "source_reread": "runtime domains/packages.ts:560-577", "note": "VF4 wording; NOT_OVERRIDABLE added per FE7" }, { "item": "access-security.audit-log-browser", "clause": "A1", "matches_card": "Y", "source_reread": "spec identity/eval-user.zod.ts:152", "note": "VF4 wording" }, { "item": "access-security.audit-log-browser", "clause": "A5 (+A3, S5-6)", "matches_card": "Y", "source_reread": "objectui AuditLogPage.tsx:128, :212-218", "note": "VF4 wording; FE7 Action select" }, { "item": "identity-auth.auth-method-matrix", "clause": "A10 (+S9)", "matches_card": "Y", "source_reread": "plugin-auth auth-route-ledger.ts:148-157", "note": "VF4 wording" }, { "item": "identity-auth.workspace-org-switch", "clause": "A6 (+S8)", "matches_card": "Y", "source_reread": "better-auth 1.7.3 crud-org.mjs:424-425", "note": "VF4 wording" }, { "item": "records-forms.cascading-options", "clause": "A3 (+personas, S4, fixture)", "matches_card": "Y", "source_reread": "showcase cascading-select.object.ts:100; spec identity/eval-user.zod.ts:201-207", "note": "VF4 wording; predicate-widening alternative reported as breach B-2" }, { "item": "records-forms.field-group-visible-when", "clause": "A1 (+S3, knownGap, A4, title, source)", "matches_card": "Y", "source_reread": "spec shared/expression.zod.ts:184-187; metadata-protocol protocol.ts:766-780; objectui fieldGroups.ts:74, buildDefaultPageSchema.ts:669-723", "note": "A1 VF4 wording; FE12 differs (D5)" }, { "item": "automation.flow-run-step-nesting", "clause": "A2 (+fixture)", "matches_card": "Y", "source_reread": "showcase flows/index.ts:919-926; spec execution.zod.ts:180-185", "note": "VF4 wording" }, { "item": "automation.rollup-summary-filter", "clause": "A5 (+S7, fixture, source)", "matches_card": "Y", "source_reread": "packages.ts:560-577; spec kernel/metadata-plugin.zod.ts:726", "note": "VF4 wording minus the overlay alternative (D6)" }, { "item": "automation.flow-node-type-matrix", "clause": "A1", "matches_card": "Y", "source_reread": "spec automation/flow.zod.ts:72", "note": "VF4 wording" }, { "item": "automation.flow-node-type-matrix", "clause": "A2 (+FE13 knownGap)", "matches_card": "Y", "source_reread": "service-automation engine.ts:10897, :10960-10980", "note": "VF4 wording" }, { "item": "automation.trigger-type-matrix", "clause": "A1 (+S9, title)", "matches_card": "Y", "source_reread": "engine.ts:1175-1191; spec execution.zod.ts:376", "note": "VF4 wording" }, { "item": "platform-core.app-management-toggle", "clause": "A6 (+S2/S6/S7, title)", "matches_card": "Y", "source_reread": "objectui AppManagementPage.tsx:207, :246, :274-278", "note": "VF5 wording; Delete half expected to fail (product_defects P-1)" }, { "item": "platform-core.app-management-toggle", "clause": "N1 (+stub knownGap)", "matches_card": "Y", "source_reread": "same", "note": "derived from VF5" } ], "divergences": [ "D1 marketplace-console-honesty A4: VF4 says no package fetch. That holds on MarketplacePackagePage (fetch effects isAdmin-gated). MarketplacePage load() is not admin-gated (MarketplacePage.tsx:139-145), so a member still fires the catalog list fetch. The verify text scopes the claim to the package page.", "D2 form-view-gallery: the card says the wizard renders as steps only on /new. RecordFormPage passes the type in both create and edit modes, and both page routes exist (app-shell console AppContent.tsx:1097, :1113). Only the New/Edit modal degrades it.", "D3 form-view-gallery: the card keeps modal blocked(fixture). showcase task-desk.page.ts hosts ObjectForm formType drawer (edit) AND modal (create), so the modal presentation is scorable there. blocked(fixture) is kept as the fallback.", "D4 conditional-rules-grid: in the #21772 pin range the grid config key sort_field became sortField at both ends (GridField reader, MasterDetailForm writer). The mechanism is unchanged and the citation uses the new spelling.", "D5 field-group-visible-when: FE12 says both adapters copy visibleWhen at the pin. At 9dfaca6543 and at 2e818d0b51ec only the form adapter copies it (fieldGroups.ts:74). The detail adapter deriveFieldGroupDetailSections drops it, which is consistent with objectui#11630.", "D6 rollup-summary-filter: VF4 offers overlay per ADR-0005 as an alternative. The object type declares supportsOverlay false and allowOrgOverride false (metadata-plugin.zod.ts:726), so the alternative was dropped.", "Scope note: the persona fix invite + sign-up (card entry 1) was also applied to three items this PR already bumps that carry the same stale phrase (home-admin-cluster-links, marketplace-console-honesty, app-management-toggle).", "Scope note: for invalid-pairing entries B8, B9 and M6, the card gives corrected clause wording, so the clause was revised along with the fixture text. The brief's fixture-or-recipe-only rule was read as meaning no examples/** change." ], "product_defects": [ "P-1 (candidate; code-read, not run-measured): platform-core.app-management-toggle A6, Delete half. objectui AppManagementPage.tsx:274-278 handleDelete shows the success toast as soon as deleteItem resolves, without reading reset, so a reset:false no-op on a code-package app is reported as deleted. The card already names this as the open candidate (VF5). The clause was re-pointed per the card, not withheld.", "P-2 (candidate; code-read): platform-core.marketplace-console-honesty A4. MarketplacePage issues the catalog list fetch for a non-admin it then turns away, unlike MarketplacePackagePage, whose fetches are isAdmin-gated (MarketplacePage.tsx:139-145 vs MarketplacePackagePage). Not a run fail. Recorded for the seat to judge." ], "validators_run": [ { "cmd": "pnpm check:platform-checklist (base 18c2ddc1ec)", "result": "exit 0; 270 items; line citations 0; symbol anchors 652/662" }, { "cmd": "pnpm check:platform-checklist (head f5d1e37346)", "result": "exit 0; 270 items (266 active, 2 planned); line citations 0; symbol anchors 653/663, unresolved residual unchanged at 10" }, { "cmd": "node scripts/pm/dispatch-gates.mjs --commands", "result": "13 families derived vs merge base 18c2ddc1e (8 paths)" }, { "cmd": "node scripts/check-ci-filter-parity.mjs", "result": "exit 0" }, { "cmd": "node scripts/check-closing-keyword-parity.mjs", "result": "exit 0" }, { "cmd": "node scripts/check-closing-keyword-parity.mjs --self-test", "result": "exit 0" }, { "cmd": "node scripts/check-comment-mask-corpus.mjs", "result": "exit 0" }, { "cmd": "pnpm --filter @objectstack/lint run check:doc-formula-expressions", "result": "first run exit 3 PREREQUISITE NOT MET (nothing measured); after turbo build of @objectstack/formula + @objectstack/lint (os-verify-lock VERDICT command-exit 0) exit 0" }, { "cmd": "pnpm check:cross-package-test-inputs", "result": "exit 0" }, { "cmd": "pnpm check:doc-authoring", "result": "exit 0" }, { "cmd": "pnpm check:driver-memory-census", "result": "exit 0" }, { "cmd": "pnpm check:gitlink-declared", "result": "exit 0" }, { "cmd": "pnpm check:nul-bytes", "result": "exit 0" }, { "cmd": "pnpm check:platform-checklist", "result": "exit 0" }, { "cmd": "pnpm check:refd-timer-probe", "result": "exit 0" }, { "cmd": "pnpm check:watch-hint-literal", "result": "exit 0" }, { "cmd": "node scripts/pm/dispatch-gates.mjs --ran (exit-coded record)", "result": "13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN (a derived zero)" } ], "breaches": [ "B-1 (not made): records-forms.action-location-matrix needs a showcase fixture: a showcase_task page that composes a record header (record_header / record_more), and a parent record page that renders the synthesized Tasks related list (record_related). That is an examples/app-showcase change. Until it lands, the item text scores those three variants blocked(fixture).", "B-2 (not made, optional): VF4's alternative for records-forms.cascading-options would widen the cascading-select.object.ts tier predicate to include org_owner (an admin-only option the owner cannot pick is arguably a P3 fixture defect). That is an examples/** change. The item was re-paired to an org_admin persona instead." ], "open_questions": [ { "question": "The card lists two \"Not parked\" wording fixes outside its 25 entries (identity-auth.email-verification-loop A3: the GET verification link; integration-system.external-schema-browser-ui: columnCount 5 to 7). They were left untouched. Fold them into this PR or a follow-up?", "options": [ "A follow-up card or rider PR", "B add to #21811 as a fifth commit" ], "recommendation": "A, because they are outside the claimed file surface and the 25-entry scope." } ], "tests": "Gates only (docs-only diff); see validators_run. All gate runs are at head f5d1e37346 except the base anchor reading. Every item was also checked for revision == last history revision, and each changed item's fields were reviewed for leftover stale wording.", "mcp_calls": "0", "api_writes": "2 (both relay-mediated as objectstack-fleet[bot]): pr_create POST /repos/objectstack-ai/objectstack/pulls (read-back byte-identical, #21811); comment POST /repos/objectstack-ai/objectstack/issues/21797/comments (this report). No labels and no PR assignee: the dispatch said no labels, and the writes budget names no assignee write.", "out_of_scope_findings": [ "carrier: none - P-2 MarketplacePage catalog fetch not admin-gated, noted in PR divergences D1, not filed" ] }
Generated by Claude Code
objectstack-fleet commented
on Oct 5, 2026 ContributorAuthorMore actionsLanded: PR #21811 →
18c7dfd2e6, verified onorigin/mainby content at 2026-10-05T04:49Z.- The eight area files on
mainare blob-identical to the landing headf5d1e37346:access-security.json8206d54f68ai.jsonb88234aba9approvals.jsonced668055bautomation.json973d54d692dashboards.json56ac2eda87identity-auth.jsonca5da09cabplatform-core.json5f8a3fc796records-forms.jsonae2fd9ba4a
- 25 clauses on 20 items are re-pointed. Each item carries one revision bump and one
historyentry citing QA run · surface:browser (61/61) · 316be321 · 2026-10-04 · 38 PASS / 8 PARTIAL / 15 FAIL / 0 BLOCKED / 0 NOT-RUN #21782 or QA run · surface:mixed (86/86) · 316be321 · 2026-10-04 · 57 PASS / 5 PARTIAL / 24 FAIL / 0 BLOCKED / 0 NOT-RUN #21784, the verifier, and qa(checklist): re-point 25 clauses that the 17.7 pre-release console runs (#21782 / #21784) proved stale, mis-asserted or mis-paired #21797.- Every entry was re-read at objectui
9dfaca6543(the current pin, after chore(objectui): bump the console pin past objectuic096f03— it carries objectui#11611, #11614 and #11619, which unlock #21714, #21765 and #21768 #21772) and framework18c2ddc1ec, and all 25 match the card in substance. home-admin-cluster-linksA4, its badge negative N3 and the two badge steps are retired withSystemHubPage(objectui#10507).
- Every entry was re-read at objectui
- Six measured divergences are written into the item text (PR body, D1–D6):
- D1: the "no package fetch" claim holds for
MarketplacePackagePageonly. - D2: the wizard form type renders as steps on both the create and edit page routes. Only the modal degrades it.
- D3: the showcase
task-deskpage hosts the modal presentation, so it is scorable;blocked(fixture)is kept as the fallback. - D4:
sort_field→sortFieldin the chore(objectui): bump the console pin past objectuic096f03— it carries objectui#11611, #11614 and #11619, which unlock #21714, #21765 and #21768 #21772 range; the mechanism is unchanged. - D5: only the form adapter copies
visibleWhen; the detail adapter drops it (consistent with objectui#11630). - D6: the overlay alternative was dropped, because
supportsOverlayis false.
- D1: the "no package fetch" claim holds for
pnpm check:platform-checklistis green: 270 items, symbol anchors 653/663 (base 652/662). The 13 derived gate families exited 0. CI was green, and the merge queue passed.- Changeset: none.
docs/qa/**publishes nothing, so the PR carriesskip-changeset. No contract-review face is touched.
Left open, for triage. Not filed by this seat:
- Product-defect candidates. Both come from code reading only; neither was run.
- P-1:
AppManagementPage.tsx:274-278handleDeletetoasts success without readingreset, so a no-op delete of a code-package app reads as "deleted". This card already named it (VF5), and the clause was re-pointed to expect it. - P-2:
MarketplacePage.tsx:139-145fires the catalog list fetch for a non-admin it then turns away.
- P-1:
- Fixture need (B-1):
records-forms.action-location-matrixneeds a showcase page with a record header and a parent page rendering the Tasks related list (anexamples/app-showcasechange). Until then, three variants scoreblocked(fixture). - Two "Not parked" wording fixes the card names beyond its 25 entries were not touched:
identity-auth.email-verification-loopA3 (the GET verification link) andintegration-system.external-schema-browser-ui(columnCount5 → 7).
pm:dispatchedremoved.Seat
domain:devx#1·session_01VDtqoecgES7ScQYGbFVDRv
Generated by Claude Code
- The eight area files on
- added 2 commits that reference this issue
on Oct 7, 2026
QA-source: #21782 · #21784 (17.7 pre-release, console half, subject
316be321e, console pin2e818d0b51ec)Every entry below is a
failfrom the two console-surface runs whose disposition is stale clause (a deliberate change after the clause was written), assertion defect (the clause was wrong when written) or invalid pairing (the fixture cannot host the clause). Each was re-derived by an independent verifier (RUNNER rule 7); where a verifier changed the lane's disposition, the verifier's is used. The product is right in every entry: only the item text (and, for invalid pairings, the fixture or recipe) needs a revision plus ahistoryentry citing the source. Owning repo: this one (docs/qa/platform-checklist/areas/*.json). Wording marked "(VFn)" is the verifier's; "(derived)" is built from its finding.Follows #21735 (the non-browser half, closed by #21741). The checklist-accuracy findings with no fail attached (paths, keys, counts, fixture recipes) are in each record's close-out comment.
From #21782 · surface:browser (11 entries)
platform-core.docs-portal-render · acceptance[4] (A5, rev 1). Assertion defect (VF4).
/homehas no sidebar. objectuiHomeLayout.tsx:1-6"deliberately omits the sidebar".UnifiedSidebar's homeNavigation renders only inside ConsoleLayout, which forces contextapp. The entry every persona has is the top-bar Help menu → "All documentation" →/docs(AppHeader.tsx:758-793). Pre-17.6.0.invite_only).platform-core.home-admin-cluster-links · acceptance[1] (A2, rev 1). Stale clause (VF4).
9eea12a2b(objectui#10507, fixes objectui#3743, 2026-09-25) deletedSystemHubPage.tsx(cards and count badges)./apps/:app/systemis now aSystemLandingRedirectto/system/settings. The file is absent at both31971ff1eand2e818d0b51ec, so the change landed before 17.6.0. The item (2026-08-30) was never updated.platform-core.home-admin-cluster-links · acceptance[3] (A4, rev 1). Stale clause (VF4).
platform-core.home-admin-cluster-links · acceptance[4] (A5, rev 1). Assertion defect (VF4).
/homesidebar exists for any persona, so "member's home nav is Home + Documentation" has no surface.sys-administrationgroup) has no stable rendering surface at the pin. Revise the item as a whole: steps 1/3/5/6, A1, N1, N4.platform-core.marketplace-console-honesty · acceptance[3] (A4, rev 1). Stale clause (VF4), by design.
d524bde29(ObjectQLStrategy.convertFilter把$contains送成未声明的$regex(比较值不转义),三个同族算子早在 #4128 已改成规范算子 —— 实测 #5557 via mapDataError 的显式状态直通只覆盖 4xx,数据路由上一个声明了 502/503 的生产者拿不回自己的状态码(与 resolveErrorResponse 不对等) #5582, 2026-08-21) moved theMarketplaceDisabledreturn ahead of the!isAdminguard (MarketplacePage.tsx:206-216;MarketplacePackagePage.tsx:558-568,2573ff434). On a no-marketplace runtime every viewer gets the Disabled card. This landed before 17.6.0, and the item (since v17, rev 1) was authored against the superseded spec:ChartAggregateSchema与ChartGroupBySchemaobject 分支转 strictObject —— #5020 parse 接通后的收紧半边(#4001 后续批) #5583 ordering.ai.console-ai-surface-gating · acceptance[3] (A4, rev 1). Stale clause (VF4).
9eea12a2b(docs(create-objectstack): say that the blank starter ships no app #10507, before 17.6.0) removed SystemHubPage and its "AI Approvals" card, so the K2 card half is moot. The A6 inbox half of K2 remains. Thesystem/ai-approvalsroute is still ungated (AppContent.tsx:207).SystemHubPage.tsx) needs updating, and N3 should name only A6.records-forms.form-view-gallery · acceptance[0] (A1, drawer variant, rev 1). Assertion defect (VF3).
RecordFormPage.tsx:281-289says: "drawer/modal are presentation/open-modes, not record-page layouts, so they fall back to simple here (see [P1] Finish ADR-0021 analytics migration (chart view / dashboard+Studio / report) #1890)".resolveFormViewLayoutmaps onlytabbed. The modelling decision is ADR-0050 (Proposed): drawer/modal leaveFormView.type, and presentation belongs to NavigationMode /addRecord.mode/ actiontype:'modal'. NamedformViews.*are reachable from no console door, since every consumer readsobjectDef.form ?? formViews.default. Identical at31971ff1e.form. The wizard renders as steps only on the/newpage route.records-forms.conditional-rules-grid · acceptance[4] (A5, rev 2). Invalid pairing (VF3).
positionre-emit happens only when sibling lines share a stored position. objectuiGridField.tsx:703-707stampsrow[sort_field] = index, andmasterDetailTx.ts:180-195sends dirty fields only. INV-1002 ships one line, and a second line added through the API defaults to position 0, so the collision is created by the fixture.records-forms.action-location-matrix · acceptance[0] (A1, rev 6). Invalid pairing (VF4).
RelatedRecordActionsBridge.tsx:197,456). The showcase hosts none of the three surfaces for showcase_task:task-detail.page.tsiskind:'full'with norecord:headernode, and authored pages get no injected header actions (objectui#7298 ruling).project-detail.page.tsreplaces the related strip withrecord:line_items.task.object.ts:37projectis the only lookup.record_relatedaction location ("actions on a related list section inside a record") has no read site in objectui, while the showcase and a platform-checklist item rely on it (ADR-0049 enforce-or-remove) #20937 (closed, fixed by objectui#11270).approvals.inbox-metadata-actions · acceptance[1] (A2, rev 3). Stale clause (VF4), pre-17.6.0.
plugin-approvals/src/sys-approval-request.object.ts:568-591approval_recall.visibleis the submitter arm ORrecord.viewer.can_override == true(the Approval routed to an empty position permanently locks the record (no admin override, no recovery) #3424 override lever, button added by approvals: theapproval_recallaction hides the #3424 admin-override recall — the service admits it, the visible predicate never shows it #12716).can_overrideis held by platform/tenant admins (isOverrideActor).approval_remindstays submitter-only. Clause rev 3 (2026-08-10) predates approvals: theapproval_recallaction hides the #3424 admin-override recall — the service admits it, the visible predicate never shows it #12716. The run's approver persona was the dev admin, an override actor; VF4 notes the clause reads as invalid-pairing against such a persona.dashboards.global-filters-rescope · acceptance[5] (A6, rev 2). Stale clause (VF4).
examples/app-showcase/src/ui/dashboards/ops-dashboard.dashboard.ts:87kpi_at_risk(project dataset, health=red) declaresfilterBindings: { task_status: false }(showcase authoring gap: the ops dashboard's global filter isfield:'status'with *task* statuses, and the project widgets carry nofilterBindings— so it also lands onshowcase_project.statusand zeroes those tiles #7568, project widgets opt out of the task-status filter; pinned bydashboard-filter-vocabulary.test.ts:230). Pre-17.6.0.Conditional (only if the maintainers rule the product behaviour intended)
From #21784 · surface:mixed (14 entries)
access-security.readonly-package-locks-studio · acceptance[2] (A3, rev 3). Stale clause (VF4; the lane had it as an assertion defect — the verifier's disposition wins).
POST /packages/com.example.showcase/duplicateanswers 422DUPLICATE_SOURCE_NOT_A_BASE:requireDuplicableSource(runtime/src/domains/packages.ts:479ff.,POST /packages/:id/duplicate对一个启动中的代码包返回success:false, copiedCount:0, failedCount:0(空 base)—— ADR-0070 D4「复制成可写 base」对代码包是否本就该拷贝其对象? #14451) refuses a code-package source. Predates 17.6.0 (and 17.5.0).POST /packages/:id/duplicate对一个启动中的代码包返回success:false, copiedCount:0, failedCount:0(空 base)—— ADR-0070 D4「复制成可写 base」对代码包是否本就该拷贝其对象? #14451) succeeds for the same admin and a follow-up GET shows the change."NOT_OVERRIDABLE(barePUT;ITEM_LOCKEDonly with?package=).access-security.audit-log-browser · acceptance[0] (A1, rev 3). Stale clause (VF4), after 17.6.0.
7ebb543164(feat(spec,plugin-audit): the compliance ledger's audit capability exempts its holder from the parent-record read gate; platform administrators hold it by default (#21260) #21296, fixes security(plugin-audit): an audit capability for the compliance ledger, held by platform administrators by default, exempts its holder from the parent-record read gate (ruling 甲 on #21175, part B) #21260, 2026-10-02) gives platform adminsview_all_audit_logby default (ADMIN_FULL_ACCESS_CAPABILITIES), exempting them from the ledger's parent-record gate, so the admin's read serves the delete row. Rev 3 was measured on 17.6.0 and encodes only fix(plugin-audit): a read of the compliance ledger returns only the rows about records the caller can read (#21175) #21194.access-security.audit-log-browser · acceptance[4] (A5, rev 3). Stale clause (VF4), same cause.
identity-auth.auth-method-matrix · acceptance[9] (A10, rev 3). Stale clause (VF4), delete-user half only.
plugin-auth/src/auth-route-ledger.ts:148-157booksPOST /api/v1/auth/delete-userdispositiondisabled(user.deleteUserdeliberately unconfigured,auth-manager.ts:1561), maintainer ruling 2026-08-12 (auth-method-matrix:change-emailanddelete-userare booked as mounted inauth-route-ledger.tsbut plugin-auth never configures better-auth'suser.changeEmail/user.deleteUser— no switch to enable them #7735). The clause (rev 1, 2026-08-07) predates the ruling.identity-auth.workspace-org-switch · acceptance[5] (A6, rev 1). Assertion defect (VF4). Fails closed, not authorization class.
plugins/organization/routes/crud-org.mjssetActiveOrganization callsadapter.setActiveOrganization(token, null)before throwing 403; plugin-auth mounts the route unwrapped (auth-route-ledger.ts:274'sdk'). The active org becomes none, never the foreign org.records-forms.cascading-options · acceptance[2] (A3, rev 2). Invalid pairing (VF4).
'org_admin' in current_user.positions(cascading-select.object.ts:100);mapMembershipRole(spec identity/eval-user.zod.ts:201-205) maps owner →org_ownerwith no implication oforg_admin, so the seeded admin (org_owner) is outside the gate. Predicate landed before 17.6.0.['org_owner','org_admin'].exists(r, r in current_user.positions)(an "admin only" option the owner cannot pick is arguably a P3 fixture defect). Persona note: anadmininvitation needsaccept-invitationto grantorg_admin.records-forms.field-group-visible-when · acceptance[0] (A1, rev 1). Assertion defect (VF4).
{dialect:'cel',source}(shared/expression.zod.ts:184-187, pinned byobject-strictness-batch20.test.ts:477-489), but runtime-authored metadata is persisted verbatim and served unparsed (metadata-protocol/src/protocol.ts:1344,1652, ADR-0005 appendix (c)). Pre-17.6.0.visibleWhenat the pin, the form gates live; only the detail page still fails (product defectobjectstack-ai/objectui#11630, not parked).automation.flow-run-step-nesting · acceptance[1] (A2, rev 4). Stale clause (VF4).
examples/app-showcase/src/automation/flows/index.ts:910-926wrapssend_reminderin the try_catchguard_reminder(Aloopnode aborts the entire flow run when one iteration's node fails — a single bad row kills a whole scheduled sweep, and there is no per-iteration containment to opt into #13681 / flows: lint aloopbody with a fallible node and no containment, and atry_catchwithoutcatch; documentloop { try_catch }as the per-iteration containment spelling (B-branch items 1–2 of #13681) #14394, present before 17.6.0); the engine's innermost-identity rule (service-automation engine.ts:11596-11625, service-automation: therunRegiontagger writesbranchon parallel-branch steps and carries the enclosing loop'siterationthrough nesting — the engine half of #14414 (spec PR #15227) #15230) tags the body step with the try region.automation.rollup-summary-filter · acceptance[4] (A5, rev 3). Stale clause (VF4).
DUPLICATE_SOURCE_NOT_A_BASE(POST /packages/:id/duplicate对一个启动中的代码包返回success:false, copiedCount:0, failedCount:0(空 base)—— ADR-0070 D4「复制成可写 base」对代码包是否本就该拷贝其对象? #14451). The editor half was proven on a scratch writable package.POST /packages/:id/duplicate对一个启动中的代码包返回success:false, copiedCount:0, failedCount:0(空 base)—— ADR-0070 D4「复制成可写 base」对代码包是否本就该拷贝其对象? #14451)."automation.flow-node-type-matrix · acceptance[0] (A1, rev 3). Assertion defect (VF4).
spec automation/flow.zod.ts:72FLOW_STRUCTURAL_NODE_TYPES = ['start','end']— no executor, no descriptor, so not inGET /automation/actions.automation.flow-node-type-matrix · acceptance[1] (A2, rev 3). Assertion defect (VF4).
executeNodereturns onendbefore any step push (engine.ts:10897-10925);startlogs a success step (:10972-10980).startappears as an executed step;endis proven by the run reaching status completed (it logs no step)."showcase_fan_out_notifyneeds Slack egress; prove parallel / http on another run where egress is denied.automation.trigger-type-matrix · acceptance[0] (A1, rev 1). Assertion defect (VF4).
engine.ts:1175-1190buildRunTriggersetstrigger.type = context.event ?? 'manual'— the launch event, notFlow.type(execution.zod.ts:376describes a free string). Pre-17.6.0 (trigger.recordIdis never populated on record_change runs, and the persistedsys_automation_runrow carries no trigger block at all — runs cannot be correlated to their triggering record, and trigger kinds are lost across restart #7533).platform-core.app-management-toggle · acceptance[5] (A6, rev 1). Stale clause (VF5).
3b7d1cc6d7(refactor(spec)!: retire the plugin lifecycle-hook family the kernel never implemented (#4212) #4233 / docs(plugin-spec): the migration example no longer teaches the retired onUpgrade hook #4300, 2026-08-11) wired AppManagementPage to realsaveItem/deleteItem, before the 17.6.0 console pin, so the "client-only stub" clause was already stale at 17.6.0.reset:falseno-op, VF5, unverified live) — expect it to fail once the clause is re-pointed.platform-core.app-management-toggle · negative[0] (N1, rev 1). Stale clause (VF5), same cause.
Not parked (wording issues attached to a product-defect fail, recorded in the record's checklist-accuracy findings):
identity-auth.email-verification-loopacceptance[2] names a POST variant that does not exist (the mailed link is the API GET) — corrected (derived from VF1): "following the mailed verification link (GET /api/v1/auth/verify-email?token=…) verifies the account, and the console's /verify-email page, given a valid token, reports success".integration-system.external-schema-browser-uifixture sayscolumnCount5; it is 7.Generated by Claude Code