devrites 5.7.1 → 5.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +4 -4
  3. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +7 -9
  4. package/pack/.claude/skills/devrites-lib/reference/standards/loop-operations.md +3 -3
  5. package/pack/.claude/skills/rite-autocomplete/SKILL.md +1 -1
  6. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +8 -9
  7. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +2 -3
  8. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +7 -9
  9. package/pack/generated/claude/skills/devrites-lib/reference/standards/loop-operations.md +3 -3
  10. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +1 -1
  11. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +8 -9
  12. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +2 -3
  13. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +7 -9
  14. package/pack/generated/codex/skills/devrites-lib/reference/standards/loop-operations.md +3 -3
  15. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +1 -1
  16. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +8 -9
  17. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +2 -3
  18. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +7 -9
  19. package/pack/generated/omp/skills/devrites-lib/reference/standards/loop-operations.md +3 -3
  20. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +1 -1
  21. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +8 -9
  22. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +2 -3
  23. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +7 -9
  24. package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +3 -3
  25. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +1 -1
  26. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +8 -9
  27. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +2 -3
  28. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [5.7.2](https://github.com/ViktorsBaikers/DevRites/compare/v5.7.1...v5.7.2) (2026-09-14)
6
+
7
+ ### Fixed
8
+
9
+ * **skills:** drop absolute AFK sentinel expiry so unattended runs finish ([#72](https://github.com/ViktorsBaikers/DevRites/issues/72)) ([3f880cb](https://github.com/ViktorsBaikers/DevRites/commit/3f880cb0c0e3072a1512c87229c9c1c38ef12417))
10
+
5
11
  ## [5.7.1](https://github.com/ViktorsBaikers/DevRites/compare/v5.7.0...v5.7.1) (2026-09-13)
6
12
 
7
13
  ### Fixed
package/README.md CHANGED
@@ -33,7 +33,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
33
33
  Unattended runs may create local WIP checkpoint commits along the way, but they
34
34
  remain local unless Ship's disclosed plan includes an approved remote action.
35
35
 
36
- **Status:** [`v5.7.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.7.1): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
36
+ **Status:** [`v5.7.2`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.7.2): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
37
37
 
38
38
  This is the latest published release; `main` may contain unreleased work.
39
39
 
@@ -239,7 +239,6 @@ max_slices: 10
239
239
  max_agents: 32
240
240
  max_minutes: 120
241
241
  max_review_queue: 8
242
- expires_at: "<ISO-8601 UTC timestamp>"
243
242
  allow_gates: [advisory]
244
243
  ```
245
244
 
@@ -247,8 +246,9 @@ The workflow treats this file as configuration and never rewrites it.
247
246
  `max_slices` seeds the remaining budget in the active feature's `state.md`; the
248
247
  root charges that state exactly once after each green built slice and stops
249
248
  before another dispatch at zero. Unattended slice work additionally requires a
250
- valid `max_agents`, `max_minutes`, `max_review_queue`, and `expires_at`;
251
- sentinels that miss or malform these fail closed. Delete `.devrites/AFK` to
249
+ valid `max_agents`, `max_minutes`, and `max_review_queue`;
250
+ sentinels that miss or malform these fail closed. Leftover `expires_at` is
251
+ ignored and never rewritten. Delete `.devrites/AFK` to
252
252
  return to HITL.
253
253
 
254
254
  AFK still pauses for product, scope, or policy choices, irreversible risk,
@@ -54,7 +54,6 @@ max_slices: 10 # whole-workspace writer budget; seeds stat
54
54
  max_agents: 32 # native agent dispatches in one host activation
55
55
  max_minutes: 120 # wall-clock minutes in one host activation
56
56
  max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
57
- expires_at: "<ISO-8601 UTC timestamp>" # absolute unattended-authority expiry
58
57
  # max_tokens: 200000 # optional stricter host-observed token cap
59
58
  # max_cost_usd: 10 # optional stricter host-observed cost cap
60
59
  notify: "ntfy.sh/my-topic" # shell command; examples: rite-build/reference/afk-discipline.md
@@ -108,7 +107,7 @@ candidate manifest to cover the whole recorded chain — run
108
107
 
109
108
  - Only continuations recorded in the parent's `decisions.md` sequence
110
109
  ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
111
- qualify; no recorded next entry, or the cap/expiry/review-queue bound reached, stops
110
+ qualify; no recorded next entry, or the cap/review-queue bound reached, stops
112
111
  with the winning reason.
113
112
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
114
113
  with `Next step: /rite-ship` preserved. Per-slice `WIP(<slug>)` checkpoints still
@@ -128,27 +127,26 @@ an explicit `/rite-build --parallel N` cap wins for that invocation.
128
127
  ## Unattended resource envelope
129
128
 
130
129
  AFK writer admission needs a bounded input queue, effective slice cap, and valid
131
- `max_agents`, `max_minutes`, `max_review_queue`, and `expires_at`. Existing sentinels
130
+ `max_agents`, `max_minutes`, and `max_review_queue`. Existing sentinels
132
131
  that declare writer admission but miss/malform these fail closed; cold resume keeps the
133
- state-owned slice counter.
132
+ state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
134
133
  Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
135
134
 
136
135
  `max_agents` counts every leaf in the native activation, including failures and
137
136
  parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
138
137
  counts open validating questions plus unresolved admitted Critical/Important findings.
139
- Above it stop; at it run only reconciliation that reduces the queue. `expires_at` is
140
- absolute ISO-8601 authority. Optional `max_tokens`/`max_cost_usd` lower enforceable
141
- native caps; if declared but unobservable, stop.
138
+ Above it stop; at it run only reconciliation that reduces the queue. Optional
139
+ `max_tokens`/`max_cost_usd` lower enforceable native caps; if declared but unobservable, stop.
142
140
 
143
141
  Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
144
142
  run cheap readiness, reject overlap, count queue, and confirm agent/time/token/cost
145
143
  headroom; re-check after every result. Never start one call that can exceed remaining
146
144
  headroom. Agent/time/token/cost counters are per native activation and start fresh only
147
- for a genuinely new activation. Slices, recovery attempts, absolute expiry, and current
145
+ for a genuinely new activation. Slices, recovery attempts, and current
148
146
  review queue remain durable/recomputed across wakes. Persist each activation stop and
149
147
  checkpoint before notification.
150
148
 
151
- New sentinels default `expires_at` to arming + 4h with no notification/token/cost cap.
149
+ New sentinels write no `expires_at` and no notification/token/cost cap.
152
150
  Post-Vet pending count may lower slices. Existing files
153
151
  never receive missing defaults implicitly.
154
152
 
@@ -38,13 +38,13 @@ Every unattended loop must name:
38
38
  4. **Evaluator:** the skill's existing readiness, proof, review, or watcher verdict.
39
39
  5. **Budget:** every applicable `.devrites/AFK` resource cap.
40
40
  6. **Checkpoint:** durable workspace/evidence update before the turn ends.
41
- 7. **Stop:** success, human/safety/access gate, expiry, budget exhaustion, unchanged
41
+ 7. **Stop:** success, human/safety/access gate, budget exhaustion, unchanged
42
42
  no-progress fingerprint, host failure, or terminal external state.
43
43
  8. **Notification:** optional native-host notification after state is durable; never a
44
44
  substitute for recording the stop.
45
45
 
46
46
  A read-only scheduled/event loop that has no active AFK workspace must still configure
47
- native maximum activations/iterations, wall time, and absolute expiry. Add token/cost
47
+ native maximum activations/iterations and wall time. Add token/cost
48
48
  caps when the host exposes them. One observation cycle per wake is the work unit; the
49
49
  skill never starts its own timer or background poller.
50
50
 
@@ -76,7 +76,7 @@ armed AFK workspace whose exact scope, gates, and budgets permit it.
76
76
  is `gap`/`cannot_verify`, never success.
77
77
  - Do not retry unchanged work merely because a timer fired. Apply the exact
78
78
  causal-fingerprint recovery cap ([`afk-hitl.md`](afk-hitl.md)).
79
- - A cold resume continues durable slice/recovery state and absolute expiry. Fresh
79
+ - A cold resume continues durable slice/recovery state. Fresh
80
80
  native activation counters follow `afk-hitl.md`; no durable bound is reinitialized.
81
81
  - Native notifications fire only after evidence and stop state are written.
82
82
 
@@ -48,7 +48,7 @@ executable controller/harness/bundle bytes or a missing writer, read
48
48
  - Every exact causal fingerprint gets at most three no-progress corrections.
49
49
  Closing one is progress; a distinct Critical/Important invariant has its own
50
50
  budget. Lower severity cannot prolong recovery.
51
- - Enforce `--max-slices`, the AFK sentinel, expiry, review queue, and native
51
+ - Enforce `--max-slices`, the AFK sentinel, review queue, and native
52
52
  agent/token/cost/time limits before every phase or dispatch. Count failed,
53
53
  malformed, and unavailable leaf calls. At the review cap, permit only work
54
54
  that reduces the queue.
@@ -18,7 +18,6 @@ max_slices: 10
18
18
  max_agents: 32
19
19
  max_minutes: 120
20
20
  max_review_queue: 8
21
- expires_at: "<now + 4 hours>"
22
21
  # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
23
22
  # max_workspaces: 5 # sequence budget when chaining
24
23
  # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
@@ -28,11 +27,11 @@ expires_at: "<now + 4 hours>"
28
27
  ```
29
28
 
30
29
  Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
31
- its gate ceiling exceeds advisory, required envelope is malformed/expired, or
30
+ its gate ceiling exceeds advisory, required envelope is malformed, or
32
31
  `max_slices` conflicts with the invocation. If absent, write it once after
33
- clarity, replacing the safe slice default only for explicit `--max-slices N`
34
- and resolving one absolute UTC expiry. It is read-only: never rewrite it after
35
- Vet or reset it on resume.
32
+ clarity, replacing the safe slice default only for explicit `--max-slices N`.
33
+ It is read-only: never rewrite it after Vet or reset it on resume. Leftover
34
+ `expires_at` is ignored and never rewritten.
36
35
 
37
36
  ### Derive the mutable post-vet budget
38
37
 
@@ -45,12 +44,12 @@ or reinitialize it. AFK configuration itself stays unchanged.
45
44
 
46
45
  Before every phase, review fan-out, recovery, or writer dispatch, apply
47
46
  [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#unattended-resource-envelope): cheapest current-state/readiness
48
- check first; reject overlap; count unresolved review; check expiry and native
47
+ check first; reject overlap; count unresolved review; check native
49
48
  agent/token/cost/time headroom. Count every leaf result. At the review cap, only
50
49
  reconciliation that reduces the queue may run. Any reached or unobservable
51
50
  bound stops before more work and persists the winning reason. A new activation
52
- gets fresh activation-local counters but retains durable slice/recovery state,
53
- expiry, and recomputed queue.
51
+ gets fresh activation-local counters but retains durable slice/recovery state
52
+ and recomputed queue.
54
53
 
55
54
  `allow_gates: [advisory]` means validating gates pause now rather than becoming
56
55
  Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
@@ -100,7 +99,7 @@ fields are missing is re-seeded from its `brief.md` parent/position and the
100
99
  parent's counter (same values, never a second charge); a child with no recorded
101
100
  parent/position is not a sequence member and the chain stops.
102
101
 
103
- Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
102
+ Stop instead when: no recorded next entry; the cap or review-queue bound is
104
103
  reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
105
104
  `NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
106
105
  the single release command (`/rite-autocomplete <release milestone> --ship`, or
@@ -71,11 +71,10 @@ exhausted.
71
71
  when slices remain; malformed state also stops. Report whether the winning
72
72
  bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
73
  Zero with no pending slices is normal completion and proceeds to Prove.
74
- - **Resource envelope:** missing/malformed/expired AFK, overlapping run,
74
+ - **Resource envelope:** missing/malformed AFK, overlapping run,
75
75
  exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
76
  above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
- bound and observed usage; a new activation does not reset durable budgets or
78
- expiry.
77
+ bound and observed usage; a new activation does not reset durable budgets.
79
78
  - **Confidence:** intent still cannot become testable acceptance after interview.
80
79
  - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
81
80
 
@@ -54,7 +54,6 @@ max_slices: 10 # whole-workspace writer budget; seeds stat
54
54
  max_agents: 32 # native agent dispatches in one host activation
55
55
  max_minutes: 120 # wall-clock minutes in one host activation
56
56
  max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
57
- expires_at: "<ISO-8601 UTC timestamp>" # absolute unattended-authority expiry
58
57
  # max_tokens: 200000 # optional stricter host-observed token cap
59
58
  # max_cost_usd: 10 # optional stricter host-observed cost cap
60
59
  notify: "ntfy.sh/my-topic" # shell command; examples: rite-build/reference/afk-discipline.md
@@ -108,7 +107,7 @@ candidate manifest to cover the whole recorded chain — run
108
107
 
109
108
  - Only continuations recorded in the parent's `decisions.md` sequence
110
109
  ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
111
- qualify; no recorded next entry, or the cap/expiry/review-queue bound reached, stops
110
+ qualify; no recorded next entry, or the cap/review-queue bound reached, stops
112
111
  with the winning reason.
113
112
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
114
113
  with `Next step: /rite-ship` preserved. Per-slice `WIP(<slug>)` checkpoints still
@@ -128,27 +127,26 @@ an explicit `/rite-build --parallel N` cap wins for that invocation.
128
127
  ## Unattended resource envelope
129
128
 
130
129
  AFK writer admission needs a bounded input queue, effective slice cap, and valid
131
- `max_agents`, `max_minutes`, `max_review_queue`, and `expires_at`. Existing sentinels
130
+ `max_agents`, `max_minutes`, and `max_review_queue`. Existing sentinels
132
131
  that declare writer admission but miss/malform these fail closed; cold resume keeps the
133
- state-owned slice counter.
132
+ state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
134
133
  Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
135
134
 
136
135
  `max_agents` counts every leaf in the native activation, including failures and
137
136
  parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
138
137
  counts open validating questions plus unresolved admitted Critical/Important findings.
139
- Above it stop; at it run only reconciliation that reduces the queue. `expires_at` is
140
- absolute ISO-8601 authority. Optional `max_tokens`/`max_cost_usd` lower enforceable
141
- native caps; if declared but unobservable, stop.
138
+ Above it stop; at it run only reconciliation that reduces the queue. Optional
139
+ `max_tokens`/`max_cost_usd` lower enforceable native caps; if declared but unobservable, stop.
142
140
 
143
141
  Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
144
142
  run cheap readiness, reject overlap, count queue, and confirm agent/time/token/cost
145
143
  headroom; re-check after every result. Never start one call that can exceed remaining
146
144
  headroom. Agent/time/token/cost counters are per native activation and start fresh only
147
- for a genuinely new activation. Slices, recovery attempts, absolute expiry, and current
145
+ for a genuinely new activation. Slices, recovery attempts, and current
148
146
  review queue remain durable/recomputed across wakes. Persist each activation stop and
149
147
  checkpoint before notification.
150
148
 
151
- New sentinels default `expires_at` to arming + 4h with no notification/token/cost cap.
149
+ New sentinels write no `expires_at` and no notification/token/cost cap.
152
150
  Post-Vet pending count may lower slices. Existing files
153
151
  never receive missing defaults implicitly.
154
152
 
@@ -38,13 +38,13 @@ Every unattended loop must name:
38
38
  4. **Evaluator:** the skill's existing readiness, proof, review, or watcher verdict.
39
39
  5. **Budget:** every applicable `.devrites/AFK` resource cap.
40
40
  6. **Checkpoint:** durable workspace/evidence update before the turn ends.
41
- 7. **Stop:** success, human/safety/access gate, expiry, budget exhaustion, unchanged
41
+ 7. **Stop:** success, human/safety/access gate, budget exhaustion, unchanged
42
42
  no-progress fingerprint, host failure, or terminal external state.
43
43
  8. **Notification:** optional native-host notification after state is durable; never a
44
44
  substitute for recording the stop.
45
45
 
46
46
  A read-only scheduled/event loop that has no active AFK workspace must still configure
47
- native maximum activations/iterations, wall time, and absolute expiry. Add token/cost
47
+ native maximum activations/iterations and wall time. Add token/cost
48
48
  caps when the host exposes them. One observation cycle per wake is the work unit; the
49
49
  skill never starts its own timer or background poller.
50
50
 
@@ -76,7 +76,7 @@ armed AFK workspace whose exact scope, gates, and budgets permit it.
76
76
  is `gap`/`cannot_verify`, never success.
77
77
  - Do not retry unchanged work merely because a timer fired. Apply the exact
78
78
  causal-fingerprint recovery cap ([`afk-hitl.md`](afk-hitl.md)).
79
- - A cold resume continues durable slice/recovery state and absolute expiry. Fresh
79
+ - A cold resume continues durable slice/recovery state. Fresh
80
80
  native activation counters follow `afk-hitl.md`; no durable bound is reinitialized.
81
81
  - Native notifications fire only after evidence and stop state are written.
82
82
 
@@ -48,7 +48,7 @@ executable controller/harness/bundle bytes or a missing writer, read
48
48
  - Every exact causal fingerprint gets at most three no-progress corrections.
49
49
  Closing one is progress; a distinct Critical/Important invariant has its own
50
50
  budget. Lower severity cannot prolong recovery.
51
- - Enforce `--max-slices`, the AFK sentinel, expiry, review queue, and native
51
+ - Enforce `--max-slices`, the AFK sentinel, review queue, and native
52
52
  agent/token/cost/time limits before every phase or dispatch. Count failed,
53
53
  malformed, and unavailable leaf calls. At the review cap, permit only work
54
54
  that reduces the queue.
@@ -18,7 +18,6 @@ max_slices: 10
18
18
  max_agents: 32
19
19
  max_minutes: 120
20
20
  max_review_queue: 8
21
- expires_at: "<now + 4 hours>"
22
21
  # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
23
22
  # max_workspaces: 5 # sequence budget when chaining
24
23
  # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
@@ -28,11 +27,11 @@ expires_at: "<now + 4 hours>"
28
27
  ```
29
28
 
30
29
  Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
31
- its gate ceiling exceeds advisory, required envelope is malformed/expired, or
30
+ its gate ceiling exceeds advisory, required envelope is malformed, or
32
31
  `max_slices` conflicts with the invocation. If absent, write it once after
33
- clarity, replacing the safe slice default only for explicit `--max-slices N`
34
- and resolving one absolute UTC expiry. It is read-only: never rewrite it after
35
- Vet or reset it on resume.
32
+ clarity, replacing the safe slice default only for explicit `--max-slices N`.
33
+ It is read-only: never rewrite it after Vet or reset it on resume. Leftover
34
+ `expires_at` is ignored and never rewritten.
36
35
 
37
36
  ### Derive the mutable post-vet budget
38
37
 
@@ -45,12 +44,12 @@ or reinitialize it. AFK configuration itself stays unchanged.
45
44
 
46
45
  Before every phase, review fan-out, recovery, or writer dispatch, apply
47
46
  [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#unattended-resource-envelope): cheapest current-state/readiness
48
- check first; reject overlap; count unresolved review; check expiry and native
47
+ check first; reject overlap; count unresolved review; check native
49
48
  agent/token/cost/time headroom. Count every leaf result. At the review cap, only
50
49
  reconciliation that reduces the queue may run. Any reached or unobservable
51
50
  bound stops before more work and persists the winning reason. A new activation
52
- gets fresh activation-local counters but retains durable slice/recovery state,
53
- expiry, and recomputed queue.
51
+ gets fresh activation-local counters but retains durable slice/recovery state
52
+ and recomputed queue.
54
53
 
55
54
  `allow_gates: [advisory]` means validating gates pause now rather than becoming
56
55
  Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
@@ -100,7 +99,7 @@ fields are missing is re-seeded from its `brief.md` parent/position and the
100
99
  parent's counter (same values, never a second charge); a child with no recorded
101
100
  parent/position is not a sequence member and the chain stops.
102
101
 
103
- Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
102
+ Stop instead when: no recorded next entry; the cap or review-queue bound is
104
103
  reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
105
104
  `NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
106
105
  the single release command (`/rite-autocomplete <release milestone> --ship`, or
@@ -71,11 +71,10 @@ exhausted.
71
71
  when slices remain; malformed state also stops. Report whether the winning
72
72
  bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
73
  Zero with no pending slices is normal completion and proceeds to Prove.
74
- - **Resource envelope:** missing/malformed/expired AFK, overlapping run,
74
+ - **Resource envelope:** missing/malformed AFK, overlapping run,
75
75
  exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
76
  above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
- bound and observed usage; a new activation does not reset durable budgets or
78
- expiry.
77
+ bound and observed usage; a new activation does not reset durable budgets.
79
78
  - **Confidence:** intent still cannot become testable acceptance after interview.
80
79
  - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
81
80
 
@@ -54,7 +54,6 @@ max_slices: 10 # whole-workspace writer budget; seeds stat
54
54
  max_agents: 32 # native agent dispatches in one host activation
55
55
  max_minutes: 120 # wall-clock minutes in one host activation
56
56
  max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
57
- expires_at: "<ISO-8601 UTC timestamp>" # absolute unattended-authority expiry
58
57
  # max_tokens: 200000 # optional stricter host-observed token cap
59
58
  # max_cost_usd: 10 # optional stricter host-observed cost cap
60
59
  notify: "ntfy.sh/my-topic" # shell command; examples: rite-build/reference/afk-discipline.md
@@ -108,7 +107,7 @@ candidate manifest to cover the whole recorded chain — run
108
107
 
109
108
  - Only continuations recorded in the parent's `decisions.md` sequence
110
109
  ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
111
- qualify; no recorded next entry, or the cap/expiry/review-queue bound reached, stops
110
+ qualify; no recorded next entry, or the cap/review-queue bound reached, stops
112
111
  with the winning reason.
113
112
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
114
113
  with `Next step: $rite-ship` preserved. Per-slice `WIP(<slug>)` checkpoints still
@@ -128,27 +127,26 @@ an explicit `$rite-build --parallel N` cap wins for that invocation.
128
127
  ## Unattended resource envelope
129
128
 
130
129
  AFK writer admission needs a bounded input queue, effective slice cap, and valid
131
- `max_agents`, `max_minutes`, `max_review_queue`, and `expires_at`. Existing sentinels
130
+ `max_agents`, `max_minutes`, and `max_review_queue`. Existing sentinels
132
131
  that declare writer admission but miss/malform these fail closed; cold resume keeps the
133
- state-owned slice counter.
132
+ state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
134
133
  Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
135
134
 
136
135
  `max_agents` counts every leaf in the native activation, including failures and
137
136
  parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
138
137
  counts open validating questions plus unresolved admitted Critical/Important findings.
139
- Above it stop; at it run only reconciliation that reduces the queue. `expires_at` is
140
- absolute ISO-8601 authority. Optional `max_tokens`/`max_cost_usd` lower enforceable
141
- native caps; if declared but unobservable, stop.
138
+ Above it stop; at it run only reconciliation that reduces the queue. Optional
139
+ `max_tokens`/`max_cost_usd` lower enforceable native caps; if declared but unobservable, stop.
142
140
 
143
141
  Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
144
142
  run cheap readiness, reject overlap, count queue, and confirm agent/time/token/cost
145
143
  headroom; re-check after every result. Never start one call that can exceed remaining
146
144
  headroom. Agent/time/token/cost counters are per native activation and start fresh only
147
- for a genuinely new activation. Slices, recovery attempts, absolute expiry, and current
145
+ for a genuinely new activation. Slices, recovery attempts, and current
148
146
  review queue remain durable/recomputed across wakes. Persist each activation stop and
149
147
  checkpoint before notification.
150
148
 
151
- New sentinels default `expires_at` to arming + 4h with no notification/token/cost cap.
149
+ New sentinels write no `expires_at` and no notification/token/cost cap.
152
150
  Post-Vet pending count may lower slices. Existing files
153
151
  never receive missing defaults implicitly.
154
152
 
@@ -38,13 +38,13 @@ Every unattended loop must name:
38
38
  4. **Evaluator:** the skill's existing readiness, proof, review, or watcher verdict.
39
39
  5. **Budget:** every applicable `.devrites/AFK` resource cap.
40
40
  6. **Checkpoint:** durable workspace/evidence update before the turn ends.
41
- 7. **Stop:** success, human/safety/access gate, expiry, budget exhaustion, unchanged
41
+ 7. **Stop:** success, human/safety/access gate, budget exhaustion, unchanged
42
42
  no-progress fingerprint, host failure, or terminal external state.
43
43
  8. **Notification:** optional native-host notification after state is durable; never a
44
44
  substitute for recording the stop.
45
45
 
46
46
  A read-only scheduled/event loop that has no active AFK workspace must still configure
47
- native maximum activations/iterations, wall time, and absolute expiry. Add token/cost
47
+ native maximum activations/iterations and wall time. Add token/cost
48
48
  caps when the host exposes them. One observation cycle per wake is the work unit; the
49
49
  skill never starts its own timer or background poller.
50
50
 
@@ -76,7 +76,7 @@ armed AFK workspace whose exact scope, gates, and budgets permit it.
76
76
  is `gap`/`cannot_verify`, never success.
77
77
  - Do not retry unchanged work merely because a timer fired. Apply the exact
78
78
  causal-fingerprint recovery cap ([`afk-hitl.md`](afk-hitl.md)).
79
- - A cold resume continues durable slice/recovery state and absolute expiry. Fresh
79
+ - A cold resume continues durable slice/recovery state. Fresh
80
80
  native activation counters follow `afk-hitl.md`; no durable bound is reinitialized.
81
81
  - Native notifications fire only after evidence and stop state are written.
82
82
 
@@ -48,7 +48,7 @@ executable controller/harness/bundle bytes or a missing writer, read
48
48
  - Every exact causal fingerprint gets at most three no-progress corrections.
49
49
  Closing one is progress; a distinct Critical/Important invariant has its own
50
50
  budget. Lower severity cannot prolong recovery.
51
- - Enforce `--max-slices`, the AFK sentinel, expiry, review queue, and native
51
+ - Enforce `--max-slices`, the AFK sentinel, review queue, and native
52
52
  agent/token/cost/time limits before every phase or dispatch. Count failed,
53
53
  malformed, and unavailable leaf calls. At the review cap, permit only work
54
54
  that reduces the queue.
@@ -18,7 +18,6 @@ max_slices: 10
18
18
  max_agents: 32
19
19
  max_minutes: 120
20
20
  max_review_queue: 8
21
- expires_at: "<now + 4 hours>"
22
21
  # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
23
22
  # max_workspaces: 5 # sequence budget when chaining
24
23
  # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
@@ -28,11 +27,11 @@ expires_at: "<now + 4 hours>"
28
27
  ```
29
28
 
30
29
  Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
31
- its gate ceiling exceeds advisory, required envelope is malformed/expired, or
30
+ its gate ceiling exceeds advisory, required envelope is malformed, or
32
31
  `max_slices` conflicts with the invocation. If absent, write it once after
33
- clarity, replacing the safe slice default only for explicit `--max-slices N`
34
- and resolving one absolute UTC expiry. It is read-only: never rewrite it after
35
- Vet or reset it on resume.
32
+ clarity, replacing the safe slice default only for explicit `--max-slices N`.
33
+ It is read-only: never rewrite it after Vet or reset it on resume. Leftover
34
+ `expires_at` is ignored and never rewritten.
36
35
 
37
36
  ### Derive the mutable post-vet budget
38
37
 
@@ -45,12 +44,12 @@ or reinitialize it. AFK configuration itself stays unchanged.
45
44
 
46
45
  Before every phase, review fan-out, recovery, or writer dispatch, apply
47
46
  [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#unattended-resource-envelope): cheapest current-state/readiness
48
- check first; reject overlap; count unresolved review; check expiry and native
47
+ check first; reject overlap; count unresolved review; check native
49
48
  agent/token/cost/time headroom. Count every leaf result. At the review cap, only
50
49
  reconciliation that reduces the queue may run. Any reached or unobservable
51
50
  bound stops before more work and persists the winning reason. A new activation
52
- gets fresh activation-local counters but retains durable slice/recovery state,
53
- expiry, and recomputed queue.
51
+ gets fresh activation-local counters but retains durable slice/recovery state
52
+ and recomputed queue.
54
53
 
55
54
  `allow_gates: [advisory]` means validating gates pause now rather than becoming
56
55
  Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
@@ -100,7 +99,7 @@ fields are missing is re-seeded from its `brief.md` parent/position and the
100
99
  parent's counter (same values, never a second charge); a child with no recorded
101
100
  parent/position is not a sequence member and the chain stops.
102
101
 
103
- Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
102
+ Stop instead when: no recorded next entry; the cap or review-queue bound is
104
103
  reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
105
104
  `NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
106
105
  the single release command (`$rite-autocomplete <release milestone> --ship`, or
@@ -71,11 +71,10 @@ exhausted.
71
71
  when slices remain; malformed state also stops. Report whether the winning
72
72
  bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
73
  Zero with no pending slices is normal completion and proceeds to Prove.
74
- - **Resource envelope:** missing/malformed/expired AFK, overlapping run,
74
+ - **Resource envelope:** missing/malformed AFK, overlapping run,
75
75
  exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
76
  above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
- bound and observed usage; a new activation does not reset durable budgets or
78
- expiry.
77
+ bound and observed usage; a new activation does not reset durable budgets.
79
78
  - **Confidence:** intent still cannot become testable acceptance after interview.
80
79
  - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
81
80
 
@@ -54,7 +54,6 @@ max_slices: 10 # whole-workspace writer budget; seeds stat
54
54
  max_agents: 32 # native agent dispatches in one host activation
55
55
  max_minutes: 120 # wall-clock minutes in one host activation
56
56
  max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
57
- expires_at: "<ISO-8601 UTC timestamp>" # absolute unattended-authority expiry
58
57
  # max_tokens: 200000 # optional stricter host-observed token cap
59
58
  # max_cost_usd: 10 # optional stricter host-observed cost cap
60
59
  notify: "ntfy.sh/my-topic" # shell command; examples: rite-build/reference/afk-discipline.md
@@ -108,7 +107,7 @@ candidate manifest to cover the whole recorded chain — run
108
107
 
109
108
  - Only continuations recorded in the parent's `decisions.md` sequence
110
109
  ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
111
- qualify; no recorded next entry, or the cap/expiry/review-queue bound reached, stops
110
+ qualify; no recorded next entry, or the cap/review-queue bound reached, stops
112
111
  with the winning reason.
113
112
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
114
113
  with `Next step: /rite-ship` preserved. Per-slice `WIP(<slug>)` checkpoints still
@@ -128,27 +127,26 @@ an explicit `/rite-build --parallel N` cap wins for that invocation.
128
127
  ## Unattended resource envelope
129
128
 
130
129
  AFK writer admission needs a bounded input queue, effective slice cap, and valid
131
- `max_agents`, `max_minutes`, `max_review_queue`, and `expires_at`. Existing sentinels
130
+ `max_agents`, `max_minutes`, and `max_review_queue`. Existing sentinels
132
131
  that declare writer admission but miss/malform these fail closed; cold resume keeps the
133
- state-owned slice counter.
132
+ state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
134
133
  Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
135
134
 
136
135
  `max_agents` counts every leaf in the native activation, including failures and
137
136
  parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
138
137
  counts open validating questions plus unresolved admitted Critical/Important findings.
139
- Above it stop; at it run only reconciliation that reduces the queue. `expires_at` is
140
- absolute ISO-8601 authority. Optional `max_tokens`/`max_cost_usd` lower enforceable
141
- native caps; if declared but unobservable, stop.
138
+ Above it stop; at it run only reconciliation that reduces the queue. Optional
139
+ `max_tokens`/`max_cost_usd` lower enforceable native caps; if declared but unobservable, stop.
142
140
 
143
141
  Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
144
142
  run cheap readiness, reject overlap, count queue, and confirm agent/time/token/cost
145
143
  headroom; re-check after every result. Never start one call that can exceed remaining
146
144
  headroom. Agent/time/token/cost counters are per native activation and start fresh only
147
- for a genuinely new activation. Slices, recovery attempts, absolute expiry, and current
145
+ for a genuinely new activation. Slices, recovery attempts, and current
148
146
  review queue remain durable/recomputed across wakes. Persist each activation stop and
149
147
  checkpoint before notification.
150
148
 
151
- New sentinels default `expires_at` to arming + 4h with no notification/token/cost cap.
149
+ New sentinels write no `expires_at` and no notification/token/cost cap.
152
150
  Post-Vet pending count may lower slices. Existing files
153
151
  never receive missing defaults implicitly.
154
152
 
@@ -38,13 +38,13 @@ Every unattended loop must name:
38
38
  4. **Evaluator:** the skill's existing readiness, proof, review, or watcher verdict.
39
39
  5. **Budget:** every applicable `.devrites/AFK` resource cap.
40
40
  6. **Checkpoint:** durable workspace/evidence update before the turn ends.
41
- 7. **Stop:** success, human/safety/access gate, expiry, budget exhaustion, unchanged
41
+ 7. **Stop:** success, human/safety/access gate, budget exhaustion, unchanged
42
42
  no-progress fingerprint, host failure, or terminal external state.
43
43
  8. **Notification:** optional native-host notification after state is durable; never a
44
44
  substitute for recording the stop.
45
45
 
46
46
  A read-only scheduled/event loop that has no active AFK workspace must still configure
47
- native maximum activations/iterations, wall time, and absolute expiry. Add token/cost
47
+ native maximum activations/iterations and wall time. Add token/cost
48
48
  caps when the host exposes them. One observation cycle per wake is the work unit; the
49
49
  skill never starts its own timer or background poller.
50
50
 
@@ -76,7 +76,7 @@ armed AFK workspace whose exact scope, gates, and budgets permit it.
76
76
  is `gap`/`cannot_verify`, never success.
77
77
  - Do not retry unchanged work merely because a timer fired. Apply the exact
78
78
  causal-fingerprint recovery cap ([`afk-hitl.md`](afk-hitl.md)).
79
- - A cold resume continues durable slice/recovery state and absolute expiry. Fresh
79
+ - A cold resume continues durable slice/recovery state. Fresh
80
80
  native activation counters follow `afk-hitl.md`; no durable bound is reinitialized.
81
81
  - Native notifications fire only after evidence and stop state are written.
82
82
 
@@ -48,7 +48,7 @@ executable controller/harness/bundle bytes or a missing writer, read
48
48
  - Every exact causal fingerprint gets at most three no-progress corrections.
49
49
  Closing one is progress; a distinct Critical/Important invariant has its own
50
50
  budget. Lower severity cannot prolong recovery.
51
- - Enforce `--max-slices`, the AFK sentinel, expiry, review queue, and native
51
+ - Enforce `--max-slices`, the AFK sentinel, review queue, and native
52
52
  agent/token/cost/time limits before every phase or dispatch. Count failed,
53
53
  malformed, and unavailable leaf calls. At the review cap, permit only work
54
54
  that reduces the queue.
@@ -18,7 +18,6 @@ max_slices: 10
18
18
  max_agents: 32
19
19
  max_minutes: 120
20
20
  max_review_queue: 8
21
- expires_at: "<now + 4 hours>"
22
21
  # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
23
22
  # max_workspaces: 5 # sequence budget when chaining
24
23
  # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
@@ -28,11 +27,11 @@ expires_at: "<now + 4 hours>"
28
27
  ```
29
28
 
30
29
  Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
31
- its gate ceiling exceeds advisory, required envelope is malformed/expired, or
30
+ its gate ceiling exceeds advisory, required envelope is malformed, or
32
31
  `max_slices` conflicts with the invocation. If absent, write it once after
33
- clarity, replacing the safe slice default only for explicit `--max-slices N`
34
- and resolving one absolute UTC expiry. It is read-only: never rewrite it after
35
- Vet or reset it on resume.
32
+ clarity, replacing the safe slice default only for explicit `--max-slices N`.
33
+ It is read-only: never rewrite it after Vet or reset it on resume. Leftover
34
+ `expires_at` is ignored and never rewritten.
36
35
 
37
36
  ### Derive the mutable post-vet budget
38
37
 
@@ -45,12 +44,12 @@ or reinitialize it. AFK configuration itself stays unchanged.
45
44
 
46
45
  Before every phase, review fan-out, recovery, or writer dispatch, apply
47
46
  [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#unattended-resource-envelope): cheapest current-state/readiness
48
- check first; reject overlap; count unresolved review; check expiry and native
47
+ check first; reject overlap; count unresolved review; check native
49
48
  agent/token/cost/time headroom. Count every leaf result. At the review cap, only
50
49
  reconciliation that reduces the queue may run. Any reached or unobservable
51
50
  bound stops before more work and persists the winning reason. A new activation
52
- gets fresh activation-local counters but retains durable slice/recovery state,
53
- expiry, and recomputed queue.
51
+ gets fresh activation-local counters but retains durable slice/recovery state
52
+ and recomputed queue.
54
53
 
55
54
  `allow_gates: [advisory]` means validating gates pause now rather than becoming
56
55
  Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
@@ -100,7 +99,7 @@ fields are missing is re-seeded from its `brief.md` parent/position and the
100
99
  parent's counter (same values, never a second charge); a child with no recorded
101
100
  parent/position is not a sequence member and the chain stops.
102
101
 
103
- Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
102
+ Stop instead when: no recorded next entry; the cap or review-queue bound is
104
103
  reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
105
104
  `NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
106
105
  the single release command (`/rite-autocomplete <release milestone> --ship`, or
@@ -71,11 +71,10 @@ exhausted.
71
71
  when slices remain; malformed state also stops. Report whether the winning
72
72
  bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
73
  Zero with no pending slices is normal completion and proceeds to Prove.
74
- - **Resource envelope:** missing/malformed/expired AFK, overlapping run,
74
+ - **Resource envelope:** missing/malformed AFK, overlapping run,
75
75
  exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
76
  above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
- bound and observed usage; a new activation does not reset durable budgets or
78
- expiry.
77
+ bound and observed usage; a new activation does not reset durable budgets.
79
78
  - **Confidence:** intent still cannot become testable acceptance after interview.
80
79
  - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
81
80
 
@@ -54,7 +54,6 @@ max_slices: 10 # whole-workspace writer budget; seeds stat
54
54
  max_agents: 32 # native agent dispatches in one host activation
55
55
  max_minutes: 120 # wall-clock minutes in one host activation
56
56
  max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
57
- expires_at: "<ISO-8601 UTC timestamp>" # absolute unattended-authority expiry
58
57
  # max_tokens: 200000 # optional stricter host-observed token cap
59
58
  # max_cost_usd: 10 # optional stricter host-observed cost cap
60
59
  notify: "ntfy.sh/my-topic" # shell command; examples: rite-build/reference/afk-discipline.md
@@ -108,7 +107,7 @@ candidate manifest to cover the whole recorded chain — run
108
107
 
109
108
  - Only continuations recorded in the parent's `decisions.md` sequence
110
109
  ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
111
- qualify; no recorded next entry, or the cap/expiry/review-queue bound reached, stops
110
+ qualify; no recorded next entry, or the cap/review-queue bound reached, stops
112
111
  with the winning reason.
113
112
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
114
113
  with `Next step: /rite-ship` preserved. Per-slice `WIP(<slug>)` checkpoints still
@@ -128,27 +127,26 @@ an explicit `/rite-build --parallel N` cap wins for that invocation.
128
127
  ## Unattended resource envelope
129
128
 
130
129
  AFK writer admission needs a bounded input queue, effective slice cap, and valid
131
- `max_agents`, `max_minutes`, `max_review_queue`, and `expires_at`. Existing sentinels
130
+ `max_agents`, `max_minutes`, and `max_review_queue`. Existing sentinels
132
131
  that declare writer admission but miss/malform these fail closed; cold resume keeps the
133
- state-owned slice counter.
132
+ state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
134
133
  Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
135
134
 
136
135
  `max_agents` counts every leaf in the native activation, including failures and
137
136
  parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
138
137
  counts open validating questions plus unresolved admitted Critical/Important findings.
139
- Above it stop; at it run only reconciliation that reduces the queue. `expires_at` is
140
- absolute ISO-8601 authority. Optional `max_tokens`/`max_cost_usd` lower enforceable
141
- native caps; if declared but unobservable, stop.
138
+ Above it stop; at it run only reconciliation that reduces the queue. Optional
139
+ `max_tokens`/`max_cost_usd` lower enforceable native caps; if declared but unobservable, stop.
142
140
 
143
141
  Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
144
142
  run cheap readiness, reject overlap, count queue, and confirm agent/time/token/cost
145
143
  headroom; re-check after every result. Never start one call that can exceed remaining
146
144
  headroom. Agent/time/token/cost counters are per native activation and start fresh only
147
- for a genuinely new activation. Slices, recovery attempts, absolute expiry, and current
145
+ for a genuinely new activation. Slices, recovery attempts, and current
148
146
  review queue remain durable/recomputed across wakes. Persist each activation stop and
149
147
  checkpoint before notification.
150
148
 
151
- New sentinels default `expires_at` to arming + 4h with no notification/token/cost cap.
149
+ New sentinels write no `expires_at` and no notification/token/cost cap.
152
150
  Post-Vet pending count may lower slices. Existing files
153
151
  never receive missing defaults implicitly.
154
152
 
@@ -38,13 +38,13 @@ Every unattended loop must name:
38
38
  4. **Evaluator:** the skill's existing readiness, proof, review, or watcher verdict.
39
39
  5. **Budget:** every applicable `.devrites/AFK` resource cap.
40
40
  6. **Checkpoint:** durable workspace/evidence update before the turn ends.
41
- 7. **Stop:** success, human/safety/access gate, expiry, budget exhaustion, unchanged
41
+ 7. **Stop:** success, human/safety/access gate, budget exhaustion, unchanged
42
42
  no-progress fingerprint, host failure, or terminal external state.
43
43
  8. **Notification:** optional native-host notification after state is durable; never a
44
44
  substitute for recording the stop.
45
45
 
46
46
  A read-only scheduled/event loop that has no active AFK workspace must still configure
47
- native maximum activations/iterations, wall time, and absolute expiry. Add token/cost
47
+ native maximum activations/iterations and wall time. Add token/cost
48
48
  caps when the host exposes them. One observation cycle per wake is the work unit; the
49
49
  skill never starts its own timer or background poller.
50
50
 
@@ -76,7 +76,7 @@ armed AFK workspace whose exact scope, gates, and budgets permit it.
76
76
  is `gap`/`cannot_verify`, never success.
77
77
  - Do not retry unchanged work merely because a timer fired. Apply the exact
78
78
  causal-fingerprint recovery cap ([`afk-hitl.md`](afk-hitl.md)).
79
- - A cold resume continues durable slice/recovery state and absolute expiry. Fresh
79
+ - A cold resume continues durable slice/recovery state. Fresh
80
80
  native activation counters follow `afk-hitl.md`; no durable bound is reinitialized.
81
81
  - Native notifications fire only after evidence and stop state are written.
82
82
 
@@ -48,7 +48,7 @@ executable controller/harness/bundle bytes or a missing writer, read
48
48
  - Every exact causal fingerprint gets at most three no-progress corrections.
49
49
  Closing one is progress; a distinct Critical/Important invariant has its own
50
50
  budget. Lower severity cannot prolong recovery.
51
- - Enforce `--max-slices`, the AFK sentinel, expiry, review queue, and native
51
+ - Enforce `--max-slices`, the AFK sentinel, review queue, and native
52
52
  agent/token/cost/time limits before every phase or dispatch. Count failed,
53
53
  malformed, and unavailable leaf calls. At the review cap, permit only work
54
54
  that reduces the queue.
@@ -18,7 +18,6 @@ max_slices: 10
18
18
  max_agents: 32
19
19
  max_minutes: 120
20
20
  max_review_queue: 8
21
- expires_at: "<now + 4 hours>"
22
21
  # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
23
22
  # max_workspaces: 5 # sequence budget when chaining
24
23
  # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
@@ -28,11 +27,11 @@ expires_at: "<now + 4 hours>"
28
27
  ```
29
28
 
30
29
  Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
31
- its gate ceiling exceeds advisory, required envelope is malformed/expired, or
30
+ its gate ceiling exceeds advisory, required envelope is malformed, or
32
31
  `max_slices` conflicts with the invocation. If absent, write it once after
33
- clarity, replacing the safe slice default only for explicit `--max-slices N`
34
- and resolving one absolute UTC expiry. It is read-only: never rewrite it after
35
- Vet or reset it on resume.
32
+ clarity, replacing the safe slice default only for explicit `--max-slices N`.
33
+ It is read-only: never rewrite it after Vet or reset it on resume. Leftover
34
+ `expires_at` is ignored and never rewritten.
36
35
 
37
36
  ### Derive the mutable post-vet budget
38
37
 
@@ -45,12 +44,12 @@ or reinitialize it. AFK configuration itself stays unchanged.
45
44
 
46
45
  Before every phase, review fan-out, recovery, or writer dispatch, apply
47
46
  [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#unattended-resource-envelope): cheapest current-state/readiness
48
- check first; reject overlap; count unresolved review; check expiry and native
47
+ check first; reject overlap; count unresolved review; check native
49
48
  agent/token/cost/time headroom. Count every leaf result. At the review cap, only
50
49
  reconciliation that reduces the queue may run. Any reached or unobservable
51
50
  bound stops before more work and persists the winning reason. A new activation
52
- gets fresh activation-local counters but retains durable slice/recovery state,
53
- expiry, and recomputed queue.
51
+ gets fresh activation-local counters but retains durable slice/recovery state
52
+ and recomputed queue.
54
53
 
55
54
  `allow_gates: [advisory]` means validating gates pause now rather than becoming
56
55
  Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
@@ -100,7 +99,7 @@ fields are missing is re-seeded from its `brief.md` parent/position and the
100
99
  parent's counter (same values, never a second charge); a child with no recorded
101
100
  parent/position is not a sequence member and the chain stops.
102
101
 
103
- Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
102
+ Stop instead when: no recorded next entry; the cap or review-queue bound is
104
103
  reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
105
104
  `NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
106
105
  the single release command (`/rite-autocomplete <release milestone> --ship`, or
@@ -71,11 +71,10 @@ exhausted.
71
71
  when slices remain; malformed state also stops. Report whether the winning
72
72
  bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
73
  Zero with no pending slices is normal completion and proceeds to Prove.
74
- - **Resource envelope:** missing/malformed/expired AFK, overlapping run,
74
+ - **Resource envelope:** missing/malformed AFK, overlapping run,
75
75
  exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
76
  above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
- bound and observed usage; a new activation does not reset durable budgets or
78
- expiry.
77
+ bound and observed usage; a new activation does not reset durable budgets.
79
78
  - **Confidence:** intent still cannot become testable acceptance after interview.
80
79
  - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
81
80
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "5.7.1",
3
+ "version": "5.7.2",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, and pi",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",