The HARVEST_SUMMARY.md is a meta-artifact for the directive_hotswap_
harness_20260627 track. It belongs in the track directory alongside
the spec/plan/state, not in the directives tree (which should hold
only the directive libraries themselves: v1.md + meta.md per
directive + presets/).
Moved via git mv (preserves history). Updated the lone in-tree
cross-reference in current_baseline.md Notes section to point to the
new path.
Other historical reports (TRACK_COMPLETION_*, phase3_verification_*)
still reference HARVEST_SUMMARY.md by name only without a relative
path; they continue to render correctly as descriptive references
to the file that existed at the time of the report.
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 of bfebb718).
Phase 1 work (51 v1.md directives + 11 commits ee36eaed..8162f629)
is unaffected. Master is at 068411ee (after the chronology revert).
This commit brings master to this point.
state.toml: current_phase 0 -> 1; phase_1.status 'pending' -> 'in_progress';
last_updated 2026-06-27 -> 2026-07-02 (matches the drift-audit batch that
updated the plan/spec).
dispatch_tier3_phase1.md: surgical prompt for the Tier 3 worker that
will execute Phase 1 (lift 48 directives verbatim from the doc tree
into conductor/directives/ per the plan). Captures the 2026-07-02 drift-
audit findings so the harvester doesn't propagate stale refs (e.g.,
the corrected audit_optional_in_3_files.py naming; the corrected §17
line ranges; the corrected send() is canonical, not send_result()).
Includes STOP-AFTER-PHASE-1 rule so Phase 2 is NOT auto-dispatched.
Per conductor/workflow.md Tier 1 Orchestrator role: this is the
maximum responsibility I (Tier 1) take in this session — actual code
generation is delegated to Tier 2/3.
directive_hotswap_harness_20260627/spec.md: added the 5 missing
conductor/code_styleguides/*.md files to the harvest source list
(config_state_owner, workspace_paths, test_sandbox, chroma_cache,
code_path_audit) — the original list named 9 of 14. Added note that
the harvester should verify each contains a harvestable directive
before creating v1.md. Also verified tier2-autonomous.md path
exists (17,940 bytes) for plan Step 2.7.
tech-stack.md: removed duplicate src/paths.py entry (the full
description at line 37 already covers it; the line-73 stub was
redundant).
edit_workflow.md: Key Files section now points to src/project_files.py
for FileItem (moved out of src/models.py per the module taxonomy
refactor) and notes the line ~2748 ref may drift.
Track artifacts for the MMA quarantine + RAG test decoupling effort.
Design doc lives at docs/superpowers/specs/ (historical record preserved).
Plan.md pending user spec approval.
The spec was drafted while the working tree was on tier2/post_module_taxonomy_de_cruft_20260627, but the track targets master. 2 line numbers were from the cruft branch, not master:
- src/commands.py reset_layout: spec said :342-378 + :371; master is :248-275 + :268
- src/command_palette.py: spec said 208 lines; master is 165 lines
Also added a Branch State Warning section documenting:
- main working tree is on tier2/post_module_taxonomy_de_cruft_20260627 (NOT master)
- module_taxonomy_refactor_20260627 + post_module_taxonomy_de_cruft_20260627 are NOT merged to master
- this track does NOT depend on those cruft tracks
- master worktree at C:\projects\manual_slop_master is the editing surface
All other line numbers (App._post_init:566, App.run:619, _run_immapp_result:691, _post_init_callback_result:1449, render_persona_editor_window:3433, orphan end_child:6990, paths.py themes:60/83/150/209-216/295) verified correct against master.
Tier 2's e9654518 ('fix(layout): strip stale dockspace IDs from bundled INI;
force live-session apply') broke the bundled INI. Tier 2's theory was
wrong: they claimed HelloImGui computes DockSpace IDs dynamically and
auto-docks windows without DockId references. Reality:
- When an INI exists, HelloImGui reads the literal DockSpace ID
from the file and uses it (matches runtime-generated 2949142533
per the SplitIds line in the user's working INI).
- Without [Docking] children + per-window DockId lines, the dockspace
is empty and windows float at Pos but get clipped by the full-screen
dockspace. Result: zero panels render.
Empirical evidence (from this session, 2026-06-29):
- User's working master manualslop_layout.ini: 2150 bytes,
[Docking] with DockSpace ID=0xAFC85805 + 2 DockNode children
+ per-window DockId. All 9 default-visible panels render.
- Tier 2's saved INI on tier2-clone/tier2/default_layout_install_20260629
HEAD (post-e9654518): 1447 bytes, [Docking] with DockSpace +
CentralNode=1 only, NO DockNode children, NO DockId. ZERO panels
render. Empty workspace with just menu ribbon.
Track scope (4 phases, 22 tasks):
Phase 1: replace layouts/default.ini with working structure (12
default-visible windows with DockId=0x00000001,N or 0x00000002,N;
[Docking] block with DockSpace ID=0xAFC85805 + 2 DockNode children;
scrub stale 'Response' name + the 9 other _STALE_WINDOW_NAMES).
Phase 2: flip tests/test_default_layout_install.py assertions
(e9654518 inverted them: was asserting 'no [Docking] block' =
good; should assert [Docking] + DockIds exist = good).
Phase 3: append FOLLOWUP addendum to Tier 2's TRACK_COMPLETION
documenting e9654518's wrong theory + this correction.
Phase 4: empirical verify (spawn sloppy.py on fixed branch; observe
12 panels render; no [GUI] WARNING: stale window names).
Preserve from e9654518:
- Live-session imgui.load_ini_settings_from_memory() apply
(src/gui_2.py:1478). That part IS correct: HelloImGui reads
ini_filename BEFORE post_init fires, so the live re-apply is
needed for same-session visibility.
Branch: fix lands as 3 fixup commits on
tier2-clone/tier2/default_layout_install_20260629 (no new branch).
TDD red-first per task. NO day estimates per workflow.md Tier 1
Track Initialization Rules. No new src/<thing>.py files (the fix
modifies layouts/default.ini + the existing tests + a doc report).
Empirical: see Image 1 vs Image 2 comparison captured in this session
(screenshots in opencode-minimax-vision/); working main repo has
panels, tier 2 branch has empty workspace.
Tasks 2.3 + 2.5 [f3cd7bc2]: module-level installer + drain helper added in src/gui_2.py.
Task 2.4 [3d87f8e7]: wired into App._post_init before the warmup-complete registration block.
Task 2.6 [3d87f8e7]: all 3 RED tests now pass after absolute-path fix on _GUI_SCRIPT.
Task 2.8 [3d87f8e7]: phase-2 atomic commit landed.
Task 2.7 (adjacent test_gui* batch) remains pending for the orchestrator.
3 tests in tests/test_default_layout_install.py per spec G6/G7 acceptance:
- test_default_layout_installed_when_ini_missing
- test_default_layout_installed_when_ini_empty
- test_default_layout_NOT_installed_when_layout_present
Currently fail as expected (no install helper exists yet). Test 3 passes as
a positive control (custom user INI is preserved when no install logic
runs).
Subprocess spawn pattern: each test creates its own tmp_path workspace,
spawns sloppy.py without --enable-test-hooks (avoids port-8999 conflict
with the live_gui session fixture's subprocess), waits 5s, terminates
via taskkill /F /T, asserts on the saved INI content.
state.toml: phase 1 marked completed; tasks t1_1-t1_10 recorded with
SHA 7577d7d. plan.md updated for Phase 1 task completion.