Commit 8b67272
docs(automation): record why
* docs(automation): record why `failed` has no column on `sys_automation_run`, and name it in `summary_json`
For #15606, decision batch #76 (2026-09-07): option 2 — `failed` stays in the
`summary_json` blob, and the schema says why.
`FlowRunSummary` carries five run-level totals; four of them have a column on
`sys_automation_run` and `failed` does not. The four are columns because ONE
filter expression needs them in ONE row — `selected_count > 0 AND
acted_count = 0`, qualified by `unmeasured_count` — and a WHERE clause cannot
reach into a JSON blob for an operand. `failed` is not one of its operands: it
would be its own predicate, nobody alerts on it today, and a caller that wants
it has already fetched `summary_json`.
The reasoning goes in the comment above `selected_count` — the same paragraph
that explains why the four ARE columns, and therefore the paragraph a reader is
already in when they notice the fifth is not — together with the re-open
condition: the first real need to ALERT on "which runs lost rows this week" is
the card that adds `failed_count`, mirroring `unmeasured_count` (null on rows
written before the column existed, never `0`), a one-column change on an
ADR-0103 engine-owned object and a human-floor one.
`summary_json`'s description now names `failed` as the field to read lost-row
counts from, and `sys-automation-run-failed-count-verdict.test.ts` pins both
halves — no `failed_count` (or any other `fail`-named) column, and a
description that still names `failed` — so the explanation cannot rot into a
claim the schema no longer supports. The terminal-row write in
`ObjectStoreSuspendedRunStore`, where a fifth `record.summary?.failed ?? null`
line would go, points at that verdict so it is not re-derived from the write
site either.
No schema shape moves: no field added, removed or renamed, no type or
`required` flag changed, and every accepted set is byte-for-byte what it was.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zTkyNHJ7TkuN2oXtP5x37
* docs(automation): record the measured evidence that the description ships
The changeset asserted the `summary_json` description reaches the published
bundle; it now states HOW that was measured rather than asserting it, because
that measurement is the whole reason this diff is not `skip-changeset`:
`SysAutomationRun` is re-exported from `src/index.ts`, `package.json` publishes
`files: ["dist"]`, and after a real build the new text is present in both
`dist/index.js` and `dist/index.cjs`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zTkyNHJ7TkuN2oXtP5x37
---------
Co-authored-by: Claude <noreply@anthropic.com>failed has no column on sys_automation_run, and name it in summary_json (#16759)1 parent 8333a6c commit 8b67272
4 files changed
Lines changed: 168 additions & 1 deletion
File tree
- .changeset
- packages/services/service-automation/src
| 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 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
662 | 662 | | |
663 | 663 | | |
664 | 664 | | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
665 | 671 | | |
666 | 672 | | |
667 | 673 | | |
| |||
Lines changed: 79 additions & 0 deletions
| 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 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
Lines changed: 26 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
330 | 330 | | |
331 | 331 | | |
332 | 332 | | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
333 | 358 | | |
334 | 359 | | |
335 | 360 | | |
| |||
361 | 386 | | |
362 | 387 | | |
363 | 388 | | |
364 | | - | |
| 389 | + | |
365 | 390 | | |
366 | 391 | | |
367 | 392 | | |
| |||
0 commit comments