1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! Chunk chiplet bus messages.
//!
//! [`ChunkChainMsg`] — the per-invocation chain-binding tuple. Pairs
//! the chunk-side `chunk_seq_id_head` (chunk-chiplet's native index)
//! with the `perm_seq_id_head` (the Poseidon2 cycle where the chain's
//! `InCap` fires). Provided at every absorption-chain head; consumed
//! by hasher-orchestration chiplets (Keccak, …) to bind their
//! per-invocation `chunk_ptr_head = 4·chunk_seq_id_head` to the
//! matching P2 chain. Exposing the chunk-chiplet's native index
//! (rather than `chunk_ptr`) keeps the bus hasher-agnostic — the
//! consumer multiplies by its own lane width — and forbids
//! inter-chunk addresses by construction. See the design notes.
use Algebra;
use crate::;
/// LogUp message for the [`ChunkChain`](BusId::ChunkChain) relation: a
/// 2-tuple `(chunk_seq_id_head, perm_seq_id_head)` binding the head of
/// one absorption chain.
///
/// Provided by the chunk chiplet with multiplicity `−act·is_head` at
/// each chain head; consumed by hasher-orchestration chiplets at their
/// per-invocation rows. Encoded as
/// `bus_prefix[ChunkChain] + β⁰·chunk_seq_id_head + β¹·perm_seq_id_head`.