Echo → Delta → Product

FDE in MRRC
FT‑710

Forward Deployed Engineering across 12 cycles: from initial baseline (V1.0) to multi-client TX ownership fix (V2.1) — 16 days, 262 tests, 6 reusable assets.

FDE = Echo + Delta + Product

Demand discovery → rapid prototyping → abstraction & generalization. Each cycle turns one field lesson into permanent leverage.

FDE = Echo + Delta + Product
Demand Discovery → Rapid Prototyping → Abstraction & Generalization
🔍

Echo

"What does the user really need?"
  • Embedded in real FT-710 daily operation
  • F4HTB upstream evaluated, gaps identified
  • MRRC 14-month operational gap as signal proxy
  • ~20% of cycle time

Delta

"What's the fastest thing that works?"
  • Each cycle: 1 concrete field signal → 1 working fix
  • SDD updated concurrently, not retrospectively
  • Prototype validates riskiest assumption first
  • ~55% of cycle time
🧩

Product

"How to serve the next 10 users?"
  • 6 reusable assets extracted from Delta hacks
  • Tagged dual-codec audio as stable contract
  • 15-chapter SDD as three-level Harness
  • ~25% of cycle time

Start from Leverage

FT-710 inherited 6+ reusable assets from the MRRC project. Never start from zero.

Asset From How FT-710 Uses It
PTT safety (7-layer model) MRRC Ch15, server.py PTT handler — fire-and-forget TX0 + 500ms poll
AudioWorklet + Opus WASM MRRC rx_worklet_processor.js, tx_opus_worker.js
Glassmorphism design system MRRC css/octen.css — dark amber theme, safe-area support
Multi-instance architecture MRRC server.py lifespan management, env-var config
SDD template (IBM TeamSD) MRRC / SunMRRC All 15 chapters — harness structure reused
Website deploy pattern MRRC / SunMRRC website/deploy.sh + build_sdd.py

12 FDE Cycles (Git-Verified)

Each SDD version is one Echo → Delta → Product loop. Every cycle driven by a real field signal, not a speculative feature.

12
FDE Cycles
16d
V1.0 → V2.1
262
Tests
15
Arch Decisions
6
New Assets
# SDD Date Echo Signal Delta Challenge Product Output
1 V1.0 Jul 6 F4HTB evaluation + MRRC patterns Full baseline: CAT, audio, scope, polling, PTT safety 15-chapter SDD, 7 core modules
2 V1.1 Jul 6 "16kHz TX crackling" Unify TX pipeline to 48kHz AD-011: 48kHz codec + 44.1kHz bridge
3 V1.2 Jul 8 "Freq drifts ~20Hz, TX meters blank" VS/FB active VFO, RM calibration AD-012/013: VFO + meter tables
4 V1.3 Jul 8 "TUNE doesn't work, PTT latency" Priority CAT preemption, TX2+AC003 AD-015: _cancel_polls
5 V1.4 Jul 12 "Waterfall alone is hard to read" FFT spectrum line plot, install.sh FFT overlay, dev tooling
6 V1.5 Jul 18 "SDD docs stale vs. runtime" Doc sync: PTT layers, polling naming V1.5 docs + issues I6/I7
7 V1.6 Jul 18 "SSB filter change — can't hear difference" RX zero-audio watchdog, TX Opus truth sync Dead-carrier fix, WS 403 flow
8 V1.7 Jul 19 "Filter switch works 50% of the time" Stale-read discard, 150ms SH0 read-back 3 regression tests
9 V1.8 Jul 21 "PTT watchdog dead code, TUNE accidental tap" PTTManager routing, press-and-hold, keyboard guards Space-bar PTT, mobile layout
10 V1.9 Jul 21 "USB reconnect → waterfall frozen forever" on_reconnected hook for scope-init CAT 2 regression tests
11 V2.0 Jul 21 "Spurious 'radio disconnected' during operation" NoneType guard + recovery path 1 regression test
12 V2.1 Jul 22 "PTT keys but no voice / no RF power" TX uplink promote + claim, per-session counters 5 tests + TX session: logging

What The Cycles Teach

1

Inherited leverage is the unfair advantage

FT-710 didn't re-solve PTT safety, WDSP, or multi-instance. MRRC's 15-cycle Product phase turned those into reusable abstractions. Starting from zero would have cost months.

2

Version history IS the FDE log

14-version-history.md records every Echo signal, Delta fix, and Product output — in a machine- and human-readable format. No separate "FDE tracker" needed.

3

One cycle = one real problem

Zero speculative features. Each Delta cycle was triggered by a concrete Echo event: a log line, a user observation, an on-air misbehavior.

4

Documentation is concurrent

SDD chapters updated during each Delta phase, not after. The harness records what worked, not what was planned. Your 6-month-future self is the primary audience.

5

Prototype validates the riskiest assumption

V1.0 proved direct CAT works. V1.1 proved 48kHz audio. V1.9 proved scope-init needs re-run after USB reconnect. V2.1 proved multi-client TX needs ownership promotion.

6

Operations IS Echo

MRRC's 14-month operational gap accumulated real pain points. FT-710 benefits from that proxy — but also generates its own Echo through daily on-air use.

SDD as Three-Level Lock-In

The 15-chapter SDD locks down WHAT, HOW, and DELIVERABLE — fed by Echo, Delta, and Product phases respectively.

🎯

Business Harness

Defines WHAT — the problem to solve
  • Ch2: Business direction
  • Ch4: System context
  • Ch5: 65 Non-functional requirements
  • Ch6: 8 Use cases
  • Ch13: Feasibility assessment
⚙️

Technical Harness

Defines HOW — architecture & implementation
  • Ch7: Subject area model
  • Ch8: 15 Architecture decisions
  • Ch9: Architecture overview
  • Ch10: Service model (4× WebSocket)
  • Ch11: Component model (7 modules)
  • Ch12: Operational model
📦

Product Harness

Defines the DELIVERABLE — what ships
  • Ch1: Executive summary
  • Ch3: Project definition
  • Ch14: Version history (FDE cycle log)
  • Ch15: PTT safety architecture
  • Gravel Road → Highway catalog

The critical insight: don't let documentation drive development — let development drive documentation. After each FDE phase, the output updates the harness. The harness is not a plan — it's a record of what worked.

Reusable Assets Created

Each Delta hack that became a Product-phase abstraction — ready for the next FT-710 project.

Gravel Road (Delta Hack) Highway (Product Abstraction) Reusable For
FT4222 ctypes crashed asyncio scope_pipe.py — standalone subprocess with length-prefixed stdout Any FTDI SPI project
44.1↔48kHz mismatch crackles audio_resample.py — frame-aligned linear SRC (960↔882) Any 44.1→48kHz bridge
Fixed-interval polling missed state poll_scheduler.py — skip-on-command, stale-read discard, on_reconnected hook Any CAT-controlled radio
Raw PCM only, no codec flexibility Tagged dual-codec: 1-byte tag (0x00=PCM, 0x01=Opus) + payload Any codec-flexible audio transport
Ad-hoc scope data parsing scope_frame.py — shared format, sync pattern, quality metrics Any FT-710 scope consumer
TX failures with zero diagnostics TX session: — per-PTT-release counters + PCM peak Any TX audio pipeline

Common FDE Pitfalls

Fake Echo

Imagined requirements without field presence — "I think the user wants X"

Spend at least 1 week in the actual usage scenario. Every FT-710 cycle started from a real log line.

Skipping the Product Phase

Delta code shipped directly without generalization — the gravel road stays gravel

Reserve at least 20% of every cycle for abstraction and documentation. scope_pipe.py is a highway because someone took the time.

Premature Abstraction

Writing a generic framework before scenario #1 is validated — future-proofing that never pays off

Wait until at least 2 similar scenarios succeed before abstracting. The FT-710's tagged audio format earned its abstraction.

Starting from Zero

New project, blank repo, no leverage inventory — re-solving problems MRRC already solved

Always audit existing assets first. FT-710 inherited 6 MRRC modules. Your leverage is your unfair advantage.

Requirement Bloat (Echo)

Defined 10 demos with enormous scope — "we'll do all of them this cycle"

Pick 1 demo per cycle. Ship it. Then do the next. Each SDD version addresses exactly one field signal.

Premature Optimization (Delta)

Full error handling + logging + config in prototype #1 — spending weeks polishing unvalidated code

Prototype #1 validates only the riskiest assumption. Polish later. V1.0 was a working baseline in 1 day.

6 Steps to Ship the Next FT-710 Project

A repeatable playbook derived from this project's 12-cycle FDE journey.

# Step FT-710 Application
1 Start from Leverage Inherited 6+ MRRC assets — PTT safety, WDSP, multi-instance, Glassmorphism, SDD template, website deploy
2 Define the Harness SDD V1.0: 15 chapters, 15 ADs, 65 NFRs — written concurrently with first commit
3 Echo: Deploy Field deployment on macOS + Raspberry Pi + Windows. Daily operation as signal generator
4 Delta: Ship Each SDD version within 24h of Echo signal. 12 cycles in 16 days
5 Product: Abstract 6 reusable modules. Dual-codec tagging. Adaptive polling as pattern
6 Accelerate Next FT-710 client inherits WebSocket protocol as stable contract — zero server changes needed

Apply FDE to Your FT-710 Project

The full SDD, source code, and FDE cycle log are open source. Start your own Echo→Delta→Product journey.

Source Code SDD Docs Version History VLSC FDE