Skip to content

chore(okf): revisa OKF v0.2 y reconoce el hash; el proyector no cambia - #659

Merged
beyondnetPeru merged 1 commit into
mainfrom
chore/okf-v02-review
Aug 23, 2026
Merged

chore(okf): revisa OKF v0.2 y reconoce el hash; el proyector no cambia#659
beyondnetPeru merged 1 commit into
mainfrom
chore/okf-v02-review

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Pull Request Summary

El vigía salía con exit 10 desde el 2026-07-24: el SPEC upstream pasó de v0.1 (15 KB) a v0.2 (37,7 KB), una reescritura de 2,5×. Esta es la revisión que el guard pedía, y su conclusión es que no hay que tocar la proyección.

Cómo se revisó

Recuperados los cuatro blobs del historial upstream y hasheados, para anclar los extremos sin suposiciones:

commit fecha sha256 versión
ee67a5ca 2026-06-12 b9655e60…el del lock v0.1 (15.046 B)
780fe9d3 2026-07-24 0f02b43f… migración a v0.2
3fcbb9f8 2026-07-24 5a3311d2… v0.2
62432a09 2026-08-21 26aa5da0…upstream hoy v0.2 (37.748 B)

Con los dos textos delante, resulta que el propio SPEC trae una sección §13 "Changes from v0.1" con §13.1 Breaking changes. No hacía falta diffear a mano las 61 secciones. (Mi primer grep buscaba "Changelog/History/Revision" y no la vio — el dato estaba ahí, y eso hacía la tarea mucho más pequeña de lo que anuncié.)

Las dos roturas, contra lo que emitimos

Rotura §13.1 ¿Nos afecta?
timestamp → superseded por generated: { by, at } : emitimos timestamp: '2026-07-28'. Pero §13.1 dice que el consumidor MAY caer al timestamp legado cuando falta generated → el bundle sigue siendo consumible por un lector v0.2.
Cuerpo # Citations → superseded por sources No: emitimos cero # Citations (verificado sobre el bundle).

Y lo que §13 declara explícitamente que no cambia es justo aquello sobre lo que se apoya el ADR-0105: estructura del bundle, nombres reservados, el type obligatorio, los recomendados title/description/resource/tags, cross-linking, index, logs y la conformidad permisiva.

Nuestro validador solo exige type no vacío; --check y --verify pasan (15 ficheros, 0 violaciones). El ADR-0105 ya había previsto este caso en su sección de riesgos ("OKF v0.1 is young… watched by knowledge-okf-standard-watch"), y sus afirmaciones de v0.1 siguen siendo exactas: proyectamos v0.1, a propósito.

Por eso el lock se acepta y el proyector no se toca.

Mejora opcional, no deuda

Adoptar generated: { by: human:@winston, at: … } haría que un consumidor v0.2 clasifique el corpus como autorado por humano (§5.3 keys off the human: prefix) en vez de caer al timestamp sin procedencia. Es un cambio del bundle publicado y una decisión sobre cómo representamos confianza — no una corrección. Lo dejo a tu criterio.

Aparte: un fallo del propio vigía, encontrado al usarlo

--accept reconocía el hash y acto seguido imprimía "NO ha sido reconocido… confirma con --accept", mostrando además el hash viejo en locked:. Se lee como que el reconocimiento falló.

Causa: status solo miraba si el upstream cambió, sin distinguir lo que hizo esa corrida. Se añade accepted — no toca el vocabulario de status, que un test fija — y el informe pasa a decir "Cambio upstream RECONOCIDO" con el hash nuevo.

Verificación

  • --check: 0 violaciones · --verify: conforme y al día (15 ficheros)
  • knowledge-okf-precommit-guard.mjs: exit 0, en silencio
  • vigía sin flag: status: ok, exit 0
  • tests del vigía: 8 → 9 en verde (uno nuevo + una aserción)
  • escenario de --accept reproducido de extremo a extremo rebobinando el lock y restaurándolo (idéntico byte a byte)

Before you submit

  • Sign-off (DCO): my commits carry a Signed-off-by line.
  • Conventional Commits: my PR title and commits follow Conventional Commits.
  • Agnosticism: no introduce ninguna dependencia tecnológica.
  • Bilingual: no aplica — no toqué ninguno de los dieciséis documentos de la superficie de entrada.

Linked ADRs / Issues

🤖 Generated with Claude Code

El vigía salia con exit 10 desde el 2026-07-24: el SPEC upstream paso de v0.1
(15 KB) a v0.2 (37,7 KB), una reescritura de 2,5x. Esta es la revision que el
guard pedia, y su conclusion es que NO hay que tocar la proyeccion.

Como se reviso. Recuperados los cuatro blobs del historial upstream y hasheados
para anclar los extremos: el lock apuntaba a ee67a5ca (b9655e60..., v0.1) y el
upstream es 62432a09 (26aa5da0..., **Version 0.2**). Con los dos textos delante,
el propio SPEC trae una seccion §13 "Changes from v0.1" con §13.1 Breaking
changes — no hace falta diffear a mano las 61 secciones. (Mi primer grep buscaba
"Changelog/History/Revision" y no la vio; el dato estaba ahi.)

Las dos roturas declaradas, contra lo que emitimos:

  1. `timestamp` queda superseded por `generated: { by, at }`.
     Nos afecta: emitimos `timestamp: '2026-07-28'`. Pero §13.1 dice que el
     consumidor MAY caer al `timestamp` legado cuando falta `generated`, asi que
     el bundle sigue siendo consumible por un lector v0.2.
  2. El listado `# Citations` del cuerpo queda superseded por `sources`.
     NO nos afecta: emitimos cero `# Citations` (verificado sobre el bundle).

Y lo que §13 declara explicitamente que NO cambia es justo aquello sobre lo que
se apoya el ADR-0105: estructura del bundle, nombres reservados, el `type`
obligatorio, los recomendados title/description/resource/tags, cross-linking,
index, logs y la conformidad permisiva. Nuestro validador solo exige `type` no
vacio, y `--check`/`--verify` pasan (15 ficheros, 0 violaciones). El ADR-0105 ya
habia previsto este caso en su seccion de riesgos ("OKF v0.1 is young... watched
by knowledge-okf-standard-watch"), y sus afirmaciones de v0.1 siguen siendo
exactas: proyectamos v0.1, a proposito.

Por eso el lock se acepta y el proyector no se toca. Queda como mejora OPCIONAL,
no como deuda: adoptar `generated: { by: human:@winston, at: ... }` haria que un
consumidor v0.2 clasifique el corpus como autorado por humano (§5.3 keys off the
`human:` prefix) en vez de caer al `timestamp` sin procedencia. Es un cambio del
bundle publicado y una decision sobre como representamos confianza, no una
correccion.

Aparte, un fallo del propio vigia encontrado al usarlo: `--accept` reconocia el
hash y acto seguido imprimia "NO ha sido reconocido... confirma con --accept", y
mostraba en `locked:` el hash VIEJO. Se lee como que el reconocimiento fallo.
Causa: `status` solo miraba si el upstream cambio, sin distinguir lo que hizo esa
corrida. Se anade `accepted` (no toca el vocabulario de `status`, que un test
fija) y el informe pasa a decir "Cambio upstream RECONOCIDO" con el hash nuevo.
Cubierto por dos tests: 8 -> 9 en verde.

Verificacion: --check 0 violaciones, --verify al dia, guard offline exit 0, el
vigia sin flag reporta `status: ok`, y el escenario de --accept reproducido de
extremo a extremo rebobinando el lock y restaurandolo (identico byte a byte).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: aarroyo <beyondnet.peru@gmail.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 23, 2026 01:53
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 0
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 527
Total ES files 497
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit 8b27431 into main Aug 23, 2026
48 checks passed
@beyondnetPeru
beyondnetPeru deleted the chore/okf-v02-review branch August 23, 2026 02:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant