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

49 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`](../../.claude/projects/-home-mfritsche-src/memory/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](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](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](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](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](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](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](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](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](https://git.reauktion.de/marfrit/kernel-agent/issues/11)
- **iter3** (VP9 kernel enablement on RK3588): [kernel-agent#12](https://git.reauktion.de/marfrit/kernel-agent/issues/12)
- **iter4** (AV1 backend iter39): [libva-v4l2-request-fourier#2](https://git.reauktion.de/marfrit/libva-v4l2-request-fourier/issues/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.strace``rm -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.