You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## What
Closes the classification escape hatches in the review flow and makes
`fold-findings` able to repair `audit-pr` blockers even when the ledger
is missing.
### `review-implementation` 1.2.0 (minor)
- **Fix-now override checks** — mandatory before assigning any
non-fix-now class:
- *Cheap-fix check*: a fix that is a few low-risk lines (annotation,
rename, guard clause) costs less than tracking an issue → always
**fix-now**.
- *In-scope check*: a defect inside the governing SPEC's scope is the
branch's own unfinished work → always **fix-now**;
postpone/known-issue/tradeoff unavailable.
- **`replan-in-unit` route** — a too-large in-scope fix-now keeps its
class (size never downgrades); it routes to user-confirmed new phase(s)
in the unit's SPEC `## Phases` ledger — before the final `Hardening &
PR` phase if it has not run yet; after it plus a fresh final `Hardening
& PR` phase if it already ran — executed on the same branch.
- Don't-deflate guardrail mirroring the existing don't-inflate one.
### `review-change` 2.5.0 (minor)
- Routing states the override checks and the `replan-in-unit` route.
- `Decision: FAIL` `→ Next:` block gains a conditional replan
sub-bullet.
### `fold-findings` 1.1.0 (minor)
- **Ledger reconstruction**: invoked after an `audit-pr` `VERDICT:
BLOCKED` with the ledger absent or missing blockers, it appends the
missing rows from the verdict itself and proceeds — ending with "no
findings" while blockers are listed is now a contract violation.
- **`REPLAN` verdict** for `replan-in-unit` rows (and any finding whose
smallest correct fix proves too large for one commit): never implemented
inline, never downgraded — hand-off to confirmed SPEC phase(s) +
`execute-phase` on the same branch. Tally gains optional `· Replan: r`
(omitted when 0, keeping the existing 3-field format for current
consumers).
## Why
Observed behavior: findings that are trivially cheap or squarely in the
unit's scope were escaping as tradeoff/known-issue/postpone, and
`fold-findings` reported "no findings" after an `audit-pr` BLOCKED when
the ledger rows weren't persisted.
## Docs
- CHANGELOG.md / CHANGELOG.es.md rows + release-log bullet (EN+ES in the
same change).
- README.md / README.es.md skill-table cells updated for both
user-facing skills.
## Verification
- `npx skills add . --list` discovers all skills.
- bump-skill lint: `→ Next:` blocks, Portability, Turn contract present;
no stray `S1`/"Step N" phase labels.
- Note: per CLAUDE.md, a golden-fixture smoke test (weakest fleet model)
is recommended for these executor-path review skills before relying on
them from weak models.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Copy file name to clipboardExpand all lines: CHANGELOG.es.md
+22-1Lines changed: 22 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -229,6 +229,7 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
229
229
#### `review-change`
230
230
| Versión | Fecha | Tipo | Qué cambió |
231
231
|---|---|---|---|
232
+
| 2.5.0 | 2026-07-19 | menor | El Routing ahora enuncia las comprobaciones de anulación hacia fix-now de `review-implementation` 1.2.0 (arreglo barato / defecto dentro de alcance → siempre fix-now, nunca un escape a postpone/known-issue/tradeoff) y añade la ruta `replan-in-unit` para un fix-now dentro de alcance demasiado grande (conserva su clase fix-now + su fila en el ledger; el usuario confirma las nuevas fase(s) del SPEC y `execute-phase` en la misma rama lo pliega); el bloque `→ Next:` de `Decision: FAIL` gana el sub-punto condicional correspondiente. |
232
233
| 2.4.1 | 2026-07-18 | parche | Fix #77: reformula las dos referencias cruzadas a la cadencia de `execute-phase` ("When to use" y "Relationship to other skills") desde el intervalo retirado de cada 2 fases hacia la nueva cadencia basada en disparadores (límite de capa/acumulación/sensibilidad); la sección adversarial "Cadence — once per unit" y su nota de límite con `#77` no cambian. |
233
234
| 2.4.0 | 2026-07-18 | menor | Fix #76: hace que `--adversarial N` sea usable por flotas de modelos débiles orquestadas a mano — checklist de recomendación de 4 casillas (sustituye el disparador L/sensible únicamente, añade una condición "revisor no es el más fuerte/es más débil que el autor" expuesta como línea de informe, nunca auto-detectada), escalera fija de N (2 por defecto, 3 en seguridad/familia única, >3 desaconsejado), roles de revisor asignados por índice (R1 corrección, R2 seguridad, R3 cobertura de SPEC) con la guarda de rol-como-prioridad-no-alcance, contratos de revisor/merge de fuente única, un nuevo modo de fusión `--merge` con lista de prohibiciones, plantillas de bloques para pegar en Portability, y un ancla de cadencia una-vez-por-unidad (límite explícito con `#77`). |
234
235
| 2.3.0 | 2026-07-17 | menor | Fix #65: el bloque `→ Next:` de `Decision: FAIL` ahora recomienda la nueva skill independiente `/fold-findings` (clasificación congelada, lista de prohibiciones que cierra las válvulas de escape de volcado-a-known-issues/downgrade/aflojar-tests/supresión) como la vía de fold, en lugar de la línea de prosa inline "fold the fix-now findings"; la forma fija multilínea y los sub-bullets de `/audit-pr`/no-fix-now/product-audit no cambian. |
@@ -257,6 +258,7 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
257
258
#### `fold-findings`
258
259
| Versión | Fecha | Tipo | Qué cambió |
259
260
|---|---|---|---|
261
+
| 1.1.0 | 2026-07-19 | menor | Dos adiciones: (1) **reconstrucción del ledger** — invocada tras un `VERDICT: BLOCKED` de `audit-pr` con el ledger ausente o sin filas para algún blocker, la skill añade ella misma las filas que faltan a partir del propio veredicto (esquema fijo, `class: fix-now`, dedupe por `file:line`+eje, con commit) y continúa; terminar con "no hay hallazgos" mientras un veredicto BLOCKED lista blockers es una violación del contrato. (2) Nuevo veredicto por hallazgo **`REPLAN`** para filas `replan-in-unit` (y cualquier hallazgo cuyo arreglo mínimo correcto resulte demasiado grande para plegarse en un commit): nunca se implementa en línea ni se degrada — se traspasa a fase(s) del SPEC confirmadas por el usuario + `execute-phase` en la misma rama; el total gana un campo opcional `· Replan: r` (omitido cuando es 0). |
260
262
| 1.0.0 | 2026-07-17 | — | Nueva skill (fix #65): repara uno por uno los hallazgos fix-now de `review-change`/`audit-pr` — clasificación congelada (nunca reclasifica; una objeción genuina produce `DISPUTED` → `/triage-issue`), una lista de prohibiciones fija (nada de volcado a known-issues, nota de tradeoff en `decisions.md`, aflojar/saltar tests, supresión de lint como arreglo, stub `TODO`, ni marcar `folded: yes` sin un diff), y un contrato de salida fijo por hallazgo `FOLDED <sha> \| DISPUTED <razón> \| BLOCKED <input faltante>` que termina en un total `Folded: n/m · Disputed: k · Blocked: j`. La checklist del ciclo de fold embebida en `execute-phase` se mantiene como fallback en contexto/portabilidad. |
261
263
262
264
#### `audit-pr`
@@ -383,7 +385,10 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
383
385
|| 1.1.1 | 2026-07-10 | parche | Fix #33: la descripción del frontmatter y la sección de apertura aún enunciaban el contrato previo a la feature 10 ("toda skill de cara al usuario imprime el envelope") POR ENCIMA de la corrección de la feature 10 — reescritas de cabeza al contrato vigente (esquema + regla de parseo último-json-cercado como núcleo; emisión = `workflow-status` siempre, el resto de skills solo bajo el snippet inyectado por el driver, nada en sesiones interactivas). La misma frase obsoleta corregida en `packages/agentic-workflow-schema/README.md`, `package.json`, `src/index.ts` y `envelope.schema.json` (solo texto de descripción/comentario/metadatos, sin cambio de forma del esquema ni de comportamiento, sin release del paquete). |
384
386
|| 1.1.0 | 2026-07-10 | menor | Nueva sección `## Driver system-prompt snippet + repair loop`: el snippet canónico de system-prompt inyectado por el driver (verbatim, cercado) y el protocolo de bucle de reparación (fallo de parseo → reinvocar con "Emit only the machine envelope for the turn above.", un reintento, luego FAILED del driver) — el requisito del envelope se traslada aquí desde los contratos de turno por skill de las 14 skills de cara al usuario. |
385
387
|| 1.0.0 | 2026-07-05 | — | Nuevo contrato interno: el esquema JSON del envelope máquina (11 estados, claves fijas, regla de parseo último-json-cercado) que toda skill de cara al usuario emite como su salida final absoluta. |
386
-
|`review-implementation`| 1.1.0 | 2026-07-09 | menor | La postura de la Fase 1 ("Find") ahora es adversarial por defecto: "asume que el diff está MAL — tu trabajo es probar que no funciona". La tabla de ejes y la rúbrica de clasificación de la Fase 2 no cambian. |
388
+
|`review-implementation`| 1.2.2 | 2026-07-19 | parche | Se corrige un encabezado ATX partido — el encabezado `###` de "Fix-now override checks" ocupaba dos líneas y se renderizaba como dos H3 separados; ahora es una sola línea de encabezado. Solo formato, sin cambio de comportamiento. |
389
+
|| 1.2.1 | 2026-07-19 | parche | Aclara el alcance de las comprobaciones de anulación hacia fix-now: solo condicionan `postpone`/`intentional-tradeoff` para un *defecto real confirmado* — `ignore` (falso positivo/negligible) se decide antes y nunca debió pasar por esta puerta. Solo redacción; sin cambio de comportamiento. |
390
+
|| 1.2.0 | 2026-07-19 | menor | La Fase 2 gana dos **comprobaciones de anulación hacia fix-now**, obligatorias antes de cualquier clase no-fix-now: un arreglo barato (unas pocas líneas de bajo riesgo que cuestan menos que rastrear un issue) o un defecto dentro de alcance (dentro del alcance del SPEC que gobierna la unidad) es siempre fix-now — postpone/known-issue/tradeoff no están disponibles para ellos. Un fix-now grande dentro de alcance nunca se degrada: nueva ruta `replan-in-unit` que añade fase(s) confirmadas por el usuario al ledger `## Phases` del SPEC de la unidad — antes de la fase final `Hardening & PR` si aún no se ejecutó; después de ella más una nueva fase final `Hardening & PR` si ya se ejecutó (un hardening completado nunca avala trabajo posterior) — ejecutadas en la misma rama. Se añade la guarda simétrica de no-desinflar. |
391
+
|| 1.1.0 | 2026-07-09 | menor | La postura de la Fase 1 ("Find") ahora es adversarial por defecto: "asume que el diff está MAL — tu trabajo es probar que no funciona". La tabla de ejes y la rúbrica de clasificación de la Fase 2 no cambian. |
387
392
|| 1.0.3 | 2026-07-04 | parche | Sin cambio de comportamiento: el frontmatter `model:`/`effort:` de esta skill se trasladó a `docs/workflow/model-routing.yml` (usado solo para construir la rama `#claude`). |
388
393
|| 1.0.2 | 2026-07-02 | parche | La referencia a revisiones companion ahora apunta al pack de revisión interno (`review-*`) |
389
394
|| 1.0.1 | 2026-06-09 | parche | Descripción acortada 96 → 36 palabras (contexto siempre cargado); cuerpo sin cambios |
@@ -436,6 +441,22 @@ Cómo funciona el pinning realmente, **verificado** contra el CLI `skills`:
436
441
437
442
## Registro cronológico (más reciente primero)
438
443
444
+
-**2026-07-19 — comprobaciones de anulación hacia fix-now + reconstrucción de blockers en fold-findings.**
445
+
`review-implementation` 1.2.0 cierra los escapes de clasificación: un arreglo
446
+
barato o un defecto dentro de alcance es siempre fix-now (comprobaciones
447
+
obligatorias antes de cualquier clase no-fix-now), y un fix-now dentro de
448
+
alcance demasiado grande se enruta a la nueva `replan-in-unit` (fase(s)
449
+
confirmadas por el usuario añadidas al SPEC de la unidad, misma rama,
450
+
re-añadiendo una fase final de hardening cuando la original ya se ejecutó)
451
+
en vez de degradarse. `review-change` 2.5.0 refleja ambas en su Routing y en el
452
+
bloque `→ Next:` de `FAIL`. `fold-findings` 1.1.0 reconstruye las filas de
453
+
ledger ausentes desde un veredicto BLOCKED de `audit-pr` (nunca "no hay
454
+
hallazgos" mientras se listan blockers) y añade el veredicto por hallazgo
455
+
`REPLAN` + el campo opcional `· Replan: r` en el total.
456
+
`review-implementation` 1.2.1 (parche) aclaró después el alcance de las
457
+
comprobaciones de anulación: solo condicionan `postpone`/`intentional-tradeoff`
458
+
para un defecto real confirmado, nunca `ignore`; 1.2.2 (parche) corrigió un
459
+
encabezado ATX partido en la misma sección que se renderizaba como dos H3.
439
460
-**2026-07-19 — señales de driver en workflow-status + ampliación de la puerta de descope en audit-pr (fix 79+89).**
440
461
Expone el lado sensor de la ronda de diseño del 2026-07-17 (#66/#76/#77/#78)
441
462
en el envelope de `workflow-status`: señales por-unidad `review`/`closure`/
Copy file name to clipboardExpand all lines: CHANGELOG.md
+21-1Lines changed: 21 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -228,6 +228,7 @@ How pinning actually works, verified against the `skills` CLI:
228
228
#### `review-change`
229
229
| Version | Date | Type | What changed |
230
230
|---|---|---|---|
231
+
| 2.5.0 | 2026-07-19 | minor | Routing now states `review-implementation` 1.2.0's fix-now override checks (cheap fix / in-scope defect → always fix-now, never a postpone/known-issue/tradeoff escape) and adds the `replan-in-unit` route for a too-large in-scope fix-now (keeps its fix-now class + ledger row; user confirms new SPEC phase(s), then `execute-phase` on the same branch folds it); the `Decision: FAIL``→ Next:` block gains a matching conditional sub-bullet. |
231
232
| 2.4.1 | 2026-07-18 | patch | Fix #77: restated the two `execute-phase` cadence cross-references ("When to use" and "Relationship to other skills") from the retired every-2-phases interval to the new trigger-based cadence (layer boundary/accumulation/sensitivity); the adversarial "Cadence — once per unit" section and its `#77` boundary note are unchanged. |
232
233
| 2.4.0 | 2026-07-18 | minor | Fix #76: made `--adversarial N` usable by hand-orchestrated weak-model fleets — a 4-box recommendation checklist (replaces the L/sensitive-only trigger, adds a "reviewer not strongest/weaker than author" condition surfaced as a report line, never auto-detected), a fixed N ladder (2 default, 3 on security/single-family, >3 discouraged), index-assigned reviewer roles (R1 correctness, R2 security, R3 SPEC-coverage) with a role-is-priority-not-scope guardrail, single-sourced reviewer/merge contracts, a new `--merge` fusion entry point with a forbidden-drop list, Portability paste-block templates, a once-per-unit cadence anchor (explicit `#77` boundary), and `→ Next:` wiring at the terminal review. |
233
234
| 2.3.0 | 2026-07-17 | minor | Fix #65: the `Decision: FAIL``→ Next:` block now recommends the new standalone `/fold-findings` skill (frozen classification, forbidden list closing the known-issues-dump/downgrade/test-loosening/suppression escape hatches) as the fold path, replacing the inline "fold the fix-now findings" prose line; the multi-line fixed shape and the `/audit-pr`/non-fix-now/product-audit sub-bullets are unchanged. |
@@ -256,6 +257,7 @@ How pinning actually works, verified against the `skills` CLI:
256
257
#### `fold-findings`
257
258
| Version | Date | Type | What changed |
258
259
|---|---|---|---|
260
+
| 1.1.0 | 2026-07-19 | minor | Two additions: (1) **ledger reconstruction** — invoked after an `audit-pr``VERDICT: BLOCKED` with the ledger absent or missing blockers, the skill now appends the missing rows from the verdict itself (fixed schema, `class: fix-now`, deduped by `file:line`+axis, committed) and proceeds; ending with "no findings" while a BLOCKED verdict lists blockers is a contract violation. (2) New **`REPLAN`** per-finding verdict for `replan-in-unit` rows (and any finding whose smallest correct fix proves too large to fold in one commit): never implemented inline, never downgraded — hand-off to user-confirmed SPEC phase(s) + `execute-phase` on the same branch; tally gains an optional `· Replan: r` field (omitted when 0). |
259
261
| 1.0.0 | 2026-07-17 | — | New skill (fix #65): repairs `review-change`/`audit-pr` fix-now findings one at a time — frozen classification (never reclassifies; a genuine objection produces `DISPUTED` → `/triage-issue`), a fixed forbidden list (no known-issues dump, no `decisions.md` tradeoff note, no test loosening/skipping, no lint-suppression-as-fix, no `TODO` stub, no ticking `folded: yes` without a diff), and a fixed per-finding `FOLDED <sha> \| DISPUTED <reason> \| BLOCKED <missing input>` output contract ending in a `Folded: n/m · Disputed: k · Blocked: j` tally. `execute-phase`'s embedded fold-cycle checklist remains the in-context/portability fallback. |
260
262
261
263
#### `audit-pr`
@@ -382,7 +384,10 @@ How pinning actually works, verified against the `skills` CLI:
382
384
|| 1.1.1 | 2026-07-10 | patch | Fix #33: the frontmatter description and opening section still stated the pre-feature-10 contract ("every user-facing skill prints the envelope") ABOVE the feature-10 correction — rewritten head-first to the current contract (schema + last-fenced-json parse rule as the core; emission = `workflow-status` always, other skills only under the driver-injected snippet, nothing in interactive sessions). Same stale sentence fixed in `packages/agentic-workflow-schema/README.md`, `package.json`, `src/index.ts`, and `envelope.schema.json` (description/comment/metadata text only, no schema-shape or code-behavior change, no package release needed). |
383
385
|| 1.1.0 | 2026-07-10 | minor | New `## Driver system-prompt snippet + repair loop` section: the canonical driver-injected system-prompt snippet (verbatim, fenced) and the repair-loop protocol (parse-fail → re-invoke with "Emit only the machine envelope for the turn above.", one retry, then driver-level FAILED) — the envelope requirement moved here from the 14 user-facing skills' per-skill turn contracts. |
384
386
|| 1.0.0 | 2026-07-05 | — | New internal contract: the machine-envelope JSON schema (11 states, fixed keys, last-fenced-json parse rule) every user-facing skill emits as its absolute last output. |
385
-
|`review-implementation`| 1.1.0 | 2026-07-09 | minor | Phase 1 ("Find") stance is now adversarial by default: "assume the diff is WRONG — your job is to prove it does not work." The axis table and the Phase 2 classification rubric are unchanged. |
387
+
|`review-implementation`| 1.2.2 | 2026-07-19 | patch | Fixed a wrapped ATX heading — the "Fix-now override checks" `###` heading spanned two lines, rendering as two separate H3s; now a single heading line. Formatting only, no behavior change. |
388
+
|| 1.2.1 | 2026-07-19 | patch | Clarified the fix-now override checks' scope: they gate `postpone`/`intentional-tradeoff` for a *confirmed real defect* only — `ignore` (false positive/negligible) is decided first and was never meant to route through this gate. Wording-only; no behavior change. |
389
+
|| 1.2.0 | 2026-07-19 | minor | Phase 2 gains two **fix-now override checks**, mandatory before any non-fix-now class: a cheap fix (a few low-risk lines costing less than tracking an issue) or an in-scope defect (inside the governing SPEC's scope for the unit) is always fix-now — postpone/known-issue/tradeoff is not available for them. A large in-scope fix-now is never downgraded: new route `replan-in-unit` appends user-confirmed phase(s) to the unit's SPEC `## Phases` ledger — before the final `Hardening & PR` phase if it hasn't run yet; after it plus a fresh final `Hardening & PR` phase if it already ran (a completed hardening never vouches for later work) — executed on the same branch. Matching don't-deflate guardrail added. |
390
+
|| 1.1.0 | 2026-07-09 | minor | Phase 1 ("Find") stance is now adversarial by default: "assume the diff is WRONG — your job is to prove it does not work." The axis table and the Phase 2 classification rubric are unchanged. |
386
391
|| 1.0.3 | 2026-07-04 | patch | No behavior change: this skill's `model:`/`effort:` frontmatter moved to `docs/workflow/model-routing.yml` (used only to build the `#claude` branch). |
387
392
|| 1.0.2 | 2026-07-02 | patch | Companion-review reference now points at the internal review pack (`review-*`) |
388
393
|| 1.0.1 | 2026-06-09 | patch | Description shortened 96 → 36 words (always-loaded context); body unchanged |
@@ -435,6 +440,21 @@ How pinning actually works, verified against the `skills` CLI:
0 commit comments