Context
dragon/v2 already has RC1 golden guardrails, layered reason metadata, and weak-family predicate isolation. The remaining governance gaps are:
- runtime loop is still monolithic inside the compatibility facade,
- rollout health requires manually reading several files instead of one explicit decision state.
Goals / Non-Goals
Goals
- Decouple runtime execution loop from
dragon_strategy.py without changing behavior.
- Produce explicit rollout decision artifacts from existing monitor sources.
- Keep RC1 compatibility outputs and schemas stable.
Non-Goals
- Retune RC1 thresholds.
- Change branch trade paths in this change.
- Replace existing monitor metrics or thresholds.
Decisions
1. Runtime extraction without behavior rewrite
Move execution-loop mechanics (event/trade payload assembly and reason-metadata enrichment) into a dedicated module, and keep DragonRuleEngine decision hooks intact.
2. Gate-based rollout decision model
Rollout decision uses deterministic gates across:
- latest data freshness alignment,
- monitor hard/warning conditions and streaks,
- divergence level and refined-control alignment.
3. Branch fallback policy
When rollout decision is ROLLBACK_REVIEW_REQUIRED, recommended active branch becomes alpha_first_selective_veto; otherwise keep candidate branch from the daily manifest.
Risks / Trade-offs
- [Runtime extraction drift] -> covered by RC1 golden regression and no-silent-path checks.
- [Over-strict governance gates] -> start with warning-tier HOLD path before hard rollback.
- [Artifact dependency missing] -> missing monitor health artifact is a hard-fail gate.
Migration Plan
- Add compatibility runtime module and delegate
DragonRuleEngine.run(...).
- Add rollout governance evaluation module and checker script.
- Integrate rollout checker into forward pipeline.
- Add tests for gate evaluation logic.
- Re-run golden, full tests, daily pipeline smoke, and forward pipeline smoke.
Rollback Plan
- If golden hash or no-silent-path checks fail, revert runtime extraction commit.
- If governance checker causes pipeline regression, disable checker integration and keep standalone execution.