claude:dev_process
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| claude:dev_process [2026/05/01 06:00] – swap chainsaw enthusiasm phrase markus_fritsche | claude:dev_process [2026/05/02 15:57] (current) – Phase 6: add worked example for 'state the contract explicitly' (patch 0012, h264 SCALING_MATRIX) markus_fritsche | ||
|---|---|---|---|
| Line 27: | Line 27: | ||
| * **If baseline reveals the Phase 1 metric was tracking the wrong thing → loop back to Phase 1** with the corrected target. | * **If baseline reveals the Phase 1 metric was tracking the wrong thing → loop back to Phase 1** with the corrected target. | ||
| * Example: "max H.264 FPS" Phase 1 metric, but baseline shows DMA-setup + sync overhead dwarfs decode → real metric is bytes-copied-per-second / EGL surface-import time, not FPS. | * Example: "max H.264 FPS" Phase 1 metric, but baseline shows DMA-setup + sync overhead dwarfs decode → real metric is bytes-copied-per-second / EGL surface-import time, not FPS. | ||
| + | |||
| + | **Measurements describe what the system //does//, not what it //should do//.** Baseline data is evidence, not a specification. Do NOT derive API call sequences, struct layouts, or parameter values from observed behaviour (strace, perf, example output). Observable behaviour may reflect bugs, workarounds, | ||
| ===== Phase 4 — Plan ===== | ===== Phase 4 — Plan ===== | ||
| Line 39: | Line 41: | ||
| Execute the plan. Scope strictly to what was planned — resist feature creep, refactor-creep, | Execute the plan. Scope strictly to what was planned — resist feature creep, refactor-creep, | ||
| + | |||
| + | **Contract before code.** Before writing or modifying any call site: | ||
| + | |||
| + | * Read the API contract — kernel docs, header comments, and upstream source for every call touched. | ||
| + | * State the contract explicitly before implementing against it (in the plan, the commit message, or a comment — somewhere reviewable). | ||
| + | * If the contract cannot be found: stop and surface the gap. Don't infer it from baseline behaviour or sibling code. | ||
| + | |||
| + | **Copying from baseline measurements is not implementation. It is transcription of potentially broken behaviour.** A deliverable that matches baseline bytes but violates the API contract is not a deliverable — it is a deferred bug. | ||
| + | |||
| + | ==== What "state the contract explicitly" | ||
| + | |||
| + | Worked example: '' | ||
| + | |||
| + | < | ||
| + | VAAPI signals " | ||
| + | implicitly: the consumer (ffmpeg-vaapi, | ||
| + | VAIQMatrixBufferH264 alongside RenderPicture iff | ||
| + | sps_scaling_matrix_present_flag || pps_scaling_matrix_present_flag. | ||
| + | When the bitstream uses default (flat) scaling, no IQMatrixBuffer | ||
| + | arrives [...] | ||
| + | |||
| + | Earlier draft of this patch unconditionally omitted SCALING_MATRIX in | ||
| + | FRAME_BASED. That's corpus-correct (bbb has no explicit scaling | ||
| + | lists) but the wrong predicate: the kernel-side gating is by | ||
| + | " | ||
| + | explicit scaling lists must submit SCALING_MATRIX in either mode. | ||
| + | |||
| + | Contract verification (audit_0008_decode_params_2026-05-01.md + | ||
| + | hantro_h264.c:: | ||
| + | matrix when SCALING_MATRIX is in the control batch and falls back | ||
| + | to spec-defined defaults when absent. Mode-independent. | ||
| + | </ | ||
| + | |||
| + | What this gets right: | ||
| + | |||
| + | * **Contract first** — per-control rules cited from kernel doc ('' | ||
| + | * **Corpus-correct ≠ spec-correct, | ||
| + | * **Then** the diff implements one branch per contract clause: SPS/ | ||
| + | |||
| + | Mirror format anywhere reviewable: PR description, | ||
| ===== Phase 7 — Verification Measurements ===== | ===== Phase 7 — Verification Measurements ===== | ||
claude/dev_process.1777615214.txt.gz · Last modified: by markus_fritsche
