refactor: decomposition WIP (orchestrator/server/execution-plan)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhFXmKe4WisSSPf9LrmmTg
This commit is contained in:
2026-07-15 13:17:01 +04:00
parent 9b925e141d
commit d69cb12ce9
17 changed files with 209 additions and 20 deletions
@@ -38,6 +38,14 @@ data class StageConfig(
// FAILS the gate — catching missing files, which the runtime write-manifest alone (it only
// inspects files that WERE written) cannot. Derived from the concrete entries of PlanStage.writes.
val expectedFiles: List<String> = emptyList(),
// Declared scope for this stage (architecture-conformance, design 2026-07-14): the
// workspace-relative globs the stage's intent is confined to (e.g. a frontend-client stage
// declares `frontend/**`). Distinct from [writeManifest], which is DERIVED from the concrete
// `writes` and so cannot contradict them: `touches` is the architect's separate statement of
// intent, and the plan compiler rejects a plan whose declared `writes` escape it (scope creep
// caught at plan time, before any code is written). Also fed to the semantic reviewer so it can
// judge goal-conformance against the declared scope. Empty = no scope constraint (default).
val touches: List<String> = emptyList(),
// Opt-in to the Gate 3 semantic (LLM) reviewer for this stage (staged-verification § Gate 3). When
// true and a reviewer is wired, the reviewer reads this stage's produced files after the
// deterministic funnel passes and raises advisory PR-comment findings; a high-confidence