feat(m3): superficie INativeVersioning de Loro — probes nativos (CHARTER-10) - #26
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
INativeVersioningpara Loro.LoroEngine.NativeVersioningpasa denulla una implementación real — 3 probes demostrativos del versionado nativo de Loro (diff/fork/shallow snapshot) que yrs no tiene.Entregables
weft-loro-ffi(ABI v1→v2):weft_loro_shallow_snapshot(ExportMode::shallow_snapshot),weft_loro_native_diff_probe(JSON dedoc.diff),weft_loro_native_branch_merge_probe(fork → editar →importen copia aparte, no muta el caller). JSON armado a mano (sinserde_json);catch_unwinden cada entrada.weft_loro_ffi.h(NEW): el shim Loro no tenía header; creado con paridad al de yrs.ExpectedAbiVersion1→2 + métodosinternalenLoroDoc+LoroNativeVersioning(castICrdtDoc→LoroDoc,ArgumentExceptionsi es doc no-Loro).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; yrsnull.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 conExportState/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 Release→ 131/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 -Dconfirma 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