Rebuilds branch from upstream/staged (was previously merged from upstream/main, which brought in materialized plugin files that fail Check Plugin Structure on PRs targeting staged). Changes vs. staged: - Update skills/quality-playbook/ to v1.5.6 (31 bundled assets: SKILL.md + LICENSE.txt + 16 references/ + 9 phase_prompts/ + 3 agents/ + bin/citation_verifier.py + quality_gate.py). - Add agents/quality-playbook.agent.md (top-level orchestrator). name: quality-playbook (validator-compliant). - Update docs/README.skills.md quality-playbook row description + bundled-assets list to v1.5.6. - Fix 'unparseable' → 'unparsable' in quality_gate.py (5 instances; codespell preference, both spellings valid). Closes the v1.4.0 → v1.5.6 update in a single clean commit on top of upstream/staged. The preserved backup branch backup-bedbe84-pre-rebuild (SHA bedbe848fa3c0f0eda8e653c42b599a17dd2e354) holds the prior history for reference.
8.4 KiB
{skill_fallback_guide}
You are a quality engineer continuing a phase-by-phase quality playbook run. Phases 1-2 are complete.
Read these files to get context:
- quality/PROGRESS.md - run metadata, phase status, artifact inventory
- quality/EXPLORATION.md - Phase 1 findings (especially the "Candidate Bugs for Phase 2" section)
- quality/REQUIREMENTS.md - derived requirements and use cases
- quality/CONTRACTS.md - behavioral contracts
- SKILL.md - read the Phase 3 section ("Phase 3: Code Review and Regression Tests"). Also read references/review_protocols.md. Resolve SKILL.md and the references/ directory via the documented fallback list above; do NOT assume any single install layout.
Execute Phase 3: Code Review + Regression Tests. Run the 3-pass code review per quality/RUN_CODE_REVIEW.md. For every confirmed bug:
- Add to quality/BUGS.md with ### BUG-NNN heading format
- Write a regression test (xfail-marked)
- Generate quality/patches/BUG-NNN-regression-test.patch (MANDATORY for every confirmed bug)
- Generate quality/patches/BUG-NNN-fix.patch (strongly encouraged)
- Write code review reports to quality/code_reviews/
- Update PROGRESS.md BUG tracker
MANDATORY GRID STEP (Lever 2, v1.5.2) — pattern-tagged REQs only
For every REQ in quality/REQUIREMENTS.md that has a Pattern: field (whitelist, parity, or compensation), you MUST produce a compensation grid BEFORE writing any BUG entries for that REQ.
Step 1. Enumerate the authoritative item set. Mechanical extraction from source — uapi header, spec section, documented constants. Do NOT invent. Example: for VIRTIO_F_RING_RESET-family, grep include/uapi/linux/virtio_config.h for VIRTIO_F_* and list the bits the REQ covers.
Step 2. Enumerate the sites. From the REQ's per-site UCs (UC-N.a, UC-N.b, …). If the REQ has a single umbrella UC but is pattern-tagged, the grid is 1-dimensional over items.
Step 3. Produce the grid. Write quality/compensation_grid.json with one entry per REQ:
{
"schema_version": "1.5.2",
"reqs": {
"REQ-010": {
"pattern": "whitelist",
"items": ["RING_RESET", "ADMIN_VQ", "NOTIF_CONFIG_DATA", "SR_IOV"],
"sites": ["PCI", "MMIO", "vDPA"],
"cells": [
{"cell_id": "REQ-010/cell-RING_RESET-PCI", "item": "RING_RESET", "site": "PCI", "present": true, "evidence": "drivers/virtio/virtio_pci_modern.c:XXX-YYY"},
{"cell_id": "REQ-010/cell-RING_RESET-MMIO", "item": "RING_RESET", "site": "MMIO", "present": false, "evidence": "drivers/virtio/virtio_mmio.c: no match for RING_RESET"}
]
}
}
}
Cell IDs are mechanical: REQ-<N>/cell-<item>-<site>. No whitespace, uppercase item/site identifiers where natural.
Step 4. Apply the BUG-default rule. For every cell where:
- the item is defined in authoritative source AND
- the item is absent from any shared filter AND
- the item is absent from the site's compensation path
→ the cell DEFAULTS to BUG. Emit one ### BUG-NNN entry with the cell's file:line citation, spec basis, and expected-vs-actual behavior. Include a - Covers: [REQ-N/cell-<item>-<site>] line (see schemas.md §8 for the field contract).
Step 5. Downgrade to QUESTION requires a structured JSON record. Append one record per downgraded cell to quality/compensation_grid_downgrades.json:
{
"schema_version": "1.5.2",
"downgrades": [
{
"cell_id": "REQ-010/cell-RING_RESET-MMIO",
"authority_ref": "include/uapi/linux/virtio_config.h:116",
"site_citation": "drivers/virtio/virtio_mmio.c:109-131",
"reason_class": "intentionally-partial",
"falsifiable_claim": "MMIO does not support RING_RESET because the MMIO transport predates the feature bit and kernel docs at Documentation/virtio/virtio_mmio.rst:42-55 state the transport is frozen at its v1.0 feature set; falsifiable by showing MMIO re-sets bit 40 under any kernel release."
}
]
}
reason_classenum:out-of-scope | deprecated | platform-gated | handled-upstream | intentionally-partial.authority_ref,site_citation,falsifiable_claimare required and non-empty.falsifiable_claimmust state an observable condition that would make the claim wrong.- Missing any required field, or
reason_classoutside the enum, or zero-lengthfalsifiable_claim→ cell REVERTS to BUG at Phase 5 gate time. There is no re-prompt loop.
Step 6. Self-check. Before finalizing BUGS.md for this REQ, verify that every cell in the grid appears in either:
- some BUG's
- Covers: [...]list, OR - a downgrade record in
quality/compensation_grid_downgrades.json.
Any cell missing from both will fail the Phase 5 cardinality gate. This self-check is advisory in Phase 3; the blocking gate runs in Phase 5.
Worked example — RING_RESET grid (virtio)
REQ-010 pattern: whitelist. Items: {RING_RESET, ADMIN_VQ, NOTIF_CONFIG_DATA, SR_IOV}. Sites: {PCI, MMIO, vDPA}. Grid: 4 × 3 = 12 cells.
Code inspection reveals PCI implements all four; MMIO implements none of the four (frozen at v1.0 feature set); vDPA implements NOTIF_CONFIG_DATA but not the other three.
Grid (present=T, absent=F):
| PCI | MMIO | vDPA | |
|---|---|---|---|
| RING_RESET | T | F | F |
| ADMIN_VQ | T | F | F |
| NOTIF_CONFIG_DATA | T | F | T |
| SR_IOV | T | F | F |
BUG-default applies to every F cell (8 total). Possible consolidation:
BUG-001: MMIO ignores VIRTIO_F_RING_RESET
- Primary requirement: REQ-010
- Covers: [REQ-010/cell-RING_RESET-MMIO]
BUG-002: vDPA ignores VIRTIO_F_RING_RESET
- Primary requirement: REQ-010
- Covers: [REQ-010/cell-RING_RESET-vDPA]
BUG-003: vDPA missing ADMIN_VQ hookup
- Primary requirement: REQ-010
- Covers: [REQ-010/cell-ADMIN_VQ-vDPA]
BUG-004: MMIO ignores NOTIF_CONFIG_DATA negotiation (common filter gap)
- Primary requirement: REQ-010
- Covers: [REQ-010/cell-NOTIF_CONFIG_DATA-MMIO]
BUG-005: MMIO + vDPA both miss SR_IOV propagation
- Primary requirement: REQ-010
- Covers: [REQ-010/cell-SR_IOV-MMIO, REQ-010/cell-SR_IOV-vDPA]
- Consolidation rationale: shared fix path in both transports goes through the same feature-bit filter; single patch on the shared helper closes both cells.
If the reviewer concluded MMIO ADMIN_VQ is intentionally out-of-scope because ADMIN_VQ is a PCI-only spec feature, the downgrade record would be:
{
"cell_id": "REQ-010/cell-ADMIN_VQ-MMIO",
"authority_ref": "include/uapi/linux/virtio_pci.h:NN",
"site_citation": "drivers/virtio/virtio_mmio.c: no admin virtqueue implementation",
"reason_class": "out-of-scope",
"falsifiable_claim": "ADMIN_VQ is MMIO-scoped — falsifiable by citing any virtio-spec normative text requiring ADMIN_VQ on non-PCI transports."
}
Union check: 8 BUG-covered cells + 1 downgrade cell = 9. Grid has 12 cells; 4 present cells don't need coverage. Total: 8 F cells covered via BUGs + 1 via downgrade = all 9 absent cells accounted for. Grid → clean.
ITERATION mode addendum (MANDATORY INCREMENTAL WRITE, Phase 8)
When running in iteration mode (gap / unfiltered / parity / adversarial), write candidate BUG stubs to disk immediately on identification, not at end-of-review. Path: quality/code_reviews/<iteration>-candidates.md. One ### CANDIDATE-NNN heading per candidate, with at least a file:line citation. Reviewer upgrades candidates to confirmed BUGs in BUGS.md only after full triage.
CONFIRMATION CHECKLIST (Lever 2, v1.5.2)
Before writing the Phase 3 completion checkpoint to PROGRESS.md, confirm each item explicitly in your Phase 3 summary:
- For every pattern-tagged REQ, I produced a compensation grid in
quality/compensation_grid.json. - For every grid, I applied the BUG-default rule mechanically.
- Every BUG emitted for a pattern-tagged REQ has a
- Covers: [...]field with valid cell IDs. - Every BUG whose Covers list has ≥2 entries has a non-empty
- Consolidation rationale: ...field. - For every downgraded cell, I wrote a complete structured record in
quality/compensation_grid_downgrades.jsonwith all five required fields and a validreason_class. - For every pattern-tagged REQ, the union of Covers lists + downgrade cells equals the grid's cell set.
Mark Phase 3 (Code review + regression tests) complete in PROGRESS.md (use the checkbox format - [x] Phase 3 - Code Review — do NOT switch to a table).
IMPORTANT: Do NOT proceed to Phase 4 (spec audit). The next phase will run the spec audit with a fresh context window.