Commit d30ccb9
service-automation: populate the contained-failure visibility contract —
* feat(service-automation): populate the contained-failure visibility contract (#14456)
`loop { body: [ try_catch { try, catch } ] }` contained a per-iteration
failure but reported nothing about it: no run-level count, no iteration on
the failing step, no row identity on `$error`.
- `summarizeRun` folds `failed = Sigma nodes[].failures` over the array it
publishes, so the run-level count cannot disagree with the breakdown.
- `formatRunSummaryLine` prints `failed=N` whenever present, `failed=0`
included; absent (an older row) prints nothing. Absent is "not tracked",
never zero — no migration, no default.
- `try_catch` forwards the enclosing loop's iteration into `runRegion`'s
grouping for both regions, leaving the tagger and `parallel` untouched.
- `$error` is the declared `TryCatchErrorValue`, gaining `iteration` and
`item` inside a loop body and binding neither outside one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y
* chore(service-automation): drop an unused test import (#14456)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y
* test(service-automation): share one engine double across the run-history pins (#14456)
`check:engine-double-contract` counts unguarded doubles PER FILE against a
shrink-only baseline. Three copies of the same four-member fake would have
been two new ledger rows for one fact; one shared factory keeps the file's
population at the 5 the baseline already records.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y
* docs(service-automation): name the filed spec gap (#14954) beside the `code` widening
Refs #14456
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y
* docs(automation): un-stale the run summary line and narrow what `failed=0` claims (#14456)
Contract review, three docs-only changes; no engine change.
- `flows.mdx` printed the summary line as literal log output and was left
stale by this PR's own token: the run it shows now prints
`skipped=30 failed=0 gate=…`, and the line sits directly above the table
row documenting `failed`.
- Narrowed the reading of `failed=0` in three places — the doc's `failed`
row, `formatRunSummaryLine`'s comment and the changeset — from "nothing
failed" to what was measured: no node execution OF THIS RUN failed. A
`subflow` child's contained failures stay on the child's summary rather
than rolling up the way `acted` does. Cites #15617, where the
declaration's two paragraphs are being reconciled.
`content/docs/releases/v17.mdx` carries the same line and is deliberately
NOT touched: release notes are a record of what that release printed, and
are never edited from a code PR.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y
---------
Co-authored-by: Claude <noreply@anthropic.com>FlowRunSummary.failed fold, loop iteration through try_catch, $error.iteration / $error.item, failed= on the summary line (#15609)1 parent 236f2df commit d30ccb9
10 files changed
Lines changed: 699 additions & 21 deletions
File tree
- .changeset
- content/docs/automation
- packages/services/service-automation/src
- builtin
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
872 | 872 | | |
873 | 873 | | |
874 | 874 | | |
875 | | - | |
| 875 | + | |
876 | 876 | | |
877 | 877 | | |
878 | 878 | | |
| |||
881 | 881 | | |
882 | 882 | | |
883 | 883 | | |
884 | | - | |
| 884 | + | |
885 | 885 | | |
886 | 886 | | |
887 | 887 | | |
| |||
0 commit comments