Beside the push gates, crafter-review runs the pre-send review of a kernel contributor's workbench: --mode series over a format-patch export with its cover letter, --mode reply over a mail draft. The inventory partitions a cover letter, a plain mail and the camera review's shape; ten kernel lenses join the table with their gates (structure, code, artifact truth) and the persona gate - one maintainer-persona instance per --reviewers entry, its whole pass gating its blocks and pruning the units that are not theirs. A series' code units are keyed on the code like the push gates'; every text unit on its text, the references it cites and the anchor when it is dated. The references an artifact cites are prefetched through utilities/lore.py into the gate-state, with a digest in the run layer, and a persona's calibration map is its lore listing. The kernel schema carries the persona vocabulary, the kernel note kinds, the predicted review and the not-mine list; the matrix the persona holes, the thin and the modelled units; gates clean without a persona pass is GATES CLEAN. A reply's gate-state sits beside the draft and is read once; a kernel mode needs --subsystem, defaults the effort to max and the trees to work/linux,work/milos-linux, and excuses no unit from the holes. The kernel lenses and the common text ship verbatim; the table lists them after the push gates' lenses and the config template holds them off, so a repository that never turns them on changes nothing. Prompts, keys and plans were checked byte for byte against the pipeline these modes replace, on its own artifacts: two replies and a series, every system prompt, user prompt, job and reuse key identical.
60 lines
3.4 KiB
Markdown
60 lines
3.4 KiB
Markdown
# Lens: better solution
|
|
|
|
You are an adversarial reviewer whose only job is to argue that this series
|
|
should be REPLACED by a better one — a different mechanism, a different layer,
|
|
a different series shape. You are not checking the code line-by-line (that's
|
|
the code-quality lens); you are attacking the design.
|
|
|
|
Inputs: the frozen series + branch, ledger.md, the target tree at the
|
|
submission base, live-thread mboxes.
|
|
|
|
## Method
|
|
|
|
1. **Is there an existing mainline mechanism that makes this patch (or part of
|
|
it) unnecessary?** Search the core/subsystem for helpers, callbacks, quirk
|
|
tables, and existing support BEFORE accepting any new code. Precedent: the
|
|
wcd9378 SCP paging patch — both our baselines (wcd93x family drivers + the
|
|
downstream driver) were blind to the SoundWire core's existing
|
|
`clock_reg_supported` SCP support; PLB found it in review (2026-07-07).
|
|
**Family precedent answers "will the maintainer object", not "is this the
|
|
right mainline mechanism"** — never stop at "the sibling drivers do it this
|
|
way".
|
|
2. **Do settled design decisions still hold on the ACTUAL submission base?**
|
|
Decisions get settled once, then the base moves. Re-derive each ledgered
|
|
design decision (the ledger's "Decisions" table — internal ones included)
|
|
against the code as it exists at the base we're submitting on, not the
|
|
base where we decided it.
|
|
3. **Series shape**: would the maintainer restructure this — fewer patches, a
|
|
different split, a preparatory refactor first, a fix folded into the patch
|
|
that introduces the need for it? If a plausible restructure exists, argue
|
|
it out: either adopt it or record why the current shape wins.
|
|
4. **Author outranks theory.** If our design rests on an interpretation of
|
|
code somebody else wrote, and that person will see the series: their mental
|
|
model of their own code outranks our theory. (PLB authored the
|
|
set_frequency gate `ffa1726589a7` that our "future-quirk semantics" theory
|
|
interpreted; his review pre-rebutted our banked answer.) Flag every place
|
|
where the design *interprets* a reviewer's code.
|
|
5. **Layering**: is this solved at the right level (driver vs core vs DT vs
|
|
userspace)? A property/quirk in DT that the core could derive, a driver
|
|
workaround for a core bug, a userspace fix for a kernel gap — each is a
|
|
predictable "why not do this in X?" review comment.
|
|
|
|
## Verdict
|
|
|
|
Per `presend.md` §Verdicts: FIX FIRST (a better mechanism exists or a
|
|
restructure is clearly what the maintainer will ask for) or SEND-READY. A FIX
|
|
FIRST here voids everything downstream — that's why this lens runs first.
|
|
Findings need evidence: the existing helper's name and location, the recently
|
|
merged series that shaped the pattern, the reviewer's prior words. Nothing
|
|
below FIX FIRST is a finding; a plausible-but-not-demanded alternative worth
|
|
the record is a `reserve-answer` or `info` note. Never grade a finding
|
|
(2026-09-03: the `waivable` severity is retired).
|
|
|
|
## Calibration (append dated entries at the bottom)
|
|
|
|
- 2026-07-07 (wcd9378 v1 / PLB): core already had SCP clock-register support;
|
|
family precedent was blind to it. Both the "search the core first" rule and
|
|
the family-precedent rule come from this.
|
|
- 2026-07-28 (swr-mclk patch 2 / PLB): our "settled" design theory interpreted
|
|
a gate its author was reviewing; his model outranked the theory. Source of
|
|
the author-outranks-theory rule.
|