partly or unimplemented features - now implemented
This commit is contained in:
295
opencode.json
Normal file
295
opencode.json
Normal file
@@ -0,0 +1,295 @@
|
||||
{
|
||||
"$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 don’t 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)."
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user