Echo Module (EM)

Development & Implementation Plan · Version 1.0 · Draft · Owner: Jean-Baptiste Decorzent
STATUS: DRAFT — PENDING APPROVAL
Table of contents

1 · Purpose & Scope

This document turns the Architecture & Design (Phase 3) into an actual build sequence. It answers: in what order, gated by what completion criteria, tested how, documented how, versioned how. It does not revisit interface contracts — those are Phase 3's, settled. Phase 4 is execution.

No calendar dates. Deliberately.
Milestones below are sequence-gated, not date-gated — each depends on the last being done, not on a deadline. This is a direct consequence of Strategy Plan §6: the capacity constraint on record means this plan should be checkable against actual progress, never against a calendar that assumes a pace nobody should sustain indefinitely.

2 · Milestone Structure

Eleven milestones, each gated on the previous. Full task-level detail lives in the companion Work Breakdown Structure (§9) — this is the shape, not the checklist.

M0
Repo scaffolding, CI/CD, license choice, contribution docs
M1
Core data model (Architecture §3) — the shared types everything else depends on
M2
Source (Architecture §4) — three structural shapes, fallback-distinguishability
M3
Fuser, numeric-weighted mode (Architecture §5) — the strongest-evidenced component
M4
Gate + ActionAuthorization (Architecture §8, ADR-0003) — the composition-boundary friction requirement, built
M5
Calibrator + OutcomeEvidence guardrail (Architecture §6, ADR-0002) — both proven strategies
M6
ProvenanceStore, attribution-only (Architecture §7, ADR-0004)
M7
Router, Shapes 1 & 3 only (Architecture §9)
M8
Integration example — all six components composed, illustrative domain only
M9
Documentation pass, NLnet application draft, DPG Registry prep
M10
v1.0.0 release — final DoD audit, tag, publish, submit NLnet application

Ordering rationale: data model first (nothing compiles without it), then Source (nothing to fuse), then Fuser (the strongest evidence, and Gate/Calibrator both consume its output), then Gate (needs a FusedState to evaluate), then Calibrator (adjusts Fuser's weights — conceptually downstream of both), then ProvenanceStore and Router (functionally independent of each other, placed last among components since neither blocks the others), then integration and release.

3 · Definition of Done — Binding on Every Milestone

This is the literal enforcement of the Charter's "no placeholders, mock data, or non-functional features" principle — a checklist every milestone must pass, not a value statement.

4 · Testing Strategy

Per Architecture §13, not generic best-practice filler:

5 · Documentation Approach

Docs-as-you-go, not deferred to M9. Every milestone that ships a component ships that component's contract page in the same milestone — M9 is a consolidation and quickstart pass, not the first time documentation gets written. ADRs are written at decision time; the five already recorded (Architecture §14) predate any code, which is the intended order for future ones too.

6 · Versioning & Release

Semantic versioning from the first commit. 0.1.0-dev at M0, incrementing through M1-M9 as a pre-1.0 series (the API may still shift during active component build-out). 1.0.0 is tagged only at M10, once every v1-scoped component (Strategy §2) is complete, tested, and documented — not before. Changelog follows the Keep a Changelog convention.

7 · CI/CD

GitHub Actions, configured at M0 before any component code exists: lint (ruff) + type-check (mypy) + test (pytest) on every push, from the very first commit — not retrofitted once there's code worth breaking. A separate release workflow triggers on version tags. Dependency scanning added at M0 per Risk Register R7.

8 · Repository Structure

echo-module/
├── src/echo_module/
│   ├── __init__.py
│   ├── models.py          # Architecture §3 — core data model
│   ├── source.py          # §4
│   ├── fuser.py            # §5
│   ├── calibrator.py      # §6
│   ├── provenance.py      # §7
│   ├── gate.py             # §8
│   └── router.py           # §9
├── examples/               # fresh toy code only — never source-repo code
├── tests/
├── docs/
│   └── adr/                # ADR-0001 through 0005, and future ones
├── pyproject.toml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── README.md
└── LICENSE                 # choice open — see Risk Register R8, blocks M0

9 · Companion Tracking Artifacts

Three living spreadsheets, updated through Phase 4 rather than written once:

ArtifactPurpose
EM_Work_Breakdown_Structure_v1.xlsxTask-level checklist under each milestone above — the thing to actually update as work happens
EM_Requirements_Traceability_Matrix_v1.xlsxEvery Charter/Architecture requirement traced to its deciding ADR, implementing module, and verifying test
EM_Risk_Register_v1.xlsxTen tracked risks, including two that block M0 directly (license choice, dependency scanning)

10 · Success Criteria

  1. This plan is reviewed and approved by JB.
  2. v1.0.0 is released with zero unflagged placeholders anywhere in the codebase — a literal, auditable claim per the M10 DoD audit, not a general impression.
  3. The NLnet application is submitted, referencing shipped, working code — not a roadmap.

11 · Governance & Amendment

JB is the sole approving authority. Material changes to milestone order, Definition of Done criteria, or v1 component scope require an explicit, versioned revision here — consistent with every prior phase document.

VersionDateStatusNotes
1.0September 2026Draft — pending approvalInitial Development & Implementation Plan, following approval of Architecture & Design v1.0.

Echo Module Development & Implementation Plan v1.0 · Draft · Companion to Charter v1.1, Strategy Plan v1.0, and Architecture & Design v1.0