Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ospec-workflow",
"description": "Spec-Driven Development workflow for VS Code Agent Customization with OpenSpec, strict TDD, phase agents, skills, hooks, and verification contracts.",
"version": "2.51.0",
"version": "2.52.0",
"author": {
"name": "Manuel Michael Retamozo García"
},
Expand Down
2 changes: 1 addition & 1 deletion .plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ospec-workflow",
"description": "Spec-Driven Development workflow for VS Code Agent Customization with OpenSpec, strict TDD, phase agents, skills, hooks, and verification contracts.",
"version": "2.51.0",
"version": "2.52.0",
"author": {
"name": "Manuel Michael Retamozo García"
},
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@ All notable changes to this project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.52.0] - 2026-08-28

### Changed
- **Integridad semántica K6b (`k6b-semantic-integrity-remediation`)**:
- Roles de estrategia incompatibles no pueden compartir un `EvidenceId`; el orden temporal RED→GREEN / RED→PATCH→GREEN es fail-closed (`STRATEGY_EVIDENCE_ALIAS`, `STRATEGY_SEQUENCE_VIOLATION`).
- Cobertura MUST token a token persistida en `assessment/v1` (`evidence_requirements_satisfied`); omisión o subconjunto incompleto falla cerrado.
- El digest de contrato se comprueba antes de strategy (`BINDING_MISMATCH` sin verdict).
- Projector, replay y reconcile del Assurance Graph fallan cerrados ante inputs canónicos contradictorios, assessments tampered o payload almacenado incompleto (`GRAPH_DIVERGENCE`).
- `evidence/v2`, `verification/v2` y K1 v1 permanecen byte-identical. ADRs `docs/adr/adr-20260828-001` a `003`.
- K6b queda `done`; K6c pasa a `next-eligible`. Verify: 2762 pass, 0 fail; 4R approved (4 WARNING advisory). Archivado en `openspec/changes/archive/2026-08-27-k6b-semantic-integrity-remediation/`.

## [2.51.0] - 2026-08-27

### Added
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# ADR-001: Persist token coverage on assessment/v1

- Status: proposed
- Change: k6b-semantic-integrity-remediation
- Date: 2026-08-27

## Context

Existential evidence binding cannot prove `required_evidence` subset coverage. Coverage belongs to an evaluated evidence/role/obligation tuple, while `evidence/v2` and K1 contracts are frozen.

## Decision

Add required `evidence_requirements_satisfied` to `assessment/v1` as a unique, canonical string array. Include it in the `assessment_id` preimage and in assessment required claims. Omission fails schema validation.

## Alternatives

- Put tokens on `evidence/v2`: rejected; it mutates observation identity.
- Keep coverage ephemeral: rejected; replay cannot validate it.
- Publish `assessment/v2`: rejected; the accepted delta evolves the additive v1 family and requires no parallel family.

## Consequences

Old partial assessments fail closed and must be regenerated. Coverage tampering changes identity. Evidence, verification, and K1 schema bytes stay frozen; rollback is a unit revert.
23 changes: 23 additions & 0 deletions docs/adr/adr-20260828-002-ordered-non-aliased-strategy-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# ADR-002: Ordered, non-aliased strategy evidence

- Status: proposed
- Change: k6b-semantic-integrity-remediation
- Date: 2026-08-27

## Context

A Set of roles proves neither distinct observations nor temporal order. Adding timestamps to frozen `evidence/v2` would create a new clock contract.

## Decision

Evaluate normalized evidence in `rawEvidence` list order. Within the selected strategy, one EvidenceId may bind repeatedly to one role but not to distinct semantic roles. Require RED before GREEN for Strict TDD and RED before PATCH before GREEN for bug strategy.

## Alternatives

- Keep role-set evaluation: rejected; aliasing and reversed sequences pass.
- Add persisted timestamps: rejected; mutates the frozen evidence family and introduces clock authority.
- Infer order from digests: rejected; content hashes carry no chronology.

## Consequences

Callers must provide evidence in observed sequence and use distinct observations for distinct roles. Reordering becomes semantically observable but remains cheap to correct. Schema-only four-role fixtures remain valid; combined verifier use fails closed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# ADR-003: Canonical integrity validation across graph operations

- Status: proposed
- Change: k6b-semantic-integrity-remediation
- Date: 2026-08-27

## Context

The projector coalesces contradictory canonical inputs, replay trusts assessments, and reconcile compares only graph id plus edges. Direct callers can therefore bypass facade checks or hide stored-payload tampering.

## Decision

Share deterministic canonical-input and graph-id helpers. Project rejects contradictory or unresolved digests before hashing; replay schema-validates and recomputes every assessment plus graph binding; reconcile recomputes the stored payload identity and compares the complete canonical graph.

## Alternatives

- Harden only `verifyCandidate`: rejected; direct graph APIs remain permissive.
- Compare graph id and edges only: rejected; nodes, subject, canonical inputs, and kind/schema remain unchecked.
- Trust a recomputed assessment id alone: rejected; graph/evidence/obligation bindings still need validation.

## Consequences

Project, replay, and reconcile share one fail-closed identity model. Legacy incomplete payloads fail instead of being repaired silently. The change adds validation work but no dependency or migration.
6 changes: 3 additions & 3 deletions docs/architecture/harness-evolution.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Arquitectura objetivo — harness gobernado por kernel, grafo y evidencia

> **Autoridad:** fuente conceptual y estratégica del harness (responsabilidades y límites).
> **Corte documental:** v2.51.0, 2026-08-27 (estado alineado al roadmap; la dirección conceptual no cambia).
> **Estado verificado:** O3, O4+O5/O4.1, O4.2, O6A, O2B, **K1**, **K2**, **K2.1**, **K2a**, **K3**, **`k3-readiness-remediation`**, **K4a**, **K5**, **K6a**, **K4b** y **K6b** (archivado v2.50.0; integridad cerrada en v2.51.0). OpenSpec/Git/Candidate siguen siendo la única autoridad semántica; el Assurance Graph es proyección. **K6c** es `next-eligible`.
> **Corte documental:** v2.52.0, 2026-08-28 (estado alineado al roadmap; la dirección conceptual no cambia).
> **Estado verificado:** O3, O4+O5/O4.1, O4.2, O6A, O2B, **K1**, **K2**, **K2.1**, **K2a**, **K3**, **`k3-readiness-remediation`**, **K4a**, **K5**, **K6a**, **K4b** y **K6b** están cerrados. OpenSpec/Git/Candidate siguen siendo la única autoridad semántica; el Assurance Graph es proyección. **K6c** queda `next-eligible`.
> **Roadmap:** orden, estado operativo y done criteria viven en [`../roadmaps/harness-evolution.md`](../roadmaps/harness-evolution.md).
> **Precedencia documental:** ante diferencias de **orden o estado**, prevalece el roadmap; ante diferencias **conceptuales**, reconciliar antes de iniciar el slice.
> **Investigación no normativa:** la trazabilidad completa P0–P27 vive en [`research/harness-kernel-graph-evidence-roadmap-fusion.md`](research/harness-kernel-graph-evidence-roadmap-fusion.md). La proporcionalidad de proceso y el programa de changes viven en [`research/proportional-process-and-change-program.md`](research/proportional-process-and-change-program.md).
Expand Down Expand Up @@ -855,7 +855,7 @@ Repositorios fixture reciben 10–30 cambios consecutivos. Se miden duplicación
8. ~~K5: budgets (incl. autoridad/efectos) / failure / recovery~~ — hecho: archivado y publicado en v2.45.13 (remediaciones v2.45.7→v2.45.13).
9. ~~K6a: primitivas de ejecución aislada (`CreateWorkspace`…`DisposeWorkspace`); no conoce Repair~~ — hecho: archivado y publicado en v2.46.7; frontera de procesos cerrada en v2.47.1; endurecimiento de frontera (política inmutable, fs mutante, live-identity, `worker_threads`) en v2.47.2.
10. ~~K4b: orquesta Repair shadow (consume K6a; freeze Candidate vía K3)~~ — hecho: publicado en v2.48.0; corrección en v2.48.1; invariantes de integración en v2.48.2; cierre mode-only/baseline en v2.48.3.
11. ~~K6b: verifier + provenance + Assurance Graph (proyección)~~ — hecho: publicado en v2.50.0; integridad (MUST, assessment/v1, collector, graph_id canónico, proyección fail-closed) cerrada en v2.51.0. K6c ChallengePlan es `next-eligible`; K6d complexity delta sigue pendiente.
11. ~~K6b: verifier + provenance + Assurance Graph (proyección)~~ — publicado en v2.50.0; integridad semántica B1–B3/H1–H3 cerrada en v2.52.0. K6c ChallengePlan queda `next-eligible`; K6d complexity delta sigue pendiente.
12. K7: ReviewAdapter + ReviewReducer + lineage; K8: CandidateEvaluationAttestation (emisión CAS).
13. K9: shadow/replay/A-B; promoción de **un** profile (checkpoints intermedios ya validados).
14. K10-delivery: DeliveryAuthorization **solo** del profile promovido; relación Candidate por etapas; resto fixed/deferred.
Expand Down
13 changes: 7 additions & 6 deletions docs/roadmaps/harness-evolution.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Roadmap general — kernel, grafo y evidencia

> **Autoridad:** única fuente operativa del backlog transversal.
> **Versión de referencia:** v2.51.0, 2026-08-27.
> **Versión de referencia:** v2.52.0, 2026-08-28.
> **Arquitectura:** [`../architecture/harness-evolution.md`](../architecture/harness-evolution.md).
> **Investigación no normativa:** [`../architecture/research/harness-kernel-graph-evidence-roadmap-fusion.md`](../architecture/research/harness-kernel-graph-evidence-roadmap-fusion.md) (P0–P27). Proporcionalidad de proceso y Change Program: [`../architecture/research/proportional-process-and-change-program.md`](../architecture/research/proportional-process-and-change-program.md).
> **Regla de estado:** los hechos se contrastan con código/OpenSpec; este roadmap no cambia el estado de un change ni sustituye sus artefactos.
Expand Down Expand Up @@ -78,8 +78,8 @@ Las iniciativas anteriores no se descartan. O20A, O13A–C, O15, O18, O19A/B y R
| `done` | **K5** | Budgets (incl. autoridad/efectos), failures y recovery; remediaciones v2.45.7→v2.45.13 (authoritative enforcement, authority boundary/CAS concurrency, reconciliación, remediación técnica del núcleo y blindaje de concurrencia); archivado y publicado en v2.45.13 |
| `done` | **K6a** | Worker isolation y work-order capsule; primitivas de ejecución aislada, integración con WorkerTransport, contención de filesystem y WorkResult canónico; archivado en v2.46.0, frontera de procesos cerrada en v2.47.1 y endurecida en v2.47.2 |
| `done` | **K4b** | Repair shadow execution (WO→WR→integrate→Candidate); despacho exclusivo K6a, integración estricta, cápsula mínima, base derivada y registro 1:N; remediación de invariantes en v2.48.2 y cierre mode-only/baseline en v2.48.3 (`2026-08-26-k4b-mode-only-and-baseline-projection`) |
| `done` | **K6b** | Verifier independiente, evidence strategies/provenance y Assurance Graph; integridad cerrada en v2.51.0 (`k6b-verification-integrity-remediation`) |
| `next-eligible` | **K6c** | ChallengePlan policy-selected |
| `done` | **K6b** | Verifier independiente, strategies/provenance y Assurance Graph proyección; integridad semántica B1–B3/H1–H3 cerrada en v2.52.0 (`2026-08-27-k6b-semantic-integrity-remediation`) |
| `next-eligible` | **K6c** | ChallengePlan policy-selected; desbloqueado tras archive de K6b |
| `pending` | K6d–K8 | Complexity delta, review authority, **Evaluation Attestation** |
| `pending` | K9 | Gate de promoción shadow/replay/A-B (checkpoints intermedios ya validados) |
| `pending` | K10-delivery | `DeliveryAuthorization` **acotada al profile K9**; relación Candidate por etapas; fixed/deferred para el resto |
Expand Down Expand Up @@ -1011,7 +1011,7 @@ Vertical Repair shadow produce Candidate congelado. Gate de invariantes cerrado

**Dependencias:** K4b + K6a + K3.

**Estado:** `done`. Publicado en v2.50.0 (`k6b-verifier-evidence-assurance-graph`); integridad cerrada en v2.51.0 (`k6b-verification-integrity-remediation`): cobertura MUST del Obligation Manifest, assessments persistibles `assessment/v1`, provenance de collector del harness, `graph_id` canónico y proyección fail-closed. Este change no reabre el macro-slice. OpenSpec/Git/Candidate siguen siendo la única autoridad semántica. El grafo no concede lifecycle, approval ni delivery. **K6c es `next-eligible`.**
**Estado:** `done`. Publicado en v2.50.0 (`k6b-verifier-evidence-assurance-graph`); la remediación semántica focal B1–B3/H1–H3 (`k6b-semantic-integrity-remediation`) cierra cobertura MUST, assessments persistibles `assessment/v1`, `graph_id` canónico y proyección/replay/reconciliación fail-closed en v2.52.0. Este change no reabre el macro-slice. OpenSpec/Git/Candidate siguen siendo la única autoridad semántica. El grafo no concede lifecycle, approval ni delivery. **K6c queda `next-eligible`.**

**Absorbe/rebasa:** P12/P16; O15; separación apply/verify vigente.

Expand Down Expand Up @@ -1103,7 +1103,7 @@ external-unverified
- equivalence manifest queda listo para K9;
- ningún consumer trata el Assurance Graph como segunda fuente de verdad frente a OpenSpec/Git/Candidate.

**Gate terminal:** verifier, strategy selector, provenance y Assurance Graph (proyección) conformes; checkpoint evidencia/challenges → `continue` | `revise` | `reject`. Cerrado en v2.51.0. Desbloquea K6c.
**Gate terminal:** verifier, strategy selector, provenance y Assurance Graph (proyección) conformes; checkpoint evidencia/challenges → `continue` | `revise` | `reject`. Cerrado en v2.52.0. Desbloquea K6c.

### K6c — adversarial challenges (policy-selected) — **next-eligible**

Expand Down Expand Up @@ -2061,4 +2061,5 @@ Un Change Program (objetivo → children OpenSpec + cursor, ver investigación `
- 2026-08-27: K6b (`k6b-verifier-evidence-assurance-graph`) entra en apply: verifier independiente, evidence strategies/provenance y Assurance Graph proyección `implemented`; autoridad independiente del grafo, K6c/K7/K8 permanecen `target`. K6c queda next-eligible.
- 2026-08-27: K6b cierra con verify PASS, 4R approved y archive transaccional; publicado en v2.50.0. K6c queda next-eligible.
- 2026-08-27: K6b entra en `revise` (`k6b-verification-integrity-remediation`): cobertura MUST, assessments persistibles, provenance de collector, `graph_id` canónico y proyección fail-closed. K6c pasa a `blocked-by-K6b-remediation` hasta archive de esa remediación.
- 2026-08-27: K6b (`k6b-verification-integrity-remediation`) cierra integridad con verify PASS, 4R successor approved y archive transaccional; publicado en v2.51.0. K6b queda `done`; K6c queda next-eligible.
- 2026-08-27: K6b (`k6b-semantic-integrity-remediation`) entra en apply para remediar B1–B3/H1–H3; K6b queda `revise` y K6c `blocked-by-K6b-remediation` hasta archive.
- 2026-08-28: K6b (`k6b-semantic-integrity-remediation`) cierra con verify PASS, 4R approved y archive transaccional; publicado en v2.52.0. K6c queda next-eligible.
Loading