Skip to content

Commit e5dabf7

Browse files
andhusclaude
andauthored
Draft v0.7.2 changelog and release notes (#142)
Patch release covering the build-resume lifecycle fix + SKIPPED status UI polish merged in #141. No breaking changes — pip install -U stardag is sufficient. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 7d8f0f9 commit e5dabf7

2 files changed

Lines changed: 112 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,74 @@ For detailed SDK migration guides, see [RELEASE_NOTES.md](RELEASE_NOTES.md).
66

77
## [Unreleased]
88

9+
## [0.7.2] — 2026-05-08
10+
11+
`sd.build(resume_build_id=...)` now fires a `BUILD_RESUMED` event so
12+
resumed builds flip back to **running (resumed)** in the UI and jump to
13+
the top of the Home list, instead of silently keeping their previous
14+
terminal status. No client-code changes — `pip install -U stardag` is
15+
sufficient. See
16+
[RELEASE_NOTES.md](RELEASE_NOTES.md#v072--build-resume-status-fix-and-skipped-ui-polish)
17+
for details.
18+
([#141](https://github.com/stardag-dev/stardag/pull/141))
19+
20+
### SDK
21+
22+
- **`RegistryABC.build_resume` / `build_resume_aio`** added (default
23+
no-op for older registry backends). `build`, `build_aio`,
24+
`build_sequential`, `build_sequential_aio` call it whenever
25+
`resume_build_id` is set, immediately after adopting the existing
26+
build id. `APIRegistry` swallows the missing-route 404 from older
27+
servers via the existing `_is_route_not_found` pattern (warning
28+
logged, build runs to completion locally).
29+
30+
### Registry API
31+
32+
- **New `EventType.BUILD_RESUMED`** + **`POST
33+
/api/v1/builds/{build_id}/resume`** endpoint, mirroring the existing
34+
`/complete` / `/fail` / `/cancel` shape. Status replay treats
35+
`BUILD_RESUMED` like `BUILD_STARTED` (flips status to `RUNNING`,
36+
clears `completed_at`) and exposes a derived `is_resumed: bool` flag
37+
on `BuildResponse` — true while the latest build-level event is
38+
`BUILD_RESUMED`, cleared by any subsequent terminal or
39+
`BUILD_STARTED` event.
40+
- **New `Build.last_active_at` column** (Alembic migration backfills
41+
from `created_at`). Touched only on build-level lifecycle events
42+
(`BUILD_RESUMED` / `BUILD_COMPLETED` / `BUILD_FAILED` /
43+
`BUILD_CANCELLED` / `BUILD_EXIT_EARLY`) — task events deliberately
44+
skip this write to avoid row-lock contention against the build row
45+
under high task concurrency. `GET /builds` now sorts by
46+
`(last_active_at desc, id desc)` so resumed builds rise to the top
47+
while `Build.id` (UUID7) keeps pagination stable across timestamp
48+
ties.
49+
- **`/tasks/search/values?key=status`** autocomplete returns the full
50+
filterable status set (was hardcoded to `pending`/`running`/
51+
`completed`/`failed`; now includes `suspended`/`skipped`/`cancelled`).
52+
`unregistered` is still excluded — it's an internal phantom-row
53+
marker, not a status users filter on.
54+
55+
### UI
56+
57+
- **"running (resumed)" badge** in `BuildStatusBadge` (Home list and
58+
build-view breadcrumb) when the API reports `is_resumed`.
59+
- **`skipped` task status** added to `TaskStatus` (was previously
60+
unhandled). Renders in **amber** across `StatusBadge`, the DAG node
61+
border (`TaskNode`), and the Task Explorer table — was effectively
62+
near-invisible black-on-dark-blue before. The build-view status
63+
filter dropdown also gained the missing **Skipped** and
64+
**Cancelled** options.
65+
66+
### Compatibility
67+
68+
- **New SDK against an older Registry API** (no `/resume` route):
69+
degrades gracefully via `_is_route_not_found`. The build still runs
70+
to completion locally; the registry-side status flip is the only
71+
thing missing until the API is upgraded.
72+
- **Older SDK against the new API**: unaffected. The new SDK call is
73+
additive, and `last_active_at` is initialised on insert by the column
74+
default plus bumped by the new build-level handlers, so list
75+
ordering is correct without SDK cooperation.
76+
977
## [0.7.1] — 2026-05-05
1078

1179
Modal: `StardagApp.build_spawn` / `build_remote` now accept multiple root

RELEASE_NOTES.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,50 @@ For changes to the Registry API, UI, and other components, see [CHANGELOG.md](CH
66

77
---
88

9+
## v0.7.2 — Build resume status fix and SKIPPED UI polish
10+
11+
Fixes a UX bug where `sd.build(resume_build_id=...)` silently reused the
12+
build id without notifying the registry — so a build that previously
13+
terminated (`failed` / `cancelled` / `completed` / `exit_early`) kept
14+
showing its old terminal status while the SDK actively ran tasks under
15+
it again. The SDK now fires a `BUILD_RESUMED` event immediately after
16+
adopting the resumed id, so the registry flips the build back to
17+
`running` and the UI surfaces a **"running (resumed)"** badge with the
18+
build pinned to the top of the Home list.
19+
20+
**No client-code changes**`pip install -U stardag` is sufficient.
21+
22+
### What changed in the SDK
23+
24+
- `RegistryABC.build_resume` / `build_resume_aio` (default no-op)
25+
added. `build`, `build_aio`, `build_sequential`, and
26+
`build_sequential_aio` invoke it whenever `resume_build_id` is set.
27+
- `APIRegistry.build_resume[_aio]` posts to
28+
`POST /api/v1/builds/{build_id}/resume`. Older registry servers that
29+
don't expose this route return FastAPI's default `Not Found` body;
30+
the SDK swallows that with a warning (same `_is_route_not_found`
31+
pattern used by `task_skip` and `add_dependencies`) so resumed builds
32+
still run to completion against an un-upgraded registry — only the
33+
status-flip in the UI is missing in that combination.
34+
35+
### Compatibility
36+
37+
| SDK / API combination | Behaviour |
38+
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
39+
| New SDK + new API (≥ 0.7.2 on both) | Resumed build flips to `running (resumed)` and rises to top of Home list. |
40+
| New SDK + old API | SDK fires `build_resume[_aio]` → 404 → swallowed with a warning. Build runs to completion; UI shows the old terminal status until the API is upgraded. |
41+
| Old SDK + new API | Unchanged behaviour. The new API additions (`/resume`, `last_active_at`, `is_resumed`) are additive. |
42+
43+
### Drive-by UI polish
44+
45+
The same release also fixes `TaskStatus = "skipped"` rendering across
46+
the UI — previously near-invisible (black-on-dark-blue) on the
47+
build-view task table and missing from the build-view status filter
48+
dropdown. These are UI-only changes and don't affect the SDK; see
49+
[CHANGELOG.md](CHANGELOG.md#072--2026-05-08) for the full list.
50+
51+
---
52+
953
## v0.7.1 — Multi-root builds and `build_kwargs` on `StardagApp`
1054

1155
Two additive changes to `stardag.integration.modal`, plus one renamed

0 commit comments

Comments
 (0)