Skip to content

qa(checklist): automation — 24 ledger edits from the 18.2.0 release sweep (#25807) #25840

Closed

Description

@objectstack-fleet

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 needs project; step 4's "reads are open" holds only at the apiMethods layer (a contributor gets 403 on sys_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-restart a0/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 observed
  • automation.durable-suspend-restart a1: the pin's 'cold boot' is a second bootStack kernel over the same file inside one test process, not a separately spawned server process
  • automation.flow-authoring-refusals-v18 ref is accurate: it scopes the nine unit files to acceptance[0] only and says a1-a3 are manual; all nine files exist with ≥1 test
  • automation.flow-run-semantics-v18 a2/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-v18 a1: 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 only
  • automation.inbound-hook-timestamped-signature a2: 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-masked a0: 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 exercised
  • automation.paused-run-trigger-record-masked a3: the 'second process' is a second bootStack over the same SQLite file inside the same vitest process, not a spawned server
  • automation.paused-run-trigger-record-masked n0: every reader in the pin is the dev admin token; 'whichever persona reads it' is not driven across personas
  • automation.scheduled-work-opt-in a1/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 intervals
  • automation.screen-flow-roundtrip a4: the spec's final assertion is page.getByText(assignee) on the grid — exactly the 'not just the refreshed grid cell' the clause excludes
  • automation.screen-flow-roundtrip a0/a3: the spec never reads the run (status paused/completed); only request capture and UI toast
  • automation.setup-packaged-automation-board a0: 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-matrix n0: 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 /actions and an endpoint, but no stock flow is reachable from all three doors.
  • automation.trigger-status-contract: The runner used showcase_reassign_wizard with showcase_bulk_reassign, and showcase_inquiry_purge with its endpoint.
  • automation.trigger-status-contract: The /actions 400 and 422 rows need a type:'flow' action. The recipe could add PUT /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 400 INVALID_SCREEN_INPUT, not 200.
  • automation.packaged-flow-subflow-disable-refusal: knownGaps[0] is partly stale: a tenant caller can be authored through POST /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 409 RESOURCE_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's details names 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, revision bumped, history cites the record) or answered on this card with the reason it was not.
  • pnpm check:platform-checklist is green.
  • The PR links this card and [sweep] v18.2.0 release test sweep #25807.

Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    and removed on Oct 25, 2026
  2. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-26T12:21Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread session_013McZY67kjPnKvQ8Kz3XrpW
    Account: os-steve
    Branch: 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-25840
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: docs/qa/platform-checklist/areas/automation.json only (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: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (action surface git log origin/main on 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 file


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions