From 3ab87d767200d37eb67e23aa6aa59a22fd3f3e00 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Fri, 24 Apr 2026 10:07:10 +0200 Subject: [PATCH] =?UTF-8?q?plan(dqn-v2):=20Plan=203=20self-review=20fix=20?= =?UTF-8?q?=E2=80=94=20remove=20unimplemented!()=20from=20example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Self-review caught that the CqlAlphaSeedCoupledController read_signals example used unimplemented!("plumbed by caller"), which violates the very Invariant 9 the plan enforces. Replaced with a concrete implementation that reads SEED_FRACTION_EMA_INDEX from the ISV bus (a Plan 1 reserved controller-signal slot). No other plan had placeholder violations. The remaining TBD/TODO/FIXME grep hits across Plans 1-5 are either the pre-commit hook's rejection patterns (correctly quoted) or enforcement scans that DETECT the markers in audit docs. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../plans/2026-04-24-dqn-v2-plan-3-behavioural.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/superpowers/plans/2026-04-24-dqn-v2-plan-3-behavioural.md b/docs/superpowers/plans/2026-04-24-dqn-v2-plan-3-behavioural.md index 762017ed3..9b8841248 100644 --- a/docs/superpowers/plans/2026-04-24-dqn-v2-plan-3-behavioural.md +++ b/docs/superpowers/plans/2026-04-24-dqn-v2-plan-3-behavioural.md @@ -1297,10 +1297,12 @@ impl AdaptiveController for CqlAlphaSeedCoupledController { type Signal = f32; // current seed fraction in replay buffer type Control = f32; // cql_alpha - fn read_signals(&self, _isv: &IsvBus) -> Self::Signal { - // Producer: replay buffer tracks seed-origin vs. dqn-origin count. - // That's exposed via an existing counter; controller reads it. - unimplemented!("plumbed by caller") + fn read_signals(&self, isv: &IsvBus) -> Self::Signal { + // Producer: replay buffer tracks seed-origin vs. dqn-origin count + // and writes the current seed fraction into ISV slot + // SEED_FRACTION_EMA_INDEX (a Plan 1 reserved controller-signal slot). + // Here we just read it back. + isv.read(SEED_FRACTION_EMA_INDEX) } fn update(&mut self, seed_fraction: f32) -> f32 {