You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add decode_delta to parse a `GCF profile=graph delta=true` wire back
into removed/added symbols and edge changes, and wire it to
verify_delta for atomic apply against a base snapshot plus pack_root
recomputation, rejecting a wrong new_root with root_mismatch
(SPEC 10.4). encode_delta's ## added line now carries the trailing
distance field (SPEC 3.4.1, Section 10.1). The conformance runner
exercises graph-delta 001/002/003 end to end.
Also refresh the hand-written unit tests to the current encoder
behavior: the delta ## added lines carry distance; the graph header
omits zero-valued budget/tokens/edges; edges decode in canonical
(source, target, type) order rather than input order (compared as a
set); and new session symbols take the next stable session-global ID.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,8 @@
4
4
5
5
### Fixes
6
6
7
-
- The conformance runner now hard-fails on any unhandled operation (instead of silently skipping it) and exercises session, delta-encode, roundtrip, and pack-root fixtures; only `delta-verify` is explicitly allow-listed, pending a graph delta wire decoder.
7
+
- The conformance runner now hard-fails on any unhandled operation (instead of silently skipping it) and exercises session, delta, roundtrip, and pack-root fixtures end to end; the graph delta wire decode and verify path is now covered, so no operations remain allow-listed.
8
+
- Implemented the graph delta wire decoder and verifier (`decode_delta` / `verify_delta`): parse a `GCF profile=graph delta=true` wire back into removed/added symbols and edge changes, apply them atomically to a base snapshot, recompute `pack_root`, and reject a wrong `new_root` with `root_mismatch` (SPEC 10.4). The `## added` encoder now emits the trailing `distance` field (SPEC 3.4.1, Section 10.1). The shared `graph-delta` fixtures now run end to end: 001 (encode, gains the trailing distance), 002 (verified apply), 003 (`root_mismatch` rejection).
8
9
-**Session encoding correctness fix.**`encode_with_session` assigned per-response local IDs instead of stable session-global IDs, so the cross-call dedup references (`@N # previously transmitted`) pointed at the wrong symbols, and the header emitted zero-valued `budget`/`tokens`/`edges`. Both are fixed to match the reference; graph session output is now byte-identical across all six SDKs. This had gone undetected because the conformance runner skipped the shared graph-session fixtures (now wired).
9
10
- Added the graph-profile PackRoot (`pack_root(symbols, edges)`, gcf-pack-root-v1, SPEC 10.2): the content-addressed sha256 over canonical, independently-sorted symbol/edge records, byte-identical to gcf-go/rust/typescript/swift/kotlin. The conformance runner now exercises the shared `graph-pack-root` fixtures, which it had been skipping (so this primitive was previously unimplemented and untested).
10
11
- Buffered graph encoder now matches the reference byte-for-byte: symbols are ordered by distance then descending score with local IDs assigned in output order, and the header omits `budget`/`tokens`/`edges` when zero (previously symbols kept input order and zero-valued header fields were always emitted). The conformance runner now exercises the shared `graph-encode` fixtures (001-003), which it had been skipping - which is how this divergence went uncaught.
0 commit comments