@trycore/spec-build-harness 0.10.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,7 +69,7 @@ En `runtime` el fichero `.claude/state/build-state.json` **no se lee ni se escri
69
69
  |---|---|
70
70
  | `active_slice.gates` | `slice-ops.sh status` / caché de proyección |
71
71
  | `active_slice.wiring_checklist[]` | eventos `wiring_*` + `wiring_failing` de la proyección |
72
- | `active_slice.progress_log[]` | eventos `progress_note_recorded` (event stream) |
72
+ | `active_slice.progress_log[]` | eventos `progress_noted` (event stream) |
73
73
  | `session_continuity.resume_hint` | `resume_hint` de `/agent/context` (lo rinde `next-step`) |
74
74
  | `scaffold`, `design_source`, `project_kind`, `foundation` | hechos de proyecto (`fact …`) |
75
75
  | `history[]`, `releases[]`, `parallel_front` | proyecciones del runtime (consola del hub) |
@@ -24,9 +24,12 @@ de épicas de la release son las que vas a auditar en bloque.
24
24
  `dual`/`runtime` la release vive en el runtime y cada gate se reporta con
25
25
  `bash .claude/hooks/build/release-ops.sh verdict <line> <gate> <pass|fail|na>`; en `legacy`, en el
26
26
  array `releases[]` del fichero local (protocolo en `building-a-slice/references/state-protocol.md`).
27
- - **Reportar es de agentes; cerrar es de humanos** (spec §2). El agente mide y reporta los seis
28
- veredictos; **la release la cierra una persona en la consola del hub** el token de agente no
29
- puede hacerlo. `release-ops.sh close-hint <line>` imprime el recordatorio.
27
+ - **Reportar es de agentes; el cierre en verde es del runtime; el degradado es humano** (política
28
+ A-con-B). El agente mide y reporta los seis veredictos; con el último veredicto de los 6 gates
29
+ canónicos en PASS **el hub auto-cierra** la release (`closed_by: AUTO_6_OF_6_PASS`, audit trail).
30
+ Si algún gate queda `fail`/`partial` o hay deudas por decidir, **el cierre es decisión humana en
31
+ la consola** — el gobierno humano vive donde hay decisión real, no en el clic de un resultado
32
+ derivable. `release-ops.sh close-hint <line>` imprime la política.
30
33
  - **Sobre el diff acumulado**: el alcance es el rango de commits de todas las épicas de la release
31
34
  (desde el merge anterior a la primera épica de la release hasta `main`).
32
35
  - **Delega en subagentes** (devuelven síntesis, protegen el contexto).
@@ -67,9 +70,10 @@ Checklist de cierre: `references/release-dod.md`.
67
70
  5. Reporta **cada** gate en cuanto lo tengas medido, con su evidencia:
68
71
  `release-ops.sh verdict R1-mvp security pass --evidence-file informe.txt` (usa `na` cuando el gate
69
72
  no aplique — p. ej. `ux` en una release sin UI). Un `rc 6` es el servidor rechazando: muestra su
70
- razón, no reintentes. Sin red, el veredicto se encola (`rc 5`) y se entrega al reconectar.
71
- 6. Cuando los seis estén reportados, **avisa al humano para el cierre**
72
- (`release-ops.sh close-hint R1-mvp`): el agente no cierra releases. Si algún gate quedó `fail`,
73
+ razón, no reintentes. Sin red, el veredicto **no** tiene camino por la cola offline (`rc 5`,
74
+ issue #44): reintenta el mismo comando cuando vuelva la red, antes de pedir el cierre.
75
+ 6. Con los seis reportados **en verde, el hub cierra solo** (la respuesta del último `verdict`
76
+ anuncia `release CERRADA … closed_by: AUTO_6_OF_6_PASS`) — no hay paso manual. Si algún gate quedó `fail`,
73
77
  lista los hallazgos bloqueantes; el usuario los corrige como un slice normal (fix en
74
78
  `building-a-slice`) y se re-corre el Release Gate.
75
79
 
@@ -9,7 +9,7 @@
9
9
  //
10
10
  // READ-ONLY sobre el estado: esta plantilla devuelve un diagnóstico; la skill
11
11
  // releasing-a-version es la ÚNICA que reporta los veredictos (release-ops.sh verdict por gate;
12
- // en modo legacy, una entrada en releases[] del fichero). El agregado y el cierre son del
12
+ // en modo legacy, una entrada en releases[] del fichero). El agregado y el auto-cierre en verde son del
13
13
  // runtime/humano. Parciales NO promueven a passed. Si METODOLOGIA.md (§5) contradice algo aquí,
14
14
  // gana la metodología.
15
15
  //
@@ -150,11 +150,11 @@ const reviewersGreen = reviews.filter(Boolean).every((r) => r.na || r.value ===
150
150
  const status = (reviewersGreen && gates.integration === true) ? 'passed' : 'failed'
151
151
 
152
152
  return {
153
- status, // reportado por releasing-a-version vía release-ops.sh verdict (agregado y cierre son del runtime/humano).
153
+ status, // reportado por releasing-a-version vía release-ops.sh verdict (agregado y auto-cierre en verde son del runtime; el degradado lo decide un humano).
154
154
  gates, // {security, smell, ux, coherence, stack_arch, integration}
155
155
  blocking: [
156
156
  ...reviews.filter((r) => r && r.value === false).map((r) => ({ gate: r.gate, error: r.error || null, findings: r.findings || [] })),
157
157
  ...(gates.integration === true ? [] : [{ gate: 'integration', findings: (integration && integration.findings) || [] }]),
158
158
  ],
159
- note: 'Read-only. releasing-a-version reporta un veredicto por gate (release-ops.sh verdict). El runtime agrega y un humano cierra la release en la consola. Parciales NO promueven a passed.',
159
+ note: 'Read-only. releasing-a-version reporta un veredicto por gate (release-ops.sh verdict). El runtime agrega y AUTO-CIERRA con 6/6 PASS (closed_by: AUTO_6_OF_6_PASS); el caso degradado lo decide un humano en la consola. Parciales NO promueven a passed.',
160
160
  }