Skip to content

feat(m3): superficie INativeVersioning de Loro — probes nativos (CHARTER-10) - #26

Merged
montfort merged 2 commits into
mainfrom
charter/10-loro-native-versioning
Jul 16, 2026
Merged

feat(m3): superficie INativeVersioning de Loro — probes nativos (CHARTER-10)#26
montfort merged 2 commits into
mainfrom
charter/10-loro-native-versioning

Conversation

@montfort

Copy link
Copy Markdown
Contributor

CHARTER-10 — Superficie INativeVersioning de Loro (probes nativos, cierra G1)

Cierra FU-006 (hallazgo G1 de la auditoría externa CHARTER-02): materializa la capacidad opcional INativeVersioning para Loro. LoroEngine.NativeVersioning pasa de null a una implementación real — 3 probes demostrativos del versionado nativo de Loro (diff/fork/shallow snapshot) que yrs no tiene.

Entregables

  • Shim weft-loro-ffi (ABI v1→v2): weft_loro_shallow_snapshot (ExportMode::shallow_snapshot), weft_loro_native_diff_probe (JSON de doc.diff), weft_loro_native_branch_merge_probe (fork → editar → import en copia aparte, no muta el caller). JSON armado a mano (sin serde_json); catch_unwind en cada entrada.
  • Header weft_loro_ffi.h (NEW): el shim Loro no tenía header; creado con paridad al de yrs.
  • Binding: 3 P/Invokes + ExpectedAbiVersion 1→2 + métodos internal en LoroDoc + LoroNativeVersioning (cast ICrdtDoc→LoroDoc, ArgumentException si es doc no-Loro).
  • Tests (LoroNativeVersioningTests, 5/5): shallow no-vacío y recargable; diff refleja ediciones; branch/merge converge y no muta el caller; guard de doc no-Loro; yrs null.
  • Quickstart §US5 reconciliado (G1 cerrado). FU-006 → closed; FU-017 registrado (test de paridad header↔binding del shim Loro).

Semántica (AIDEC-2026-07-15-002)

Los probes son demostrativos, no content-addressing: su salida no es byte-determinista (el shallow snapshot lleva metadata de réplica) y no alimenta VersionId (que sigue con ExportState/all_updates). Exhiben que Loro puede versionar nativamente; una API rica (branches con nombre, time-travel) sería un charter aparte.

Verificación

  • dotnet test Weft.sln -c Release131/131, 0 fallos (Versioning 30/30 con los 5 probes).
  • cargo test (shim Loro) → 5/5 (probes bajo ASan: reachability + sin fugas + sin mutación del caller).
  • nm -D confirma los 3 símbolos exportados (ABI v2).
  • straymark charter drift CHARTER-10 --range origin/main..HEAD → reconciliado atómicamente (§Closing notes: +mem_asan.rs).

Gobernanza

AILOG-2026-07-15-002 + AIDEC-2026-07-15-002 (risk_level: medium, revisados). No cierra hito (capacidad opcional; sin auditoría externa).

🤖 Generated with Claude Code

montfort and others added 2 commits July 15, 2026 12:26
…TER-10)

Cierra FU-006 (hallazgo G1 de la auditoría CHARTER-02): materializa la
capacidad opcional INativeVersioning para Loro. LoroEngine.NativeVersioning
pasa de null a una implementación real — 3 probes DEMOSTRATIVOS del versionado
nativo de Loro (diff/fork/shallow snapshot) que yrs no tiene.

- Shim weft-loro-ffi (ABI v1→v2): weft_loro_shallow_snapshot,
  weft_loro_native_diff_probe, weft_loro_native_branch_merge_probe (fork+merge
  en copia aparte, NO muta el caller). JSON armado a mano (sin serde_json).
- Header weft_loro_ffi.h creado (el shim Loro no tenía; paridad con yrs).
- Binding: NativeMethods + ExpectedAbiVersion 2 + métodos internal en LoroDoc +
  LoroNativeVersioning (cast ICrdtDoc→LoroDoc, guard de doc no-Loro).
- Tests: LoroNativeVersioningTests 5/5 (round-trip, diff, convergencia, guard).
- Probes NO son content-addressing: salida no determinista, no alimenta
  VersionId (que usa ExportState). Quickstart §US5 reconciliado.
- FU-006 closed; FU-017 registrado (test de paridad header↔binding del shim Loro).

AILOG-2026-07-15-002 + AIDEC-2026-07-15-002 (risk medium, revisados).
Verificación: dotnet 131/131, cargo 5/5 (probes bajo ASan).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…/G1)

Telemetría de cierre validada + status → closed. Los 8 entregables confirmados;
LoroEngine.NativeVersioning no-nulo con 3 probes demostrativos. FU-006 closed,
FU-017 registrado (test paridad header↔binding Loro). No cierra hito.
CI del PR #26 verde. Verificación: dotnet 131/131, cargo 5/5.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@montfort
montfort merged commit 603efce into main Jul 16, 2026
15 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 16, 2026
@montfort
montfort deleted the charter/10-loro-native-versioning branch July 16, 2026 02:36
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant