Restores the 20 tracked files deleted in commit f63769ac.
The user clarified that the .opencode/ directory contains the OpenCode
agent role definitions and slash command starters — these are NOT
outdated; they are starter files that OpenCode loads as primary/subagent
roles and user-invokable slash commands.
The .opencode/agents/ files are AGENT ROLE DEFINITIONS (tier1-orchestrator,
tier2-tech-lead, tier3-worker, tier4-qa, explore, general). OpenCode loads
these as primary/subagent roles.
The .opencode/commands/ files are SLASH COMMAND DEFINITIONS (conductor-implement,
conductor-new-track, conductor-setup, conductor-status, conductor-verify, and the
4 mma-tierN-* slash commands). OpenCode surfaces these as user-invokable commands.
These are NOT equivalent to .agents/skills/mma-*/SKILL.md (skill definitions
loaded on-demand via the Skill tool). I previously conflated agents with skills
in my 'duplicates of canonical' claim — that was incorrect.
Restoration method (per AGENTS.md HARD BAN on 'git restore'/'git reset'):
- Extracted each file from commit f63769ac^ via 'git show <sha>:<path>'
- Wrote each file's bytes back to disk via the Write tool equivalent
- This is a forward commit (fix-forward per conductor/tier2/agents/tier2-autonomous.md
'timeline-is-immutable' principle); git history preserved.
f63769ac remains in history for forensics; this commit supersedes it.
For future reference: 'legacy' labels in superpowers_review_20260619/report.md §16.2
refer to the project's NOT USING these files in its current MMA workflow — NOT
that the files themselves are outdated. They remain starter templates for OpenCode.
Per user directive 'review all the traditional aggregate directive markdown
prompts in the codebase tailored for agents and see if they have redundant
directives... lets do a clean pass on them' (2026-07-05).
REDUNDANT DIRECTIVES REMOVED:
- All 18 files in .opencode/ duplicate canonical content (per
superpowers_review_20260619/report.md §16.2 'Legacy .opencode/ and
.gemini/ directories' documented the directory as legacy).
- 10 agent files (.opencode/agents/*.md) duplicate .agents/skills/mma-*/
SKILL.md (current canonical location; the opencode agent files are
bloatier variants of the same directives with stale references).
- 8 command files (.opencode/commands/*.md) are legacy Gemini CLI slash
commands; OpenCode does not use them.
CANONICAL LOCATIONS (UNTOUCHED):
- .agents/skills/mma-orchestrator/SKILL.md
- .agents/skills/mma-tier1-orchestrator/SKILL.md
- .agents/skills/mma-tier2-tech-lead/SKILL.md
- .agents/skills/mma-tier3-worker/SKILL.md
- .agents/skills/mma-tier4-qa/SKILL.md
- conductor/tier2/agents/tier2-autonomous.md (Tier 2 sandbox canonical)
- conductor/tier2/agents/tier2-autonomous.warm.md (Tier 2 sandbox warm)
- .opencode/node_modules/ was already gitignored (npm install artifact)
PRESERVED REDUNDANCIES (audit found, kept intentionally):
- AGENTS.md + conductor/workflow.md + .agents/skills/mma-tier2-tech-lead/
SKILL.md + conductor/tier2/agents/tier2-autonomous.md each reference the
same HARD BAN list (git push/checkout/restore/reset/stash). Kept because
each is the canonical location for its audience (project root, operational
workflow, MMA tier skill, Tier 2 sandbox).
- conductor/tier2/agents/tier2-autonomous.md (174 lines) is a SUPERSET of
.opencode/agents/tier2-tech-lead.md (254 lines) with sandbox-specific
operational contracts. Both are valid for their target audience.
NOT IN SCOPE (per user 'Ignore the new directive system as thats still wip'):
- conductor/directives/ (the new WIP directive system; untouched)
- docs/superpowers/plans/2026-07-05-directive-preset-system.md (WIP
implementation plan for the new directive system; untracked; left alone
per user direction)
VERIFICATION:
- All 20 tracked files in .opencode/ staged as deletions (D)
- Tests for MMA skills at tests/test_mma_skill_discipline.py still pass
- conductor/workflow.md Session Start Checklist unchanged
- .agents/skills/mma-*/SKILL.md files unchanged
Empty strings in bias_profiles.keys() and personas.keys() caused
imgui.selectable() to fail with 'Cannot have an empty ID at root of
window' assertion error. Added guards to skip empty names.
- New edit_file(path, old_string, new_string, replace_all) function
- Reads/writes with newline='' to preserve CRLF and 1-space indentation
- Returns error if old_string not found or multiple matches without replace_all
- Added to MUTATING_TOOLS for HITL approval routing
- Added to TOOL_NAMES and dispatch function
- Added MCP_TOOL_SPECS entry for AI tool declaration
- Updated agent configs (tier2, tier3, general) with edit_file mapping
Note: tier1, tier4, explore agents don't need this (edit: deny - read-only)