devrites 7.3.4 → 7.3.6
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 +34 -0
- package/README.md +1 -1
- package/docs/adr/0039-autocomplete-structural-admission.md +87 -0
- package/docs/adr/0040-early-preparation-admission.md +76 -0
- package/docs/adr/README.md +2 -0
- package/docs/cli.md +103 -5
- package/docs/engine/commands.md +88 -1
- package/engine/internal/lib/claims.go +65 -8
- package/engine/internal/lib/context.go +50 -2
- package/engine/internal/lib/continuation.go +8 -1
- package/engine/internal/lib/dispatch.go +147 -46
- package/engine/internal/lib/frontier.go +139 -59
- package/engine/internal/lib/frontier_controller.go +667 -0
- package/engine/internal/lib/frontier_preparation.go +210 -0
- package/engine/internal/lib/frontier_roadmap.go +168 -0
- package/engine/internal/lib/next.go +14 -2
- package/engine/internal/lib/triggers.go +9 -0
- package/engine/internal/parallel/repository.go +10 -0
- package/pack/.claude/skills/devrites-lib/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +66 -59
- 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/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +66 -59
- 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/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +66 -59
- 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/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +66 -59
- 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/SKILL.md +2 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +66 -59
- 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/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +66 -59
- 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/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-workspaces.md +108 -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 +35 -38
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +66 -59
- 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
|
@@ -39,6 +39,8 @@ lifecycle state from chat or optional `README.md`.
|
|
|
39
39
|
completion states. The host renders the response normally.
|
|
40
40
|
- [`reference/parallel-workspaces.md`](reference/parallel-workspaces.md): explicit
|
|
41
41
|
phase targets, one isolated global controller, and source-owned proof.
|
|
42
|
+
- [Autocomplete loop](../rite-autocomplete/reference/loop.md#early-preparation-admission):
|
|
43
|
+
controller-only early preparation, bounded successor routing and normalization research.
|
|
42
44
|
- [`reference/visual-playbooks/index.md`](reference/visual-playbooks/index.md): progressive
|
|
43
45
|
visual HTML playbook router (load matching ids only; dual-read outline).
|
|
44
46
|
|
|
@@ -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,79 @@ 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
|
-
|
|
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
|
+
At controller cap>1, resolve sequence authority and start actual immediate-
|
|
105
|
+
successor preparation before ordinary local Temper/Define/Plan/Vet context or
|
|
106
|
+
dispatch open, and retain the full Build gate before claims/rounds/history.
|
|
107
|
+
Follow [early preparation](../../rite-autocomplete/reference/loop.md#early-preparation-admission)
|
|
108
|
+
for native launch/start, internal markers and bounded preparatory-only routing.
|
|
109
|
+
Missing targets need native Spec → Clarify → Temper → Define/Plan → affected
|
|
110
|
+
Vet; existing targets need current completed/readiness state, registered pending
|
|
111
|
+
native preparation, or an existing human/dependency hold. Completed live/
|
|
112
|
+
archived successors need no reopening; valid finite tails discharge the
|
|
113
|
+
obligation. Placeholders, reports and unopened waves prove nothing.
|
|
114
|
+
Opt-out, zero opening budget or source human/question holds prevent new
|
|
115
|
+
openings, not existing child preparation or independent work.
|
|
116
|
+
If preparation cannot start, retain `frontier-blocked: <successor> — <constraint>`
|
|
117
|
+
in source `evidence.md`. `frontier-blocked: sequence — <constraint>` may defer
|
|
118
|
+
unresolved historical normalization for valid independent local work. Each row
|
|
119
|
+
names one concrete native-reviewed constraint; keep it visible and revisit on
|
|
120
|
+
change. It discharges only that scheduling obligation, not readiness, malformed
|
|
121
|
+
canonical/AFK data, paths, claims, isolation, proof or human gates. It cannot
|
|
122
|
+
waive already-ready foreign picks or certify preparation/normalization.
|
|
123
|
+
2. Reconcile explicit/AFK capacity via `parallel add --root <repo> --slug
|
|
124
|
+
<controller> --cap N --json -`, stdin `[]`. Below occupied count, freeze every
|
|
125
|
+
new launch, even reserved waves; reconcile/drain and retry without cancelling.
|
|
126
|
+
Recover recorded landing intent; unrelated HEAD/ref movement
|
|
127
|
+
stays blocked. Rerun frontier after changes and execute its exact authorized
|
|
128
|
+
`frontier-select-command`. Local select notices do not broaden picks. Existing
|
|
129
|
+
global slots and paths seed selection; reserve the mixed cohort in create/add
|
|
130
|
+
before separate source-local wave opens. Reservations assemble width, never
|
|
131
|
+
prove actor checkout/start. Ready foreign picks cannot disappear behind local
|
|
132
|
+
`serial:` records. A foreign deferral is exactly
|
|
133
|
+
`serial: child/SLICE-001 — <reason>` in source evidence; bare `SLICE-001` is local.
|
|
134
|
+
Substantive-reason rules apply; native workflow judges the constraint.
|
|
135
|
+
Re-evaluate owning serial rows when constraints change; engine checks exact
|
|
136
|
+
scope, not the truth of a host/resource claim.
|
|
137
|
+
Discharged deferrals are not repeatedly actionable. Foreign work/preparation
|
|
138
|
+
and authority normalization precede local Build; local-only reconciliation,
|
|
139
|
+
repair and picks retain their owning phase, not recursive Autocomplete.
|
|
140
|
+
Zero picks with live writers means planning/wait, not premature Prove.
|
|
141
|
+
3. Apply SOURCE Build readiness/preconditions, exact paths and runtime isolation.
|
|
142
|
+
Early foreign Build always uses isolated workers. On a capable host at cap>1,
|
|
143
|
+
isolate even the first local writer for later refill; persist `--cap N`.
|
|
144
|
+
Add one pick to a retained lease; reopen a complete lease only at unchanged
|
|
145
|
+
control tip, or create from current control after cleanup. Unsupported
|
|
146
|
+
isolation uses qualified serial deferral, truthful local-owner dispatch and
|
|
147
|
+
ordinary ordered handoff, never early same-tree foreign/concurrent writers.
|
|
148
|
+
New dispatch accounts retain opaque `controller_batch` and immutable per-slice
|
|
149
|
+
normalized `admitted_paths`. Retain only each pending writer's lane; returned/
|
|
150
|
+
integrated siblings may release slots for rolling refill. Missing snapshots or
|
|
151
|
+
changed lease paths require actor reconciliation, never backfill from new tasks.
|
|
152
|
+
Exact claim identity/session still matters; release/expiry does not stop an actor.
|
|
153
|
+
Same-session claims allocate space, not extra write authority. None of these
|
|
154
|
+
records proves actual cwd/profile: verify through the native host.
|
|
155
|
+
4. Start every selected native writer before waiting; continue independent native
|
|
156
|
+
planning/review while they run. Protected validation defers unsafe landings,
|
|
157
|
+
not independent preparation. Outside that window, land individually green
|
|
158
|
+
siblings through Build review/proof and `parallel integrate --slice <key>`;
|
|
159
|
+
refill globally. Red/integrate-failed siblings keep slots/paths for repair.
|
|
160
|
+
Durable integration alone satisfies producer edges. After worker-bound
|
|
161
|
+
accounts and source bookkeeping settle, `parallel prune --root <repo> --slug
|
|
162
|
+
<controller>` removes only verified clean integrated checkouts, retaining
|
|
163
|
+
transfer refs/lease identities. Dirty/ignored data keeps its recovery path.
|
|
171
164
|
|
|
172
165
|
## Identity, dispatch and proof
|
|
173
166
|
|
|
@@ -51,6 +51,7 @@ time. No `state.md` run-mode field can drift out of sync.
|
|
|
51
51
|
Presence = AFK active. The file body is optional YAML:
|
|
52
52
|
|
|
53
53
|
```yaml
|
|
54
|
+
mode: autocomplete # optional controller identity; absent = standalone AFK
|
|
54
55
|
max_slices: 10 # whole-workspace writer budget; seeds state.md remaining count
|
|
55
56
|
max_agents: 32 # native agent dispatches in one host activation
|
|
56
57
|
max_minutes: 120 # min; /rite-autocomplete: not a ceiling
|
|
@@ -61,10 +62,13 @@ notify: 'curl -fsS -m 10 -d "$DEVRITES_QID: $DEVRITES_QUESTION" ntfy.sh/my-topic
|
|
|
61
62
|
allow_gates: [advisory, validating] # gate severities AFK auto-handles (auto-picks the recommended option)
|
|
62
63
|
continue_sequence: true # after Seal GO, open the next recorded continuation
|
|
63
64
|
max_workspaces: 5 # workspaces one armed sequence may open
|
|
64
|
-
max_parallel: 10 #
|
|
65
|
+
max_parallel: 10 # global writer cap; explicit --parallel N wins
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
|
|
68
|
+
AFK is read-only after entry. Explicit `/rite-autocomplete` upserts only
|
|
69
|
+
`mode: autocomplete` and, with `--parallel N`, `max_parallel: N`; preserve other
|
|
70
|
+
fields. Missing mode keeps standalone behavior; invalid/duplicate mode fails
|
|
71
|
+
closed. Mode identifies scheduling, never grants phase, safety or Git authority.
|
|
68
72
|
|
|
69
73
|
Outside active `/rite-autocomplete`, the following slice-budget rules apply:
|
|
70
74
|
`max_slices` seeds root-owned `state.md` cursor `afk_slices_remaining`
|
|
@@ -103,10 +107,9 @@ malformed values fail closed; `0` opens nothing.
|
|
|
103
107
|
candidate manifest to cover the whole recorded chain — run
|
|
104
108
|
`devrites-engine state merge-manifest <slug>` before Prove.
|
|
105
109
|
|
|
106
|
-
- Only
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
`/rite-autocomplete`.
|
|
110
|
+
- Only checked recorded continuations qualify, under the
|
|
111
|
+
[sequence grammar](../workspace-artifact-schema.md#what-each-file-owns).
|
|
112
|
+
No next entry or opening budget stops new openings, not existing child work.
|
|
110
113
|
- Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
|
|
111
114
|
with `Next step: /rite-ship` preserved. Local `WIP(<slug>):` checkpoints still
|
|
112
115
|
land ([checkpoint.md](../../../rite-build/reference/checkpoint.md)), so the tree
|
|
@@ -118,15 +121,13 @@ candidate manifest to cover the whole recorded chain — run
|
|
|
118
121
|
`/rite-autocomplete` recovers agent-owned Seal `NO-GO` per
|
|
119
122
|
[stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md), not a handoff.
|
|
120
123
|
|
|
121
|
-
`
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
after a batch completes. **Failing case:** `/rite-autocomplete --parallel 5`
|
|
129
|
-
honors leftover `max_parallel: 1`, or grants five writers per workspace.
|
|
124
|
+
`--parallel N` wins over AFK `max_parallel`, else retained lease capacity on
|
|
125
|
+
resume, else 10. Build's flag never rewrites AFK; explicit controller entry may
|
|
126
|
+
update only mode/capacity. One cap covers all admitted sources, even explicit 1;
|
|
127
|
+
standalone Build stays local. Follow the [global pass](../parallel-workspaces.md#continuous-global-frontier)
|
|
128
|
+
for immediate-successor preparation, narrow `frontier-blocked` deferrals,
|
|
129
|
+
qualified foreign `serial:` handoff and automatic dispatch-return scheduling.
|
|
130
|
+
These are scheduling disclosures, never readiness, isolation, proof or Ship waivers.
|
|
130
131
|
|
|
131
132
|
## Unattended resource envelope
|
|
132
133
|
|
|
@@ -157,8 +158,8 @@ applicable remaining limit. Agent/time/token/cost counters are per native activa
|
|
|
157
158
|
for a new activation. Slice/recovery state and review queue remain durable/recomputed across wakes.
|
|
158
159
|
Persist stops/checkpoints before notification.
|
|
159
160
|
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
Fresh AFK omits expiry and notification/token/cost caps. Standalone post-Vet
|
|
162
|
+
counts may lower slices; preserve existing fields except controller entry above.
|
|
162
163
|
|
|
163
164
|
Delete the file to restore HITL on the next invocation.
|
|
164
165
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# Workspace artifact schema
|
|
2
2
|
|
|
3
3
|
Feature truth: `.devrites/work/<slug>/`, discovered by `state.md`; remnants/archives
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
without path/alias/format migration.
|
|
4
|
+
inactive. Spec's `README.md` is optional. Use canonical filenames. Both released
|
|
5
|
+
cursors read; no `schema` requires `devrites-engine migrate <slug>`.
|
|
6
|
+
`/rite-upgrade`: audit only, no path/alias/format migration.
|
|
8
7
|
|
|
9
8
|
## Contents
|
|
10
9
|
|
|
@@ -59,6 +58,7 @@ accept safe legacy basenames. Ordinary phases never rename them.
|
|
|
59
58
|
| `visual/<name>.outline.md` | required machine dual-read companion for the sibling HTML; outline wins on conflict; never a candidate path | 200 lines (advisory; not gate-checked) |
|
|
60
59
|
| `visual/README.md` | optional index of visuals in the workspace | 80 lines (advisory; not gate-checked) |
|
|
61
60
|
| `decisions.md` | ADR-style `DEC-###` log: status, context, options, decision, consequences, related IDs; optional `Files:`/`Tags:` fields make entries queryable by path or theme; Build's `## Carry-forward constraints` lines (rule, source slice, evidence, `Files:`) | 200 lines |
|
|
61
|
+
| `roadmap.md` | optional sequence authority (below); headerless maps stay legacy | — |
|
|
62
62
|
| `assumptions.md` | assumptions with confidence, owner, validation status | 160 lines |
|
|
63
63
|
| `questions.md` | current `q-YYYY-MM-DD-NNN` (or released `Q-###`) open/resolved questions, gate, answer, impact | 180 lines |
|
|
64
64
|
| `plan.md` | technical approach, slice strategy, canonical shared-contract proof, validation strategy, rollback | 220 lines |
|
|
@@ -85,6 +85,17 @@ accept safe legacy basenames. Ordinary phases never rename them.
|
|
|
85
85
|
For visual pairs load only matching [playbooks](visual-playbooks/index.md); use
|
|
86
86
|
the [required outline headings](visual-playbooks/outline-template.md).
|
|
87
87
|
|
|
88
|
+
Canonical `roadmap.md`: either header claims explicit authority; require both
|
|
89
|
+
`Sequence root: <actual-anchor-slug>` and `Decision: DEC-NNN`, identifying one
|
|
90
|
+
`## DEC-NNN` in owner-local `decisions.md`. One related live/archive owner, one
|
|
91
|
+
`Position`/`Workspace` table: contiguous from 1, unique valid slugs matching all
|
|
92
|
+
related positions/exact successors; no unenrolled nodes. Valid authority supersedes
|
|
93
|
+
history for scheduling; preserve historical bytes. Headerless maps remain legacy.
|
|
94
|
+
Partial/malformed headers, multiple owners, invalid root/decision/table, symlink
|
|
95
|
+
or unreadable maps fail closed, no fallback. Native normalization records approved
|
|
96
|
+
actual identities, preserves history. Engine identity checks grant no semantic
|
|
97
|
+
approval, independence, Build or Ship readiness.
|
|
98
|
+
|
|
88
99
|
## Candidate manifest and bindings
|
|
89
100
|
|
|
90
101
|
`touched-files.md` contains exactly one `## Touched files` heading and exactly
|
|
@@ -141,40 +152,32 @@ The worktree digest is deterministic but is not an atomic filesystem snapshot
|
|
|
141
152
|
against a malicious concurrent same-size rewrite. Ship's exact Git-index scope,
|
|
142
153
|
byte, binding, and secret checks own the final freeze immediately before commit.
|
|
143
154
|
|
|
144
|
-
Only
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
check
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
[feature-sequence split](../../rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget)),
|
|
171
|
-
and history in `state.md` (checkpoint narrative moves verbatim to
|
|
172
|
-
`history/<file>-<YYYYMMDD>.md`, append-only, never a phase read-next, with a one-line
|
|
173
|
-
pointer left behind). A legacy reason-only `Budget override:` line no longer clears a
|
|
174
|
-
gate; `/rite-upgrade` routes it to relocation or the split, and new writers never create one for those two reasons.
|
|
175
|
-
Apply [[`context-hygiene.md`](standards/context-hygiene.md) dispatch packets](standards/context-hygiene.md#dispatch-packets)
|
|
176
|
-
for byte-size checks and lossless retrieval; budget overrides neither rewrite protected
|
|
177
|
-
history nor require loading it all.
|
|
155
|
+
Only structural `Budget override: <=N lines; <reason>` outside fences permits N
|
|
156
|
+
lines/N×400 bytes, N ≤ 2× budget. Reason-only overrides count as none. Budgets:
|
|
157
|
+
400 bytes/line (`state.md`: 120 lines/48 KiB); long lines cannot evade them.
|
|
158
|
+
`orient`: `artifact_budgets` (lines/bytes/over/override), `bulk_files` (non-canonical
|
|
159
|
+
files >64 KiB). Writers check limits before returning; no local script assumed.
|
|
160
|
+
|
|
161
|
+
`check readiness`/`check seal`/`state append` block present budgeted artifacts
|
|
162
|
+
(optional/`drift.md` included) at ≥1.5× lines or bytes without covering override.
|
|
163
|
+
Report exact measurement and remedies: lossless relocation (`/rite-plan revise`),
|
|
164
|
+
split (`/rite-plan course-correct`), bounded override. Past 2×: relocation/split
|
|
165
|
+
only; below 1.5×: advisory in `orient`.
|
|
166
|
+
Proof ledgers (`evidence.md`, `browser-evidence.md`, `touched-files.md`) alone may
|
|
167
|
+
grow unbounded, always advisory; manifest limits still apply. Read standalone
|
|
168
|
+
binding, `EVID-###`/section index (`grep -n`), then candidate AC/slice bodies.
|
|
169
|
+
Inspect no-in-scope-ID entries as anomalies. Whole-file reads require `orient`
|
|
170
|
+
within budget; Seal checks literal `AC-###` completeness, reader judges quality.
|
|
171
|
+
|
|
172
|
+
Slice/AC count and cursor history never justify durable overrides. Decomposition
|
|
173
|
+
overflow (`tasks.md`/`plan.md`/`traceability.md`) requires a
|
|
174
|
+
[feature-sequence split](../../rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget).
|
|
175
|
+
Move `state.md` narrative verbatim to append-only `history/<file>-<YYYYMMDD>.md`;
|
|
176
|
+
leave a one-line pointer; history never enters phase read-next. Legacy reason-only
|
|
177
|
+
overrides cannot clear gates: `/rite-upgrade` routes relocation/split; new writers
|
|
178
|
+
never override these reasons. Use
|
|
179
|
+
[dispatch packets](standards/context-hygiene.md#dispatch-packets)
|
|
180
|
+
for byte checks/lossless retrieval. Overrides neither rewrite nor require loading protected history.
|
|
178
181
|
|
|
179
182
|
## Anchored notes
|
|
180
183
|
|
|
@@ -86,48 +86,45 @@ With `--lookahead` (trigger `lookahead`), follow
|
|
|
86
86
|
[`lookahead.md`](reference/lookahead.md) instead of the steps below: plan the
|
|
87
87
|
next sequence continuation through Vet in a second session, then stop.
|
|
88
88
|
|
|
89
|
-
1. **Orient and parse.** Resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
[
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
`
|
|
97
|
-
|
|
89
|
+
1. **Orient and parse.** Resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding).
|
|
90
|
+
Read its existing cursor; a fresh idea starts empty at step 2. Normalize this
|
|
91
|
+
invocation to idea, `ship_preflight: yes|no`, `max_slices: unlimited`,
|
|
92
|
+
`parallel: N|default`, `profile: standard|full`, `cross_model: yes|no`.
|
|
93
|
+
Apply the loop's [AFK contract](reference/loop.md#arm-afk-once) to an existing
|
|
94
|
+
sentinel: upsert `mode: autocomplete`, plus capacity only for explicit
|
|
95
|
+
`--parallel N`. Mode identifies this controller, never grants authority.
|
|
96
|
+
Run `devrites-engine frontier <source>` before local recovery; execute the
|
|
97
|
+
[global pass](../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier).
|
|
98
|
+
Reconcile blocked/terminal cursors against retained action evidence and exact
|
|
99
|
+
fingerprint attempts; resume offline recovery below its cap. This explicit
|
|
100
|
+
invocation reopens parked fingerprints. Reconstruct missing return cursors
|
|
101
|
+
only from the current phase and approved `test-plan.md`/evidence action.
|
|
98
102
|
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"lifecycle cursor encounters admitted set or resumable journal","action":"invoke classifier; execute returned route internally","return":"saved phase/action; zero intermediate reply"} -->
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
handoff <source> --resume` first for that selected source and open only the
|
|
103
|
-
`read_next` artifacts it names, per [`context-hygiene.md`](../devrites-lib/reference/standards/context-hygiene.md) § Compaction fallback.
|
|
104
|
-
Normalize current arguments to idea, `ship_preflight: yes|no`,
|
|
105
|
-
`max_slices: unlimited`, `parallel: N|default`, `profile: standard|full`,
|
|
106
|
-
and `cross_model: yes|no`.
|
|
107
|
-
**Completion:** arguments and source authority are unambiguous; local cursor and pending handles remain intact.
|
|
103
|
+
After compaction/resume, run `devrites-engine handoff <source> --resume`
|
|
104
|
+
and open its `read_next` artifacts per [context hygiene](../devrites-lib/reference/standards/context-hygiene.md).
|
|
105
|
+
**Completion:** arguments/source are unambiguous; local cursor and handles survive.
|
|
108
106
|
2. **Specify and clarify.** Run `devrites-interview`, `/rite-spec`, and
|
|
109
107
|
`/rite-clarify` as one window. `open` material coverage never arms
|
|
110
108
|
AFK. **Completion:** `Decision coverage: CLEAR` is durable.
|
|
111
|
-
3. **Arm AFK once.** Apply the loop
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
**Completion:** loop reaches Seal GO or persists a valid stop before any later phase.
|
|
109
|
+
3. **Arm AFK once.** Apply the [one-write AFK contract](reference/loop.md#arm-afk-once):
|
|
110
|
+
create only after clarity; explicit controller entry upserts
|
|
111
|
+
`mode: autocomplete` and, only with `--parallel N`, `max_parallel: N`.
|
|
112
|
+
Preserve all other fields; reject malformed/duplicate mode rather than
|
|
113
|
+
silently becoming standalone AFK. **Completion:** valid controller identity
|
|
114
|
+
and capacity are durable; no gate or Git authority changed.
|
|
115
|
+
**Failing case:** leftover `max_parallel: 1` after explicit `--parallel 5`.
|
|
116
|
+
4. **Drive phases.** Execute [the loop](reference/loop.md): Spec → Clarify →
|
|
117
|
+
Temper → Define → Vet → Build → Prove → Polish → Review → Seal. Durable files
|
|
118
|
+
carry state. Apply the mutable post-vet budget before Build. Consume fresh scheduling
|
|
119
|
+
emitted by recorded `dispatch return`; rerun frontier after further changes
|
|
120
|
+
and before waits. Before ordinary local Temper/Define/Plan/Vet context/dispatch,
|
|
121
|
+
resolve sequence authority and start actual immediate-successor preparation
|
|
122
|
+
under [early admission](reference/loop.md#early-preparation-admission),
|
|
123
|
+
or retain the global pass's concrete deferral; keep the full Build gate.
|
|
124
|
+
Derive initial preparatory-only routing before any marked wave; do not recurse
|
|
125
|
+
through the roadmap. Preserve local cursors, protected validation windows and
|
|
126
|
+
every admission/isolation gate; pass Build the resolved global cap.
|
|
127
|
+
**Completion:** Seal GO or a durable valid stop precedes later phases.
|
|
131
128
|
5. **Apply stops.** At every gate use
|
|
132
129
|
[stop-conditions.md](reference/stop-conditions.md). A `blocked` label alone is not a stop condition:
|
|
133
130
|
route agent-owned red results through bounded recovery.
|