devrites 6.1.0 → 6.1.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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/docs/architecture.md +3 -1
- package/docs/cli.md +4 -1
- package/docs/engine/commands.md +4 -4
- package/docs/orchestration.md +4 -3
- package/docs/usage.md +1 -1
- package/engine/internal/lib/claims.go +12 -2
- package/engine/internal/lib/claims_holder.go +124 -0
- package/engine/internal/lib/cli_observe.go +14 -0
- package/engine/internal/lib/taskgraph.go +124 -0
- package/engine/internal/parallel/cli.go +111 -9
- package/engine/internal/parallel/lease.go +58 -4
- package/engine/internal/parallel/ops.go +244 -75
- package/engine/internal/parallel/select.go +31 -6
- package/pack/.claude/agents/devrites-plan-drafter.md +2 -1
- package/pack/.claude/agents/devrites-slice-wright.md +2 -1
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +5 -4
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +12 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +6 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
- package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +13 -11
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +8 -6
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
- package/pack/.claude/skills/rite-build/SKILL.md +7 -7
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +8 -5
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +33 -26
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +10 -1
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +3 -2
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +2 -2
- package/pack/.claude/skills/rite-define/SKILL.md +1 -1
- package/pack/.claude/skills/rite-handoff/SKILL.md +1 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/slicing.md +5 -0
- package/pack/.claude/skills/rite-prove/SKILL.md +4 -2
- package/pack/.claude/skills/rite-prove/reference/failure-triage.md +2 -1
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +2 -2
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +8 -0
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +1 -1
- package/pack/generated/claude/agents/devrites-plan-drafter.md +2 -1
- package/pack/generated/claude/agents/devrites-slice-wright.md +2 -1
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +5 -4
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +12 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +6 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
- package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +13 -11
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +8 -6
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
- package/pack/generated/claude/skills/rite-build/SKILL.md +7 -7
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +8 -5
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +33 -26
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +10 -1
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +3 -2
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +2 -2
- package/pack/generated/claude/skills/rite-define/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-plan/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +5 -0
- package/pack/generated/claude/skills/rite-prove/SKILL.md +4 -2
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +2 -1
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +2 -2
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +8 -0
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +1 -1
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +2 -1
- package/pack/generated/codex/agents/devrites-slice-wright.toml +2 -1
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +5 -4
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +12 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +6 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
- package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +13 -11
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +8 -6
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
- package/pack/generated/codex/skills/rite-build/SKILL.md +7 -7
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +8 -5
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +33 -26
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +10 -1
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +3 -2
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +2 -2
- package/pack/generated/codex/skills/rite-define/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-plan/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +5 -0
- package/pack/generated/codex/skills/rite-prove/SKILL.md +4 -2
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +2 -1
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +2 -2
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +8 -0
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +1 -1
- package/pack/generated/devin/agents/devrites-plan-drafter.md +2 -1
- package/pack/generated/devin/agents/devrites-slice-wright.md +2 -1
- package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +5 -4
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
- package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +12 -15
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +6 -2
- package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +13 -11
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +8 -6
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
- package/pack/generated/devin/skills/rite-build/SKILL.md +7 -7
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +8 -5
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +33 -26
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +10 -1
- package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +3 -2
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +2 -2
- package/pack/generated/devin/skills/rite-define/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-handoff/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-plan/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-plan/reference/slicing.md +5 -0
- package/pack/generated/devin/skills/rite-prove/SKILL.md +4 -2
- package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +2 -1
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +2 -2
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +8 -0
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +1 -1
- package/pack/generated/omp/agents/devrites-plan-drafter.md +2 -1
- package/pack/generated/omp/agents/devrites-slice-wright.md +2 -1
- package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +5 -4
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
- package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +12 -15
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +6 -2
- package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
- package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +13 -11
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +8 -6
- package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
- package/pack/generated/omp/skills/rite-build/SKILL.md +7 -7
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +8 -5
- package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +33 -26
- package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +10 -1
- package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +3 -2
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +2 -2
- package/pack/generated/omp/skills/rite-define/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-handoff/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-plan/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-plan/reference/slicing.md +5 -0
- package/pack/generated/omp/skills/rite-prove/SKILL.md +4 -2
- package/pack/generated/omp/skills/rite-prove/reference/failure-triage.md +2 -1
- package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +2 -2
- package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +8 -0
- package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +1 -1
- package/pack/generated/pi/agents/devrites-plan-drafter.md +2 -1
- package/pack/generated/pi/agents/devrites-slice-wright.md +2 -1
- package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +5 -4
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
- package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +12 -15
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +6 -2
- package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
- package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +13 -11
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +8 -6
- package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
- package/pack/generated/pi/skills/rite-build/SKILL.md +7 -7
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +8 -5
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +33 -26
- package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +10 -1
- package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +3 -2
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +2 -2
- package/pack/generated/pi/skills/rite-define/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-handoff/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-plan/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-plan/reference/slicing.md +5 -0
- package/pack/generated/pi/skills/rite-prove/SKILL.md +4 -2
- package/pack/generated/pi/skills/rite-prove/reference/failure-triage.md +2 -1
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +2 -2
- package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +8 -0
- package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Stop conditions: when autocomplete pauses
|
|
2
2
|
|
|
3
3
|
On a real stop, write `state.md` as `awaiting_human` or `blocked`, persist the
|
|
4
|
-
reason, and include one resume command
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
stop.
|
|
4
|
+
reason, and include one resume command. Agent-owned recovery never ends the run:
|
|
5
|
+
a spent strategy escalates and a fully escalated fingerprint parks while other
|
|
6
|
+
work continues ([retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve)).
|
|
7
|
+
`--ship` never bypasses a stop.
|
|
8
8
|
|
|
9
9
|
Authority: `.devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
|
|
10
10
|
|
|
@@ -24,8 +24,8 @@ Regardless of flags or AFK ceiling:
|
|
|
24
24
|
- external-service contract change; or
|
|
25
25
|
- filesystem destruction outside the workspace.
|
|
26
26
|
|
|
27
|
-
Red proof cannot advance. Run bounded Debug Recovery
|
|
28
|
-
|
|
27
|
+
Red proof cannot advance. Run bounded Debug Recovery and escalate spent
|
|
28
|
+
strategies; a fully escalated fingerprint parks unless the remaining owner is human.
|
|
29
29
|
|
|
30
30
|
## Not stops: internal technical routing
|
|
31
31
|
|
|
@@ -36,13 +36,16 @@ agent-owned.
|
|
|
36
36
|
|
|
37
37
|
Agent-owned backtracking is not a stop condition while the exact causal
|
|
38
38
|
fingerprint has budget. Invoke the earlier phase, affected Vet, remediation, and
|
|
39
|
-
proof; then resume the origin.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
proof; then resume the origin. Three no-progress corrections of that exact
|
|
40
|
+
fingerprint spend only its current strategy: escalate to the next correction
|
|
41
|
+
class inline (shared root cause, boundary redesign, diagnostic amplification)
|
|
42
|
+
with a fresh budget, never asking permission. After three escalations in this
|
|
43
|
+
activation the fingerprint parks; finish all independent work, then stop once.
|
|
44
|
+
Preserve reproduction, attempts, and dead ends; never offer `/rite-plan unblock`
|
|
45
|
+
or another routine phase command. A new user-issued `/rite-autocomplete`
|
|
46
|
+
reopens parked fingerprints with fresh escalation; wakes and compaction do not.
|
|
47
|
+
Closure is progress; a separately evidenced Critical/Important invariant starts
|
|
48
|
+
its own cap and cannot extend the closed one.
|
|
46
49
|
|
|
47
50
|
Spent consumptive-action authorization is not technical-recovery exhaustion.
|
|
48
51
|
It blocks another execution; retained new Critical/Important evidence still
|
|
@@ -52,11 +55,10 @@ authorization and never reuse old GO.
|
|
|
52
55
|
Past evidence being irretrievable is not by itself terminal. If an in-scope
|
|
53
56
|
trusted seam can uniquely discriminate the next failure, run diagnostic-
|
|
54
57
|
amplification Plan repair and narrow Vet inline, then pause for fresh GO before
|
|
55
|
-
one evidence-acquisition attempt.
|
|
56
|
-
|
|
57
|
-
exhausted.
|
|
58
|
+
one evidence-acquisition attempt. Without a safe seam, escalate to the next
|
|
59
|
+
class or park; only a real human/risk/scope gate stops for a human.
|
|
58
60
|
|
|
59
|
-
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"
|
|
61
|
+
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"escalate BLOCKED_EXHAUSTED; on WAIT_ACTIVE_OWNER run independent work and recheck; stop on exact BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
|
|
60
62
|
## Other stop classes
|
|
61
63
|
|
|
62
64
|
- **Gate severity:** escalating always stops. Blocking with a ranked recommended
|
|
@@ -83,10 +85,15 @@ exhausted.
|
|
|
83
85
|
pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count
|
|
84
86
|
does not stop. Zero with no pending slices is normal completion.
|
|
85
87
|
Malformed flag stops before any write.
|
|
88
|
+
- **Foreign writer:** a `live`/`expired` claim or `WAIT_ACTIVE_OWNER` held by
|
|
89
|
+
another session blocks only work on those paths; run independent work, re-check,
|
|
90
|
+
and stop only when nothing independent remains. `released`/`dead` claims are
|
|
91
|
+
reconciled per [§ Cancellation](../../devrites-lib/reference/parallel-dispatch.md#cancellation-and-terminal-reconciliation).
|
|
86
92
|
- **Resource envelope:** overlapping run or missing AFK after arm still stops.
|
|
87
93
|
Do not stop on `--max-slices`, `max_agents`, `max_minutes`, or `max_review_queue`.
|
|
88
94
|
- **Confidence:** intent still cannot become testable acceptance after interview.
|
|
89
|
-
- **Repeated failure:**
|
|
95
|
+
- **Repeated failure:** not a stop. Escalate; a fully escalated fingerprint parks,
|
|
96
|
+
and the run stops only once no independent work remains.
|
|
90
97
|
- **Resolver failure:** `devrites-engine state resolve` not found, or nonzero exit.
|
|
91
98
|
Never hand-edit `questions.md`/`state.md` in its place. Not found stops at once;
|
|
92
99
|
nonzero allows one identical re-run (the fingerprint is command + exit code +
|
|
@@ -101,7 +108,7 @@ disclose the exact plan, and stop for literal `GO` plus native approval. Without
|
|
|
101
108
|
one, stop at Seal GO with `/rite-ship`. Seal GO, AFK, prior approval, and flags
|
|
102
109
|
never satisfy Ship approval.
|
|
103
110
|
|
|
104
|
-
A cold-resumable stop records `state.md` status, exact reason, and
|
|
105
|
-
human-owned
|
|
106
|
-
question/drift/seal entry explains it. The user-facing line says what stopped
|
|
111
|
+
A cold-resumable stop records `state.md` status, exact reason, and one resume
|
|
112
|
+
action: the human-owned action, or `/rite-autocomplete` to reopen parked
|
|
113
|
+
fingerprints; the owning question/drift/seal entry explains it. The user-facing line says what stopped
|
|
107
114
|
and, only when applicable, what human action resumes it.
|
|
@@ -74,15 +74,15 @@ Wright applies anti-slop; root verifies returns and never patches source. Refuse
|
|
|
74
74
|
|
|
75
75
|
Omitted/`1` ≡ serial; `2`–`10` is a **cap** — the root runs the largest eligible
|
|
76
76
|
path-disjoint set it can start now (`N_eff`), takes fewer when the cap cannot be
|
|
77
|
-
filled, and
|
|
78
|
-
|
|
77
|
+
filled, and refills a slot per landing (serial slice or one sibling) until
|
|
78
|
+
no pending slice remains
|
|
79
79
|
([`parallel-batch.md` § Dynamic selection](reference/parallel-batch.md#dynamic-selection-and-re-batching)).
|
|
80
|
-
Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`)
|
|
81
|
-
inside the same run; HITL stops after each
|
|
80
|
+
Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`) refill
|
|
81
|
+
inside the same run; HITL stops after each landing. This invocation's `--parallel N`
|
|
82
82
|
is the cap: leftover sentinel `max_parallel` is not consulted. Autocomplete with
|
|
83
83
|
that flag also writes or replaces only `max_parallel: N`. Non-integer/`N≤0`/`N>10` hard refuse.
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
Each sibling lands alone when its review + proof are green (`integrate --slice`):
|
|
85
|
+
one local `WIP(<slug>):` commit onto the control branch (never pushed). Do not
|
|
86
86
|
integrate a sibling because the wright returned. A red/gap sibling gets a bounded repair
|
|
87
87
|
round in its own worktree — never rebuilt from scratch while budget remains.
|
|
88
88
|
Post-writer inventory and affected rechecks follow `phase-contract.md` § Independent
|
|
@@ -93,7 +93,7 @@ a human `Fix`. Exhausted repair blocks and preserves everything;
|
|
|
93
93
|
`cleanup --force` salvages slice branches before removing worktrees —
|
|
94
94
|
human-gated to abandon a batch, orchestrator-emitted only as the salvage
|
|
95
95
|
step of an automatic frozen-lease re-batch.
|
|
96
|
-
AFK charges
|
|
96
|
+
AFK charges per landed sibling only. Running lease blocks another
|
|
97
97
|
`/rite-build`. Details: `parallel-batch.md`.
|
|
98
98
|
|
|
99
99
|
## Execute and reply
|
|
@@ -44,8 +44,8 @@ The controlling root owns the cap:
|
|
|
44
44
|
before the next dispatch.
|
|
45
45
|
- **Serial:** charge when fail-on-red is green and the built record is written
|
|
46
46
|
(same rewrite as step 2).
|
|
47
|
-
- **Parallel `--parallel`:** charge only after **successful
|
|
48
|
-
— once per
|
|
47
|
+
- **Parallel `--parallel`:** charge only after **successful integrate**
|
|
48
|
+
— once per landed green sibling. Abort / integrate-failed → charge **0**.
|
|
49
49
|
Do not charge on worktree-green before integrate. See
|
|
50
50
|
[`parallel-batch.md`](parallel-batch.md).
|
|
51
51
|
|
|
@@ -69,13 +69,16 @@ wrong contract or proof path — agent-owned recovery; never advance on broken s
|
|
|
69
69
|
The fail-on-red path:
|
|
70
70
|
|
|
71
71
|
1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
|
|
72
|
-
ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint
|
|
72
|
+
ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint
|
|
73
|
+
and strategy.
|
|
73
74
|
A correction that closes the reproduction is progress; a different evidenced
|
|
74
75
|
Critical/Important invariant starts a separate fingerprint.
|
|
75
76
|
2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
|
|
76
77
|
human gate. Missing human-only credential/permission → write a human-intervention gate.
|
|
77
|
-
3. Any other
|
|
78
|
-
|
|
78
|
+
3. Any other spent strategy → escalate inline to the next correction class; after three
|
|
79
|
+
escalations park the fingerprint and build every slice that does not depend on it,
|
|
80
|
+
per the [retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
|
|
81
|
+
Never ask a qid or permission to retry; never hand back a routine phase command.
|
|
79
82
|
4. Fire `notify:` only for an actual `awaiting_human` transition.
|
|
80
83
|
|
|
81
84
|
AFK never starts the next slice while checks are red and never asks the human to approve
|
|
@@ -18,7 +18,7 @@ the orchestrator pauses for approval before landing it.
|
|
|
18
18
|
and fail-on-red proof are green, with no open Critical/Important and no repair
|
|
19
19
|
wright still in flight. Serial: git recipe below (skip empty index) or isolated
|
|
20
20
|
FF of a matching `transfer_commit`. Parallel: `devrites-engine parallel
|
|
21
|
-
integrate --apply-to-control` (no second control `git commit`).
|
|
21
|
+
integrate --slice <id> --apply-to-control` (no second control `git commit`).
|
|
22
22
|
- **Do not:** when a wright returns; before review/proof; with red/gap findings;
|
|
23
23
|
fast-forward an isolated transfer onto control before those checks.
|
|
24
24
|
|
|
@@ -28,7 +28,7 @@ RECORD → orchestrator: after green verification, update state.md/evidence.m
|
|
|
28
28
|
upsert the authoritative candidate manifest from the actual scoped diff
|
|
29
29
|
(CHECKPOINT) → only now, with review+proof green: local WIP(<slug>): <imperative summary>
|
|
30
30
|
on the control branch (no slice id) → checkpoint.md
|
|
31
|
-
NEXT → HITL root reports and stops. AFK with parallel cap>1: return to parallel-batch selection
|
|
31
|
+
NEXT → HITL root reports and stops. AFK with parallel cap>1: return to parallel-batch selection to refill; otherwise repeat under afk-discipline.md
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Why the boundary matters
|
|
@@ -36,14 +36,14 @@ Select **greedily in plan order**: pass every currently dependency-ready pending
|
|
|
36
36
|
`N_eff = 1` → one serial round; nothing pending → Prove. A cap that cannot be filled
|
|
37
37
|
is normal: take fewer. Serial is this round's size, not the rest of the run.
|
|
38
38
|
|
|
39
|
-
**
|
|
40
|
-
|
|
41
|
-
`parallel select
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
**Refill per landing; never wait for the batch.** Each sibling lands alone when
|
|
40
|
+
green ([Lifecycle](#lifecycle) step 6). Then re-read `state.md`, pending slices, and
|
|
41
|
+
the tree and run `parallel select --cap N --slug <slug>`: unlanded siblings hold
|
|
42
|
+
their slots and paths, landed ones count as built, and only new picks print;
|
|
43
|
+
`parallel add` starts each from the control tip and its wright dispatches at once.
|
|
44
|
+
No lease → plain `select` + `create`. AFK/autocomplete is one run; HITL stops after
|
|
45
|
+
each landing. **Failing case:** three siblings are green, one is repairing, and no
|
|
46
|
+
new slice starts.
|
|
47
47
|
|
|
48
48
|
## Path-disjoint
|
|
49
49
|
|
|
@@ -109,22 +109,27 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
|
|
|
109
109
|
headroom bounds the batch size — one batch never assumes unbounded reviewers.
|
|
110
110
|
5. Non-green siblings → **repair round** (below) in the same worktrees; lease
|
|
111
111
|
stays `running` — no abort while repair budget remains. A green sibling →
|
|
112
|
-
`parallel record-green
|
|
112
|
+
`parallel record-green`, then step 6 for it alone.
|
|
113
113
|
A recoverable RED blocks integration but does not cancel independent safe running siblings.
|
|
114
114
|
Expected test-first RED is not a terminal gate failure. Cancel only for a shared
|
|
115
115
|
invalid foundation, safety/access failure, resource boundary, or explicit stop;
|
|
116
116
|
preserve completed and in-progress recoverable work and classify each result.
|
|
117
|
-
6. `parallel integrate --apply-to-control` **only after steps
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
(imperative summary, never a slice id). Staging branch, then FF
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
117
|
+
6. `parallel integrate --slice <id> --apply-to-control` **only after its steps
|
|
118
|
+
4–5 are green**: `transfer_commit` descends from the sibling's base and diffs
|
|
119
|
+
path-exact vs it; apply as its own local `WIP(<slug>):` commit
|
|
120
|
+
(imperative summary, never a slice id). Staging branch, then FF; the engine
|
|
121
|
+
refuses (never rewinds) if anything but this lease moved control. Conflict →
|
|
122
|
+
`integrate-failed`; classify under repair rounds (siblings stay in place).
|
|
123
|
+
Never integrate because a wright returned.
|
|
124
|
+
7. Each landing: FF control (the branch that held `HEAD` when the batch started —
|
|
125
|
+
often `main`/`master`, otherwise whatever the user was on) by one local commit,
|
|
126
|
+
never pushed; union that sibling's paths into `touched-files.md`; update
|
|
127
|
+
state/evidence; AFK +1 for that sibling; optional `check candidate`. Then
|
|
128
|
+
refill ([Dynamic selection](#dynamic-selection-and-re-batching)) and start the
|
|
129
|
+
feature gates on control
|
|
130
|
+
([Proof tiers](phase-contract.md#proof-tiers)); the next landing waits for them
|
|
131
|
+
to pass, the refilled wrights do not.
|
|
132
|
+
8. Cleanup runs only after the last landing marks the lease `complete` — work
|
|
128
133
|
landed in control, so `parallel cleanup` removes worktrees/branches.
|
|
129
134
|
Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
|
|
130
135
|
removed while the batch may resume. `parallel abort` + `cleanup --force`
|
|
@@ -182,18 +187,20 @@ Repair rejected work in place; never discard/rebuild while budget remains.
|
|
|
182
187
|
exhaustion. Use plan path only if inventory proves the approach unsound.
|
|
183
188
|
- Stop under the canonical retry/authority/resource conditions, or when evidence
|
|
184
189
|
proves the approach unsound and no in-scope corrected decomposition exists.
|
|
185
|
-
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
+
- A spent strategy is not abort: escalate per the canonical retry contract,
|
|
191
|
+
preserving lease/worktrees/branches; a fully escalated fingerprint parks and
|
|
192
|
+
the batch keeps its independent members. Repair resumes in place on
|
|
193
|
+
escalation or reinvocation. Human-owned decisions use the drift-guard
|
|
194
|
+
question and wait.
|
|
190
195
|
|
|
191
196
|
## Engine verbs
|
|
192
197
|
|
|
193
198
|
```text
|
|
194
|
-
devrites-engine parallel select --cap <1-10> [--root <dir>] [<json-file>|-]
|
|
199
|
+
devrites-engine parallel select --cap <1-10> [--root <dir>] [--slug <slug>] [<json-file>|-]
|
|
195
200
|
devrites-engine parallel create --root <repo> --slug <slug> --batch <id> --base <B> --json <file>|-
|
|
201
|
+
devrites-engine parallel add --root <repo> --slug <slug> --json <file>|-
|
|
196
202
|
devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> --commit <sha>
|
|
203
|
+
devrites-engine parallel integrate --root <repo> --slug <slug> --slice <id> --apply-to-control
|
|
197
204
|
devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
|
|
198
205
|
devrites-engine parallel status --root <repo> --slug <slug>
|
|
199
206
|
devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
|
|
@@ -42,7 +42,8 @@ Spec Drift Guard still applies.
|
|
|
42
42
|
6. **Prove.** Against the frozen pre-slice candidate inspect
|
|
43
43
|
test hunks for deletion, skipping/focus, tautology, or weaker expectations.
|
|
44
44
|
Wait for step 5's exact test-analyst account; missing/adverse criterion verdict is
|
|
45
|
-
Critical. Run only `test-plan.md` repository/CI commands
|
|
45
|
+
Critical. Run only `test-plan.md` repository/CI commands ([tier](#proof-tiers)),
|
|
46
|
+
record output, recheck
|
|
46
47
|
`git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
|
|
47
48
|
Pre-existing/environment-specific claims need a predating same-command,
|
|
48
49
|
same-environment baseline; otherwise unresolved.
|
|
@@ -67,6 +68,14 @@ Spec Drift Guard still applies.
|
|
|
67
68
|
|
|
68
69
|
One contract builds one slice: preserve TDD, exact paths and independent judgment.
|
|
69
70
|
|
|
71
|
+
## Proof tiers
|
|
72
|
+
|
|
73
|
+
With a `test-plan.md` `## Feature gates` section, step 6 runs `Tests/proof` and every
|
|
74
|
+
other row; feature gates run once per parallel landing, on control, while worktree
|
|
75
|
+
wrights continue. The next landing and Prove wait for them; red is a fingerprint
|
|
76
|
+
against slices landed since the last green run. Serial same-worktree mode, and plans
|
|
77
|
+
without the section, run every row each round.
|
|
78
|
+
|
|
70
79
|
## Independent Build review
|
|
71
80
|
|
|
72
81
|
After inspection, freeze full slice scope and cumulative baseline diff. Initial
|
|
@@ -82,5 +82,6 @@ The detecting phase owns backtracking and the batch sweep. Save
|
|
|
82
82
|
`return_phase`/`return_next_action`; consume nested Plan/Vet `STOP` internally, complete
|
|
83
83
|
vetted acceptance-preserving remediation, then restore the cursor and failed step.
|
|
84
84
|
Never hand the human an intermediate command. The shared three-attempt causal-fingerprint
|
|
85
|
-
cap still applies:
|
|
86
|
-
|
|
85
|
+
cap still applies: a spent strategy escalates and a fully escalated fingerprint parks
|
|
86
|
+
under the [retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve),
|
|
87
|
+
while a genuinely human-owned decision uses the question format below.
|
|
@@ -144,8 +144,8 @@ TTL is crash recovery, not normal cleanup.
|
|
|
144
144
|
**Do not land on control until review and proof are both green.** Isolated
|
|
145
145
|
`transfer_commit` stays on the worker branch; same-worktree diffs stay
|
|
146
146
|
uncommitted. Serial: [`checkpoint.md`](checkpoint.md), then host may remove the
|
|
147
|
-
worktree. Parallel: `record-green
|
|
148
|
-
--apply-to-control
|
|
147
|
+
worktree. Parallel: `record-green`, then `parallel integrate
|
|
148
|
+
--slice <id> --apply-to-control`; `parallel cleanup` removes worktrees.
|
|
149
149
|
5. Reconcile returned reuse, conventions, principles, sources, assumptions,
|
|
150
150
|
decisions, dead ends, follow-ups, gates, and touched files. Persist the
|
|
151
151
|
relevant facts in canonical artifacts, not the wholesale report. A plan-gap
|
|
@@ -160,7 +160,7 @@ Pull these via `Read` when shaping the plan:
|
|
|
160
160
|
meaning-changing mappings block. Then run
|
|
161
161
|
`devrites-engine check task-graph <slug>`; a malformed dependency graph blocks
|
|
162
162
|
before Vet rather than spending a reviewer context on invalid tasks. Resolve each
|
|
163
|
-
`ADVISORY size:` line now (split, or
|
|
163
|
+
`ADVISORY size:`/`hub:` line now (split or seam slice, or a rationale); never blocking.
|
|
164
164
|
7. **Readiness gate** (`plan-template.md`): require CLEAR coverage; complete acceptance,
|
|
165
165
|
wiring, shared-contract proof, applicable outputs, and rollback; risk-first acyclic order;
|
|
166
166
|
justified deviations; and every horizon item present, with blockers resolved, planning
|
|
@@ -74,7 +74,7 @@ themselves. The workspace is the canonical store; the handoff is the chat-only d
|
|
|
74
74
|
6. **In-flight work.** Every dispatch wave opened or sealed without a return (`devrites-engine
|
|
75
75
|
dispatch <slug> status`), running writer handle, held claim id plus paths (`devrites-engine
|
|
76
76
|
claim list --all`), and consumptive action started, each `terminal: yes|unknown` (`yes` only with
|
|
77
|
-
an admitted return, release, or proof of stop). The live handle exists only in chat. Any
|
|
77
|
+
an admitted return, release, `dead` claim, or proof of stop). The live handle exists only in chat. Any
|
|
78
78
|
`unknown` row makes item 1 a reconcile step (`dispatch <slug> status`, `parallel status`,
|
|
79
79
|
`claim list --all`), never a writer command: otherwise the next session dispatches a second writer.
|
|
80
80
|
7. **How to resume:** fixed boilerplate (see template below).
|
|
@@ -176,7 +176,7 @@ Before classifying any Reslice, read `.devin/skills/devrites-lib/reference/stand
|
|
|
176
176
|
|
|
177
177
|
When invoked inline by a controlling rite, return the completed Plan checkpoint
|
|
178
178
|
to that caller so it can invoke Vet immediately. The phase boundary is not a
|
|
179
|
-
user-facing stop unless a genuine HITL, safety/access, or
|
|
179
|
+
user-facing stop unless a genuine HITL, safety/access, or parked-recovery
|
|
180
180
|
condition was recorded.
|
|
181
181
|
|
|
182
182
|
When invoked directly with no controlling caller and a planning artifact
|
|
@@ -168,3 +168,8 @@ Order by dependency, but minimize coupling. A slice that needs three other slice
|
|
|
168
168
|
is a smell: look for a thinner cut that stands alone. An edge exists only when this slice
|
|
169
169
|
reads something the other produces: write it as `SLICE-001 (via <interface>)`. If you
|
|
170
170
|
cannot name what crosses, drop the edge; a shallow, wide graph runs in parallel.
|
|
171
|
+
|
|
172
|
+
Slices sharing a file never build side by side: put a hub file's shared edit
|
|
173
|
+
(registry, command table, test harness) in one seam slice the others depend on.
|
|
174
|
+
`check task-graph` prints the `schedule:` and `ADVISORY hub:` lines; inseparable
|
|
175
|
+
writes get `Serial rationale: <why>`. Never merge slices or drop acceptance to widen it.
|
|
@@ -36,8 +36,10 @@ TTHW, and exact signal-bearing errors; never assert DX (trigger `devex`).
|
|
|
36
36
|
validates it. Only the bounded wright fixes product source/tests.
|
|
37
37
|
- **Prove remains the controlling caller** during technical backtracking. Save
|
|
38
38
|
its cursor; run Plan repair, Recovery Vet, remediation, and re-proof inline;
|
|
39
|
-
consume nested boundaries; resume the failed rung.
|
|
40
|
-
three no-progress attempts on the exact same fingerprint
|
|
39
|
+
consume nested boundaries; resume the failed rung. A strategy is spent after
|
|
40
|
+
three no-progress attempts on the exact same fingerprint; escalate it per the
|
|
41
|
+
[retry contract](../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve)
|
|
42
|
+
instead of stopping. Closing one or exposing a distinct
|
|
41
43
|
Critical/Important invariant is progress, not a reason to hand work off.
|
|
42
44
|
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Prove consumes installed Workflow Artifact or CLEANED rerun","action":"VERIFY_EXISTING or admitted proof path ending PROVE_AND_RETURN","return":"saved Prove cursor; stop before real action"} -->
|
|
43
45
|
## Released-workspace refresh
|
|
@@ -47,6 +47,7 @@ loop to `devrites-debug-recovery`.
|
|
|
47
47
|
- Three no-progress attempts on the exact same causal fingerprint consume the
|
|
48
48
|
shared recovery cap. A recheck that closes the reproduction is progress; a
|
|
49
49
|
different evidenced Critical/Important invariant gets its own fingerprint.
|
|
50
|
-
Preserve the reproduction and dead ends, then
|
|
50
|
+
Preserve the reproduction and dead ends, then escalate or park per the
|
|
51
|
+
[retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
|
|
51
52
|
Ask only when the remaining decision is human-owned.
|
|
52
53
|
- A failure you can't fix in scope is a recorded **blocker**, not a silent skip.
|
|
@@ -131,7 +131,7 @@ None.
|
|
|
131
131
|
| slice_mode | none |
|
|
132
132
|
| risk | none |
|
|
133
133
|
| spec_gate | <passed <iso>; marker sweep: <n> files, <k> hits, <d> discarded — absent until /rite-spec passes> |
|
|
134
|
-
| next_action | <single command + reason
|
|
134
|
+
| next_action | <single command + reason; parked recovery names the invoking command> |
|
|
135
135
|
| return_phase | <originating later phase; clarification or agent-owned technical backtracking only> |
|
|
136
136
|
| return_next_action | <saved originating command> |
|
|
137
137
|
| schema | 4 |
|
|
@@ -154,7 +154,7 @@ Before an active caller moves backward, it copies its current phase and
|
|
|
154
154
|
non-empty action into the two return rows. Nested Plan, Vet, Build, and proof
|
|
155
155
|
work preserves that valid cursor. Once the prerequisite chain is green, the
|
|
156
156
|
controlling caller restores the saved phase/action and removes both rows in one
|
|
157
|
-
rewrite. A real HITL or
|
|
157
|
+
rewrite. A real HITL or parked-recovery stop retains the cursor for cold
|
|
158
158
|
resume. Never overwrite an existing valid return cursor, and preserve every
|
|
159
159
|
unrelated Markdown byte. `/rite-clarify` applies its stricter native cursor protocol in `/rite-clarify`.
|
|
160
160
|
|
|
@@ -103,6 +103,14 @@ From /rite-vet on <iso>. Runner + conventions: <detected framework + command>.
|
|
|
103
103
|
Link any disposable parser fixture. Preflight values are planning evidence, not post-build proof;
|
|
104
104
|
Prove recaptures the observed command, candidate identity, and result.
|
|
105
105
|
|
|
106
|
+
## Feature gates
|
|
107
|
+
| Gate | Command | Cwd | Expected |
|
|
108
|
+
|---|---|---|---|
|
|
109
|
+
| <full suite / workspace lint / audit> | <exact command> | <path> | <exit/output> |
|
|
110
|
+
|
|
111
|
+
Whole-repository rows only: Build runs them per landing
|
|
112
|
+
([tiers](../../rite-build/reference/phase-contract.md#proof-tiers)), Prove on the final candidate.
|
|
113
|
+
|
|
106
114
|
Commands in this durable artifact are portable repository commands: no RTK or local shell
|
|
107
115
|
aliases, user-specific absolute paths, or temporary proof trees. Evidence records
|
|
108
116
|
the command actually executed.
|
|
@@ -30,7 +30,7 @@ Before implementation review, check for work beyond the settled spec.
|
|
|
30
30
|
(over-budget `tasks.md`/`plan.md` from slice or AC count) is a scope finding, not a
|
|
31
31
|
`Budget override`: route to `/rite-plan course-correct` (`MVP cut`) with the
|
|
32
32
|
continuation sequence named; do not vet the whole epic. An `ADVISORY size:`
|
|
33
|
-
|
|
33
|
+
or `hub:` line without its rationale is a non-blocking Suggestion to split or seam it.
|
|
34
34
|
4. **Built-in check.** For each new pattern/infra/concurrency approach, invoke
|
|
35
35
|
`devrites-source-driven` inline to verify current framework/runtime support and cite it. Custom
|
|
36
36
|
work where a built-in suffices is a scope-reduction finding.
|
|
@@ -20,7 +20,8 @@ seams supplied by the orchestrator.
|
|
|
20
20
|
planning artifacts while preserving settled intent.
|
|
21
21
|
|
|
22
22
|
Reuse existing seams and dependencies before proposing new ones. Build vertical
|
|
23
|
-
slices in dependency order
|
|
23
|
+
slices in dependency order; put a hub file's shared edit in one seam slice
|
|
24
|
+
([slicing.md](skill://rite-plan/reference/slicing.md#slice-independence)). Map every REQ and AC to a slice and executable proof,
|
|
24
25
|
name rollback and failure paths; keep acceptance-changing proposals separate. Durable
|
|
25
26
|
proof commands must be portable repository commands, never host-local wrappers,
|
|
26
27
|
user-specific absolute paths, or temporary proof trees.
|
|
@@ -101,7 +101,8 @@ unclear boundary is underspecified: return `Escalation` without proceeding.
|
|
|
101
101
|
that source in the result. Never invent an API.
|
|
102
102
|
- **No process residue.** Do not put `SLICE-###`, slice numbers, or "this slice"
|
|
103
103
|
in product source, tests, comments, or filenames.
|
|
104
|
-
4. **VERIFY (fail-on-red).** Run writer-safe tests/types/lint
|
|
104
|
+
4. **VERIFY (fail-on-red).** Run writer-safe tests/types/lint: `Tests/proof` plus
|
|
105
|
+
tests of changed code; `## Feature gates` rows are root-owned. Report required
|
|
105
106
|
build/browser/E2E as `not-run` (root-owned, artifact-producing gates), and only
|
|
106
107
|
when the exact command, cwd, and prerequisites already appear in the unchanged
|
|
107
108
|
vetted `test-plan.md`; never synthesize or rewrite a root command. Root runs
|
|
@@ -87,13 +87,14 @@ has no clear next move. Optional slug selects the active workspace; defaults to
|
|
|
87
87
|
with that fingerprint. Reclassify only on new causal evidence. On cold resume,
|
|
88
88
|
a retained fingerprint with fewer than three such attempts remains runnable
|
|
89
89
|
even if the previous action wrote a terminal cursor.
|
|
90
|
-
- **A
|
|
90
|
+
- **A strategy is spent after three no-progress attempts per exact causal fingerprint.**
|
|
91
91
|
Count an attempt only when its recheck preserves the same decisive failure.
|
|
92
92
|
Record attempt number, exact failure, hypothesis, probe, and failed idea after
|
|
93
93
|
each; closure is progress and a different Critical/Important invariant is a new
|
|
94
94
|
fingerprint. There is no JSONL ledger,
|
|
95
95
|
counter command, or reset-on-green operation. Product/acceptance ambiguity, irreversible risk, or
|
|
96
|
-
human-only access becomes a human gate; otherwise return
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
human-only access becomes a human gate; otherwise return the spent strategy and
|
|
97
|
+
reproduction to the caller, which escalates or parks per the
|
|
98
|
+
[retry contract](skill://devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve);
|
|
99
|
+
never request attempt four of the same strategy. While budget remains, coupled failure requiring behavior change routes
|
|
99
100
|
`/rite-plan repair` inline; behavior-neutral rerouting uses `unblock` inline.
|
|
@@ -127,7 +127,8 @@ child's handle, path/resource ownership and capacity reservation until the
|
|
|
127
127
|
native host confirms a terminal state and returned work has been reconciled.
|
|
128
128
|
Query or wait on that handle; do not replace the child, release its slot, or
|
|
129
129
|
reuse its resources while it may still run. If terminal state cannot be
|
|
130
|
-
established, record a gap and retain ownership
|
|
130
|
+
established, record a gap and retain ownership; for a child launched by an earlier
|
|
131
|
+
session, the claim proof below settles it. A result classification alone
|
|
131
132
|
does not prove host termination.
|
|
132
133
|
|
|
133
134
|
On resume (compaction or a new session), run `devrites-engine dispatch <slug>
|
|
@@ -135,7 +136,11 @@ status`, `parallel status`, and `claim list --all` before any dispatch. A read-o
|
|
|
135
136
|
wave whose handles this session cannot query: `abandon` it, record each unreturned
|
|
136
137
|
role `gap`, and re-dispatch fresh on the current digest; its late returns are
|
|
137
138
|
`stale`. A writer keeps its claim and lease — no relaunch on those paths until the
|
|
138
|
-
claim is released or its holder is proven terminal.
|
|
139
|
+
claim is released or its holder is proven terminal. For an unqueryable writer,
|
|
140
|
+
`claim list --all` showing its claim `released` or `dead` (the engine proved the
|
|
141
|
+
holding session exited on this host) is that proof: `abandon` the wave, record the
|
|
142
|
+
role `gap`, claim the paths, and re-dispatch without waiting on the launching
|
|
143
|
+
session. `live` or `expired` stays held. A wright that never returned an
|
|
139
144
|
admitted result leaves unadmitted bytes: task-path changes since its pre-dispatch
|
|
140
145
|
`git diff --name-only` baseline are never cited as built nor discarded, and are
|
|
141
146
|
named in the re-dispatch contract; changes outside task paths stop for the human
|
|
@@ -10,7 +10,7 @@ When an active rite is the controlling caller, Intermediate `NEEDS_REPLAN` (the
|
|
|
10
10
|
token for the workspace's `NEEDS REPLAN` readiness value), a nested phase `STOP`, and a
|
|
11
11
|
routine Plan/Vet `Next step` are not eligible completion states. Autocomplete may
|
|
12
12
|
use the shapes below only after its requested rest point or a shared genuine
|
|
13
|
-
human/safety/access/
|
|
13
|
+
human/safety/access/parked-recovery stop is reached.
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
16
|
Done: <result in one sentence>
|
|
@@ -104,23 +104,20 @@ Record: .devrites/archive/<slug>/ship.md
|
|
|
104
104
|
Claims such as proved, reviewed, sealed, shipped, or complete must point to real
|
|
105
105
|
output or an artifact. A NOT-RUN verification keeps its marker in `Evidence:` or `Open:`
|
|
106
106
|
per [`core.md`](standards/core.md#gate-contract) § Gate contract.
|
|
107
|
-
Use exactly one recommended next action
|
|
108
|
-
terminal agent-owned technical exhaustion, which has no runnable action.
|
|
107
|
+
Use exactly one recommended next action.
|
|
109
108
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
109
|
+
Agent-owned recovery never ends with `Next: none`. Per the
|
|
110
|
+
[retry contract](standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve),
|
|
111
|
+
a spent strategy escalates inline and a fully escalated fingerprint parks while
|
|
112
|
+
independent work continues; with **no safe in-scope diagnostic-amplification seam**,
|
|
113
|
+
escalate or park instead of stopping. A spent consumptive-action authorization plus a
|
|
114
|
+
retained new fingerprint keeps recovering. Once nothing runnable remains, use:
|
|
115
115
|
|
|
116
116
|
```text
|
|
117
|
-
Stopped: Technical recovery
|
|
117
|
+
Stopped: Technical recovery parked
|
|
118
118
|
Blocking: <causal fingerprint and invariant>
|
|
119
|
-
Attempts: <
|
|
120
|
-
|
|
121
|
-
Next:
|
|
119
|
+
Attempts: <each strategy, its class, and decisive reproduction>
|
|
120
|
+
Completed: <independent work finished after parking>
|
|
121
|
+
Next: <invoking command> — reopens parked fingerprints with fresh escalation
|
|
122
122
|
Record: <artifact path>
|
|
123
123
|
```
|
|
124
|
-
|
|
125
|
-
The terminal cursor marker is `Next: none` exactly as shown; a stored `Next step: none`
|
|
126
|
-
names the same exhausted state.
|