Skip to content

spec(port): port the observer fingerprint rotation guard (Refs #8887) - #9865

Merged
1 commit merged into
Trinity-S-AI-DNA:masterfrom
dmitrii-f-t27:port/cr-chat-07-ad
Oct 17, 2026
Merged

1 commit merged into
Trinity-S-AI-DNA:masterfrom
dmitrii-f-t27:port/cr-chat-07-ad

Conversation

@dmitrii-f-t27

Copy link
Copy Markdown
Contributor

The twenty-ninth CR-CHAT-07 ring target (W2, R-CHAT-10, tracker #8887): port of crates/trios-chat/rings/CR-CHAT-07/src/observer_fingerprint_rotation_guard.rs.

A wire observer fingerprints a device by its stable characteristics (cipher suite, ALPN, burst gap, size class); an unchanged fingerprint tracks the user across sessions, links chat traffic to other protocols and re-identifies after a gap. The rules, in the original's order:

  • the tracked ceiling (256),
  • the empty batch accepted,
  • per session: the empty-fingerprint probe, the length ceiling (128),
  • the run fold: a session equal to its predecessor grows the same-fingerprint run, a run past the window of eight answers NoRotation with the run length, a change counts one rotation,
  • the rotation ceiling (64) over the whole batch.

Carried as the D5 verdict (Ok-first enum + named struct with the one payload field — the run length for NoRotation). The original's SameAsPrevious is declared and never answered; it stays in the enum, declared and unreachable exactly as in the original.

Adaptations (t27 conventions): Vec<u8> fingerprint → fixed [128]u8 capacity + fp_len; Option<&[u8]> previous → has_prev flag over the record fields; fingerprints compare over the shared length via a whole-form scan helper with direct tests.

All 10 original OFRG tests transcribed with exact asserts, plus the helper test and a rule-order test (12 total): the tracked ceiling answers over a flooded batch of empty forms; the per-session probes answer inside the loop before the rotation ceiling is read (a sixty-fifth rotation waits while the last session answers its own empty or over-long code); the run fold answers NoRotation at nine.

Checks (conventions 0-14): t27b test 12 passed 0 failed, 0 blockers; t27c test-report 12/12, 0 vacuous; gen-rust output compiles under rustc (0 'static str, 0 Vec<const); coverage Untested 0; ASCII only; seal saved, all hashes MATCH; ledger row added to docs/reports/t27b_expectations.json.

Refs #8887

…y-S-AI-DNA#8887)

The twenty-ninth CR-CHAT-07 ring target (W2, R-CHAT-10): the
fingerprint rotation rules - the tracked ceiling, the empty
batch accepted, then per session the empty-fingerprint probe
and the length ceiling, then the run fold (a session equal to
its predecessor grows the same-fingerprint run, a run past the
window of eight answers NoRotation with the run length, a
change counts one rotation), then the rotation ceiling over
the whole batch - as the D5 verdict, the original's rule
order, and all ten OFRG tests transcribed plus helper and
rule-order tests. The original's SameAsPrevious is declared
and unreachable and stays in the enum.

The original's Vec<u8> fingerprint becomes the fixed [128]u8
capacity plus its length; the Option<&[u8]> previous becomes a
has-previous flag over the record fields. The rule-order
probes pin the observable orders: the tracked ceiling answers
over a flooded batch of empty forms, the per-session probes
answer inside the loop before the rotation ceiling is read (a
sixty-fifth rotation waits while the last session answers its
own empty or over-long code), and the run fold answers
NoRotation at nine.

Checks (conventions 0-14): t27b test 12 passed 0 failed; t27c
test-report 12/12, 0 vacuous; gen-rust output compiles under rustc;
coverage Untested 0; ASCII only; seal saved, all hashes MATCH;
@dmitrii-f-t27

Copy link
Copy Markdown
Contributor Author

All required checks green (validate, check-linked-issue, parse-ratchet, t27b-native-linux, t27b-native-macos); cli-tri / duplicate-bodies / t27b-native-ratchet are the known non-required reds. Steward READY. Requesting owner merge when convenient — 29 of ~34 CR-CHAT-07 targets delivered, Refs #8887.

This was referenced Oct 17, 2026
@gHashTag
gHashTag enabled auto-merge (squash) October 17, 2026 18:13
@gHashTag
gHashTag disabled auto-merge October 17, 2026 18:42
@gHashTag gHashTag closed this pull request by merging all changes into Trinity-S-AI-DNA:master in 12f5af8 Oct 17, 2026
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.

2 participants