Skip to content

qa+fix: ADR-0126 scoped checklist sweep (#12438) + Setup nav entry for the packaged-automation page (#12457) - #12491

Open
baozhoutao wants to merge 2 commits into
mainfrom
claude/new-session-3qgti9
Open

qa+fix: ADR-0126 scoped checklist sweep (#12438) + Setup nav entry for the packaged-automation page (#12457)#12491
baozhoutao wants to merge 2 commits into
mainfrom
claude/new-session-3qgti9

Conversation

@baozhoutao

Copy link
Copy Markdown
Contributor

Two commits, one scope — the ADR-0126 packaged flow/action disable+clone surface (acceptance card #12438, Epic #12150).

1. qa(checklist) — scoped coverage sweep (#12438)

The shipped ADR-0126 surface (sys_metadata_activation ledger, packaged flow toggle + subflow guard, flow clone, ACTION_DISABLED dispatch consult, §5 operator gate, Setup packaged-automation board) had zero checklist coverage. Three read-only gap hunters (routes/runtime · Setup/Studio UI · docs claims) → 14 new items across 5 areas + 1 revision, ledger 207 → 221:

  • automation ×4: packaged-flow-disable-durable (P0, restart durability), packaged-flow-subflow-disable-refusal, packaged-flow-clone-contract, setup-packaged-automation-board (browser); flow-toggle-kill-switch rev 2 (re-sourced off the retired flowEnabled map onto the ledger projection)
  • api-backend ×2: packaged-action-disabled-dispatch (P0, both doors + gate ordering), action-activation-door-contract
  • access-security ×3: activation-write-operator-gate (with a TenancyPostureSchema enumSource pin), packaged-flow-write-door-parity, packaged-permission-set-lifecycle (card F1 / Studio save of a package-declared permission set forks it into a silent, undiscoverable overlay #11513 regression guard)
  • platform-core ×3: activation-ledger-registration-home (card G1 / Ledger convergence: registration home + one store implementation (ADR-0126 §4/§8, maintainer-ruled) #12419), activation-ledger-row-contract (scope wall: rows only for flow/action), packaged-object-extend-only
  • studio-authoring ×2: packaged-automation-studio-lock (card F2), packaged-display-class-direct-edit

coverage.json maps every new item (still 0 waivers). FOLLOW-UPS.md §8 carries what is NOT a checklist item: product defects D16–D22 found while grounding (each captured as an expected-fail probe), docs drift, card-accuracy notes for the tester, and fixture asks. Validator green: 221 items, 31 kinds mapped, traps 19/19, all provisioning recipes resolved.

2. fix(platform-objects) — Setup nav entry for the packaged-automation page (fixes#12457, = D16)

The page shipped complete in objectui (component ref automation:packaged) but no framework NavigationContribution ever named the ref — Setup's sidebar carried no entry and the page was reachable only by a hand-typed URL (card A1 failed by construction). This adds nav_packaged_automation in group_apps beside Packages (ADR-0084: package administration is Operate; ADR-0126 §7.4: "Studio keeps the editing; Setup gets the operational state"), deliberately with no requiresService: 'automation' (the action switches work without the automation service, #12419) and no requiredPermissions (matches nav_packages; the write doors enforce manage_metadata / the §5 operator gate server-side). Labels in all four locales with recorded source hashes; setup-packaged-automation-nav.test.ts pins the framework half of the cross-repo contract (objectui's PackagedAutomationPage.navContribution.test.tsx pins its half); changeset included (@objectstack/platform-objects patch).

Verification

Out of scope, flagged for the maintainer

The .objectui-sha pin (seeded at 190fbd01 by #12347) predates the page's objectui merge (#6382/#6415), so a stock vendored-console build cannot resolve automation:packaged until the pin is bumped ≥ 9602dc8 and the console bundle rebuilt. That bump moves ~700 objectui PRs of console delta — deliberately not ridden on this PR (detail on #12457).

Refs #12438 · Epic #12150 · ADR-0126 · fixes#12457

🤖 Generated with Claude Code

https://claude.ai/code/session_01SKUXt6sKgAeCEtjiuwNuhq


Generated by Claude Code

…n disable+clone (#12438)
Scoped sweep triggered by acceptance card #12438 (Epic #12150). The shipped
ADR-0126 surface (sys_metadata_activation ledger, packaged flow toggle +
subflow guard, flow clone, ACTION_DISABLED dispatch consult, operator gate,
Setup packaged-automation board) had zero checklist coverage.
- 14 new items across 5 areas (automation x4, api-backend x2,
access-security x3, platform-core x3, studio-authoring x2), ledger
207 -> 221; every clause grounded in source, expected-fail probes for
the defects found while grounding (FOLLOW-UPS SS8a D16-D22)
- automation.flow-toggle-kill-switch rev 2: re-sourced off the retired
flowEnabled map onto the ledger projection (ADR-0126 SS7.2)
- coverage.json: new items mapped into flow/action/permission/object/
view/dashboard kinds; still 0 waivers
- FOLLOW-UPS.md SS8: product defects (Setup nav entry missing - card A1
will fail; /automation write-door lock bypass; clone engine-only;
dead subflow remedy; extension-field override), docs drift, card
accuracy notes, fixture asks
- enumSource pin added: TenancyPostureSchema (3 postures)
Validator green: 221 items, 31 kinds mapped, 0 waived, traps 19/19.
Refs #12438, Epic #12150, ADR-0126
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKUXt6sKgAeCEtjiuwNuhq
…ge (#12457)
ADR-0126 SS7.4's Setup page shipped complete in the console (objectui
app-shell, component ref automation:packaged) but no framework
NavigationContribution ever named the ref - the page was reachable only
by a hand-typed URL and Setup's sidebar carried no entry (epic #12150
L5/L6-UI closed with the framework half missing).
- SETUP_NAV_CONTRIBUTIONS: nav_packaged_automation (type component,
componentRef automation:packaged) in group_apps beside Packages
(ADR-0084: package administration is Operate). Deliberately no
requiresService (action switches work without the automation service,
#12419) and no requiredPermissions (matches nav_packages; write doors
enforce manage_metadata / the SS5 operator gate server-side)
- labels in all four locales + recorded source hashes
- setup-packaged-automation-nav.test.ts pins the framework half of the
cross-repo contract (objectui's navContribution test pins its half)
- FOLLOW-UPS SS8a D16 row updated with the filed issue ref
- changeset: @objectstack/platform-objects patch
Validated: platform-objects vitest suites green (204 tests incl. i18n
parity/tombstone/source-hash), check:app-nav-i18n green (54 merged setup
nav ids, 4 locales).
Fixes#12457. Refs #12438, Epic #12150, ADR-0126 SS7.4
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKUXt6sKgAeCEtjiuwNuhq
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/platform-objects, touching 5 documentable anchor(s).

1 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/ui/setup-app.mdx(via SETUP_NAV_CONTRIBUTIONS (symbol))
What this run could not see
  • 1 name(s) were too generic to anchor anything (single lowercase words)
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.

Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 04600d939b291a4c070313726bf2e9cf6c1e2b3dpackageMentionDocs.

Which tree this was computed on

This run read content/docs from 1edd3560000273095e99492cddf8b20be3a3a894 — the merge of head 763adcde4cf546b5b9f6de8d41770cd4354aacff into base 04600d939b291a4c070313726bf2e9cf6c1e2b3d, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 1edd3560000273095e99492cddf8b20be3a3a894 && git checkout 1edd3560000273095e99492cddf8b20be3a3a894
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 04600d939b291a4c070313726bf2e9cf6c1e2b3d 763adcde4cf546b5b9f6de8d41770cd4354aacff && git checkout -B drift-repro 04600d939b291a4c070313726bf2e9cf6c1e2b3d && git merge --no-ff 763adcde4cf546b5b9f6de8d41770cd4354aacff
node scripts/docs-audit/affected-docs.mjs --json 04600d939b291a4c070313726bf2e9cf6c1e2b3d

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 04600d939b291a4c070313726bf2e9cf6c1e2b3d → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tests tooling labels Aug 26, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/xlteststooling

Projects

None yet

2 participants

@baozhoutao@claude