Files
git.stella-ops.org/opencode.json

296 lines
10 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"$schema": "https://opencode.ai/config.json",
"default_agent": "stella-architect",
"permission": {
"*": "allow",
"webfetch": "deny",
"edit": "ask",
"bash": "ask",
"external_directory": {
"*": "ask",
"../wt-*": "allow",
"..\\wt-*": "allow"
}
},
"agent": {
"stella-architect": {
"mode": "primary",
"description": "Reads docs/implplan sprints, writes SEP, spawns lane workers, runs reviewer, enforces determinism/offline + sprint log updates.",
"model": "github-copilot/claude-opus-4.6",
"temperature": 0.1,
"max_steps": 20,
"tools": { "write": false, "edit": false, "bash": true },
"permission": {
"edit": "deny",
"webfetch": "deny",
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"git log*": "allow",
"git show*": "allow",
"git branch*": "allow",
"git checkout*": "ask",
"git switch*": "ask",
"git worktree*": "ask",
"dotnet build*": "allow",
"dotnet test*": "allow",
"npm test*": "ask",
"npx playwright*": "ask"
},
"task": {
"*": "deny",
"stella-worker-*": "allow",
"stella-reviewer": "allow"
}
}
},
"stella-reviewer": {
"mode": "subagent",
"description": "Read-only gatekeeper: verifies sprint completion criteria, determinism/offline tests, and prevents architectural drift.",
"model": "github-copilot/claude-opus-4.6",
"temperature": 0.1,
"max_steps": 15,
"tools": { "write": false, "edit": false, "bash": true },
"permission": {
"edit": "deny",
"webfetch": "deny",
"bash": {
"*": "ask",
"git diff*": "allow",
"git status*": "allow",
"dotnet test*": "allow"
},
"task": { "*": "deny" }
}
},
"stella-worker-libraries": {
"mode": "subagent",
"description": "Codex worker for src/__Libraries/** and related docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/__Libraries/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-advisoryai": {
"mode": "subagent",
"description": "Codex worker for src/AdvisoryAI/** (+ src/Zastava/**) and docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/AdvisoryAI/**": "allow",
"src/Zastava/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-attestor": {
"mode": "subagent",
"description": "Codex worker for src/Attestor/** and related docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/Attestor/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-policy": {
"mode": "subagent",
"description": "Codex worker for src/Policy/** and related docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/Policy/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-scanner": {
"mode": "subagent",
"description": "Codex worker for src/Scanner/** and related docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/Scanner/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-reachgraph": {
"mode": "subagent",
"description": "Codex worker for src/ReachGraph/** and related docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/ReachGraph/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-orchestrator": {
"mode": "subagent",
"description": "Codex worker for src/Orchestrator/** and src/ReleaseOrchestrator/** and related docs/sprint log updates.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/Orchestrator/**": "allow",
"src/ReleaseOrchestrator/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow"
}
}
},
"stella-worker-fe": {
"mode": "subagent",
"description": "Codex worker for src/Web/** (frontend) and related docs/sprint log updates. Use Playwright for UI testable features.",
"model": "openai/gpt-5.3-codex",
"temperature": 0.0,
"max_steps": 35,
"permission": {
"webfetch": "deny",
"task": { "*": "deny" },
"edit": {
"*": "deny",
"src/Web/**": "allow",
"docs/implplan/**": "allow",
"docs/modules/**": "allow",
"docs/process/**": "allow"
},
"bash": {
"*": "ask",
"git status*": "allow",
"git diff*": "allow",
"dotnet build*": "allow",
"dotnet test*": "allow",
"npm test*": "ask",
"npx playwright*": "ask"
}
}
}
},
"command": {
"sprint": {
"description": "Architect: read one sprint file, produce SEP, spawn lane worker, then run reviewer.",
"agent": "stella-architect",
"template": "You are the Stella Architect.\nRead the sprint file at @docs/implplan/$ARGUMENTS.\n\n1) Produce a Sprint Execution Plan (SEP):\n - files likely to change\n - T1/T2/T3 steps mapped to concrete edits\n - deterministic/offline test plan + exact commands\n - explicit non-goals\n\n2) Choose exactly one worker lane based on 'Working directory' and/or module:\n - src/__Libraries/** => @stella-worker-libraries\n - src/AdvisoryAI/** or src/Zastava/** => @stella-worker-advisoryai\n - src/Attestor/** => @stella-worker-attestor\n - src/Policy/** => @stella-worker-policy\n - src/Scanner/** => @stella-worker-scanner\n - src/ReachGraph/** => @stella-worker-reachgraph\n - src/Orchestrator/** or src/ReleaseOrchestrator/** => @stella-worker-orchestrator\n - src/Web/** or FE => @stella-worker-fe\n\n3) Spawn the worker as a subagent to implement the sprint strictly against the SEP.\n Requirements for the worker:\n - Update sprint Execution Log (START + FINISH entries) in the sprint file.\n - Add deterministic unit/integration tests; no external network calls in tests.\n - Update docs/modules/** if the sprint requires it.\n\n4) After the worker finishes, spawn @stella-reviewer to gate the diff vs completion criteria.\n5) If reviewer blocks, delegate fixes back to the same worker lane."
},
"sprints": {
"description": "Architect: run multiple sprints in parallel (only if lanes dont overlap).",
"agent": "stella-architect",
"template": "You are the Stella Architect.\nYou are given multiple sprint filenames in $ARGUMENTS (space-separated).\n\nProcess each sprint:\nA) Read @docs/implplan/<sprintfile> and generate an SEP.\nB) Determine its lane (libraries/advisoryai/attestor/policy/scanner/reachgraph/orchestrator/fe).\n\nConcurrency rules:\n- Never run two sprints at the same time in the same lane.\n- If two sprints map to the same lane, queue them (start the next only after the previous finishes).\n- If lanes are distinct, you may spawn multiple workers concurrently via Task tool.\n\nFor each sprint you start, spawn the matching @stella-worker-* subagent with that sprint + SEP.\nAfter each worker completes, spawn @stella-reviewer for that sprint diff.\n\nOutput a live table of: Sprint -> Lane -> Worker -> Status (Queued/Running/Review/Blocked/Done)."
}
}
}