Skip to content

QA run · area:automation · 4/10 · 19f98fa1 · 2026-08-20 #10225

Description

@os-elon

Post-release sweep for 17.1.0, automation lane. Selected because 17.1.0 carries three BREAKING automation HTTP-status changes inside a minor — SDK-visible, and ^17.x consumers pick them up on their next install.

Environment

Identical to the priority:P0 companion run (#10224): framework 19f98fa1fffbeb305bdcb6af64bc826fb25a46b1, .objectui-sha / console dist stamp both 9a3daf8d37ad973a621e5edd276fe32467f90684, showcase on port 3456 against file:/tmp/<run>/qa-17.1.0/data.db, 2026-08-20T13:59Z.

Execution mode: SEQUENTIAL, declared. No subagent fan-out — findings stand, but this run does not support a "nothing else was missed" claim.

Scope

Selector area:automation → 10 runnable items (1 blocked hidden: automation.rollup-summary-filter, blocked{by: fixture, ref: #3358}).

Per-item verdicts

itemrevverdictoracle evidence
automation.flow-node-type-matrix3passpin flow-node.dogfood.test.ts green
automation.trigger-type-matrix1passpin flow-trigger-conformance.test.ts green
automation.durable-suspend-restart1passpin flow-durable-suspend.dogfood.test.ts, 11 assertions
automation.flow-toggle-kill-switch1pass 4/4hand-driven, detail below
automation.flow-run-step-nesting2not-run5 clauses, needs screenshot oracle
automation.time-relative-trigger2not-run5 clauses
automation.flow-error-handling3not-run7 clauses
automation.connector-dispatch-matrix1not-run4 clauses; note the sandbox cannot reach showcase_status_api (see gaps)
automation.flow-runs-page-test-trigger1not-run5 clauses
automation.screen-flow-roundtrip2blocked(environment)its only pin is objectui e2e/live/screen-flow.spec.ts — not runnable from this repo

No fail recorded, so no reproduction rules are owed.

automation.flow-toggle-kill-switch (rev 1) — clause detail

Flow showcase_urgent_task_alert. Every showcase_task create returned 201, so the "no new run" assertion is load-bearing rather than vacuously satisfied by a broken payload.

clauseverdictevidence
[0] baseline fires exactly oncepassruns 0 → 1 after the first urgent create
[1] OFF is a kill switchpasscreate B returns 201, runs stay 1 == 1 — absence of a new run, asserted
[2] runtime state mirrors the togglepass/automation/_status: {enabled:true,bound:true}{enabled:false,bound:false}{enabled:true,bound:true}. Both fields flip, so the toggle unbinds the trigger rather than merely guarding execute() — which is exactly what the NEGATIVE demands
[3] ON restores firingpassruns 1 → 2 after the third urgent create
NEGATIVE (unknown flow)passPOST /automation/does_not_exist/toggle404 RESOURCE_NOT_FOUND, not 2xx

Independent corroboration, from a different oracle entirely: the console notification panel (captured while running platform-core.console-login) lists "Urgent task: QA killswitch C" and "A" and no B — a second, unrelated confirmation that the OFF-window create did not fire the flow.

Directed verification of the 17.1.0 BREAKING status codes

These behaviours are new in 17.1.0 and no checklist clause covers them yet (see the checklist-gap note below). Verified directly against the running server because they are the release's highest-risk surface.

declared contractmeasuredverdict
trigger routes answer real HTTP for a run that ran and failed (was: 200 wrapping {success:false})400 + FLOW_FAILED, message carrying the node failure verbatim (condition failed to evaluate as CEL: Unknown variable: priority …)
disabled flow ⇒ 409409FLOW_DISABLED on bothPOST /api/v1/automation/:name/triggerand legacy POST /api/v1/automation/trigger/:name
no such flow ⇒ 404404RESOURCE_NOT_FOUND on both routes
flow with no start node ⇒ 422no such fixture on stock showcaseblocked(fixture)
resume answers real HTTPunknown runId404 RESOURCE_NOT_FOUND✅ (partial — the FLOW_FAILED / RESUME_IN_PROGRESS / INVALID_SCREEN_INPUT arms need a genuinely paused run)

The response body still carries the {success:false, error:{…}} envelope; what changed is the transport status, which is precisely the point of the change — raw-HTTP callers treating 2xx as success now see the failure one level up.

Checklist gap (for the wave anchor card — NOT extracted)

area:automation has no clause covering the trigger/resume HTTP status contract. The three 17.1.0 BREAKING changes landed against a lane whose items assert flow behaviour but never the status code a caller observes — so a regression that reverted 409/422/400 back to 200 {success:false} would pass this area today. Worth an authored item (automation.trigger-status-contract-shaped, deriving its matrix from the changeset's own table) rather than leaving the coverage to directed one-offs like this run.

Fixture / environment gaps

  • showcase_declarative_connector_ping fails on every record-change firing: connector_action(showcase_status_api.request) failed: fetch failed — the sandbox cannot reach that host. This is why automation.connector-dispatch-matrix was not attempted here; on a network-restricted runner it needs a declared stub or a blocked(environment) note on the item.
  • automation.screen-flow-roundtrip is pinned solely in objectui; from this repo it is neither pin-evidenced nor drivable.

Not reached — handoff

flow-run-step-nesting (rev 2) · time-relative-trigger (rev 2) · flow-error-handling (rev 3) · connector-dispatch-matrix (rev 1) · flow-runs-page-test-trigger (rev 1) — 26 clauses total, mostly screenshot/log oracles needing browser driving.

Companion run: #10224 (priority:P0).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions