docs(harness): Phase 2 makes .warm.md duplicates not in-place edits (per user 2026-07-02)
The 'update role prompts' step in Phase 2 was specified as in-place edits to the 5 .opencode/agents/*.md role prompts. The user clarified 2026-07-02 that this should be making duplicates with a .warm.md suffix so the originals stay as an explicit rollback target. Changed: - spec.md: added a USER DIRECTIVE block above 'The role-prompt bootstrap' section explaining the .warm.md duplicate convention. - plan.md: the Phase 2 preamble references the spec directive; Steps 2.3-2.7 rewritten as 'Create duplicate <name>.warm.md (do NOT modify the original)'. Output paths now include .warm.md suffix. - dispatch_tier3_phase1.md: appended a USER DIRECTIVE section at the end + a NEVER-run-chronology-regenerate note (the script corrupts Unicode, per the 2026-07-02 revert ofbfebb718). Phase 1 work (51 v1.md directives + 11 commits ee36eaed..8162f629) is unaffected. Master is at068411ee(after the chronology revert). This commit brings master to this point.
This commit is contained in:
@@ -225,4 +225,30 @@ NEVER use `git checkout -- <file>`, `git restore`, or `git reset`
|
||||
without explicit user permission. See AGENTS.md for the ban list.
|
||||
|
||||
NEVER filter test output through Select-Object/head/tail per
|
||||
AGENTS.md. Redirect to a log file.
|
||||
AGENTS.md. Redirect to a log file.
|
||||
|
||||
NEVER run `scripts/audit/generate_chronology.py` to regenerate
|
||||
`conductor/chronology.md` — it corrupts Unicode characters (em-dashes,
|
||||
ellipses, BOM markers all become mojibake). The user will regenerate
|
||||
the chronology manually if needed.
|
||||
|
||||
# USER DIRECTIVE (2026-07-02) — Phase 2 file convention
|
||||
|
||||
Phase 2's "update role prompts" step is **making duplicates**, NOT
|
||||
modifying in place. Concretely:
|
||||
|
||||
- For each of the 5 originals, create a NEW file with `.warm.md`
|
||||
suffix: `<name>.md` stays untouched as the fallback path; `<name>.warm.md`
|
||||
is the experimental role prompt that uses the `warm with:` bootstrap.
|
||||
- Output files: `.opencode/agents/tier1-orchestrator.warm.md`,
|
||||
`.opencode/agents/tier2-tech-lead.warm.md`,
|
||||
`.opencode/agents/tier3-worker.warm.md`,
|
||||
`.opencode/agents/tier4-qa.warm.md`,
|
||||
`conductor/tier2/agents/tier2-autonomous.warm.md`.
|
||||
- The user can `mv <name>.warm.md <name>.md` to promote a duplicate
|
||||
to active, or `rm <name>.warm.md` to fall back to the original.
|
||||
- The originals stay as the rollback target. NO in-place edits.
|
||||
|
||||
This directive is also recorded in
|
||||
`conductor/tracks/directive_hotswap_harness_20260627/spec.md` §"The role-
|
||||
prompt bootstrap" and plan.md's Phase 2 section.
|
||||
@@ -281,7 +281,9 @@ tree is a parallel structure, not a replacement."
|
||||
|
||||
## Phase 2: Baseline Preset + Role-Prompt Bootstrap
|
||||
|
||||
Focus: Create the `current_baseline.md` preset that lists all 48 directives, then update the 5 role prompts with the `warm with:` bootstrap.
|
||||
Focus: Create the `current_baseline.md` preset that lists all 48 directives, then create DUPLICATE role prompts (`.bak` files) that use the `warm with:` bootstrap. The original role prompts stay untouched as the fallback path. See the USER DIRECTIVE in spec.md §"The role-prompt bootstrap" (2026-07-02).
|
||||
|
||||
> **USER DIRECTIVE (2026-07-02):** Do NOT modify the 5 original `.md` role prompts. Make duplicates with the `.bak` suffix (e.g., `.opencode/agents/tier3-worker.md` becomes a new file `.opencode/agents/tier3-worker.md.bak` — wait, that conflicts with the extension. Use `.warm.md` instead). Update plan steps 2.3-2.7 accordingly: the output files are `.opencode/agents/tier1-orchestrator.warm.md`, `.opencode/agents/tier2-tech-lead.warm.md`, `.opencode/agents/tier3-worker.warm.md`, `.opencode/agents/tier4-qa.warm.md`, `conductor/tier2/agents/tier2-autonomous.warm.md`. The user can `mv <name>.warm.md <name>.md` to promote a duplicate to active, or `rm <name>.warm.md` to fall back.
|
||||
|
||||
- [ ] **Step 2.1: Create the baseline preset**
|
||||
|
||||
@@ -365,11 +367,11 @@ git add conductor/directives/presets/current_baseline.md
|
||||
git commit -m "feat(directives): add current_baseline preset (48 directives, all v1)"
|
||||
```
|
||||
|
||||
- [ ] **Step 2.3: Update tier1-orchestrator.md with warm with: bootstrap**
|
||||
- [ ] **Step 2.3: Create duplicate `.opencode/agents/tier1-orchestrator.warm.md` (do NOT modify the original)**
|
||||
|
||||
**File:** `.opencode/agents/tier1-orchestrator.md`
|
||||
**New file:** `.opencode/agents/tier1-orchestrator.warm.md`
|
||||
|
||||
**What to change:** Find the "MANDATORY: Pre-Action Required Reading" section (or equivalent hardcoded file list). Replace the directive-reading portion with:
|
||||
**How to create it:** Read the original `.opencode/agents/tier1-orchestrator.md` to get the FULL current content. In the duplicate, find the "MANDATORY: Pre-Action Required Reading" section (or equivalent hardcoded file list). Replace the directive-reading portion with:
|
||||
|
||||
```markdown
|
||||
## MANDATORY: Directive Warm-up
|
||||
@@ -389,39 +391,40 @@ use that instead. The user's instruction overrides the default.
|
||||
- `conductor/edit_workflow.md` — edit tool contract
|
||||
- The relevant `docs/guide_*.md` — architecture reference
|
||||
|
||||
- [ ] **Step 2.4: Update tier2-tech-lead.md with warm with: bootstrap**
|
||||
- [ ] **Step 2.4: Create duplicate `.opencode/agents/tier2-tech-lead.warm.md` (do NOT modify the original)**
|
||||
|
||||
**File:** `.opencode/agents/tier2-tech-lead.md`
|
||||
**New file:** `.opencode/agents/tier2-tech-lead.warm.md`
|
||||
|
||||
Same change as Step 2.3. The non-directive reads that stay hardcoded:
|
||||
Same procedure as Step 2.3 (read original → duplicate → swap directive-reading portion). Non-directive reads that stay hardcoded:
|
||||
- `AGENTS.md`
|
||||
- `conductor/workflow.md`
|
||||
- `conductor/edit_workflow.md`
|
||||
- `conductor/tier2/githooks/forbidden-files.txt`
|
||||
- The relevant `docs/guide_*.md`
|
||||
|
||||
- [ ] **Step 2.5: Update tier3-worker.md with warm with: bootstrap**
|
||||
- [ ] **Step 2.5: Create duplicate `.opencode/agents/tier3-worker.warm.md` (do NOT modify the original)**
|
||||
|
||||
**File:** `.opencode/agents/tier3-worker.md`
|
||||
**New file:** `.opencode/agents/tier3-worker.warm.md`
|
||||
|
||||
Same change. Note: Tier 3 may benefit from a reduced preset (fewer directives — they don't need the planning/strategy directives). But for now, use `current_baseline.md` and let the user create a `worker_minimal.md` preset later.
|
||||
Same procedure. Note: Tier 3 may benefit from a reduced preset (fewer directives — they don't need the planning/strategy directives). But for now, use `current_baseline.md` and let the user create a `worker_minimal.md` preset later.
|
||||
|
||||
- [ ] **Step 2.6: Update tier4-qa.md with warm with: bootstrap**
|
||||
- [ ] **Step 2.6: Create duplicate `.opencode/agents/tier4-qa.warm.md` (do NOT modify the original)**
|
||||
|
||||
**File:** `.opencode/agents/tier4-qa.md`
|
||||
**New file:** `.opencode/agents/tier4-qa.warm.md`
|
||||
|
||||
Same change. Tier 4 reads narrowly; the preset can be customized later.
|
||||
Same procedure. Tier 4 reads narrowly; the preset can be customized later.
|
||||
|
||||
- [ ] **Step 2.7: Update tier2-autonomous.md with warm with: bootstrap**
|
||||
- [ ] **Step 2.7: Create duplicate `conductor/tier2/agents/tier2-autonomous.warm.md` (do NOT modify the original)**
|
||||
|
||||
**File:** `conductor/tier2/agents/tier2-autonomous.md`
|
||||
**New file:** `conductor/tier2/agents/tier2-autonomous.warm.md`
|
||||
|
||||
This file has the most extensive hardcoded reading list (11 files, lines 32-52). Replace the directive-reading portion with the `warm with:` bootstrap. The non-directive reads that stay:
|
||||
Same procedure. This file has the most extensive hardcoded reading list. Replace the directive-reading portion with the `warm with:` bootstrap. The non-directive reads that stay:
|
||||
- `AGENTS.md`
|
||||
- `conductor/workflow.md`
|
||||
- `conductor/edit_workflow.md`
|
||||
- `conductor/tier2/githooks/forbidden-files.txt`
|
||||
- `conductor/tracks/tier2_leak_prevention_20260620/spec.md` (this is a track spec, not a directive — stays hardcoded)
|
||||
- `conductor/tracks/tier2_leak_prevention_20260620/spec.md` (this is a track spec, not a directive — stays hardcoded)
|
||||
|
||||
- [ ] **Step 2.8: Commit the role-prompt updates**
|
||||
|
||||
|
||||
@@ -85,6 +85,8 @@ tested yet. This preset is the control group for future experiments.
|
||||
|
||||
### The role-prompt bootstrap
|
||||
|
||||
> **USER DIRECTIVE (2026-07-02):** Phase 2's "update role prompts" step is **making duplicates** of the role prompts (e.g., `.opencode/agents/tier3-worker.md.bak`), NOT modifying the originals in place. The duplicates use the `warm with:` bootstrap. The originals stay untouched as the fallback path. This means if a role-prompt regression surfaces, the user can `mv .bak .md` to restore. Do NOT modify the original `.md` role prompts.
|
||||
|
||||
The 5 role prompts (`.opencode/agents/tier1-orchestrator.md`, `tier2-tech-lead.md`, `tier3-worker.md`, `tier4-qa.md`, and `conductor/tier2/agents/tier2-autonomous.md`) have a hardcoded "MANDATORY: Pre-Action Required Reading" section listing ~11 specific files. This is replaced with a single `warm with:` directive.
|
||||
|
||||
```markdown
|
||||
|
||||
Reference in New Issue
Block a user