Repository navigation
Description
Filing gate: maintainer-directed task. Filed by the 18.2.0 release-assessment thread · session_01G3h9iZTpL8aCiXbfsp8H5u. ⛔ Not a claim, ⛔ not dispatched.
Maintainer's words (project thread, 2026-10-25, verbatim): 22:54Z 「约 300 条清单准确性问题:是不是应该开卡?」, then 22:55Z 「写issue,不派发」.
Parent: wave anchor #25807 (18.2.0 release test sweep). RUNNER's extraction obligation parks checklist-accuracy findings on the anchor; the maintainer asked for them as issues, so the wave's findings are split into one card per ledger file and the anchor links each card. This is not a release blocker, so it carries no target:v18.
Reader who acts: the lane owning docs/qa/platform-checklist/** (domain:devx). Dedupe (open and closed): no card holds these lines; the 18.0 precedent closed its accuracy rows on its anchor #24579.
Wanted
For each line below, edit docs/qa/platform-checklist/areas/automation.json: revise the item's text, bump its revision, and append a history entry citing the run record the line comes from. Keep pnpm check:platform-checklist green. A line that turns out to describe a product defect rather than stale text gets its own card instead of a ledger edit.
Findings (24)
From #25812 — priority:P0, 23 items, at 6679644a, pin b41ed7f68956
automation.packaged-flow-disable-durable: steps 2/8/10 task POST needsproject; step 4's "reads are open" holds only at the apiMethods layer (a contributor gets 403 onsys_metadata_activation).
From #25815 — release-18.2.0-tier1, 156 items, at 6679644a, pin b41ed7f68956 (clause labels: aK = acceptance[K], nK = negative[K])
automation.durable-suspend-restarta0/a1/a4: the pin drives its own fixture (flow_durable_suspend, a screen-node pause) — not the showcase showcase_task_follow_up timer or the showcase_project_closure → showcase_closure_signoff nested pair the steps name; the generic persistence/consumption assertions hold, the per-kind rows are not observedautomation.durable-suspend-restarta1: the pin's 'cold boot' is a second bootStack kernel over the same file inside one test process, not a separately spawned server processautomation.flow-authoring-refusals-v18ref is accurate: it scopes the nine unit files to acceptance[0] only and says a1-a3 are manual; all nine files exist with ≥1 testautomation.flow-run-semantics-v18a2/n0: the ref's two elevated-door pins (packages/runtime/src/{action,endpoint}-flow-elevated-door.test.ts) are unit door pins over a scripted automation service and never drive the trigger door the step names (POST /automation/:name/trigger); the wire pins that do — packages/verify/src/automation-trigger-elevated-door.test.ts (HTTP injection, 403 PERMISSION_DENIED, runs 0 by listRuns) and packages/qa/dogfood/test/flow-door-elevated-start.dogfood.test.ts — are not in the ref (the runtime file's own header names them as the wire half)automation.flow-run-semantics-v18a1: no pin in the ref reads back a field a record-triggered run stamped over HTTP; flow-cel-current-user.test.ts drives the engine onlyautomation.inbound-hook-timestamped-signaturea2: no pin byte-compares the refusal arms' bodies against each other; rows assert code + typeof message only (member-vs-mount parity is per row, not across arms)automation.paused-run-trigger-record-maskeda0: the column parse is an engine (isSystem) read of sys_automation_run, plus an HTTP data-door read that checks only variables_json.record; 'null where unset' is not exercisedautomation.paused-run-trigger-record-maskeda3: the 'second process' is a second bootStack over the same SQLite file inside the same vitest process, not a spawned serverautomation.paused-run-trigger-record-maskedn0: every reader in the pin is the dev admin token; 'whichever persona reads it' is not driven across personasautomation.scheduled-work-opt-ina1/a2: both pins assert that flows are ARMED (or not) and the refusal sentence on a LiteKernel; neither observes a served boot log line or run rows after intervalsautomation.screen-flow-roundtripa4: the spec's final assertion is page.getByText(assignee) on the grid — exactly the 'not just the refreshed grid cell' the clause excludesautomation.screen-flow-roundtripa0/a3: the spec never reads the run (status paused/completed); only request capture and UI toastautomation.setup-packaged-automation-boarda0: the objectui ref→URL half names PackagedAutomationPage.navContribution.test.tsx (exists at the pin) in the clause's verify but not in automated.ref; it is component-layer and scores nothing either way.automation.trigger-type-matrixn0: names packages/qa/dogfood/test/showcase-anonymous-deny-surfaces.dogfood.test.ts › 'anonymous POST /automation/:name/trigger is denied (401)' (exists, line 587) but the file is not in automated.ref, so a ref-driven run never executes it
From #25817 — release-18.2.0-manual-set, 29 items, at 6679644a, pin b41ed7f68956
automation.trigger-status-contract: steps[7] asks for "the SAME disabled flow" through/actionsand an endpoint, but no stock flow is reachable from all three doors.automation.trigger-status-contract: The runner usedshowcase_reassign_wizardwithshowcase_bulk_reassign, andshowcase_inquiry_purgewith its endpoint.automation.trigger-status-contract: The/actions400 and 422 rows need a type:'flow' action. The recipe could addPUT /api/v1/meta/action/NAME?package=com.objectstack.qa.automation.automation.trigger-status-contract: The recipe knownGap "NOT yet proven by a live run" is stale.automation.trigger-status-contract: A bodyless resume of the stock wizard answers 400INVALID_SCREEN_INPUT, not 200.automation.packaged-flow-subflow-disable-refusal: knownGaps[0] is partly stale: a tenant caller can be authored throughPOST /api/v1/automation, and it does not guard.automation.packaged-flow-subflow-disable-refusal: A?package=-authored flow counts as deployment-authored (the toggle answers 409RESOURCE_CONFLICT"authored in this deployment"). So the self-caller arm and N1 need a package-loader-installed package.automation.packaged-flow-clone-contract: For{}, A0'sdetailsnames only the first missing field.- automation.flow-run-step-nesting steps[4]: the Studio route is
/_console/studio/com.example.showcase/automations?surface=flow:NAME, then the Runs tab; probe flows are under~org.
Acceptance
- Every line above is either applied (item revised,
revisionbumped,historycites the record) or answered on this card with the reason it was not. pnpm check:platform-checklistis green.- The PR links this card and [sweep] v18.2.0 release test sweep #25807.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 1 · 2026-10-26T12:21Z
Session:
session_01Q4MDXRbEJCNdPAP4SiXwp9(devx seat 2) · card threadsession_013McZY67kjPnKvQ8Kz3XrpWAccount:
os-steveBranch:
claude/project-thread-i3pvl3(the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)Worktree:
objectstack-issue-25840Domain:
domain:devxSeat:
domain:devx#2(seat post #20163)File surface:
docs/qa/platform-checklist/areas/automation.jsononly (stop on breach; explain in the report)Container & model: M,
mode:thread,model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: none
Premise: holds (action surface
git log origin/mainon the file since filing: no commit; the dev re-reads each line against main first)Serial constraints cleared: own ledger file only; seat 1 holds #25835 / #25836 on other files; #26035 left the retired objectui pin wording in these files to these cards; no other
Claim:names this fileGenerated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 25840, "status": "done", "branch": "claude/project-thread-i3pvl3", "pr": "https://github.com/objectstack-ai/objectstack/pull/26118", "session": "session_013McZY67kjPnKvQ8Kz3XrpW", "premise_still_valid": true, "summary": "23 of the card's 24 lines applied to docs/qa/platform-checklist/areas/automation.json: 13 items revised (revision bumped, history row citing QA run #25812, #25815 or #25817) plus the area recipe qa-flow-status-doors. automation.flow-authoring-refusals-v18's line confirmed the ref accurate, so no edit. No line was a product defect. The file's retired objectui pin wording (.objectui-sha bundle; specs only runnable in an objectui checkout at the pinned revision) is respelled for the ui/ tree and pnpm console:build. File unchanged on main since filing (last commit 2026-10-24); every line re-read at base 9753d1637f.", "tests": "No package touched, so no build/test closure owed. Edit verified by pnpm check:platform-checklist (exit 0, 329 items, 0 line citations, 986/996 symbol anchors with 10 on the named residual) and a walk of every non-history string finding no retired pin wording.", "gates": "head 890110d4: dispatch-gates --commands derived 13 families, all run, exit codes captured before any pipe, all exit 0 (node scripts/check-ci-filter-parity.mjs, check-closing-keyword-parity.mjs and its --self-test, check-comment-mask-corpus.mjs; pnpm --filter @objectstack/lint run check:doc-formula-expressions; pnpm check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist, check:refd-timer-probe, check:watch-hint-literal). --ran: 13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN. PR CI check-runs: in_progress at report time.", "line_budget": "160 changed lines (+119 / -41, 1 file) vs the 3000 human-merge threshold: under", "files_changed": [ "docs/qa/platform-checklist/areas/automation.json" ], "deviations": [ "commit trailer is the AGENTS.md model-free pair (Claude-Session + Co-authored-by: Claude), not the harness reminder's model-named Co-Authored-By", "pnpm install and a locked turbo build of @objectstack/formula + @objectstack/lint ran only to clear check:doc-formula-expressions' prerequisite (first run exit 3, then exit 0)", "history rows carry ref #25840 (the card), since the PR number was unknown at authoring time" ], "dogfood_battery": "n/a — no ! in the PR title and Clause-②: no carries no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches twice through the fleet-write relay: pr_create (draft, with its assignees and labels legs) and this os-dev-report comment", "open_questions": [], "out_of_scope_findings": [ "carrier: #26035 · docs/qa/platform-checklist/RUNNER.md's standing fact on items whose automated.ref lives ENTIRELY in the objectui repo still says those specs are not in this checkout and that option (b) is running the pin inside an objectui checkout at the pinned revision; after the ui/ import those paths exist here. Outside this card's file surface. Dedupe words: RUNNER objectui-pinned standing fact, objectui checkout pinned revision, ui/ import", "carrier: none · noted, not filed · setup-packaged-automation-board fixtures.knownGaps[0] still routes a locator or copy fix to objectui (ADR-0054), and several source rows across automation.json cite objectui packages/... paths; neither is pin-script wording, left as written" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
devx seat 2 · review: ACCEPT → PR #26118 comment 6416487584. Landing: ready + merge queue once every check on the reviewed head is green or skipped.
Generated by Claude Code