Repository navigation
Commit e692515
agents(os-dev): the one foreground wait shape, step ① on the file surface, one skip-changeset criterion, the anchor's only writer — five cards, one file, 403/403 (#16594)
* agents(os-dev): name the one foreground wait shape, and never end the turn for a background notification
Three lines rewritten in place under the 403 ceiling (net 0), all in the
clean-exit section:
- The two shape lines fold into one: the only shape that is both anti-poll and
non-stop is a single foreground blocking wait — run it to completion in the
foreground, or block on the job's pid. The old second line named the harness's
Monitor as the compliant shape; Monitor's own contract is a background event
stream that notifies a RUNNING turn, so a dev who followed that line armed a
Monitor and had nothing left to do in the foreground but end the turn.
- The freed line carries the report-time rule: a gate that outlives the turn is
read from its log (the redirect target) at the moment the report is written,
and an unfinished one is recorded NOT MEASURED with the reason.
- The "completion notice is itself the stop" tail becomes the explicit fact and
prohibition: never end the turn to wait for a Monitor or background
notification — a finished turn is a stopped agent, notifications reach only a
running turn.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
* agents(os-dev): step ① exists only when the diff touches a package, and is a no-op on an empty closure
Two lines rewritten in place, one rider line added, one restatement folded
(net 0 at 403):
- ① is conditioned on the file surface: the dependency-closure build runs only
when the diff touches a package; a diff touching none reports that there is
no ①. On a graph-root package (`packages/spec` has no workspace dependency)
the closure is empty, so ① runs nothing — gates that read `dist/` need the
package itself built first. The old "skipping it produces failures that look
like your change broke an import" tail is the false-red lesson the
build-before-judging pair already states.
- Rider beside the consumer-sweep lines: a retired key's sweep defaults to the
retirement playbook's tree-scoped absence pin instead of rebuilding the
consumer closure for one absence check.
- Folded: "the report does not violate this clause" — the clause's own header
already says a turn ends only at report delivery.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
* agents(os-dev): one skip-changeset criterion — nothing published moves — with the path list as its fast path
Two lines rewritten, one measurement line added, one restatement folded
(net 0 at 403):
- The label has one criterion: nothing published moves, where published is what
each package's `files[]` actually ships. The closed path list is demoted to the
fast path — those paths publish nothing by definition — and everything else is
measured: build, then grep the paths `files[]` lists for the symbol with a
positive control; the symbol at zero hits while the control hits means
unpublished.
- Folded: "waiting for the lock, a gate batch or any slow step blocks in the
foreground within the turn; the lock script waits by itself" — stated by the
foreground-pipeline rule, the lock's single-call budget line and the one
foreground wait shape.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
* agents(os-dev): the authorable-surface anchor is written only by gen:authorable-surface-base, never by a plain build
Two lines rewritten in place (net 0 at 403); the prohibition line between
them is untouched:
- The causal claim narrows to what build-schemas.ts does: the deletion gate's
in-tree anchor is written only in `--update-base` mode
(`gen:authorable-surface-base`), never on a plain build — measured here by a
plain `gen:schema` run that left `git status` empty.
- Consequence stated where the old clause pointed the other way: on a plain
build a move of that file is a finding, not an artifact. The "never revert it,
never hand-edit it, `check:authorable-surface` green is the assertion" line
survives verbatim.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent cfdc9ab commit e692515
1 file changed
Lines changed: 11 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | 105 | | |
107 | 106 | | |
108 | 107 | | |
| |||
126 | 125 | | |
127 | 126 | | |
128 | 127 | | |
129 | | - | |
130 | | - | |
| 128 | + | |
| 129 | + | |
131 | 130 | | |
132 | 131 | | |
133 | 132 | | |
| |||
188 | 187 | | |
189 | 188 | | |
190 | 189 | | |
| 190 | + | |
191 | 191 | | |
192 | 192 | | |
193 | | - | |
| 193 | + | |
194 | 194 | | |
195 | | - | |
| 195 | + | |
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
| |||
292 | 292 | | |
293 | 293 | | |
294 | 294 | | |
295 | | - | |
296 | | - | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
297 | 298 | | |
298 | 299 | | |
299 | 300 | | |
| |||
337 | 338 | | |
338 | 339 | | |
339 | 340 | | |
340 | | - | |
341 | | - | |
| 341 | + | |
| 342 | + | |
342 | 343 | | |
343 | 344 | | |
344 | | - | |
| 345 | + | |
345 | 346 | | |
346 | 347 | | |
347 | | - | |
348 | 348 | | |
349 | 349 | | |
350 | 350 | | |
| |||
0 commit comments