devrites 7.3.0 → 7.3.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 +32 -0
- package/README.md +19 -3
- package/bin/devrites.mjs +31 -5
- package/docs/engine/commands.md +41 -3
- package/docs/release.md +5 -2
- package/engine/Makefile +2 -2
- package/engine/internal/acceptance/newfinal_origins.go +39 -0
- package/engine/internal/acceptance/preconditions.go +17 -11
- package/engine/internal/acceptance/transcript.go +23 -4
- package/engine/internal/gate/gate.go +8 -6
- package/engine/internal/gate/readiness_binding.go +54 -24
- package/engine/internal/install/apply.go +36 -21
- package/engine/internal/install/binary.go +67 -9
- package/engine/internal/install/install.go +63 -21
- package/engine/internal/install/manifest.go +4 -5
- package/engine/internal/install/merge.go +89 -33
- package/engine/internal/install/preflight.go +60 -19
- package/engine/internal/install/uninstall.go +19 -9
- package/engine/internal/install/update.go +0 -4
- package/engine/internal/lib/claims.go +170 -4
- package/engine/internal/lib/claims_holder.go +13 -16
- package/engine/internal/lib/closeout.go +52 -28
- package/engine/internal/lib/context_io.go +88 -4
- package/engine/internal/lib/continuation.go +111 -24
- package/engine/internal/lib/dispatch.go +157 -24
- package/engine/internal/lib/final_prerequisites.go +137 -0
- package/engine/internal/lib/manifest_union.go +62 -25
- package/engine/internal/lib/next.go +10 -10
- package/engine/internal/lib/packet.go +32 -8
- package/engine/internal/lib/packet_integrity.go +194 -2
- package/engine/internal/lib/resolve.go +128 -142
- package/engine/internal/lib/treebaseline.go +0 -1
- package/engine/internal/markdowntext/markdowntext.go +110 -31
- package/engine/internal/overhaul/records/check.go +45 -5
- package/engine/internal/overhaul/records/consistency.go +34 -8
- package/engine/internal/overhaul/records/run.go +55 -11
- package/engine/internal/parallel/landing.go +17 -0
- package/engine/internal/state/acceptance.go +35 -5
- package/engine/internal/state/feature.go +3 -2
- package/engine/internal/state/observation.go +50 -3
- package/engine/internal/state/write.go +20 -44
- package/engine/internal/workflow/commands.go +25 -3
- package/engine/main.go +19 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/.claude/skills/overhaul/SKILL.md +8 -4
- package/pack/.claude/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/.claude/skills/overhaul/references/orchestration.md +32 -21
- package/pack/.claude/skills/overhaul/references/records.md +23 -8
- package/pack/.claude/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/.claude/skills/overhaul/references/scoring.md +7 -0
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/.claude/skills/rite-clarify/SKILL.md +25 -25
- package/pack/.claude/skills/rite-prove/SKILL.md +15 -7
- package/pack/.claude/skills/rite-review/SKILL.md +7 -0
- package/pack/.claude/skills/rite-vet/SKILL.md +10 -1
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/generated/claude/skills/overhaul/SKILL.md +8 -4
- package/pack/generated/claude/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/generated/claude/skills/overhaul/references/orchestration.md +32 -21
- package/pack/generated/claude/skills/overhaul/references/records.md +23 -8
- package/pack/generated/claude/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/generated/claude/skills/overhaul/references/scoring.md +7 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +25 -25
- package/pack/generated/claude/skills/rite-prove/SKILL.md +15 -7
- package/pack/generated/claude/skills/rite-review/SKILL.md +7 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +10 -1
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/generated/codex/skills/overhaul/SKILL.md +8 -4
- package/pack/generated/codex/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/generated/codex/skills/overhaul/references/orchestration.md +32 -21
- package/pack/generated/codex/skills/overhaul/references/records.md +23 -8
- package/pack/generated/codex/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/generated/codex/skills/overhaul/references/scoring.md +7 -0
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-prove/SKILL.md +15 -7
- package/pack/generated/codex/skills/rite-review/SKILL.md +7 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +10 -1
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/generated/devin/skills/overhaul/SKILL.md +8 -4
- package/pack/generated/devin/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/generated/devin/skills/overhaul/references/orchestration.md +32 -21
- package/pack/generated/devin/skills/overhaul/references/records.md +23 -8
- package/pack/generated/devin/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/generated/devin/skills/overhaul/references/scoring.md +7 -0
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +25 -25
- package/pack/generated/devin/skills/rite-prove/SKILL.md +15 -7
- package/pack/generated/devin/skills/rite-review/SKILL.md +7 -0
- package/pack/generated/devin/skills/rite-vet/SKILL.md +10 -1
- package/pack/generated/dsh/runtime/cordis.patch.yml +28 -14
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/generated/dsh/skills/overhaul/SKILL.md +8 -4
- package/pack/generated/dsh/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/generated/dsh/skills/overhaul/references/orchestration.md +32 -21
- package/pack/generated/dsh/skills/overhaul/references/records.md +23 -8
- package/pack/generated/dsh/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/generated/dsh/skills/overhaul/references/scoring.md +6 -0
- package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/generated/dsh/skills/rite-clarify/SKILL.md +25 -25
- package/pack/generated/dsh/skills/rite-prove/SKILL.md +15 -7
- package/pack/generated/dsh/skills/rite-review/SKILL.md +7 -0
- package/pack/generated/dsh/skills/rite-vet/SKILL.md +10 -1
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/generated/omp/skills/overhaul/SKILL.md +8 -4
- package/pack/generated/omp/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/generated/omp/skills/overhaul/references/orchestration.md +32 -21
- package/pack/generated/omp/skills/overhaul/references/records.md +23 -8
- package/pack/generated/omp/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/generated/omp/skills/overhaul/references/scoring.md +7 -0
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/generated/omp/skills/rite-clarify/SKILL.md +25 -25
- package/pack/generated/omp/skills/rite-prove/SKILL.md +15 -7
- package/pack/generated/omp/skills/rite-review/SKILL.md +7 -0
- package/pack/generated/omp/skills/rite-vet/SKILL.md +10 -1
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +41 -39
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-workspaces.md +46 -12
- package/pack/generated/pi/skills/overhaul/SKILL.md +8 -4
- package/pack/generated/pi/skills/overhaul/references/lifecycle.md +13 -6
- package/pack/generated/pi/skills/overhaul/references/orchestration.md +32 -21
- package/pack/generated/pi/skills/overhaul/references/records.md +23 -8
- package/pack/generated/pi/skills/overhaul/references/scope-and-safety.md +7 -2
- package/pack/generated/pi/skills/overhaul/references/scoring.md +7 -0
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +9 -10
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +8 -1
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +17 -17
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +25 -25
- package/pack/generated/pi/skills/rite-prove/SKILL.md +15 -7
- package/pack/generated/pi/skills/rite-review/SKILL.md +7 -0
- package/pack/generated/pi/skills/rite-vet/SKILL.md +10 -1
- package/package.json +1 -1
- package/scripts/dsh-generate.py +1 -1
- package/scripts/install-lib.sh +29 -0
- package/uninstall.sh +1 -0
|
@@ -70,8 +70,8 @@ and every admission and settlement is recorded before the run leaves `RUNNING`
|
|
|
70
70
|
revision as a new file under `revisions/`; never rewrite an existing one.
|
|
71
71
|
3. Render views into the staged generation with `devrites-engine overhaul render`.
|
|
72
72
|
4. `devrites-engine overhaul records publish <run>` validates the staged generation
|
|
73
|
-
against the previous one, writes `manifest.json` (SHA-256 of every generation file
|
|
74
|
-
and
|
|
73
|
+
against the previous one, writes `manifest.json` (SHA-256 of every generation file,
|
|
74
|
+
revision and admitted receipt), renames the directory, then replaces `CURRENT` last.
|
|
75
75
|
5. Any reader runs `validate <run>` first. A mismatch between `CURRENT`, the manifest
|
|
76
76
|
and file bytes is a mixed generation: stop applying and republish.
|
|
77
77
|
|
|
@@ -79,6 +79,16 @@ A crash leaves an incomplete `g<N+1>.tmp` or a complete `g<N+1>` not yet current
|
|
|
79
79
|
`validate` reports both, `stage` refuses until you inspect it, and the previous
|
|
80
80
|
generation stays intact. One atomic rename is not a transaction; readers verify
|
|
81
81
|
digests.
|
|
82
|
+
|
|
83
|
+
Publishing first seals each admitted receipt's exact bytes in `manifest.receipts`.
|
|
84
|
+
Later generations retain those digests and each settled task/attempt's original
|
|
85
|
+
receipt path, even when the attempt leaves the dispatch ledger. Receipt changes
|
|
86
|
+
invalidate both `validate` and the next `publish`; a caller's new path or digest
|
|
87
|
+
cannot replace settled authority. Preserve the original receipt and record new work
|
|
88
|
+
as a new attempt. A manifest without receipt bindings is not trusted.
|
|
89
|
+
`admit receipt` remains read-only: settlement is recorded in the stage and sealed by
|
|
90
|
+
`publish`, not by changing the current generation during admission.
|
|
91
|
+
|
|
82
92
|
Give run files restrictive permissions, redact secrets before storing evidence, and
|
|
83
93
|
never store credentials, tokens or private keys.
|
|
84
94
|
|
|
@@ -122,20 +132,23 @@ for needs-validation, evidence for decided findings, `verified_by` naming an adm
|
|
|
122
132
|
verifier attempt, repository-relative locations (external ones are labels, never
|
|
123
133
|
host paths); `revisions.plan.file` equal to `revisions/plan-r<rev>.json`, required
|
|
124
134
|
once approvals or writers exist; plan digest pins; known, acyclic dependencies;
|
|
125
|
-
allowed paths that are exact files inside the repository (no `*` or `?`, no
|
|
135
|
+
non-empty arrays of allowed paths that are exact files inside the repository (no `*` or `?`, no
|
|
126
136
|
directories, no `.git` component or run-area path in any letter case or through a
|
|
127
137
|
symlink, no symlink or traversal escape); a separate verifier role;
|
|
128
138
|
approval and `accept-degradation` events with quote and trusted channel, approvals
|
|
129
139
|
matching the plan digest, closure and current revision, none active after a later
|
|
130
|
-
stop; a scorecard only with `revisions.rubric
|
|
140
|
+
stop; a scorecard only with `revisions.rubric`, the same verdict as `run.json`, and
|
|
141
|
+
`inputs` digests matching the exact selected rubric, results and gates bytes;
|
|
131
142
|
`READY_FOR_USER_REVIEW` only with a scorecard whose verdict is `MEETS_TARGETS`, and
|
|
132
143
|
`COMPLETED_WITH_APPROVED_DEGRADATION` only with `MEETS_TARGETS_WITH_APPROVED_DEGRADATION`,
|
|
133
144
|
each listing every audit gate (plus every repair gate outside assessment-only runs) as
|
|
134
145
|
`PASS` or `NOT_APPLICABLE` (`G-CONCURRENCY` may be `WAIVED_OPERATIONAL` for the degraded outcome);
|
|
135
146
|
no approval or writer in an assessment-only run; unchanged `run_id`, `repo_root`,
|
|
136
147
|
`mode` and `assessment_only`; writers authorized for their task; one live writer
|
|
137
|
-
per path (case-folded, symlink-resolved)
|
|
138
|
-
`
|
|
148
|
+
per authoritative task path (case-folded, symlink-resolved), reserving the whole
|
|
149
|
+
approved `allowed_paths` scope even when `write_paths` is omitted or narrower;
|
|
150
|
+
every attempt `admitted`, `rejected` or `cancelled` once the outcome leaves `RUNNING`
|
|
151
|
+
(`timed-out` and `unknown` are not settled); one outcome per approved task at the end;
|
|
139
152
|
a coverage denominator that never shrinks; append-only cycles, findings history and
|
|
140
153
|
approval events; immutable revisions; view stamps; manifest integrity; stale stages
|
|
141
154
|
and interrupted publishes. Across records: every finding's `domain` is a score key;
|
|
@@ -146,8 +159,10 @@ inside the run; coverage ranges use the seven coverage states; a scorecard's
|
|
|
146
159
|
`G-NO-CRITICAL-HIGH` PASS needs no open critical or high finding,
|
|
147
160
|
`G-NO-OPEN-SERIOUS-LEAD` PASS no open lead with critical or high potential impact,
|
|
148
161
|
and `G-COVERAGE` PASS a non-empty matrix with no blocked cell, every applicable cell
|
|
149
|
-
closed by an admitted, non-gap receipt whose `domains_checked` lists its domain
|
|
150
|
-
|
|
162
|
+
closed by an admitted, non-gap receipt whose `domains_checked` lists its domain and
|
|
163
|
+
whose lane matches the cell, with receipt schema, run, task, attempt, role, lane and
|
|
164
|
+
snapshot matching the admitted dispatch identity; every range of every eligible file
|
|
165
|
+
reviewed or excluded.
|
|
151
166
|
|
|
152
167
|
Receipt admission and quote anchoring live in `devrites-engine overhaul admit`
|
|
153
168
|
([`orchestration.md`](orchestration.md#admission-tool)).
|
|
@@ -201,8 +201,13 @@ read-only (`GIT_OPTIONAL_LOCKS=0`, `diff.autoRefreshIndex=false`, no external di
|
|
|
201
201
|
drivers or textconv, fixed `a/` `b/` prefixes), never stashes, never commits and
|
|
202
202
|
leaves `.git/index` byte-identical; it refuses an index with unmerged entries.
|
|
203
203
|
Submodules and nested repositories are recorded as boundaries, never read. The plan
|
|
204
|
-
pins the baseline manifest digest, so approval binds it.
|
|
205
|
-
|
|
204
|
+
pins the baseline manifest digest, so approval binds it. Per-attempt `state`/`delta`
|
|
205
|
+
observe whole-repository changes, not writer attribution. Serialize each shared-root
|
|
206
|
+
target-mutating writer from its before-capture through stopping, after-capture and
|
|
207
|
+
receipt admission before starting another writer, even for disjoint task paths.
|
|
208
|
+
Preserve the full delta, including user changes; changes outside the approved task
|
|
209
|
+
scope reject admission rather than being filtered out. Read-only review and
|
|
210
|
+
verification may overlap on immutable inputs when their resources permit.
|
|
206
211
|
|
|
207
212
|
Re-fingerprint before each edit and after each check. When user edits touch an
|
|
208
213
|
assigned path or its decisive assumptions (`verify` reports changes outside
|
|
@@ -259,3 +259,9 @@ written. `G-THRESHOLDS` and `G-MANDATORY` are computed; `validate` rejects a
|
|
|
259
259
|
scorecard whose `G-NO-CRITICAL-HIGH`, `G-NO-OPEN-SERIOUS-LEAD` or `G-COVERAGE` PASS
|
|
260
260
|
contradicts `findings.json` or `coverage.json`, and a control recorded PASS while a
|
|
261
261
|
linked finding is still open ([`records.md`](records.md#enforced-versus-review-only)).
|
|
262
|
+
`publish` and `validate` bind `scorecard.json.inputs.{rubric_sha256,results_sha256,gates_sha256}`
|
|
263
|
+
to the exact file bytes read by the calculator: `run.json.revisions.rubric.file`,
|
|
264
|
+
the selected generation's `results-candidate.json` when present (otherwise
|
|
265
|
+
`results-baseline.json`), and that generation's `gates.json`. Calculate from those
|
|
266
|
+
paths before publication. Missing or mismatched inputs reject the generation;
|
|
267
|
+
records never recalculate a card or replace its digests to make it current.
|
|
@@ -88,6 +88,9 @@ next sequence continuation through Vet in a second session, then stop.
|
|
|
88
88
|
|
|
89
89
|
1. **Orient and parse.** Resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding); when a workspace exists,
|
|
90
90
|
require its `state.md` and read its cursor; a fresh idea starts empty at step 2.
|
|
91
|
+
Before phase-local cold recovery, execute the bounded
|
|
92
|
+
[global frontier pass](../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier);
|
|
93
|
+
retain this source's return cursor and pending reviewer handles.
|
|
91
94
|
Before honoring `blocked` with terminal `next_action`,
|
|
92
95
|
reconcile retained consumptive evidence and fingerprint attempts from
|
|
93
96
|
`drift.md`/`evidence.md`; a retained fingerprint below its cap resumes offline
|
|
@@ -118,16 +121,12 @@ next sequence continuation through Vet in a second session, then stop.
|
|
|
118
121
|
`/rite-build` batch loop → `/rite-prove` → `/rite-polish` →
|
|
119
122
|
`/rite-review` → `/rite-seal`. Read and execute each skill; durable files, not
|
|
120
123
|
chat, carry state. Apply the mutable post-vet budget before first Build.
|
|
121
|
-
Execute [
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
Always pass resolved `--parallel N` to Build. Cap>1 uses an isolated first
|
|
128
|
-
writer even when initially alone; refill globally per landing and planning/
|
|
129
|
-
review return. Unsupported host stays serial. No local ready slice is not
|
|
130
|
-
completion while authorized planning, repair/re-Vet or independent work remains.
|
|
124
|
+
Execute the shared [global frontier pass](../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier)
|
|
125
|
+
at phase entry, before recovery, on returns and before native waits, not only
|
|
126
|
+
during Build or after Seal. Preserve source-local phase cursors; Autocomplete
|
|
127
|
+
retains repository scheduling. Apply its protected validation window before
|
|
128
|
+
landings/checkpoints and account admission. Pass resolved `--parallel N` to
|
|
129
|
+
Build under its one global cap and existing admission/isolation gates.
|
|
131
130
|
**Completion:** loop reaches Seal GO or persists a valid stop before any later phase.
|
|
132
131
|
5. **Apply stops.** At every gate use
|
|
133
132
|
[stop-conditions.md](reference/stop-conditions.md). A `blocked` label alone is not a stop condition:
|
|
@@ -67,13 +67,20 @@ Workspace files, not chat, carry state. Read/execute each phase skill:
|
|
|
67
67
|
| 3 | `/rite-temper` | harden or reduce; `expand` and extra acceptance stop for a human; irreversible risk still pauses |
|
|
68
68
|
| 4 | `/rite-define` | approved plan/tasks/traceability |
|
|
69
69
|
| 5 | `/rite-vet` | every plan; derive mutable budget after READY |
|
|
70
|
-
| 6 | `/rite-build`
|
|
70
|
+
| 6 | `/rite-build` | execute shared controller selection/admission; charge each source once per landed slice |
|
|
71
71
|
| 7 | `/rite-prove` | all slices built except deferred (`Satisfies: none`); approved proof; recovery on red |
|
|
72
72
|
| 8 | `/rite-polish` | re-prove after code edits |
|
|
73
73
|
| 9 | `/rite-review` | in-scope correction then fresh proof |
|
|
74
74
|
| 10 | `/rite-seal` | GO/NO-GO; no Git |
|
|
75
75
|
| 11 | `/rite-ship` | only after GO; `--ship` never authorizes Git; stop at literal-GO/native approval |
|
|
76
76
|
|
|
77
|
+
At every phase entry, before cold/local recovery, on reviewer/planning returns and
|
|
78
|
+
before native waits, Autocomplete executes the bounded
|
|
79
|
+
[global frontier pass](../../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier).
|
|
80
|
+
Keep source-local return cursors and pending handles; apply its protected
|
|
81
|
+
validation window before accepting accounts or landing work. This scheduling
|
|
82
|
+
precedes owner Seal and does not change ordered handoff below.
|
|
83
|
+
|
|
77
84
|
Check [stop-conditions.md](stop-conditions.md) before advancing. Discard stale
|
|
78
85
|
pass evidence after source edits. Re-read the selected source before each phase per [phase target binding](../../devrites-lib/reference/parallel-workspaces.md#phase-target-binding). On a cold resume or
|
|
79
86
|
new activation, run `devrites-engine check regression <slug>`: `BLOCKED` names a
|
|
@@ -99,26 +99,26 @@ Same-worktree multi-writer / root-emulated worktrees stay forbidden.
|
|
|
99
99
|
|
|
100
100
|
## Run
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
[
|
|
108
|
-
is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
102
|
+
Before same-tree writing, `dispatch open` adds `--claim-session <id>`,
|
|
103
|
+
`--claim <path>` per task path, and `--claim-ttl <minutes>` sized to the write.
|
|
104
|
+
It runs `claim check --session <id> <task-paths>`. Live foreign or abandoned
|
|
105
|
+
unreleased/nonterminal claims (even same-session/expired) refuse without a wave
|
|
106
|
+
or new claim, per [`agents.md`](../../devrites-lib/reference/standards/agents.md).
|
|
107
|
+
`.devrites/**` is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
108
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
109
|
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
110
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
|
-
writes its own contract with `Isolation`, `worktree_base`, and subject)
|
|
113
|
-
|
|
114
|
-
count, or pass
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
through the launch barrier — `devrites-engine dispatch <slug> open --phase build --wave
|
|
119
|
-
<slice-id> --role slice-wright --slice <SLICE-ID> --contract <file>` (it refuses a
|
|
111
|
+
writes its own contract with `Isolation`, `worktree_base`, and subject). Give it
|
|
112
|
+
verbatim. Reviewers read it: `--focus` names defect + anchor, never a prior
|
|
113
|
+
verdict, count, or pass claim. Ask the exact writer in fresh context; a repair
|
|
114
|
+
may continue the returned wright's existing handle if the host supports it,
|
|
115
|
+
avoiding a reread. Track the launch barrier — `devrites-engine dispatch <slug> open --phase build --wave
|
|
116
|
+
<wave-id> --role slice-wright --slice <SLICE-ID> --contract <file>` (it refuses a
|
|
120
117
|
contract that forbids writer-safe checks or names none), then `start` with the host handle
|
|
121
|
-
(the last start seals the wave) and `return
|
|
118
|
+
(the last start seals the wave) and `return --wave <wave-id> --role slice-wright
|
|
119
|
+
--handle <id>` on completion (auto-records dispatch/return metrics). Every wave ID
|
|
120
|
+
is single-use: use a fresh ID for each repair or retry, even after abandonment;
|
|
121
|
+
the earlier wave keeps its handles, history, and any unreleased claim. Every 5 wright
|
|
122
122
|
rounds on one slice, `open` blocks for a reslice review. First re-admit each
|
|
123
123
|
finding still driving rounds under the Proportionality rule of
|
|
124
124
|
[agents.md § Result admission](../../devrites-lib/reference/standards/agents.md#result-admission): one without a broken anchor or a reachable trigger becomes a
|
|
@@ -129,7 +129,7 @@ open findings move to the new slice owning their paths), or record
|
|
|
129
129
|
`## <DRIFT-ID> — <SLICE-ID> reslice review` with why no smaller split exists and
|
|
130
130
|
a spec trace of the slice's obligations (hardening no AC/INV/PROH requires moves to
|
|
131
131
|
a sibling slice dependents do not need, still gated before Seal), and
|
|
132
|
-
|
|
132
|
+
open a fresh wave with `--reslice-review <DRIFT-ID>`. Same-worktree stays one writer.
|
|
133
133
|
Never run two writers in one worktree, mix isolated and same-worktree writers,
|
|
134
134
|
or substitute a generic agent. Sanctioned parallel dispatch uses one exact
|
|
135
135
|
wright per worktree, source-local `slice-wright.<SLICE-ID>` roles and starts
|
|
@@ -59,34 +59,34 @@ dispatch uses
|
|
|
59
59
|
remains.
|
|
60
60
|
5. **Write the verdict.** Write `Decision coverage: CLEAR` only after re-reading all inputs and confirming
|
|
61
61
|
every material row has current evidence and an owner. Normal flow sets `phase=clarify` and
|
|
62
|
-
`next_action=/rite-temper
|
|
63
|
-
|
|
64
|
-
the
|
|
65
|
-
`/rite-plan repair` instead. Stop without starting the next phase.
|
|
62
|
+
`next_action=/rite-temper`, or `/rite-define` for low-stakes specs temper skips.
|
|
63
|
+
Later-phase entries follow the ownership protocol below. Return inline verdicts
|
|
64
|
+
to the controlling caller; otherwise stop before starting the next phase.
|
|
66
65
|
|
|
67
66
|
## Native clarify cursor protocol
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
- **
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- **
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
before
|
|
81
|
-
- **
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- **
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
68
|
+
Edit only cursor rows; preserve unrelated Markdown and table/bullet presentation.
|
|
69
|
+
|
|
70
|
+
- **Validate before writes:** require no return fields or a complete pair:
|
|
71
|
+
recognized later `return_phase`, non-empty `return_next_action`. Invalid/half
|
|
72
|
+
pairs fail closed. Later phases: `temper`, `define`, `plan`, `vet`, `build`,
|
|
73
|
+
`converge`, `prove`, `polish`, `review`, `seal`, `ship`.
|
|
74
|
+
- **Spec entry:** set `phase=clarify`, `status=running`,
|
|
75
|
+
`next_action=/rite-clarify <slug>`; omit return fields.
|
|
76
|
+
- **Caller-owned pair:** pair with `phase!=clarify` requires a native
|
|
77
|
+
controlling caller; otherwise stop for ownership recovery. Run bounded Clarify
|
|
78
|
+
inline, preserve all cursor rows, and return its verdict to caller.
|
|
79
|
+
Contract changes require Plan repair and Vet before outer resume.
|
|
80
|
+
- **Clarify-owned pair:** standalone later-phase entry without a pair saves current
|
|
81
|
+
phase/non-empty next action as the pair, then sets `phase=clarify`,
|
|
82
|
+
`status=running`, `next_action=/rite-clarify <slug>`. Missing/unknown values
|
|
83
|
+
fail closed. `phase=clarify` resumes without writes; its pair belongs to
|
|
84
|
+
standalone Clarify, not a nested caller.
|
|
85
|
+
- **Restore:** after fresh `CLEAR`, only the owner restores its pair.
|
|
86
|
+
Contract-neutral standalone Clarify restores phase/next action, sets
|
|
87
|
+
`status=running`, atomically unsets both return fields, and re-reads to verify.
|
|
88
|
+
Contract changes retain the pair through Plan repair and Vet; only its owner
|
|
89
|
+
consumes it after readiness. Preserve caller pairs.
|
|
90
90
|
|
|
91
91
|
## Output
|
|
92
92
|
|
|
@@ -35,8 +35,9 @@ TTHW, and exact signal-bearing errors; never assert DX (trigger `devex`).
|
|
|
35
35
|
grammar/hashing. Spec Drift Guard owns revealed contract drift.
|
|
36
36
|
- Root runs vetted gates/browser and records immutable evidence; proof runner
|
|
37
37
|
validates it. Only the bounded wright fixes product source/tests.
|
|
38
|
-
- **Prove remains the controlling caller** during technical backtracking
|
|
39
|
-
|
|
38
|
+
- **Prove remains the source-local controlling caller** during technical backtracking;
|
|
39
|
+
under Autocomplete, repository scheduling stays with Autocomplete. Save
|
|
40
|
+
Prove's cursor; run Plan repair, Recovery Vet, remediation, and re-proof inline;
|
|
40
41
|
consume nested boundaries; resume the failed rung. A strategy is spent after
|
|
41
42
|
three no-progress attempts on the exact same fingerprint; escalate it per the
|
|
42
43
|
[retry contract](../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve)
|
|
@@ -60,12 +61,15 @@ test changes.
|
|
|
60
61
|
## Workflow
|
|
61
62
|
|
|
62
63
|
1. **Orient.** Read core, resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding), require `state.md`, and read its
|
|
63
|
-
cursor.
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
cursor. Under Autocomplete, return scheduling for its
|
|
65
|
+
[global frontier pass](../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier)
|
|
66
|
+
before cold/local recovery; preserve Prove's source-local return cursor.
|
|
67
|
+
On blocked Prove cold resume, reconcile retained consumptive evidence and
|
|
68
|
+
no-progress corrections before accepting terminal none; a distinct fingerprint
|
|
69
|
+
below cap resumes offline triage without another real action.
|
|
66
70
|
2. **Freeze scope.** Read spec, tasks, state, test plan, and full diff. Require
|
|
67
|
-
every slice built except a [deferred slice](../rite-plan/reference/slicing.md#deferred-slice). Missing `test-plan.md` returns to Vet inline (Prove stays the
|
|
68
|
-
caller) and resumes here; it never authorizes ad hoc proof.
|
|
71
|
+
every slice built except a [deferred slice](../rite-plan/reference/slicing.md#deferred-slice). Missing `test-plan.md` returns to Vet inline (Prove stays the source-local
|
|
72
|
+
controlling caller) and resumes here; it never authorizes ad hoc proof.
|
|
69
73
|
3. **Approve commands.** If absent, use
|
|
70
74
|
[test-command-discovery](reference/test-command-discovery.md) over repository
|
|
71
75
|
manifests/CI. Discovery is evidence only: `test-plan.md` is the sole approved runtime
|
|
@@ -119,6 +123,10 @@ test changes.
|
|
|
119
123
|
7. **Independent validation.** Fresh read-only `devrites-proof-runner` and
|
|
120
124
|
`devrites-spec-reviewer`, in one parallel wave, judge the same candidate/commands/evidence/acceptance map.
|
|
121
125
|
Neither runs commands; reject missing/stale, invented-ID, label-only or self-attested reports.
|
|
126
|
+
Under Autocomplete, before native wait return scheduling to its global frontier
|
|
127
|
+
pass, retaining both validator handles. Standalone Prove stays source-local.
|
|
128
|
+
Apply the shared protected validation window and recheck identities before
|
|
129
|
+
admitting accounts.
|
|
122
130
|
8. **Map proof.** Reconcile verdicts under [acceptance-proof.md](reference/acceptance-proof.md).
|
|
123
131
|
Every criterion/scenario/interaction/key link needs discriminating evidence or a
|
|
124
132
|
blocker, including critical-path, observability, developer and wiring branches.
|
|
@@ -62,6 +62,9 @@ Pull these via `Read` when the diff demands them:
|
|
|
62
62
|
0. Read `.dsh/skills/devrites-lib/reference/standards/core.md` first (the always-on operating rules); pull the
|
|
63
63
|
on-demand rules above as the diff demands them.
|
|
64
64
|
Resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding) before loading workspace artifacts.
|
|
65
|
+
Under Autocomplete, return scheduling for its
|
|
66
|
+
[global frontier pass](../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier)
|
|
67
|
+
before cold/local recovery, preserving Review's source-local return cursor.
|
|
65
68
|
1. Read `spec.md`, `tasks.md`, `state.md`, `decisions.md`,
|
|
66
69
|
`touched-files.md`, `.devrites/principles.md` (if present: the binding invariants to score
|
|
67
70
|
the diff against), and the `git diff`. For "what would this change break"
|
|
@@ -127,6 +130,10 @@ Pull these via `Read` when the diff demands them:
|
|
|
127
130
|
[[`agents.md`](../devrites-lib/reference/standards/agents.md) § Result admission](../devrites-lib/reference/standards/agents.md#result-admission).
|
|
128
131
|
Either `Outcome: gap` stops Review; silence, failure, or malformed output never
|
|
129
132
|
becomes an empty findings list.
|
|
133
|
+
Under Autocomplete, before native wait return scheduling to its global frontier
|
|
134
|
+
pass with cohort handles retained; standalone Review stays source-local. Apply
|
|
135
|
+
the shared protected validation window and identity recheck before account
|
|
136
|
+
admission.
|
|
130
137
|
4. **Reconcile, don't re-review.** With the two parallel reports in hand, the inline
|
|
131
138
|
lead reconciles. It does **not** re-run the code-review axes over correctness /
|
|
132
139
|
readability / architecture / maintainability that `devrites-code-reviewer` already
|
|
@@ -78,6 +78,9 @@ plan declares a root-authored executable workflow file, read
|
|
|
78
78
|
assumptions, and state. Require approved Plan and `Decision coverage: CLEAR`;
|
|
79
79
|
otherwise stop for Define or Clarify. Check placement (`get_architecture`),
|
|
80
80
|
blast radius (`trace_path`), and reuse (`search_graph`) per [`code-navigation.md`](../devrites-lib/reference/standards/code-navigation.md).
|
|
81
|
+
Under Autocomplete, return scheduling for its
|
|
82
|
+
[global frontier pass](../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier)
|
|
83
|
+
before cold/local recovery; preserve Vet's source-local return cursor.
|
|
81
84
|
1. **Select depth.** Apply `reference/depth.md` exactly; never skip. Initial passes
|
|
82
85
|
record engineering verdict and test-plan coverage. Valid Recovery rechecks
|
|
83
86
|
retain prior depth; enter 1b.
|
|
@@ -87,12 +90,18 @@ plan declares a root-authored executable workflow file, read
|
|
|
87
90
|
parallel under `../devrites-lib/reference/parallel-dispatch.md`: independent
|
|
88
91
|
read-only passes on one frozen candidate. Missing required account blocks.
|
|
89
92
|
Meanwhile run root steps 2–4, including step 3 preflight commands, on that
|
|
90
|
-
candidate
|
|
93
|
+
candidate. Under Autocomplete, before native wait return scheduling to its
|
|
94
|
+
global frontier pass with reviewer handles retained; standalone Vet stays
|
|
95
|
+
source-local. Apply the shared protected validation window and identity
|
|
96
|
+
recheck before reconciling returned accounts.
|
|
91
97
|
1b. **Recovery recheck.** Require valid return cursor, accepted prior finding,
|
|
92
98
|
exact fingerprint/reproduction, repaired candidate identity, changed
|
|
93
99
|
paths/criteria, affected drift/evidence, and the recorded delta self-check.
|
|
94
100
|
Freeze that packet and dispatch each exact owning reviewer once,
|
|
95
101
|
fresh/read-only, limited to it — all its open fingerprints in that dispatch.
|
|
102
|
+
Under Autocomplete, before native wait use the same controller pass and retained
|
|
103
|
+
handles as step 1a; standalone Vet stays source-local. Apply the same
|
|
104
|
+
protected-window account admission.
|
|
96
105
|
Do not rerun broad inventory or unaffected reviewers. Close the prior
|
|
97
106
|
fingerprint only with discriminating evidence plus an explicit
|
|
98
107
|
correction-created regression verdict on the touched invariants (acyclic
|
|
@@ -55,28 +55,27 @@ If the candidate diff has no matching surfaces, record
|
|
|
55
55
|
The `agents` dispatch contract needs no flag: `--role` auto-fires it
|
|
56
56
|
(`auto=[agents]` in the output). The command prints `unselected=[...]`; an
|
|
57
57
|
omitted applicable trigger is a gap, not a shortcut.
|
|
58
|
-
3.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
(`
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
`
|
|
78
|
-
`--release`
|
|
79
|
-
recording the gap; never leave an open wave to block a retry.
|
|
58
|
+
3. Open a single-use wave; every retry needs a fresh ID:
|
|
59
|
+
`devrites-engine dispatch <slug> open --phase <p> --wave <w> --role <r>...`.
|
|
60
|
+
Reviewer/auditor/test-analyst waves add `--packet <file>` naming any rendered
|
|
61
|
+
`packets/<w>.<role>.md`; give each agent its own packet unedited. `open` rejects
|
|
62
|
+
seeded gate results, outcomes, counts, or pass claims. Build reviewers add
|
|
63
|
+
`--slice <SLICE-ID>`; Review/Seal packets bind the frozen diff and a manifest
|
|
64
|
+
covering every checkpointed path. Same-tree writers add `--claim-session <id>
|
|
65
|
+
--claim <path>...` per [`wright-dispatch.md`](skill://rite-build/reference/wright-dispatch.md#run).
|
|
66
|
+
Launch all native agents nonblocking through the host tool before waiting.
|
|
67
|
+
Never shell-launch host CLIs (`omp -p`, `claude -p`): that bridge's handle dies
|
|
68
|
+
with the session and its return is a gap. Record every host handle with
|
|
69
|
+
`dispatch ... start --wave <w> --role <r> --handle <id>`; the last seals the wave
|
|
70
|
+
(explicit `seal` then does nothing). Return only after seal, with the recorded
|
|
71
|
+
handle: `dispatch ... return --wave <w> --role <r> --handle <id>`.
|
|
72
|
+
Reviewers add `--result <file>`: retain it verbatim at
|
|
73
|
+
`packets/<wave>-<role>.return.md` (keep an existing file), derive outcome and
|
|
74
|
+
`Finding:` keys. If the host cannot provide a file, use explicit
|
|
75
|
+
`--outcome findings|no-findings|gap`. Status is nonzero for open/sealed/abandoned
|
|
76
|
+
waves; start/return record metrics. If handles/seal cannot be obtained,
|
|
77
|
+
`dispatch ... abandon --wave <w> --reason <reason>` before recording the gap;
|
|
78
|
+
add `--release` only after host-confirmed stop/refused launch.
|
|
80
79
|
4. Ask for each exact named agent in fresh context; omit native syntax and
|
|
81
80
|
`agent_type`/`task_name`/`fork_turns` from the instruction.
|
|
82
81
|
5. Every dispatch reaches a terminal classification before reconciliation:
|
|
@@ -144,32 +143,35 @@ the client renames a field its mocked test still passes, and the verdict reads c
|
|
|
144
143
|
|
|
145
144
|
## Cancellation and terminal reconciliation
|
|
146
145
|
|
|
147
|
-
Cancellation acknowledgement
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
reuse its resources while it may still run. If terminal state cannot be
|
|
153
|
-
established, record a gap and retain ownership; for a child launched by an earlier
|
|
154
|
-
session, the claim proof below settles it. A result classification alone
|
|
155
|
-
does not prove host termination.
|
|
146
|
+
Cancellation acknowledgement or timeout leaves execution unknown. Keep handles,
|
|
147
|
+
path/resource ownership, and capacity until the native host confirms termination
|
|
148
|
+
and returned work is reconciled. Query/wait; never replace children, release slots,
|
|
149
|
+
or reuse resources prematurely. If unproven, record a gap and retain ownership;
|
|
150
|
+
earlier-session claim proof follows. Outcome classification alone proves no death.
|
|
156
151
|
|
|
157
152
|
On resume (compaction or a new session), run `devrites-engine dispatch <slug>
|
|
158
153
|
status`, `parallel status`, and `claim list` before any dispatch. A read-only
|
|
159
154
|
wave whose handles this session cannot query: `abandon` it, record each unreturned
|
|
160
|
-
role `gap`, and re-dispatch fresh on the current digest; its late
|
|
161
|
-
`stale`. A writer
|
|
162
|
-
|
|
163
|
-
`claim list`
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
155
|
+
role `gap`, and re-dispatch under a fresh wave ID on the current digest; its late
|
|
156
|
+
returns are `stale`. A writer retains claim/lease: no relaunch under a fresh wave,
|
|
157
|
+
same session, or expired TTL until release or proven termination. For an
|
|
158
|
+
unqueryable writer, `claim list` `dead` proves its holding session exited on this
|
|
159
|
+
host; `claim list --all --session <id>` shows `released` (bare `list` counts it).
|
|
160
|
+
After that proof, `dispatch <slug> abandon --wave <w> --release --reason <reason>`
|
|
161
|
+
stamps `terminal_at` even without a claim, not a return. Record `gap`, reclaim
|
|
162
|
+
paths, and re-dispatch. `live`/`expired` stays held; cancellation acknowledgement,
|
|
163
|
+
timeout, ordinary abandonment, or replacement cannot prove writer death.
|
|
164
|
+
A wright that never returned an
|
|
168
165
|
admitted result leaves unadmitted bytes: task-path changes since its pre-dispatch
|
|
169
166
|
`git diff --name-only` baseline are never cited as built nor discarded, and are
|
|
170
167
|
named in the re-dispatch contract; changes outside task paths stop for the human
|
|
171
168
|
(Converge side: [`rite-converge`](skill://rite-converge/SKILL.md)).
|
|
172
169
|
|
|
170
|
+
Finalization settles every launched role, including proof/custom/writer roles.
|
|
171
|
+
Abandoned proof/reviewer replacement needs a newer settled account, same canonical
|
|
172
|
+
phase/role/exact unordered slice set, and distinct handle. Writer termination
|
|
173
|
+
admits no bytes and bypasses no candidate, admission, review or proof gate.
|
|
174
|
+
|
|
173
175
|
## Scale limits
|
|
174
176
|
|
|
175
177
|
The role table bounds rosters. Use up to ten concurrent read-only reviewers,
|
|
@@ -69,6 +69,9 @@ incomplete, stale or human-blocked future work is a planning/repair/blocked
|
|
|
69
69
|
opportunity, not a fatal pool failure. Retain every readiness reason: fixing stale
|
|
70
70
|
bindings does not waive a coexisting human/access/safety gate. Re-Vet affected
|
|
71
71
|
predecessor assumptions, then record current bindings; never auto-refresh a digest.
|
|
72
|
+
Read archived predecessors in place through the engine's referenced read-only
|
|
73
|
+
readiness lookup. Never copy an archive into live `work/` merely to read/hash it:
|
|
74
|
+
that can resurrect stale controller leases and claims.
|
|
72
75
|
|
|
73
76
|
## Recover avoidable serialization
|
|
74
77
|
|
|
@@ -106,13 +109,28 @@ reslicing unchanged work.
|
|
|
106
109
|
|
|
107
110
|
## Continuous global frontier
|
|
108
111
|
|
|
109
|
-
|
|
112
|
+
Autocomplete executes this bounded pass at every phase entry (including cold
|
|
113
|
+
Prove/Vet/Review), before phase-local recovery, on each landing/planning/review
|
|
114
|
+
return, and immediately before a native wait or final reply. A nested phase
|
|
115
|
+
returns scheduling to Autocomplete; its source-local phase/recovery return cursor
|
|
116
|
+
and pending native reviewer handles remain intact. This is not a second phase
|
|
117
|
+
controller or a persistent frontier artifact.
|
|
110
118
|
|
|
111
119
|
1. Re-read controller lease, per-source state/questions/readiness and authorized
|
|
112
|
-
sequence.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
and
|
|
120
|
+
sequence. Examine every recorded authorized source once per pass, not only
|
|
121
|
+
the owner's next local slice or first blocked child. Prepare absent targets
|
|
122
|
+
through authorized native Spec → Clarify → Temper → Define/Plan → Vet; repair
|
|
123
|
+
and re-Vet current readiness of prepared targets now, not after owner Seal.
|
|
124
|
+
Assess actual source gates, claims and explicit planning/Build restrictions
|
|
125
|
+
before routing. Owner-local red/human/access gates withhold that owner or its
|
|
126
|
+
actual consumers, not independent authorized planning; true whole-run safety,
|
|
127
|
+
access and claim constraints still bind. Retain concrete actions or blockers
|
|
128
|
+
in existing source artifacts under normal write authority.
|
|
129
|
+
Yield a child at its pending reviewer/phase boundary back to this controller;
|
|
130
|
+
never recursively wait for child completion while parent returns are pending.
|
|
131
|
+
Reconcile available parent returns before another pass. A native wait is
|
|
132
|
+
justified only after concrete authorized actions/blockers across the pool
|
|
133
|
+
have been examined; reading later phase skills is not pending Plan/Vet work.
|
|
116
134
|
If an explicit/AFK capacity change differs from retained capacity, reconcile it
|
|
117
135
|
before selection using `parallel add --root <repo> --slug <controller> --cap N --json -`
|
|
118
136
|
with stdin `[]`. This changes capacity only, not workers or a complete lease's
|
|
@@ -137,11 +155,14 @@ At entry, each landing, planning/review return and before any wait or final repl
|
|
|
137
155
|
Unsupported isolation uses truthful serial owner dispatch and ordinary ordered
|
|
138
156
|
handoff, never early same-tree foreign Build or concurrent same-worktree writers.
|
|
139
157
|
4. Launch every selected native writer before waiting on any; keep scheduling
|
|
140
|
-
planning and independent review while they run
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
158
|
+
planning and independent review while they run, including while the owner
|
|
159
|
+
awaits Prove/Vet/Review accounts. Apply the protected window below before any
|
|
160
|
+
landing: defer control mutations while frozen validation is pending. Outside
|
|
161
|
+
that window, land each individually green sibling through Build review/proof
|
|
162
|
+
and `parallel integrate --slice <key>`; refill immediately from the whole pool.
|
|
163
|
+
A red sibling repairs in place and holds its slot/paths; it does not delay
|
|
164
|
+
independent safe landings. Never satisfy a producer edge on writer return or
|
|
165
|
+
green-but-unlanded work.
|
|
145
166
|
After worker-bound review/proof and source bookkeeping finish, prune only
|
|
146
167
|
verified clean integrated checkouts with `parallel prune --root <repo>
|
|
147
168
|
--slug <controller>`. Retain transfer refs/lease identities; dirty or ignored
|
|
@@ -182,8 +203,17 @@ controller bookkeeping nor sibling proof closes a child's acceptance.
|
|
|
182
203
|
|
|
183
204
|
Prove/Polish/Review/Seal remain per workspace with fresh candidate bindings. Shared
|
|
184
205
|
durable Polish outputs serialize; source changes invalidate affected evidence.
|
|
185
|
-
|
|
186
|
-
|
|
206
|
+
From candidate freeze/validator dispatch through account admission, preserve the
|
|
207
|
+
exact candidate, control tip and all consumed metadata/validator inputs. Independent
|
|
208
|
+
authorized planning and isolated writers may proceed only without changing those
|
|
209
|
+
inputs or shared runtime resources. Defer integration, checkpoints, cross-source
|
|
210
|
+
corrections and consumed-artifact edits until the window closes; retained green
|
|
211
|
+
workers keep their identities/slots. Recheck candidate, control-tip identity and
|
|
212
|
+
consumed inputs before accepting each account; drift invalidates affected accounts
|
|
213
|
+
and requires native fresh validation, never acceptance against a moving tip.
|
|
214
|
+
After any protected validation window closes, before a non-lease product correction,
|
|
215
|
+
shared durable Polish write or control checkpoint, freeze new writer admissions,
|
|
216
|
+
drain/reconcile retained writers, land
|
|
187
217
|
safe green work and cleanup the lease. Preserve blocked work; never force-clean
|
|
188
218
|
it merely to advance a phase. Perform phase-owned correction/proof/checkpoint,
|
|
189
219
|
then resume the pool from new HEAD. Never accept unrelated commits as expected
|
|
@@ -192,6 +222,10 @@ ControlTip or invent phase slices. Read-only frozen proof/review and planning-on
|
|
|
192
222
|
Normal ordered handoff reuses the same controller and prepared child cursor.
|
|
193
223
|
Never archive controller/source while retained lease owns it; clean up owned
|
|
194
224
|
workers first, preserving salvage and unknown outcomes.
|
|
225
|
+
Global scheduling is not global gating or ordered handoff. Unmet or abandoned
|
|
226
|
+
owner gates remain non-green: an owner request to defer obligations routes Spec
|
|
227
|
+
Drift Guard → Plan → affected Vet under existing authority, or retains the blocked
|
|
228
|
+
source. It never becomes Prove green or Seal GO merely to reach another source.
|
|
195
229
|
|
|
196
230
|
Early child WIPs can interleave with parent WIPs. Parent-only Ship must not absorb
|
|
197
231
|
those commits as if parent alone were sealed. Deferred release waits for every
|