devrites 7.3.4 → 7.3.5
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 +18 -0
- package/README.md +1 -1
- package/docs/adr/0039-autocomplete-structural-admission.md +87 -0
- package/docs/adr/README.md +1 -0
- package/docs/cli.md +103 -5
- package/docs/engine/commands.md +46 -1
- package/engine/internal/lib/claims.go +65 -8
- package/engine/internal/lib/continuation.go +6 -1
- package/engine/internal/lib/dispatch.go +78 -32
- package/engine/internal/lib/frontier.go +103 -47
- package/engine/internal/lib/frontier_controller.go +652 -0
- package/engine/internal/lib/frontier_roadmap.go +168 -0
- package/engine/internal/lib/next.go +9 -0
- package/engine/internal/parallel/repository.go +10 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +17 -15
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +17 -15
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +17 -15
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +17 -15
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +17 -15
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +17 -15
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-workspaces.md +106 -115
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +18 -17
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +41 -38
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +33 -38
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +46 -52
- package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +28 -28
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +17 -15
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ Autocomplete chains existing `/rite-*` workflows without routine-phase pauses. A
|
|
|
12
12
|
## Arm AFK once
|
|
13
13
|
|
|
14
14
|
```yaml
|
|
15
|
+
mode: autocomplete
|
|
15
16
|
allow_gates: [advisory, validating]
|
|
16
17
|
# max_slices / max_agents / max_minutes / max_review_queue omitted: unlimited
|
|
17
18
|
# continue_sequence: false # opt out; default chains after Seal GO
|
|
@@ -22,18 +23,15 @@ allow_gates: [advisory, validating]
|
|
|
22
23
|
# notify: "<cmd>"
|
|
23
24
|
```
|
|
24
25
|
|
|
25
|
-
Read existing
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
It is otherwise read-only: never rewrite it after Vet or reset it on resume. Leftover `expires_at` is ignored
|
|
35
|
-
and never rewritten. **Failing case:** leftover `max_parallel: 1` keeps the run
|
|
36
|
-
serial after `--parallel 5`.
|
|
26
|
+
Read existing AFK first. On each explicit Autocomplete invocation, upsert only
|
|
27
|
+
`mode: autocomplete` and, if supplied, `max_parallel: N`; preserve other fields.
|
|
28
|
+
Missing mode retains standalone AFK behavior until that explicit entry. Invalid
|
|
29
|
+
or duplicate mode fails closed; mode grants neither phase nor action authority.
|
|
30
|
+
If absent, create AFK after clarity with the mode above; capacity is explicit N,
|
|
31
|
+
else retained global lease capacity, else 10. Preserve existing capacity without
|
|
32
|
+
the flag. Nested phases/wakes leave AFK unchanged: no `max_slices` flag seeding,
|
|
33
|
+
expiry rewrite or reset. Legacy slice/agent/time/review limits do not stop this
|
|
34
|
+
controller. **Failing case:** `--parallel 5` retains `max_parallel: 1`.
|
|
37
35
|
|
|
38
36
|
### Derive the mutable post-vet budget
|
|
39
37
|
|
|
@@ -43,15 +41,15 @@ remaining. AFK configuration itself stays unchanged.
|
|
|
43
41
|
|
|
44
42
|
### Admit each unattended cycle
|
|
45
43
|
|
|
46
|
-
Before each phase,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
Before each phase, fan-out, recovery or writer: run cheap readiness and reject
|
|
45
|
+
overlap. Before Build admission, execute the shared immediate-successor
|
|
46
|
+
preparation/deferral and global cohort rules; local readiness alone is insufficient.
|
|
47
|
+
Count every leaf result. Explicit activations reset activation-local counters,
|
|
48
|
+
not durable slice/recovery state. Pass resolved `--parallel N` to
|
|
49
|
+
[Build](skill://rite-build/reference/output.md#caller-owned-continuation).
|
|
50
|
+
Ignored legacy budgets and local serial constraints are not whole-run stops.
|
|
51
|
+
Invented ceilings on dispatches, waits, tool calls or turns cannot stop execution;
|
|
52
|
+
human instructions to pause or limit scope still bind.
|
|
55
53
|
Resolve ranked validating/blocking picks via `devrites-engine state resolve`;
|
|
56
54
|
never hand `/rite-resolve` to the user. Escalating, irreversible-risk, access, blocking
|
|
57
55
|
without recommendations, and Seal judgment (`slice: seal`) still pause.
|
|
@@ -74,12 +72,12 @@ Workspace files, not chat, carry state. Read/execute each phase skill:
|
|
|
74
72
|
| 10 | `/rite-seal` | GO/NO-GO; no Git |
|
|
75
73
|
| 11 | `/rite-ship` | only after GO; `--ship` never authorizes Git; stop at literal-GO/native approval |
|
|
76
74
|
|
|
77
|
-
At phase entry, before
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
At phase entry, before local recovery or waits, execute the
|
|
76
|
+
[global pass](skill://devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier).
|
|
77
|
+
Consume the fresh frontier emitted after a recorded `dispatch return`; after
|
|
78
|
+
landing, planning/artifact changes or capacity updates, rerun frontier. Execute
|
|
79
|
+
authorized preparation/selection, preserving pending handles, local cursors and
|
|
80
|
+
protected validation windows. Reporting or creating a placeholder is not progress.
|
|
83
81
|
|
|
84
82
|
Check [stop-conditions.md](stop-conditions.md) before advancing. Discard stale
|
|
85
83
|
pass evidence after source edits. Re-read the selected source before each phase per [phase target binding](skill://devrites-lib/reference/parallel-workspaces.md#phase-target-binding). On a cold resume or
|
|
@@ -92,19 +90,14 @@ floor; `--update` never excuses an unreconciled regression.
|
|
|
92
90
|
|
|
93
91
|
## Sequence continuation
|
|
94
92
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
[`parallel-workspaces.md`](skill://devrites-lib/reference/parallel-workspaces.md)
|
|
104
|
-
while the owner is still running: honor claims, repair/re-Vet stale readiness,
|
|
105
|
-
and admit only explicitly independent/dependency-satisfied isolated work.
|
|
106
|
-
ACTIVE changes to the child only at normal ordered handoff after the owner Seal;
|
|
107
|
-
resume its durable cursor without a second controller or another opening charge.
|
|
93
|
+
With a recorded successor, opening budget and no opt-out, Seal GO stays internal:
|
|
94
|
+
leave the owner sealed/unshipped with `/rite-ship`, then resume the prepared child
|
|
95
|
+
or invoke its authorized native Spec. Sequence authority follows the
|
|
96
|
+
[shared grammar](skill://devrites-lib/reference/workspace-artifact-schema.md#what-each-file-owns),
|
|
97
|
+
not invented slugs. Charge an opening once; preparation may pipeline before Seal,
|
|
98
|
+
one immediate successor per admitted source, not the whole roadmap at once.
|
|
99
|
+
Reuse the child's durable cursor and controller. ACTIVE changes only at normal
|
|
100
|
+
ordered handoff; early planning or isolated independent Build does not advance it.
|
|
108
101
|
|
|
109
102
|
Before invoking a continuation, require durable `state.md`
|
|
110
103
|
`sequence_workspaces_remaining > 0`; if absent, first write
|
|
@@ -158,18 +151,19 @@ and park it after three escalations while independent work continues.
|
|
|
158
151
|
|
|
159
152
|
## Continuous caller obligation
|
|
160
153
|
|
|
161
|
-
|
|
162
|
-
only
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
`
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
154
|
+
After a green slice or phase, execute its recorded `next_action` internally;
|
|
155
|
+
reply only at completion or a genuine stop.
|
|
156
|
+
|
|
157
|
+
Before replying, run `devrites-engine check continuation`: `required` means
|
|
158
|
+
consume `invoke:` now; only `clear` permits a final reply. Under controller mode,
|
|
159
|
+
actionable normalization, successor preparation or foreign work precedes local
|
|
160
|
+
Build. Local-only reconciliation, repair, picks or discharged scheduling deferrals
|
|
161
|
+
retain the owning phase edge, not recursive `/rite-autocomplete`.
|
|
162
|
+
Agent-owned NEEDS_REPLAN, budgeted Critical/Important recovery, independent work
|
|
163
|
+
or a recommended blocking answer stays internal. Invoke repair or `state resolve`
|
|
164
|
+
unless the [resolver-failure stop](stop-conditions.md#other-stop-classes) applies.
|
|
165
|
+
A distinct invariant is progress, not exhaustion; repeated failed resolver calls
|
|
166
|
+
without correction are not progress.
|
|
173
167
|
|
|
174
168
|
The number of completed repair/Vet cycles, context pressure, compaction, session
|
|
175
169
|
duration, and nested completion never turn checkpoints into handoffs. Persist and
|
|
@@ -28,24 +28,27 @@ Fully escalated fingerprints park unless remaining owner is human.
|
|
|
28
28
|
|
|
29
29
|
## Not stops: internal technical routing
|
|
30
30
|
|
|
31
|
-
AFK
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
31
|
+
For AFK `status=running`, consume an internal phase edge. In
|
|
32
|
+
`mode: autocomplete`, actionable global normalization, preparation or foreign
|
|
33
|
+
work takes priority over local Build; local-only picks do not recurse through
|
|
34
|
+
Autocomplete. Source human/Ship holds remain binding, while independent
|
|
35
|
+
authorized planning can continue. `clear` is reply permission, not Ship approval.
|
|
36
|
+
|
|
37
|
+
A preparation refusal routes native work or a narrow disclosed scheduling
|
|
38
|
+
deferral under the [global pass](skill://devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier).
|
|
39
|
+
Deferral removes only its named scheduling obligation from repeated continuation:
|
|
40
|
+
it neither makes a placeholder prepared nor waives readiness, malformed authority,
|
|
41
|
+
claims, isolation, proof or human gates. Qualified foreign serial handoff is a
|
|
42
|
+
separate rule. Revisit deferrals when their constraint changes.
|
|
43
|
+
|
|
44
|
+
Agent-owned NEEDS_REPLAN or nested STOP persists the return cursor and invokes
|
|
45
|
+
Plan repair, affected Recovery Vet, remediation and proof inline. Three
|
|
46
|
+
no-progress corrections spend that fingerprint's strategy; escalate through
|
|
47
|
+
shared root cause, diagnostic amplification and boundary redesign without asking.
|
|
48
|
+
After three escalations, park it and finish independent work. Preserve attempts;
|
|
49
|
+
resume through `/rite-autocomplete`, not a routine phase command. A new explicit
|
|
50
|
+
invocation reopens parked fingerprints; wakes/compaction do not. Closure is
|
|
51
|
+
progress; a distinct Critical/Important invariant gets its own cap.
|
|
49
52
|
|
|
50
53
|
Spent consumptive-action authorization is not technical-recovery exhaustion.
|
|
51
54
|
It blocks another execution; retained new Critical/Important evidence still
|
|
@@ -74,14 +77,10 @@ Without a safe seam, escalate or park; only a real human/risk/scope gate stops f
|
|
|
74
77
|
- **Clarify:** material `open`/unowned decision coverage or a
|
|
75
78
|
low-confidence high-consequence assumption. Continue the initial interview;
|
|
76
79
|
never arm AFK early.
|
|
77
|
-
- **Seal:**
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
can close, a finding with a fix direction, a missing `review.md` verdict), then
|
|
82
|
-
re-enter Seal. The unattended `N` to accepting Important risks means repair, not
|
|
83
|
-
stop. Stop only for blockers that need a human: accepting a risk, changing scope
|
|
84
|
-
or an acceptance criterion, or access. Record each one as a question.
|
|
80
|
+
- **Seal:** NO-GO never rounds up to GO. Recover agent-owned missing/unbound proof,
|
|
81
|
+
reviewer gaps and findings, then re-enter Seal; declining Important-risk
|
|
82
|
+
acceptance means repair. A human-owned risk, scope/acceptance change or access
|
|
83
|
+
blocker remains a question. A first repairable NO-GO is not a handoff.
|
|
85
84
|
- **Reslice:** execute its marked action before deciding continue/stop.
|
|
86
85
|
- **Slice budget:** do not stop on `--max-slices`. Leftover
|
|
87
86
|
pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count
|
|
@@ -91,8 +90,9 @@ Without a safe seam, escalate or park; only a real human/risk/scope gate stops f
|
|
|
91
90
|
another session blocks only work on those paths; run independent work, re-check,
|
|
92
91
|
and stop only when nothing independent remains. `released`/`dead` claims are
|
|
93
92
|
reconciled per [§ Cancellation](skill://devrites-lib/reference/parallel-dispatch.md#cancellation-and-terminal-reconciliation).
|
|
94
|
-
- **Resource envelope:** overlapping
|
|
95
|
-
|
|
93
|
+
- **Resource envelope:** overlapping controllers, missing AFK after arm or invalid/
|
|
94
|
+
duplicate mode fail closed. Ignored slice/agent/time/review ceilings do not stop
|
|
95
|
+
Autocomplete; mode itself grants no authority.
|
|
96
96
|
- **Confidence:** intent still cannot become testable acceptance after interview.
|
|
97
97
|
- **Repeated failure:** not a stop. Escalate; fully escalated fingerprints park.
|
|
98
98
|
Stop only when no independent work remains.
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
Opt-in only. Default `/rite-build` stays [`one-slice-cycle.md`](one-slice-cycle.md).
|
|
6
6
|
|
|
7
|
-
Autocomplete
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
stays
|
|
11
|
-
|
|
7
|
+
Autocomplete executes the shared [global pass](skill://devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier)
|
|
8
|
+
before local writers: actual immediate-successor preparation or narrow disclosed
|
|
9
|
+
deferral, then global cohort admission. Consume fresh dispatch-return scheduling.
|
|
10
|
+
Standalone Build stays local; select notices never broaden its picks. A placeholder
|
|
11
|
+
is not preparation; one successor pipelines safely without preparing the whole roadmap.
|
|
12
12
|
|
|
13
13
|
## Entry
|
|
14
14
|
|
|
@@ -17,13 +17,15 @@ expand its picks. Autocomplete consumes `frontier-select-command`, then this lif
|
|
|
17
17
|
| omitted / `--parallel 1` | Serial one-slice |
|
|
18
18
|
| `--parallel N` (**2≤N≤10**) | N is a **cap**, not a quota: run the largest eligible set ≤ N |
|
|
19
19
|
| non-integer / `N≤0` / `N>10` | Hard refuse (no silent clamp) |
|
|
20
|
-
| Autocomplete `--parallel N` |
|
|
20
|
+
| Autocomplete `--parallel N` | Global cap for this run; controller entry upserts mode and explicit capacity, preserving other AFK fields |
|
|
21
21
|
| Autocomplete, no flag | Same path, cap from sentinel `max_parallel` else 10; serial only when ineligible |
|
|
22
22
|
|
|
23
23
|
AFK caps `N`. Charge each green sibling once after its successful landing;
|
|
24
24
|
rejected/unlanded work charges zero, without undoing prior landed accounting.
|
|
25
25
|
`parallel create` refuses another retained repository controller.
|
|
26
|
-
|
|
26
|
+
Cold resume reconciles retained repair artifacts by exact fingerprint. A blocked
|
|
27
|
+
label, round count or distinct finding alone does not stop: establish current
|
|
28
|
+
review coverage under step 4 and repair unless a genuine stop remains.
|
|
27
29
|
|
|
28
30
|
## Dynamic selection and re-batching
|
|
29
31
|
|
|
@@ -89,14 +91,14 @@ Before `parallel select`, add each slice's hidden write surfaces (list owner:
|
|
|
89
91
|
snapshot directory, formatter sweep — and compare paths case-folded
|
|
90
92
|
(`src/Api.ts` = `src/api.ts`); `--from-plan` adds the manifest/lockfile for a package.
|
|
91
93
|
Slices colliding on either run serially; the rest
|
|
92
|
-
stay eligible. Record `serial: <ids> — <surface>` in `evidence.md`.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
stay eligible. Record `serial: <ids> — <surface>` in `evidence.md`. AFK cap≥2
|
|
95
|
+
refuses narrower Build-wright waves until other picks are started/reserved or
|
|
96
|
+
each skipped pick has a substantive serial reason. Repairing/already-started/in-wave
|
|
97
|
+
alone is not a reason. Controller admission also includes ready foreign picks:
|
|
98
|
+
only exact `serial: child/SLICE-001 — <reason>` can defer that foreign lane; bare
|
|
99
|
+
`SLICE-001` is local. Preparation `frontier-blocked:` cannot waive ready Build
|
|
100
|
+
picks or safety gates. Qualified unsupported-isolation deferral preserves truthful
|
|
101
|
+
owner dispatch/ordered handoff, never early same-tree foreign Build. HITL stays unchanged.
|
|
100
102
|
|
|
101
103
|
## Control vs workers
|
|
102
104
|
|
|
@@ -12,65 +12,45 @@ candidate bindings and proof belong to that source. A missing source artifact
|
|
|
12
12
|
routes its prerequisite; it never falls back to another workspace's artifacts.
|
|
13
13
|
An explicit valid workspace does not require ACTIVE to name it or to exist.
|
|
14
14
|
|
|
15
|
-
Carry
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
workspace path, not a slug. Apply this environment only to that invocation;
|
|
22
|
-
neither a fabricated resolver slug argument nor process-global environment
|
|
23
|
-
mutation is routing. Use the same source binding for nested recommended answers.
|
|
24
|
-
|
|
25
|
-
Preparing or running an admitted future source preserves the ordered owner's
|
|
26
|
-
ACTIVE and retained writer/controller. Ordinary standalone Spec still sets ACTIVE;
|
|
27
|
-
explicit `--lookahead` still stops at planning/Vet and never becomes a Build root.
|
|
15
|
+
Carry SOURCE through every phase, nested resolution and cold handoff. Use existing
|
|
16
|
+
slug arguments (`context <source>`, `handoff <source> --resume`). Qid-only
|
|
17
|
+
`state resolve` retains its argv: bind only that invocation's `DEVRITES_ROOT` and
|
|
18
|
+
`DEVRITES_WORKSPACE` as above, never a fabricated resolver slug or process-global
|
|
19
|
+
change. Early future work preserves ACTIVE and the retained controller.
|
|
20
|
+
Standalone Spec still sets ACTIVE; `--lookahead` remains planning/Vet-only.
|
|
28
21
|
Target binding changes neither phase approval nor Ship authority.
|
|
29
22
|
|
|
30
23
|
## Authority and admission
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
validate each producer reference and graph, including safely archived predecessors.
|
|
62
|
-
Cycles, unknown/malformed references and shared unisolated runtime withhold unsafe
|
|
63
|
-
candidates. A waiting producer withholds only its consumers, not unrelated work.
|
|
64
|
-
|
|
65
|
-
Missing declarations in legacy future plans need narrow Plan repair + affected
|
|
66
|
-
Vet before early admission; existing local/standalone plans remain valid. Absent,
|
|
67
|
-
incomplete, stale or human-blocked future work is a planning/repair/blocked
|
|
68
|
-
opportunity, not a fatal pool failure. Retain every readiness reason: fixing stale
|
|
69
|
-
bindings does not waive a coexisting human/access/safety gate. Re-Vet affected
|
|
70
|
-
predecessor assumptions, then record current bindings; never auto-refresh a digest.
|
|
71
|
-
Read archived predecessors in place through the engine's referenced read-only
|
|
72
|
-
readiness lookup. Never copy an archive into live `work/` merely to read/hash it:
|
|
73
|
-
that can resurrect stale controller leases and claims.
|
|
25
|
+
Keep ACTIVE on the ordered owner until normal handoff. One repository-global
|
|
26
|
+
lease owns control-tip mutations; recover its controller, source identities and
|
|
27
|
+
handles before more admission, including after handoff. No second Build root.
|
|
28
|
+
`--parallel N` caps active writers globally: explicit N, else AFK `max_parallel`,
|
|
29
|
+
else retained capacity on resume, else 10. One means one writer total. Review
|
|
30
|
+
queues retain host/reviewer caps; capacity or Reslice never waives fanout or proof.
|
|
31
|
+
|
|
32
|
+
Only checked source-related sequence membership qualifies; user-mentioned or
|
|
33
|
+
unrelated directories are not enrollment. Current canonical `roadmap.md` follows
|
|
34
|
+
[the grammar](workspace-artifact-schema.md#what-each-file-owns): one related live/
|
|
35
|
+
archived owner, actual chain root, same-owner unique decision and contiguous
|
|
36
|
+
position table. It supersedes historical tables for scheduling without rewriting
|
|
37
|
+
them. Invalid canonical authority fails closed; absence retains conservative
|
|
38
|
+
legacy resolution. Honor opt-out, opening budgets and human bounds; charge each
|
|
39
|
+
opening once. Lookahead claims retain artifacts through terminal reconciliation.
|
|
40
|
+
Root alone writes workspace artifacts; leaves never write `.devrites/**`.
|
|
41
|
+
|
|
42
|
+
Native Plan/Vet must bind CURRENT readiness, contract, producer assumptions and
|
|
43
|
+
explicit future `Workspace dependencies` per [slice grammar](workspace-artifact-schema.md#canonical-slice-grammar).
|
|
44
|
+
`none` is a native declaration, not an inference from paths, local dependencies,
|
|
45
|
+
digests or green branches. Only durable BUILT/integrated checkpoints satisfy
|
|
46
|
+
validated producer references/graphs, including safely archived predecessors.
|
|
47
|
+
Unknown references, cycles and shared unisolated runtime withhold unsafe slices;
|
|
48
|
+
waiting producers withhold consumers, not independent work. Legacy future plans
|
|
49
|
+
need narrow Plan repair/affected Vet; standalone/local plans retain their rules.
|
|
50
|
+
Per-slice withheld diagnostics do not block other returned eligible IDs;
|
|
51
|
+
workspace-wide readiness failures still withhold the source.
|
|
52
|
+
Preserve coexisting stale-readiness and human/access/safety reasons. Re-Vet changed
|
|
53
|
+
assumptions; never auto-refresh digests or copy archives into live `work/`.
|
|
74
54
|
|
|
75
55
|
## Recover avoidable serialization
|
|
76
56
|
|
|
@@ -108,66 +88,77 @@ reslicing unchanged work.
|
|
|
108
88
|
|
|
109
89
|
## Continuous global frontier
|
|
110
90
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
controller
|
|
117
|
-
|
|
118
|
-
1.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
For
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
91
|
+
Run this pass at phase entry, before local recovery/waits/reply, and after landing
|
|
92
|
+
or planning changes. A persisted `dispatch return` emits fresh scheduling after
|
|
93
|
+
locks release, even when later claim release fails: retain the nonzero failure
|
|
94
|
+
and claim exclusion. Exact successful claim reconciliation also refreshes;
|
|
95
|
+
rejected/unpersisted returns do not. Ordinary status stays read-only. Keep local
|
|
96
|
+
return cursors and native handles: one controller, not another phase or queue.
|
|
97
|
+
|
|
98
|
+
1. Read `devrites-engine frontier <source>`, then its selected `frontier-authority`
|
|
99
|
+
paths before preparation. Follow the actual owner/decision, including archives;
|
|
100
|
+
local phase context is not a reason to create a second owner. Execute native actions.
|
|
101
|
+
Normalize unresolved legacy sequence authority through its owning decision/
|
|
102
|
+
phase. Positive budget, ambiguous prose or path disjointness grants nothing.
|
|
103
|
+
A current invalid canonical map is an error, never a fallback to history.
|
|
104
|
+
For controller mode at cap>1, before a new Build-wright wave writes claims,
|
|
105
|
+
rounds or history, start preparation of that source's immediate recorded
|
|
106
|
+
successor. Missing targets need native Spec → Clarify → Temper → Define/Plan →
|
|
107
|
+
affected Vet; existing targets need completed native state, actual pending
|
|
108
|
+
planning/review handles, current Build-ready binding, or a human/dependency hold.
|
|
109
|
+
Completed live/archived successors need no reopening; retained actors still bind.
|
|
110
|
+
A placeholder, prose claim, unopened wave or unrelated reviewer is insufficient.
|
|
111
|
+
Pipeline one successor per admitted source; preparing the whole roadmap first
|
|
112
|
+
is unnecessary. Opt-out, zero opening budget or source human/question holds
|
|
113
|
+
prevent new openings, not already-created child planning or independent work.
|
|
114
|
+
If preparation cannot start, retain `frontier-blocked: <successor> — <constraint>`
|
|
115
|
+
in source `evidence.md`. `frontier-blocked: sequence — <constraint>` may defer
|
|
116
|
+
unresolved historical normalization for valid independent local work. Each row
|
|
117
|
+
names one concrete native-reviewed constraint; keep it visible and revisit on
|
|
118
|
+
change. It discharges only that scheduling obligation, not readiness, malformed
|
|
119
|
+
canonical/AFK data, paths, claims, isolation, proof or human gates. It cannot
|
|
120
|
+
waive already-ready foreign picks or certify preparation/normalization.
|
|
121
|
+
2. Reconcile explicit/AFK capacity via `parallel add --root <repo> --slug
|
|
122
|
+
<controller> --cap N --json -`, stdin `[]`. Below occupied count, freeze every
|
|
123
|
+
new launch, even reserved waves; reconcile/drain and retry without cancelling.
|
|
124
|
+
Recover recorded landing intent; unrelated HEAD/ref movement
|
|
125
|
+
stays blocked. Rerun frontier after changes and execute its exact authorized
|
|
126
|
+
`frontier-select-command`. Local select notices do not broaden picks. Existing
|
|
127
|
+
global slots and paths seed selection; reserve the mixed cohort in create/add
|
|
128
|
+
before separate source-local wave opens. Reservations assemble width, never
|
|
129
|
+
prove actor checkout/start. Ready foreign picks cannot disappear behind local
|
|
130
|
+
`serial:` records. A foreign deferral is exactly
|
|
131
|
+
`serial: child/SLICE-001 — <reason>` in source evidence; bare `SLICE-001` is local.
|
|
132
|
+
Substantive-reason rules apply; native workflow judges the constraint.
|
|
133
|
+
Re-evaluate owning serial rows when constraints change; engine checks exact
|
|
134
|
+
scope, not the truth of a host/resource claim.
|
|
135
|
+
Discharged deferrals are not repeatedly actionable. Foreign work/preparation
|
|
136
|
+
and authority normalization precede local Build; local-only reconciliation,
|
|
137
|
+
repair and picks retain their owning phase, not recursive Autocomplete.
|
|
138
|
+
Zero picks with live writers means planning/wait, not premature Prove.
|
|
139
|
+
3. Apply SOURCE Build readiness/preconditions, exact paths and runtime isolation.
|
|
140
|
+
Early foreign Build always uses isolated workers. On a capable host at cap>1,
|
|
141
|
+
isolate even the first local writer for later refill; persist `--cap N`.
|
|
142
|
+
Add one pick to a retained lease; reopen a complete lease only at unchanged
|
|
143
|
+
control tip, or create from current control after cleanup. Unsupported
|
|
144
|
+
isolation uses qualified serial deferral, truthful local-owner dispatch and
|
|
145
|
+
ordinary ordered handoff, never early same-tree foreign/concurrent writers.
|
|
146
|
+
New dispatch accounts retain opaque `controller_batch` and immutable per-slice
|
|
147
|
+
normalized `admitted_paths`. Retain only each pending writer's lane; returned/
|
|
148
|
+
integrated siblings may release slots for rolling refill. Missing snapshots or
|
|
149
|
+
changed lease paths require actor reconciliation, never backfill from new tasks.
|
|
150
|
+
Exact claim identity/session still matters; release/expiry does not stop an actor.
|
|
151
|
+
Same-session claims allocate space, not extra write authority. None of these
|
|
152
|
+
records proves actual cwd/profile: verify through the native host.
|
|
153
|
+
4. Start every selected native writer before waiting; continue independent native
|
|
154
|
+
planning/review while they run. Protected validation defers unsafe landings,
|
|
155
|
+
not independent preparation. Outside that window, land individually green
|
|
156
|
+
siblings through Build review/proof and `parallel integrate --slice <key>`;
|
|
157
|
+
refill globally. Red/integrate-failed siblings keep slots/paths for repair.
|
|
158
|
+
Durable integration alone satisfies producer edges. After worker-bound
|
|
159
|
+
accounts and source bookkeeping settle, `parallel prune --root <repo> --slug
|
|
160
|
+
<controller>` removes only verified clean integrated checkouts, retaining
|
|
161
|
+
transfer refs/lease identities. Dirty/ignored data keeps its recovery path.
|
|
171
162
|
|
|
172
163
|
## Identity, dispatch and proof
|
|
173
164
|
|