Files
ampere-fourier/phase8_close.md
T
marfrit 067f3c62ce iter1 phase8: memory update + iter1 close
Memory entry filed at the cross-campaign location
~/.claude/projects/-home-mfritsche-src/memory/feedback_characterize_before_change.md
and registered in that MEMORY.md index.

The lesson: when starting a campaign on a new substrate with a
known-good system, iter1 = characterize-and-baseline ONLY. Don't
bundle blockers into iter1; each blocker spawns its own iteration
(iter2/3/4) so each has its own Phase 1 success metric and outside-
team dependency. ampere-fourier iter1 is the worked example —
zero code change in Phase 6, 3 follow-up issues filed, 3 codecs
baseline-validated, ka#6 umbrella closed.

phase8_close.md is the campaign-level close artifact: phase-by-phase
summary table with file links + 3 iteration hand-offs + reference-
history FPS numbers for iter2/3/4 to anchor against.

The 8-phase loop terminates. iter1 closed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 07:29:16 +00:00

4.6 KiB
Raw Blame History

Phase 8 — Memory update + iter1 close

iter1 of the ampere-fourier campaign closes 2026-05-16. All 9 phases ran; no loopbacks fired.

Iteration outcome (one line)

3 codecs (H.264 + VP8 + MPEG-2) baseline-validated end-to-end via libva-v4l2-request-fourier on RK3588; 3 codec blockers (HEVC kernel OOPS, VP9 kernel gap, AV1 backend hard-cap) split into three discrete follow-up issues that become iter2/3/4 entry points.

Memory entry distilled from iter1

Filed as feedback_characterize_before_change.md at the cross-campaign memory location: "iter1 = characterize-and-baseline, not change-the-system."

The lesson: when starting a campaign on a new host / substrate / SoC with a system that's already known-good elsewhere, iter1 establishes the floor — it doesn't fix blockers. Phase 0 always surfaces blockers; each blocker is its own debugging chain with its own contract, its own outside-team dependency. Bundling 3 blockers into iter1 conflates 3 unrelated investigations and breaks Phase 6's "scope strictly to plan" guarantee. ampere-fourier iter1 IS the worked example.

Phase-by-phase summary (with the artefacts)

Phase File Outcome
0 phase0_findings.md Substrate: RK3588 board, clean v7.0-rc3 kernel, 3 decoder nodes, 3 codecs viable / 3 blocked. Baseline anchor N=1 captured.
1 phase1_goal.md Locked scope to 3 codecs. 7 success criteria (C1-C7) each anchored to a specific instrument. Hypothesis falsifiable in 3 named ways.
2 phase2_situation.md Re-verified Phase 0 against live system. 7 constraints + 7 known failure modes catalogued. 2 missing tools (strace, firefox-fourier) flagged for Phase 4 plan.
3 phase3_baseline.md C1-C6 measured. C1 PASS, C2 PASS (ioctl trace canonical), C3 PASS (frame-0 byte-identical, same sha across codecs), C4 split (VP8 1.000 perfect / MPEG-2 0.9997 IEEE-1180 / H.264 0.6676 cumulative drift), C5 PASS (FPS at N=3 tight σ), C6 PASS (empty dmesg diff). C7 deferred.
4 phase4_plan.md iter1 is characterize-and-baseline; no code change to backend / kernel / firefox / mpv. 5 work items: refine C4 per-codec floors, file 3 follow-up issues, update + close ka#6, write close artifact, Phase 7 verification. Risk register sized to that scope.
5 phase5_review.md Plan subagent (model:sonnet) reviewed Phase 0-4 raw artifacts. Two framing findings — H.264 SSIM precedent should be flagged as "independent observation, not cross-verified anchor"; C7 deferral is a scope boundary not a rig blocker. Both adopted (framing-only, no test-verify gate).
6 iter1_close.md + 3 issues filed Filed marfrit/kernel-agent#11 [ka:experiment] (HEVC OOPS), marfrit/kernel-agent#12 [ka:experiment] (VP9 enablement), marfrit/libva-v4l2-request-fourier#2 (AV1 iter39). Closed marfrit/kernel-agent#6 with cross-refs. Wrote close artifact with Phase 5 amendments applied.
7 phase7_verification.md Re-ran C1-C6 at N=1. C1+C3+C4+C6 bit-perfect reproduction. C5 within ±1.5 % of Phase 3 N=3 mean (well within Phase 4's ±2σ). C2 ioctl counts ~2× — analyzed as a script-cleanup bug in p3_engage.sh (rm doesn't catch .strace.<tid> suffix), NOT a system regression. No loopback.
8 this file Memory entry written, iter1 closed.

Hand-offs

  • iter2 (HEVC kernel OOPS fix): kernel-agent#11
  • iter3 (VP9 kernel enablement on RK3588): kernel-agent#12
  • iter4 (AV1 backend iter39): libva-v4l2-request-fourier#2
  • C7 sub-iteration (firefox-fourier vendor-default engagement check): pending a graphical session on ampere — not a separate ticket, lands inside whichever iteration first runs a compositor.

Each iter2/3/4 anchors to the iter1 baseline:

  • VP8 SSIM Y 1.000 floor (raised from default ≥0.99 on Phase 4 refinement)
  • MPEG-2 SSIM Y ≥0.9997 floor (IEEE 1180)
  • H.264 documented at SSIM Y ~0.667 (no PASS threshold — accepted decoder drift)
  • N=3 FPS reference history: H.264 461 fps, VP8 217 fps, MPEG-2 200 fps

Minor follow-up (not blocking)

  • phase3_scripts/p3_engage.sh: fix rm -f $log.stracerm -f $log.strace.* so Phase 7 re-runs don't accumulate strace files. Filed mentally; not iter1-blocking.

Iter1 close

The 8-phase loop terminates here. ampere-fourier iter1 closed.