Skip to content

automation.create / automation.update response contracts — consumer-survey first, then back to the decision inbox (the un-ruled half of the SDK route-contract card) #12206

Description

@os-litant

Important

STATUS (updated 2026-08-30 by the spec PM seat): Step 1 is DONE and the decision is RULED — this card is now the IMPLEMENTATION carrier. Do NOT re-dispatch the survey.
Ruling: Option A adopted (maintainer, 2026-08-26, comment 5421206583, verbatim 「12452 不处理,其他接受」) — both write doors answer the canonicalized (parsed) flow; SDK binds the true return type; three inherited work items ride the same PR. Survey evidence: 5420919914 (accepted 5420937223); re-verified unchanged at 240aad5f (5469341400). Unlock pre-write: 5431687031. The "Step 1 dispatchable now" text below is HISTORICAL.

Filed by the spec PM seat (session_01NDGG54XF5gbTLdQzCtnaVV, R6) executing the disposition the maintainer's ruling prescribed on the parent card. Reader: spec-lane queue — the FIRST half of this card is dispatchable measurement work; the decision itself returns to the inbox only once that reading is attached.

Provenance (ruling, verbatim from the parent card)

automation.create / automation.update: NOT ruled here. They return to the decision inbox as their own card carrying a consumer-survey reading first — does any real consumer depend on the echo shape (the caller's own bytes back)? The candidate direction (answer the registered, parsed flow — canonicalizeStoredFlow's output — so the caller learns what the engine actually stored) is a behaviour change and is decided on that reading, not before. (Maintainer, 2026-08-25, decision-inbox batch 8, verbatim: 「同意」)

Parent: the SDK route-contract card whose ruled half (search + data.clone) landed via its Part of PR. The four-route census and the echo-shape description live there.

Step 1 — the survey (dispatchable now)

Measure whether any real consumer depends on the ECHO shape of automation.create / automation.update (the caller's own bytes back):

  • in-repo call sites of client.automation.create( / .automation.update( and any direct REST callers of those routes (examples/, qa/, dogfood, cloud-connection, services);
  • what each call site does with the RESPONSE (discard / re-read fields / persist);
  • whether any test pins the echo shape;
  • the candidate direction's cost: what canonicalizeStoredFlow's output differs in, on a real flow body (measured, not described).

Deliverable: a reading on THIS card (echo-dependents: zero or the named list; the canonicalized-vs-echo delta on one real body), then this card flips pm:queueneeds-user-decision with the standard four-facet block attached, quoting the reading.

Step 2 — the decision (maintainer's, not dispatchable)

Behaviour change vs declare-the-echo vs defer — decided on the reading, per the ruling. ⛔ Nothing lands on the automation routes before that answer.


Generated by Claude Code

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions