@code-migration/wow-migrator 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/package.json +1 -1
  2. package/skills/android-project-analyst/MIGRATION.md +14 -0
  3. package/skills/android-project-analyst/SKILL.md +20 -0
  4. package/skills/android-project-analyst/bind.md +2 -1
  5. package/skills/android-project-analyst/roles/analysis-workspace-state.md +7 -2
  6. package/skills/android-project-analyst/roles/behavior-logic.md +6 -3
  7. package/skills/android-project-analyst/roles/data-contract-flow.md +6 -3
  8. package/skills/android-project-analyst/roles/presentation-resource.md +8 -3
  9. package/skills/android-project-analyst/roles/project-architecture.md +6 -3
  10. package/skills/android-project-analyst/workflow.md +19 -16
  11. package/skills/android-to-kmp-migrator/MIGRATION.md +27 -2
  12. package/skills/android-to-kmp-migrator/SKILL.md +35 -4
  13. package/skills/android-to-kmp-migrator/bind.md +11 -5
  14. package/skills/android-to-kmp-migrator/dependencies.yaml +3 -3
  15. package/skills/android-to-kmp-migrator/roles/completion-report.md +9 -2
  16. package/skills/android-to-kmp-migrator/roles/dependency-platform-gate.md +7 -2
  17. package/skills/android-to-kmp-migrator/roles/logic-implementation.md +7 -2
  18. package/skills/android-to-kmp-migrator/roles/migration-analysis-planning.md +7 -2
  19. package/skills/android-to-kmp-migrator/roles/migration-verification.md +9 -3
  20. package/skills/android-to-kmp-migrator/roles/migration-workspace-state.md +199 -20
  21. package/skills/android-to-kmp-migrator/roles/module-node-review-fix.md +9 -2
  22. package/skills/android-to-kmp-migrator/roles/presentation-integration.md +7 -2
  23. package/skills/android-to-kmp-migrator/roles/state-data-prep.md +7 -2
  24. package/skills/android-to-kmp-migrator/roles/ui-implementation.md +7 -2
  25. package/skills/android-to-kmp-migrator/workflow.md +60 -20
  26. package/skills/kmp-test-validator/MIGRATION.md +26 -0
  27. package/skills/kmp-test-validator/SKILL.md +52 -1
  28. package/skills/kmp-test-validator/bind.md +21 -1
  29. package/skills/kmp-test-validator/roles/validation-intake-fidelity.md +7 -2
  30. package/skills/kmp-test-validator/roles/validation-plan-gate.md +9 -3
  31. package/skills/kmp-test-validator/roles/validation-remediation.md +7 -2
  32. package/skills/kmp-test-validator/roles/validation-report.md +7 -2
  33. package/skills/kmp-test-validator/roles/validation-test-runner.md +9 -3
  34. package/skills/kmp-test-validator/roles/validation-workspace-state.md +7 -2
  35. package/skills/kmp-test-validator/workflow.md +29 -9
  36. package/skills/migration-task-adapter/MIGRATION.md +16 -1
  37. package/skills/migration-task-adapter/SKILL.md +18 -0
  38. package/skills/migration-task-adapter/bind.md +4 -1
  39. package/skills/migration-task-adapter/dependencies.yaml +1 -1
  40. package/skills/migration-task-adapter/roles/task-reporter.md +7 -2
  41. package/skills/migration-task-adapter/roles/task-understanding-router.md +7 -2
  42. package/skills/migration-task-adapter/roles/workflow-orchestrator.md +7 -2
  43. package/skills/migration-task-adapter/roles/workspace-state-discipline-inspector.md +15 -6
  44. package/skills/migration-task-adapter/workflow.md +15 -15
@@ -1,6 +1,6 @@
1
1
  # Workflow: Legacy Android SPEC + target KMP project -> migrated, validation-ready KMP code
2
2
 
3
- This workflow uses the reduced 10-role module-first migrator. Adjacent responsibilities are consolidated, but gates remain explicit through role modes, check IDs, and exact output paths.
3
+ This workflow uses the reduced 10-role module-first migrator. Adjacent responsibilities are consolidated, but gates remain explicit through role modes, check IDs, exact output paths, and a workspace-state progress ledger that tracks per-module finish rates, plan-vs-code gaps, and rerun hooks.
4
4
 
5
5
  ## Overview
6
6
 
@@ -8,7 +8,7 @@ This workflow uses the reduced 10-role module-first migrator. Adjacent responsib
8
8
  graph TD
9
9
  L0[Leader pre-flight] --> ROOT[LockOutputRoot<br/>run_manifest.json]
10
10
  ROOT --> INV[MigrationModuleInventory]
11
- INV --> WS[migration-workspace-state]
11
+ INV --> WS[migration-workspace-state<br/>progress ledger]
12
12
  WS --> LOOP[ForEachMigrationModule]
13
13
  LOOP --> PLAN[migration-analysis-planning]
14
14
  PLAN --> DP[dependency-platform-gate]
@@ -25,7 +25,7 @@ graph TD
25
25
  RF2 --> LOGIC[logic-implementation]
26
26
  LOGIC --> RF3{module-node-review-fix}
27
27
  RF3 --> VER[migration-verification<br/>source_set api_contract ui_render incremental_build]
28
- VER -->|failed| RESP[Re-dispatch responsible reduced role]
28
+ VER -->|failed| RESP[Re-dispatch responsible reduced role<br/>from rerun_hook]
29
29
  RESP --> RF1
30
30
  VER -->|passed| READY[completion-report<br/>mode readiness]
31
31
  READY -->|needs_rerun| RESP
@@ -56,6 +56,7 @@ report_dir = <output_root>/report
56
56
  - **Executor**: Leader
57
57
  - **Input**: [dependencies.yaml](dependencies.yaml)
58
58
  - **Action**: check optional tools (`rg`, `git`, `curl`) and report degraded behavior.
59
+ - **Output**: pre-flight status recorded in `run_manifest.json` and later workspace-state artifacts.
59
60
  - **Gate**: missing optional tools do not skip nodes; the controller records degraded evidence.
60
61
 
61
62
  ### Step 1 — Trigger + Output Root
@@ -63,6 +64,7 @@ report_dir = <output_root>/report
63
64
  - **Executor**: Leader
64
65
  - **Input**: `legacy_android_project_path` or completed SPEC, `kmp_target_project_path`, `migration_scope`, optional `output_dir`
65
66
  - **Action**: verify migration trigger, verify analyst completion, lock `output_root`, write `<output_root>/run_manifest.json`.
67
+ - **Output**: `<output_root>/run_manifest.json` containing Android/SPEC inputs, KMP target path, migration scope, output root, allowed roots, dependency-preflight status, schedule version, and timestamp.
66
68
  - **Gate**: stop if target is not KMP-compatible or analyst completion is missing/stale.
67
69
 
68
70
  ### Step 2 — Migration Module Inventory
@@ -70,32 +72,55 @@ report_dir = <output_root>/report
70
72
  - **Executor**: Leader
71
73
  - **Action**: divide the requested migration into deterministic `migration_module_id` slices.
72
74
  - **Output**:
73
- - `<module_index_dir>/migration_module_inventory.json`
74
- - `<module_index_dir>/migration_module_inventory.md`
75
- - `<module_root>/module_brief.json` for every scheduled module
75
+ - `<module_index_dir>/migration_module_inventory.json`: module ids/order, scope slices, target placement hints, allowed files/source sets, module output roots, blockers.
76
+ - `<module_index_dir>/migration_module_inventory.md`: agent-readable module schedule and boundary evidence.
77
+ - `<module_root>/module_brief.json` for every scheduled module: module dispatch contract, evidence paths, role hints, allowed files/source sets, assumptions.
76
78
  - **Gate**: every module has `module_scope`, UI/logic/data/resource scope, target placement hints, `allowed_target_files`, and `allowed_source_sets`.
77
79
 
78
80
  ### Step 3 — Workspace State
79
81
 
80
82
  - **Executor**: `migration-workspace-state`
81
- - **Output**: `<global_dir>/node-results/migration-workspace-state/migration_workspace_state.*`
82
- - **Gate**: stale upstream outputs must be rerun before downstream consumption.
83
+ - **Input**: migration module inventory, module briefs, node outputs, changed files, planning outputs, implementation outputs, review outputs, verification outputs, representation outputs, source change/timestamp evidence, rerun reports, blockers.
84
+ - **Action**: initialize and refresh a progress ledger. Track per-module current stage, stage status, planned/completed work units, `finish_rate`, changed-file ownership, plan-vs-code gaps, stale outputs, rerun hooks, blockers, and next safe actions.
85
+ - **Output**:
86
+ - `<global_dir>/node-results/migration-workspace-state/migration_workspace_state.json`, `.md`: global/module progress ledger, aggregate finish rate, stale/blocked modules, rerun hooks.
87
+ - `<module_root>/node-results/migration-workspace-state/migration_workspace_state.json`, `.md`: module stage status, finish rate, changed-file ownership, plan-vs-code gaps, stale outputs, rerun hooks.
88
+ - **Gate**: stale upstream outputs, failed stages, missing review/verification, or non-empty `rerun_hooks` must be routed before downstream consumption. A downstream stage may consume a module only when the latest module progress record marks its required upstream stages fresh and usable.
89
+
90
+ ### Workspace State Refresh Points
91
+
92
+ The Leader refreshes `migration-workspace-state` after each major stage, and before any downstream role consumes newly produced artifacts:
93
+
94
+ | Refresh point | Required progress evidence |
95
+ |---|---|
96
+ | After module inventory | module list, module briefs, planned stage schedule |
97
+ | After planning | planned work units, source-to-target map, expected artifacts |
98
+ | After dependency/platform gate | dependency/platform readiness and blockers |
99
+ | After prep fan-out | presentation/state-data prep outputs and changed-file ownership |
100
+ | After every review/fix/re-review | latest review status, fix ownership, unresolved findings |
101
+ | After UI implementation | UI coding artifacts, plan coverage, review hook if needed |
102
+ | After logic implementation | logic coding artifacts, plan coverage, review hook if needed |
103
+ | After verification | check status, failed check routing, verification-required gaps |
104
+ | After readiness/module representation | module status and representation artifacts |
105
+ | After global representation/report | aggregate finish rate, stale module list, validation handoff readiness |
83
106
 
84
107
  ### Step 4 — Module Analysis And Planning
85
108
 
86
109
  - **Executor**: `migration-analysis-planning`
87
110
  - **Input**: module brief, SPEC paths, analyst artifacts, target path, workspace state
88
111
  - **Action**: verify SPEC/raw-source deltas, capture target KMP context/reuse inventory, produce source-to-target map and ordered implementation plan.
89
- - **Output**: `<module_root>/node-results/migration-analysis-planning/migration_analysis_planning.*`
112
+ - **Output**: `<module_root>/node-results/migration-analysis-planning/migration_analysis_planning.json`, `.md`. The artifacts must contain SPEC/raw-source deltas, target KMP evidence, reuse inventory, source-to-target map, resource project map, integration scaffold, ordered implementation tasks, blockers.
90
113
  - **Gate**: target KMP evidence and source-to-target map must exist before dependency/platform work.
114
+ - **Workspace-state update**: record planned work units and initial `finish_rate` basis. If the plan is incomplete, `migration-workspace-state` emits a rerun hook to `migration-analysis-planning`.
91
115
 
92
116
  ### Step 5 — Dependency And Platform Gate
93
117
 
94
118
  - **Executor**: `dependency-platform-gate`
95
119
  - **Input**: planning output, target baseline, allowed files/source sets
96
120
  - **Action**: apply minimal-change dependency gate and define/implement safe platform boundaries when required.
97
- - **Output**: `<module_root>/node-results/dependency-platform-gate/dependency_platform_gate.*`
121
+ - **Output**: `<module_root>/node-results/dependency-platform-gate/dependency_platform_gate.json`, `.md`. The artifacts must contain capability map, dependency/build decisions, platform capability boundaries, expect/actual/source-set plan, changed files, implementation constraints, blockers.
98
122
  - **Gate**: returns `ready_for_implementation` or `blocked`; no prep/implementation proceeds on blocked platform/dependency capability.
123
+ - **Workspace-state update**: record dependency/platform stage status and pause downstream consumers when blocked.
99
124
 
100
125
  ### Step 6 — Prep Fan-Out
101
126
 
@@ -104,9 +129,10 @@ report_dir = <output_root>/report
104
129
  - `presentation-integration`: theme tokens, resource migration/modeling, navigation routes.
105
130
  - `state-data-prep`: state holders, models, mappers, API/data expectations, logic handoff.
106
131
  - **Output**:
107
- - `<module_root>/node-results/presentation-integration/presentation_integration.*`
108
- - `<module_root>/node-results/state-data-prep/state_data_prep.*`
132
+ - `<module_root>/node-results/presentation-integration/presentation_integration.json`, `.md`: token/component/resource/media/route mappings, UI handoff, changed files, presentation gaps.
133
+ - `<module_root>/node-results/state-data-prep/state_data_prep.json`, `.md`: state holders, UI state/events/effects, model/mappers, API/data contract expectations, logic handoff, changed files.
109
134
  - **Gate**: every file-changing prep slice enters review/fix before UI or logic consumes it.
135
+ - **Workspace-state update**: record changed-file ownership and plan-vs-code gaps for prep outputs; emit review rerun hooks when file-changing slices lack review approval.
110
136
 
111
137
  ### Step 7 — Review/Fix Loop
112
138
 
@@ -115,18 +141,26 @@ report_dir = <output_root>/report
115
141
  - `review`: read-only review of one module/node slice.
116
142
  - `fix`: scoped edit of explicit `must_fix` findings inside `allowed_files`.
117
143
  - **Gate**: every fix must be followed by a fresh review. Downstream nodes may consume only slices whose latest review is `approved`.
144
+ - **Output**:
145
+ - Review mode: `<module_root>/node-results/module-node-review-fix/<owning_node>/review/module_node_review.json`, `.md` with read-only findings, reviewed files, approval/needs-fix status, blockers.
146
+ - Fix mode: `<module_root>/node-results/module-node-review-fix/<owning_node>/fix/module_node_fix.json`, `.md` with fixed/unfixed findings, changed files, `requires_re_review: true`, blockers.
147
+ - **Workspace-state update**: record review status by owner node and planned work unit. `needs_fix` and missing re-review produce rerun hooks.
118
148
 
119
149
  ### Step 8 — UI Implementation
120
150
 
121
151
  - **Executor**: `ui-implementation`
122
152
  - **Action**: implement visible UI surface first, including states/resources and binding surfaces.
153
+ - **Output**: `<module_root>/node-results/ui-implementation/ui_implementation.json`, `.md` with changed UI/resource files, UI coverage, fidelity notes, binding surfaces, diagnostics, blockers.
123
154
  - **Gate**: UI output is reviewed/approved before logic implementation.
155
+ - **Workspace-state update**: record UI implementation progress, changed files, missing planned UI work, unplanned UI changes, and required review hooks.
124
156
 
125
157
  ### Step 9 — Logic Implementation
126
158
 
127
159
  - **Executor**: `logic-implementation`
128
160
  - **Action**: implement repositories/use cases/API integration/business logic bound to approved UI surfaces.
161
+ - **Output**: `<module_root>/node-results/logic-implementation/logic_implementation.json`, `.md` with changed logic/data/API files, architecture alignment, platform boundaries, data flows, API integrations, logic coverage, diagnostics, blockers.
129
162
  - **Gate**: logic output is reviewed/approved before verification.
163
+ - **Workspace-state update**: record logic implementation progress, changed files, missing planned logic work, unplanned logic changes, and required review hooks.
130
164
 
131
165
  ### Step 10 — Verification
132
166
 
@@ -136,35 +170,39 @@ report_dir = <output_root>/report
136
170
  - `api_contract`
137
171
  - `ui_render`
138
172
  - `incremental_build`
139
- - **Output**: `<module_root>/node-results/migration-verification/migration_verification.*`
173
+ - **Output**: `<module_root>/node-results/migration-verification/migration_verification.json`, `.md`, plus log files when commands run. The artifacts must contain stable `check_results`, evidence, failures, routed owner nodes, command/log paths, blockers.
140
174
  - **Gate**: failures route to the responsible reduced role and re-enter review/fix.
175
+ - **Workspace-state update**: record verification status, failed check ids, `route_to_node`, and rerun hooks that pause readiness until resolved.
141
176
 
142
177
  ### Step 11 — Readiness And Module Representation
143
178
 
144
179
  - **Executor**: `completion-report` in `mode: readiness`, then Leader
145
180
  - **Action**: decide module readiness; write module representation.
146
181
  - **Output**:
147
- - `<module_root>/node-results/completion-report/readiness/completion_readiness.*`
148
- - `<module_representation_dir>/module_migration_representation.json`
149
- - `<module_representation_dir>/module_migration_representation.md`
182
+ - `<module_root>/node-results/completion-report/readiness/completion_readiness.json`, `.md`: requirement coverage, invariants, review/verification status, rerun requests, blockers.
183
+ - `<module_representation_dir>/module_migration_representation.json`: machine synthesis of verified module migration outputs, changed files by role, coverage, gaps, evidence.
184
+ - `<module_representation_dir>/module_migration_representation.md`: agent-readable module migration handoff and traceability.
150
185
  - **Gate**: blocked modules still write a representation with blockers.
186
+ - **Workspace-state update**: record module representation artifacts, final module finish rate, and remaining blockers without issuing the final report verdict.
151
187
 
152
188
  ### Step 12 — Global Representation
153
189
 
154
190
  - **Executor**: Leader
155
191
  - **Input**: all module representations
156
192
  - **Output**:
157
- - `<global_dir>/global_migration_representation.json`
158
- - `<global_dir>/global_migration_representation.md`
193
+ - `<global_dir>/global_migration_representation.json`: machine synthesis of module representations, cross-module target changes, shared ownership, coverage, blockers.
194
+ - `<global_dir>/global_migration_representation.md`: agent-readable global migration handoff and validation prerequisites.
159
195
  - **Gate**: final report cannot run until global representation exists and is non-empty.
196
+ - **Workspace-state update**: record aggregate finish rate, represented modules, blocked/stale modules, and report blockers.
160
197
 
161
198
  ### Step 13 — Final Report And Validation Handoff
162
199
 
163
200
  - **Executor**: `completion-report` in `mode: report`, then Leader
164
201
  - **Output**:
165
- - `<report_dir>/migration_report.json`
166
- - `<report_dir>/migration_report.md`
202
+ - `<report_dir>/migration_report.json`: validation-ready machine handoff with scope, paths, module/global representations, changed files by role, coverage, validation inputs, limitations, blockers.
203
+ - `<report_dir>/migration_report.md`: agent-readable migration report for validator and follow-up agents.
167
204
  - **Gate**: report mode may return `ready_for_validation` only after module/global representations exist and readiness has passed. Leader invokes `kmp-test-validator` afterward.
205
+ - **Workspace-state update**: final refresh records report artifacts and validation handoff readiness.
168
206
 
169
207
  ## Final Report Shape
170
208
 
@@ -199,6 +237,8 @@ report_dir = <output_root>/report
199
237
 
200
238
  - Active dispatch uses only the 10 reduced role IDs from `SKILL.md`.
201
239
  - Every module has a `module_brief.json`, verified node outputs under `<module_root>/node-results/`, and a module migration representation.
240
+ - Latest `migration-workspace-state` includes `module_progress`, `finish_rate`, `plan_code_gaps`, and `rerun_hooks` for every scheduled module.
241
+ - No downstream stage consumes a module when its latest workspace-state record has stale required inputs, unresolved blocking plan-vs-code gaps, missing review approval, missing verification, or blocking rerun hooks.
202
242
  - Review/fix invocations are separate: `review` -> optional `fix` -> fresh `review`.
203
243
  - Verification uses stable `check_ids` and routes failures to reduced role IDs.
204
244
  - No Android-only API leaks into `commonMain`; dependency changes pass the minimal-change gate.
@@ -56,3 +56,29 @@ The current active validator reduces 9 roles to 6. See [ROLE_REDUCTION.md](ROLE_
56
56
  | `validation-report` | `validation-report` |
57
57
 
58
58
  The reduction keeps the important gates intact: migration trigger/fidelity trust gate, build-before-tests gate, scoped remediation with mandatory reruns, and report-only final verdict.
59
+
60
+ ## Validation Output Location Refinement
61
+
62
+ Validator outputs now use a strict validation root parallel to migration outputs:
63
+
64
+ ```text
65
+ validation_base = <output_dir or ~/.a2c_agents/validation>
66
+ output_root = <validation_base>/kmp-test-validator
67
+ ```
68
+
69
+ When a migration output root is supplied, it remains a read-only input. The validator writes to a sibling `validation` base location rather than writing inside the migration output root.
70
+
71
+ ## Output Contract Refinement
72
+
73
+ The active validator docs now distinguish output filenames from output content responsibilities. `SKILL.md` and `workflow.md` define the validation artifact schedule and content matrix, while each role file states the exact JSON/Markdown filenames and the evidence each artifact must contain.
74
+
75
+ Role ownership remains explicit:
76
+
77
+ - `validation_workspace_state.*` records validator ledger state only.
78
+ - `validation_intake_fidelity.*` records migration trigger evidence, validation brief, fidelity gaps, and test-trust blockers.
79
+ - `validation_plan_gate.*` records trusted commands, build/preview results, log paths, and failure routing.
80
+ - `validation_test_runner.*` records Android/SPEC-anchored cases, execution results, logs, and changed test files.
81
+ - `validation_remediation.*` records confirmed target fixes, changed files, diagnostics, and required reruns.
82
+ - `kmp_validation_report.*` records the final evidence-backed validation verdict.
83
+
84
+ The Leader must reject artifacts that have the correct filename but contain another role's work, generic KMP testing output, or prose-only summaries without machine-routable evidence.
@@ -49,7 +49,7 @@ The team is a **reduced serial pipeline with a remediation loop**. Role overlap
49
49
  ## Protocol Summary
50
50
 
51
51
  0. **Pre-flight** — check optional dependencies from [dependencies.yaml](dependencies.yaml).
52
- 1. **Workspace state** — initialize `validation-workspace-state`.
52
+ 1. **Output root + workspace state** — lock validation output root parallel to migration, then initialize `validation-workspace-state`.
53
53
  2. **Intake/fidelity trust gate** — run `validation-intake-fidelity`; block non-migration validation and test-trust blockers.
54
54
  3. **Plan/build gate** — run `validation-plan-gate`; commands must be trusted, and build/preview must pass before behavioral tests.
55
55
  4. **Test workflow** — run `validation-test-runner` when validation cases exist.
@@ -77,12 +77,63 @@ The team is a **reduced serial pipeline with a remediation loop**. Role overlap
77
77
  | [roles/](roles/) | Active reduced role specs |
78
78
  | [dependencies.yaml](dependencies.yaml) | Optional CLI tools checked at startup |
79
79
 
80
+ ## Strict Output Schedule
81
+
82
+ Validation artifacts must be written parallel to migration artifacts, under a `validation` base location. If the migration run uses a default base like `~/.a2c_agents/migration`, the validator uses the sibling base `~/.a2c_agents/validation`. If a `migration_output_root` is provided, derive the validation base by replacing the `migration` path segment with `validation` when possible; otherwise use `<output_dir or ~/.a2c_agents/validation>`.
83
+
84
+ ```text
85
+ output_root = <output_dir or ~/.a2c_agents/validation>/kmp-test-validator
86
+ workspace_state_dir = <output_root>/workspace-state
87
+ intake_dir = <output_root>/intake-fidelity
88
+ plan_gate_dir = <output_root>/plan-gate
89
+ test_runner_dir = <output_root>/test-runner
90
+ remediation_dir = <output_root>/remediation
91
+ report_dir = <output_root>/report
92
+ logs_dir = <output_root>/logs
93
+ ```
94
+
95
+ Required artifacts:
96
+
97
+ - `<output_root>/run_manifest.json`
98
+ - `<workspace_state_dir>/validation_workspace_state.json`
99
+ - `<workspace_state_dir>/validation_workspace_state.md`
100
+ - `<intake_dir>/validation_intake_fidelity.json`
101
+ - `<intake_dir>/validation_intake_fidelity.md`
102
+ - `<plan_gate_dir>/validation_plan_gate.json`
103
+ - `<plan_gate_dir>/validation_plan_gate.md`
104
+ - `<logs_dir>/plan-gate/*` when build/preview commands run
105
+ - `<test_runner_dir>/validation_test_runner.json`
106
+ - `<test_runner_dir>/validation_test_runner.md`
107
+ - `<logs_dir>/test-runner/*` when tests run
108
+ - `<remediation_dir>/<cycle_id>/validation_remediation.json` and `.md` when fixes run
109
+ - `<report_dir>/kmp_validation_report.json`
110
+ - `<report_dir>/kmp_validation_report.md`
111
+
112
+ No validator artifact may be written inside the migration output root. Migration artifacts are read-only inputs referenced by path.
113
+
114
+ ## Output Artifact Content Matrix
115
+
116
+ The controller verifies both artifact names and role-aligned content before downstream stages consume any file.
117
+
118
+ | Stage / owner | Output file(s) | Required content |
119
+ |---|---|---|
120
+ | Output root lock / Leader | `run_manifest.json` | Validation scope, KMP target path, Android source/SPEC paths, migration report path, migration output root, validation output root, allowed roots, dependency-preflight status, timestamp. |
121
+ | Workspace ledger / `validation-workspace-state` | `validation_workspace_state.json`, `validation_workspace_state.md` | Validator node status, output files, changed-file ownership, stale upstream inputs, rerun history, blockers, and next safe action. |
122
+ | Intake/fidelity / `validation-intake-fidelity` | `validation_intake_fidelity.json`, `validation_intake_fidelity.md` | Migration trigger evidence, normalized validation brief, KMP evidence, Android/SPEC-vs-KMP fidelity gaps across UI/logic/data/control flow, test-trust blockers, rerun requests, blockers. |
123
+ | Plan/build gate / `validation-plan-gate` | `validation_plan_gate.json`, `validation_plan_gate.md`, plan-gate logs | Target structure, source sets, test frameworks, trusted command resolution, command sources, build/preview/renderability gate results, log paths, routed failures, blockers. |
124
+ | Test runner / `validation-test-runner` | `validation_test_runner.json`, `validation_test_runner.md`, test logs, optional changed test files | Android/SPEC-anchored test cases, expected vs actual results, commands, log paths, created/reused tests, failure routing, skipped/blocked reasons. |
125
+ | Remediation / `validation-remediation` | `validation_remediation.json`, `validation_remediation.md`, changed target files | Confirmed target KMP failures, Android/SPEC evidence for fixes, fixed/unfixed failures, changed files, diagnostics, required reruns, blockers. |
126
+ | Final verdict / `validation-report` | `kmp_validation_report.json`, `kmp_validation_report.md` | Final `passed | failed | blocked` verdict from verified evidence, fidelity summary, build/preview summary, test statistics, remediation summary, changed files, remaining failures, blockers, report path. |
127
+
128
+ JSON artifacts are the machine-routable source of truth. Markdown artifacts are agent-readable handoffs that preserve exact paths, commands/logs, changed-file ownership, rerun context, blockers, and downstream routing. Node Markdown must not be a prose-only completion summary.
129
+
80
130
  ## Shared Return Contract
81
131
 
82
132
  ```json
83
133
  {
84
134
  "status": "completed | passed | failed | needs_rerun | blocked",
85
135
  "node": "node-name",
136
+ "output_dir": "<exact validator node output dir under output_root>",
86
137
  "output_files": [],
87
138
  "changed_files": [],
88
139
  "stale_upstream_inputs": [],
@@ -16,6 +16,9 @@
16
16
  Team-level rules — distinct from each role's own `## Boundary`.
17
17
 
18
18
  - **Leader-as-orchestrator only**: the Leader (`kmp-test-validator` controller) gates the migration scenario, dispatches nodes in dependency order, validates return payloads + output files, refreshes workspace state, and routes reruns. The Leader does NOT perform a node's detailed audit, run its tests, or apply its fixes.
19
+ - **Strict validation output root**: the Leader must lock `output_root = <output_dir or ~/.a2c_agents/validation>/kmp-test-validator` before validator node dispatch. When a migration output root is provided, validation must be written to a parallel `validation` base location, not inside the migration output root. Migration artifacts are read-only inputs referenced by path.
20
+ - **Per-node exact paths**: validator nodes write only under the declared validation output root: `workspace-state`, `intake-fidelity`, `plan-gate`, `test-runner`, `remediation/<cycle_id>`, `report`, and `logs`.
21
+ - **Role-output content discipline**: required artifacts must contain the content owned by their role, not just the correct filename. `validation_intake_fidelity.*` must contain migration/fidelity trust evidence; `validation_plan_gate.*` must contain trusted commands and build/preview gate evidence; `validation_test_runner.*` must contain Android-anchored cases/results; `validation_remediation.*` must contain confirmed target fixes and required reruns; `kmp_validation_report.*` must contain the final evidence-based verdict.
19
22
  - **Migration-scenario trigger boundary**: this team validates ONLY Android-to-KMP migration output. If `validation-intake-fidelity` cannot confirm migration evidence (KMP target + Android source/SPEC + migration report/completion), the run is `blocked` — it is never downgraded to generic KMP testing, KMP-only feature work, or isolated Gradle troubleshooting.
20
23
  - **Hard dependency order (C-pattern)**: workspace state → intake/fidelity → plan/build gate → test runner → remediation loop → report. Fidelity is audited before tests are trusted; the build/preview gate passes before behavioral tests run. A downstream role references upstream outputs by path and must NOT rebuild them; on missing/stale upstream input it returns `needs_rerun`/`blocked`.
21
24
  - **Android/SPEC is ground truth**: a passing test (or green build) that contradicts Android source/SPEC behavior is a validation failure, not a pass.
@@ -31,7 +34,7 @@ Team-level rules — distinct from each role's own `## Boundary`.
31
34
  | Failure mode | Response |
32
35
  |---|---|
33
36
  | Node timeout | Retry once with the same contract. On 2nd timeout, mark the node `[ROLE MISSING — node timed out]` in the workspace ledger; downstream nodes that hard-require it return `blocked`. |
34
- | Malformed output (does not match role `## Output Schema` / shared return, or files missing/empty) | Re-dispatch once with the schema inlined and a "previous output was malformed/missing" preamble. On 2nd failure, mark `[ROLE MISSING — malformed output]`. |
37
+ | Malformed output (does not match role `## Output Schema` / shared return, files missing/empty, writes outside validation output root, or artifact content does not match the role duty) | Re-dispatch once with the schema, exact output path, and role-owned output content inlined plus a "previous output was malformed/missing/out-of-duty/out-of-path" preamble. On 2nd failure, mark `[ROLE MISSING — malformed output]`. |
35
38
  | Node returns `needs_rerun` / `blocked` (missing or stale upstream input) | Refresh/re-run the named upstream node first, then re-dispatch this node. If unresolvable, record the `blocking_gap`. |
36
39
  | `validation-plan-gate` or `validation-test-runner` returns `failed` | Route fixable target-code failures to `validation-remediation`; on its `required_reruns`, re-run the affected gate/tests. Non-target failures route to migration node / user / environment. |
37
40
  | Remediation loop does not converge in `max_remediation_cycles` | Escalate remaining failures as `blocked` with evidence to the controller/user; do not mark `passed`. |
@@ -51,3 +54,20 @@ Team-level rules — distinct from each role's own `## Boundary`.
51
54
  - If 50%+ of dispatched nodes return `[ROLE MISSING]`, the run is **FAILED** — emit a partial validation report with a `FAILED: insufficient node coverage` header, status `blocked`, and the missing-evidence list.
52
55
  - If `total_wall_clock_budget` is exceeded, halt in-flight nodes, checkpoint via `validation-workspace-state`, emit whatever verified outputs exist, and tag the report `INCOMPLETE: budget exceeded`.
53
56
  - If `total_token_budget` is exceeded mid-run, halt new dispatches, let in-flight nodes finish, checkpoint, and emit a partial report tagged `INCOMPLETE: token budget exceeded`.
57
+
58
+ ## Required Path Contract
59
+
60
+ ```json
61
+ {
62
+ "output_root": "<output_dir or ~/.a2c_agents/validation>/kmp-test-validator",
63
+ "workspace_state_dir": "<output_root>/workspace-state",
64
+ "intake_dir": "<output_root>/intake-fidelity",
65
+ "plan_gate_dir": "<output_root>/plan-gate",
66
+ "test_runner_dir": "<output_root>/test-runner",
67
+ "remediation_dir": "<output_root>/remediation",
68
+ "report_dir": "<output_root>/report",
69
+ "logs_dir": "<output_root>/logs"
70
+ }
71
+ ```
72
+
73
+ Validator artifacts outside this path contract are invalid. Migration artifacts remain in their migration output location and are never overwritten or copied as validator outputs.
@@ -50,6 +50,11 @@ Mandatory:
50
50
 
51
51
  Shared return shape applies.
52
52
 
53
+ ## Output Files And Contents
54
+
55
+ - `validation_intake_fidelity.json`: machine-routable intake/fidelity artifact containing trigger verification, KMP target path, Android source path, migration scope, SPEC paths, migration report path, validation requirements, KMP evidence, fidelity gaps, test-trust blockers, rerun requests, and blockers.
56
+ - `validation_intake_fidelity.md`: agent-readable trust-gate handoff containing migration evidence summary, normalized validation brief, Android/SPEC-vs-KMP fidelity findings across UI/logic/data/control flow, test-trust blockers, required reruns, and blockers.
57
+
53
58
  ## Inline Persona for Teammate
54
59
 
55
60
  ```text
@@ -60,8 +65,8 @@ Verify this is Android-to-KMP migration validation, normalize the validation bri
60
65
  INPUTS: kmp_target_project_path, legacy_android_project_path, migration_scope, SPEC paths, migration_report_path, changed_files, validation_requirements, output_dir.
61
66
 
62
67
  OUTPUTS:
63
- - validation_intake_fidelity.json
64
- - validation_intake_fidelity.md
68
+ - validation_intake_fidelity.json (machine trust gate: trigger evidence, validation brief, fidelity gaps, test-trust blockers)
69
+ - validation_intake_fidelity.md (agent handoff: migration evidence, fidelity audit summary, blockers/reruns)
65
70
 
66
71
  Return JSON only. Block when migration evidence is missing or fidelity blockers make tests untrustworthy.
67
72
  ```
@@ -48,6 +48,12 @@ Mandatory:
48
48
 
49
49
  Shared return shape applies.
50
50
 
51
+ ## Output Files And Contents
52
+
53
+ - `validation_plan_gate.json`: machine-routable command/build gate artifact containing target project structure, source sets, test frameworks, trusted resolved commands, command sources, scope-to-target mapping, build status/log path, preview/renderability status/log path, routed failures, rerun requests, and blockers.
54
+ - `validation_plan_gate.md`: agent-readable gate handoff containing command provenance, build/preview execution summary, log paths, target/source-set/test framework notes, failure classification, rerun requirements, and blockers.
55
+ - Build/preview logs: command output files written under `output_dir` or the shared validation logs directory. Every log path must be referenced from JSON.
56
+
51
57
  ## Inline Persona for Teammate
52
58
 
53
59
  ```text
@@ -58,9 +64,9 @@ Resolve trusted validation commands and run build/preview gates. Never invent co
58
64
  INPUTS: kmp_target_project_path, migration_scope, validation_intake_fidelity_path, migration_report_path, changed_files, user commands, validation_requirements, output_dir.
59
65
 
60
66
  OUTPUTS:
61
- - validation_plan_gate.json
62
- - validation_plan_gate.md
63
- - build/preview logs
67
+ - validation_plan_gate.json (machine gate: trusted commands, build/preview status, log paths, routed failures)
68
+ - validation_plan_gate.md (agent handoff: command provenance, gate results, failure routing, blockers)
69
+ - build/preview logs (paths referenced in JSON)
64
70
 
65
71
  Return passed only when required build/preview gates pass.
66
72
  ```
@@ -45,6 +45,11 @@ You are the `validation-remediation` node subagent dispatched by the `kmp-test-v
45
45
 
46
46
  Shared controller return shape (all nodes): `status`, `node`, `output_files`, `changed_files`, `stale_upstream_inputs`, `rerun_requests`, `blocking_gaps`.
47
47
 
48
+ ## Output Files And Contents
49
+
50
+ - `validation_remediation.json`: machine-routable remediation artifact containing fixed failures, unfixed failures with route, changed files, diagnostics, required reruns, blockers, and exact failure evidence consumed.
51
+ - `validation_remediation.md`: agent-readable remediation handoff containing confirmed target failures, Android/SPEC evidence checked, fix summary, changed-file list, unfixed failures, required reruns, diagnostics, and blockers.
52
+
48
53
  ## Inline Persona for Teammate
49
54
 
50
55
  ```
@@ -94,8 +99,8 @@ HANDLER (how you process):
94
99
  7. Return the exact gates/tests that must be re-run after the fix.
95
100
 
96
101
  OUTPUTS (write under output_dir, exact names):
97
- - validation_remediation.json (schema below)
98
- - validation_remediation.md
102
+ - validation_remediation.json (machine fix artifact: fixed/unfixed failures, changed files, diagnostics, required reruns)
103
+ - validation_remediation.md (agent handoff: confirmed target fixes, evidence checked, changed files, rerun requirements)
99
104
  - changed target files listed in JSON
100
105
 
101
106
  validation_remediation.json schema:
@@ -49,6 +49,11 @@ You are the `validation-report` node subagent dispatched by the `kmp-test-valida
49
49
 
50
50
  Shared controller return shape (all nodes): `status`, `node`, `output_files`, `changed_files`, `stale_upstream_inputs`, `rerun_requests`, `blocking_gaps`.
51
51
 
52
+ ## Output Files And Contents
53
+
54
+ - `kmp_validation_report.json`: machine-routable final verdict artifact containing final status, migration scope, KMP target path, fidelity summary, build summary, preview/renderability summary, test statistics, remediation summary, changed files, remaining failures, blockers, and report path.
55
+ - `kmp_validation_report.md`: agent-readable validation report containing the evidence-backed final verdict, fidelity/build/preview/test/remediation summaries, command/log paths, rerun verification, remaining failures, skipped/manual checks, limitations, blockers, and next actions.
56
+
52
57
  ## Inline Persona for Teammate
53
58
 
54
59
  ```
@@ -94,8 +99,8 @@ HANDLER (how you process):
94
99
  7. Decide final status (passed | failed | blocked).
95
100
 
96
101
  OUTPUTS (write under output_dir, exact names):
97
- - kmp_validation_report.json (schema below)
98
- - kmp_validation_report.md
102
+ - kmp_validation_report.json (machine final verdict: fidelity/build/preview/test/remediation summaries, failures, blockers)
103
+ - kmp_validation_report.md (agent report: evidence-backed verdict, command/log paths, remaining failures, limitations)
99
104
 
100
105
  kmp_validation_report.json schema:
101
106
  { "status": "passed | failed | blocked", "node": "validation-report", "migration_scope": "",
@@ -43,6 +43,12 @@ Mandatory:
43
43
 
44
44
  Shared return shape applies.
45
45
 
46
+ ## Output Files And Contents
47
+
48
+ - `validation_test_runner.json`: machine-routable test artifact containing Android/SPEC-anchored test cases, execution results, expected vs actual evidence, commands, log files, changed test files, rerun requests, and blockers.
49
+ - `validation_test_runner.md`: agent-readable test handoff containing case decomposition, evidence anchors, execution summary, pass/fail/skip/blocker tables, command/log paths, created/reused tests, failure routing, and blockers.
50
+ - Logs and changed test files: command output logs and any created tests following target project conventions. Every log and changed file must be listed in JSON.
51
+
46
52
  ## Inline Persona for Teammate
47
53
 
48
54
  ```text
@@ -53,9 +59,9 @@ Decompose validation requirements into atomic Android-anchored cases, then execu
53
59
  INPUTS: kmp_target_project_path, migration_scope, validation_intake_fidelity_path, validation_plan_gate_path, migration_report_path, validation_requirements, changed_files, output_dir.
54
60
 
55
61
  OUTPUTS:
56
- - validation_test_runner.json
57
- - validation_test_runner.md
58
- - logs and changed test files when created
62
+ - validation_test_runner.json (machine test artifact: cases, results, expected/actual, commands/logs, changed tests)
63
+ - validation_test_runner.md (agent handoff: case table, execution summary, failure routing, blockers)
64
+ - logs and changed test files when created (paths referenced in JSON)
59
65
 
60
66
  Return passed only when all runnable cases pass or are justified skips.
61
67
  ```
@@ -46,6 +46,11 @@ You are the `validation-workspace-state` node subagent dispatched by the `kmp-te
46
46
 
47
47
  Shared controller return shape (all nodes): `status`, `node`, `output_files`, `changed_files`, `stale_upstream_inputs`, `rerun_requests`, `blocking_gaps`.
48
48
 
49
+ ## Output Files And Contents
50
+
51
+ - `validation_workspace_state.json`: machine-routable validation ledger containing current controller step, validator node status, output file inventory, changed-file ownership, stale upstream inputs, rerun history, blockers, and next safe actions.
52
+ - `validation_workspace_state.md`: agent-readable ledger handoff containing node status table, stale-input table, changed-file ownership summary, rerun/blocker history, and next safe controller action.
53
+
49
54
  ## Inline Persona for Teammate
50
55
 
51
56
  ```
@@ -87,8 +92,8 @@ HANDLER (how you process):
87
92
  5. Identify the next safe controller action.
88
93
 
89
94
  OUTPUTS (write under output_dir, exact names):
90
- - validation_workspace_state.json (schema below)
91
- - validation_workspace_state.md
95
+ - validation_workspace_state.json (machine ledger: node status, output inventory, stale inputs, changed-file ownership, reruns, blockers)
96
+ - validation_workspace_state.md (agent handoff: status/stale/rerun/blocker tables and next safe action)
92
97
 
93
98
  validation_workspace_state.json schema:
94
99
  { "status": "completed | blocked", "node": "validation-workspace-state", "current_controller_step": "",
@@ -1,12 +1,12 @@
1
1
  # Workflow: migrated KMP target + Android source/SPEC -> verified validation verdict
2
2
 
3
- This reduced workflow validates Android-to-KMP migration output through 6 active roles. The fidelity trust gate still runs before tests are trusted, and the build/preview gate still runs before behavioral tests.
3
+ This reduced workflow validates Android-to-KMP migration output through 6 active roles. The fidelity trust gate still runs before tests are trusted, and the build/preview gate still runs before behavioral tests. Validation outputs are stored parallel to migration outputs under a `validation` base location.
4
4
 
5
5
  ## Overview
6
6
 
7
7
  ```mermaid
8
8
  graph TD
9
- L0[Leader pre-flight] --> WS[validation-workspace-state]
9
+ L0[Leader pre-flight<br/>lock validation output_root] --> WS[validation-workspace-state]
10
10
  WS --> IF[validation-intake-fidelity]
11
11
  IF -->|blocked| STOP[Stop: not trusted migration validation]
12
12
  IF -->|trusted| PG[validation-plan-gate]
@@ -22,20 +22,39 @@ graph TD
22
22
  WS -. refreshed after each group .-> VR
23
23
  ```
24
24
 
25
+ ## Strict Output Roots
26
+
27
+ Validation output is parallel to migration output:
28
+
29
+ ```text
30
+ validation_base = <output_dir or ~/.a2c_agents/validation>
31
+ output_root = <validation_base>/kmp-test-validator
32
+ workspace_state_dir = <output_root>/workspace-state
33
+ intake_dir = <output_root>/intake-fidelity
34
+ plan_gate_dir = <output_root>/plan-gate
35
+ test_runner_dir = <output_root>/test-runner
36
+ remediation_dir = <output_root>/remediation
37
+ report_dir = <output_root>/report
38
+ logs_dir = <output_root>/logs
39
+ ```
40
+
41
+ When `migration_output_root` is known, it is a read-only input. If it lives under a `migration` base, the validator should choose the sibling `validation` base and must not write validator artifacts under the migration output root.
42
+
25
43
  ## Detailed Steps
26
44
 
27
45
  ### Step 0 — Pre-flight
28
46
 
29
47
  - **Executor**: Leader
30
48
  - **Input**: [dependencies.yaml](dependencies.yaml)
31
- - **Action**: verify optional tools; target Gradle wrapper drives build/test.
49
+ - **Action**: verify optional tools; target Gradle wrapper drives build/test. Lock `output_root = <output_dir or ~/.a2c_agents/validation>/kmp-test-validator` and write `run_manifest.json`.
50
+ - **Output**: `<output_root>/run_manifest.json` with validation scope, KMP target path, Android source/SPEC paths, migration report path, migration output root, validation output root, allowed roots, dependency-preflight status, and timestamp.
32
51
  - **Gate**: missing optional tools are recorded as degraded behavior.
33
52
 
34
53
  ### Step 1 — Workspace State
35
54
 
36
55
  - **Executor**: `validation-workspace-state`
37
56
  - **Action**: initialize ledger and refresh after each major group.
38
- - **Output**: `validation_workspace_state.json`, `validation_workspace_state.md`
57
+ - **Output**: `<workspace_state_dir>/validation_workspace_state.json`, `.md`. Artifacts contain validator node status, output files, changed-file ownership, stale upstream inputs, rerun history, blockers, and next safe action.
39
58
  - **Gate**: no role consumes stale required inputs.
40
59
 
41
60
  ### Step 2 — Intake And Fidelity Trust Gate
@@ -47,7 +66,7 @@ graph TD
47
66
  - verify KMP evidence and migration evidence.
48
67
  - compare Android source/SPEC vs migrated KMP across UI, logic, data flow, and control flow.
49
68
  - flag `test_trust_blockers`.
50
- - **Output**: `validation_intake_fidelity.json`, `validation_intake_fidelity.md`
69
+ - **Output**: `<intake_dir>/validation_intake_fidelity.json`, `.md`. Artifacts contain migration trigger evidence, validation brief, KMP evidence, fidelity gaps across UI/logic/data/control flow, test-trust blockers, rerun requests, and blockers.
51
70
  - **Gate**: missing migration evidence or blocking fidelity gaps stop trusted tests and route to user/migration/remediation.
52
71
 
53
72
  ### Step 3 — Validation Plan And Build/Preview Gate
@@ -59,7 +78,7 @@ graph TD
59
78
  - run resolved build command.
60
79
  - run preview/renderability gate when UI is in scope.
61
80
  - classify failures and route by owner.
62
- - **Output**: `validation_plan_gate.json`, `validation_plan_gate.md`, log files
81
+ - **Output**: `<plan_gate_dir>/validation_plan_gate.json`, `.md`, plus `<logs_dir>/plan-gate/*` when commands run. Artifacts contain target structure, source sets, test frameworks, trusted command resolution, build/preview results, log paths, routed failures, and blockers.
63
82
  - **Gate**: behavioral tests do not run unless required build/preview gates pass.
64
83
 
65
84
  ### Step 4 — Test Runner
@@ -71,7 +90,7 @@ graph TD
71
90
  - create minimal project-convention tests only when needed.
72
91
  - execute through trusted commands/channels.
73
92
  - record pass/fail/skip/blocker evidence.
74
- - **Output**: `validation_test_runner.json`, `validation_test_runner.md`, logs, changed test files when created
93
+ - **Output**: `<test_runner_dir>/validation_test_runner.json`, `.md`, plus `<logs_dir>/test-runner/*` and changed test files when created. Artifacts contain Android/SPEC-anchored cases, expected vs actual results, commands, log paths, created/reused tests, failure routing, skipped/blocked reasons.
75
94
  - **Gate**: a KMP pass that contradicts Android evidence is a failure.
76
95
 
77
96
  ### Step 5 — Remediation Loop
@@ -79,7 +98,7 @@ graph TD
79
98
  - **Executor**: `validation-remediation`
80
99
  - **Input**: failed plan/build gate or test runner outputs, `allowed_files`, failure IDs, fidelity evidence
81
100
  - **Action**: fix only confirmed target KMP failures inside allowed files.
82
- - **Output**: `validation_remediation.json`, `validation_remediation.md`
101
+ - **Output**: `<remediation_dir>/<cycle_id>/validation_remediation.json`, `.md`. Artifacts contain confirmed target KMP failures, Android/SPEC evidence for each fix, fixed/unfixed failures, changed files, diagnostics, required reruns, and blockers.
83
102
  - **Gate**: every remediation emits `required_reruns`; the controller reruns `validation-plan-gate` and/or `validation-test-runner` until pass or blocked.
84
103
 
85
104
  ### Step 6 — Final Report
@@ -87,7 +106,7 @@ graph TD
87
106
  - **Executor**: `validation-report`
88
107
  - **Input**: workspace state, intake/fidelity, plan/gate, test runner, remediation, migration report
89
108
  - **Action**: synthesize the final validation verdict.
90
- - **Output**: `kmp_validation_report.json`, `kmp_validation_report.md`
109
+ - **Output**: `<report_dir>/kmp_validation_report.json`, `.md`. Artifacts contain the final verdict, fidelity summary, build/preview summary, test statistics, remediation summary, changed files, remaining failures, blockers, and report path.
91
110
  - **Gate**: report runs only when latest workspace state shows no stale required inputs.
92
111
 
93
112
  ## Final Report Format
@@ -111,6 +130,7 @@ graph TD
111
130
  ## Acceptance Criteria
112
131
 
113
132
  - Active dispatch uses only the 6 reduced role IDs.
133
+ - All validator outputs are under `<validation_base>/kmp-test-validator`, parallel to the migration output location, and migration artifacts are consumed read-only by path.
114
134
  - Intake/fidelity trust gate completes before build/test results are trusted.
115
135
  - Build/preview gate passes before behavioral tests run.
116
136
  - Commands are trusted and never invented.