Skip to content

Commit 6cc6f79

Browse files
ruvnetruvnet
andcommitted
docs(adr-154 §14): two new risk-register rows from this iteration's findings
Captures two decisions/lessons so future commits don't re-open them as open questions. Row 1 — Cross-path envelope decision. The bucket-sort contract (commit 23) delivered canonical in-bucket dispatch order but NOT cross-path bit-exact spike traces. Root cause (discovery #15): active-set pruning is a legitimate correctness deviation from the dense baseline; both paths are correct-by-ADR. Decision recorded: shipped contract is within-path bit-exact plus cross-path ≤ 10 % spike-count envelope (measured 0.5 %). Not a threshold to weaken or tighten — the envelope is the level at which the claim is publishable. Prevents future commits from treating the divergence as a 'bug' and burning time trying to close it. Row 2 — Cheap-alternative parentheticals rarely survive. Each time a commit names a 'cheaper alternative for a future iteration' (Opt D, lazy-skip, bucket-radix), measurement on the subsequent iteration tends to under-deliver: Opt D was 1.00× top-line despite the 1.5× kernel-only projection; lazy-skip was null at saturation; GPU SDPA remains unmeasured. Mitigation: future parentheticals must name *the workload they would win on*, not just a projected percent. Otherwise they're speculative and labelled as such. Updated the existing 'pre-measurement diagnosis mis-directs the next optimization' row with the current 7-of-15 disproven data point and the new observation that the 2-of-15 successes (adaptive cadence, Leiden refinement) both shared the same pattern — structure the problem on an orthogonal axis. That rule is now the default mental model for choosing the next lever, recorded here. Also tightened the risk-register closing paragraph: the register is what running-into-things has surfaced across the branch, not what the first N commits surfaced, now that the list is past the N=14 framing. No code changes. All tests unchanged. Co-Authored-By: claude-flow <ruv@ruv.net> EOF )
1 parent 753db36 commit 6cc6f79

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

‎docs/adr/ADR-154-connectome-embodied-brain-example.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -440,9 +440,11 @@ This section enumerates the risks this ADR is aware of and how the example stays
440440
| Scope creep (adding production-stack features to the example) | `src/*` | The 4000-LOC total budget (§3.2) and 500-line-per-file budget are enforced by the commit check in `BENCHMARK.md` §2 reproducibility. Tier 2 features go into the production crates, not here. |
441441
| GPU numbers leaking into the correctness narrative | `BENCHMARK.md`, commit messages | §12.4 binds: GPU is infrastructure, not a claim. AC-1 is CPU-only. |
442442
| Unreviewed novelty claims (the four in §9 inflate over time) | README, ADR-154 §9 | Each novelty claim is dated to a commit and backed by a file path. Any new claim requires a new commit, a new file path, and a review pass. |
443-
| Pre-measurement diagnosis mis-directs the next optimization | `BENCHMARK.md`, ADR-154 §16 | Pre-measurement guesses about "which of the three hot paths dominates" can be wrong (commit 2 named three candidates; commit 6 found the *actual* dominant cost was a fourth we hadn't named — the Fiedler detector). Mitigation: BENCHMARK.md now requires the post-measurement diagnosis to be landed in the *same* commit as the optimization, not in a later commit. If the measurement says the optimization is invisible on the top-line, the next commit direction comes from the *measured* profile, not the pre-measurement guess. |
443+
| Pre-measurement diagnosis mis-directs the next optimization | `BENCHMARK.md`, ADR-154 §16 | Pre-measurement guesses about "which of the three hot paths dominates" can be wrong (commit 2 named three candidates; commit 6 found the *actual* dominant cost was a fourth we hadn't named — the Fiedler detector). **Now a 7-of-15 disproven data point across §17.** Mitigation: BENCHMARK.md requires the post-measurement diagnosis to be landed in the *same* commit as the optimization, not in a later commit. If the measurement says the optimization is invisible on the top-line, the next commit direction comes from the *measured* profile, not the pre-measurement guess. **The 2-of-15 successes (items 6 adaptive cadence, 14 Leiden refinement) both shared a pattern — structure the problem on an orthogonal axis rather than pushing harder on the axis an earlier item ran into.** That rule is now the default mental model for choosing the next lever. |
444+
| Cross-path envelope decision (accepting 0.5 % spike-count divergence vs pursuing bit-exact) | `tests/cross_path_determinism.rs`, ADR-154 §15, §17 item 15 | The bucket-sort contract (commit 23) delivered canonical in-bucket *dispatch order* but not cross-path bit-exact *spike traces*. Root cause: optimized path's active-set pruning is a legitimate correctness deviation from the baseline's dense update. Both behaviours are correct-by-ADR; they produce genuinely different spike populations. **Decision recorded here so future commits don't re-open the question as a "bug":** the shipped contract is within-path bit-exact + cross-path ≤ 10 % spike-count envelope (measured 0.5 %). Bit-exact cross-path would require either running both paths with active-set off (bench-only) or teaching the baseline the same active-set (defeats the purpose). **Not a threshold to weaken or tighten; the envelope is the level at which the claim is publishable.** |
445+
| Cheap-alternative predictions rarely survive the saturation workload | `BENCHMARK.md` §4.5 / §4.7 / §4.11 | Each time a commit names a "cheaper alternative for a future iteration" as a parenthetical (Opt D, lazy-skip, bucket-radix), measurement on the subsequent iteration tends to deliver less than the parenthetical predicted. Examples: Opt D delivered 1.5× kernel-only but 1.00× top-line; lazy-skip was null at saturation; CPU→GPU SDPA stayed unmeasured. Mitigation: future "cheaper alternative" parentheticals should name *the workload they would win on*, not just the percent gain. If the parenthetical doesn't name a measured-or-credible workload, it's a speculative parenthetical and labelled as such. |
444446

445-
This register is not comprehensive. It is the set of risks the first fourteen commits on this ADR have surfaced by running into them (positioning creep, threshold drift, null-distribution sloppiness, pre-measurement mis-diagnosis). Future commits are expected to add rows; they are not expected to remove rows.
447+
This register is not comprehensive. It is the set of risks the branch has surfaced by running into them (positioning creep, threshold drift, null-distribution sloppiness, pre-measurement mis-diagnosis, envelope-vs-bit-exact framing, speculative-parenthetical predictions). Future commits are expected to add rows; they are not expected to remove rows.
446448

447449
## 17. Nine measurement-driven discoveries (roll-up)
448450

0 commit comments

Comments
 (0)