Skip to content
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
64c3632
perf(onehot): keep big blocks on the tiled column sweep; row-pass acc…
markosg04 Jul 23, 2026
c410b5c
perf(onehot): fused multi-polynomial commit sweep
markosg04 Jul 24, 2026
91591ee
perf(onehot): keep merge-sweep accumulator tile and column chunk L1-r…
markosg04 Jul 24, 2026
333b309
fix(onehot): self-reduce merge-sweep accumulators at the cap; no bloc…
markosg04 Jul 24, 2026
bc87e22
perf(onehot): bench-tuned merge-sweep defaults (tile 64 blocks, chunk…
markosg04 Jul 24, 2026
bddd74d
feat(onehot): expose clear_block_cache on OneHotPoly
markosg04 Jul 25, 2026
450c618
perf(prover): build the setup NTT envelope slot lazily and let caller…
markosg04 Jul 26, 2026
102ee81
perf(prover): extent-sized NTT slots + streamed root-relation transfo…
markosg04 Jul 26, 2026
59c2d2b
perf(prover): drop built NTT slots after the root fold level — fold w…
markosg04 Jul 26, 2026
6da10a2
perf(prover): releasable setup matrix with seed re-derivation — 2^26 …
markosg04 Jul 26, 2026
cada0f5
perf(prover): build commit-sweep block tiles lazily from index column…
markosg04 Jul 26, 2026
cdca67a
perf(prover): stream fold blocks from index columns — per-block build…
markosg04 Jul 26, 2026
2e5e6d6
refactor: shrink the perf-branch diff before upstreaming
markosg04 Jul 27, 2026
877ef5f
perf(algebra): fuse fixed-size wide ring shifts
quangvdao Jul 28, 2026
cef7943
perf(algebra): expose wide ring coefficients
quangvdao Jul 28, 2026
6ccebe2
perf(prover): consume decompose witness rows without copies
quangvdao Jul 28, 2026
f73b435
perf(prover): release root opening storage after fold
markosg04 Jul 30, 2026
d3d35e6
fix(profile): propagate commit accumulator bounds
markosg04 Jul 31, 2026
9d771aa
perf(prover): cache only required commit transform
markosg04 Jul 30, 2026
e5314aa
perf(prover): stream CRT-chunked quotient roles
markosg04 Jul 30, 2026
0f9c8ea
perf(prover): parallelize relation setup columns
markosg04 Jul 30, 2026
c96a880
perf(prover): coalesce aligned relation events
markosg04 Jul 30, 2026
815701a
perf(prover): parallelize exact-prefix folds
markosg04 Jul 31, 2026
8c25605
fix(prover): preserve group-local relation dimensions
markosg04 Jul 31, 2026
ee6d9db
perf(planner): trade payload slack for narrower roots
quangvdao Jul 27, 2026
5b59a07
fix(planner): preserve scalar rank policy through recursion
markosg04 Aug 1, 2026
04c2f1e
Merge Akita protocol optimizations
markosg04 Aug 1, 2026
71796cc
Merge remote-tracking branch 'origin/main' into perf/akita-protocol-opts
markosg04 Aug 1, 2026
51f98b1
Merge branch 'perf/akita-protocol-opts' into perf/akita-prover-opt
markosg04 Aug 1, 2026
832ade1
fix(planner): emit rustfmt-stable catalog imports
markosg04 Aug 1, 2026
9b6a1f8
Merge branch 'perf/akita-protocol-opts' into perf/akita-prover-opt
markosg04 Aug 1, 2026
44cfa3f
fix(planner): remove stale lint expectation
markosg04 Aug 3, 2026
755765e
fix(types): size released setup without rebuilding
markosg04 Aug 3, 2026
7ff283b
test(prover): drop local tuning probes
markosg04 Aug 3, 2026
5a8170d
fix(pcs): update releasable setup call sites
markosg04 Aug 3, 2026
2277146
test(pcs): align mixed-D cache test with lazy setup
markosg04 Aug 3, 2026
2b6c6a6
test(prover): split oversized backend test modules
markosg04 Aug 3, 2026
2acecb9
feat(planner): decouple inner commitment basis
quangvdao Aug 6, 2026
4108d60
fix(planner): bound independent-basis search
quangvdao Aug 6, 2026
72e934c
refactor(prover): split CPU backend by role
quangvdao Aug 6, 2026
e2672db
perf(planner): evict bounded memo entries
quangvdao Aug 6, 2026
8e4fd88
fix(planner): skip discarded sweep work
quangvdao Aug 6, 2026
c0bbe27
test(config): expect independent dense basis
quangvdao Aug 6, 2026
f398712
fix(planner): decouple precommit inner basis
quangvdao Aug 6, 2026
bb4034f
refactor(planner): tighten candidate context
quangvdao Aug 6, 2026
03e997f
feat(planner): preserve partial regen rows
quangvdao Aug 6, 2026
aefa64a
chore(schedules): restore D64 onehot rows
quangvdao Aug 6, 2026
083aa06
refactor(prover): isolate CPU prepared setup
quangvdao Aug 6, 2026
04edba2
ci(planner): avoid redundant table regeneration
quangvdao Aug 6, 2026
306dfdd
fix(planner): preserve unsupported regen rows
quangvdao Aug 6, 2026
addb668
feat(planner)!: complete independent basis search
quangvdao Aug 7, 2026
d2539e9
refactor(planner): integrate flat challenge cutover
quangvdao Aug 7, 2026
456dbf4
fix(ci): refresh precommit registries
quangvdao Aug 7, 2026
79473a1
fix(sis): harden table publication
quangvdao Aug 7, 2026
0732d5d
fix(schedules): refresh SIS table identity
quangvdao Aug 7, 2026
22bcabc
chore(sis): remove obsolete audit CSV
quangvdao Aug 7, 2026
bc488d6
revert(planner): drop payload-slack schedule selection
markosg04 Aug 7, 2026
2003390
fix(ci): repair doc links and glue trait bound
markosg04 Aug 7, 2026
f0473f1
merge(main): reconcile prover optimizations with flattened setup
markosg04 Aug 7, 2026
8f99513
fix(tests): drop tensor-kernel test and port oracle to flat views
markosg04 Aug 7, 2026
09e0909
fix(compute): restore onehot_chunk_size on RootPolyMeta
markosg04 Aug 7, 2026
a9f3c29
fix(compute): restore one-hot chunk-size metadata on root polys
markosg04 Aug 7, 2026
2d17e55
fix(prover): close optimization review gaps
quangvdao Aug 7, 2026
2ebbd51
Merge remote-tracking branch 'origin/main' into quang/pr-345-prover-o…
quangvdao Aug 7, 2026
99b91e4
fix(onehot): make block cache caller-owned
quangvdao Aug 8, 2026
59d8a57
chore(sync): merge main into PR 355
quangvdao Aug 8, 2026
a217807
fix(cache): make tensor and NTT retention explicit
quangvdao Aug 8, 2026
6471f38
Merge branch 'main' into quang/pr-345-prover-optimizations
quangvdao Aug 8, 2026
165ad16
refactor(profile): split workload module
quangvdao Aug 8, 2026
82b129a
Merge branch 'main' into quang/pr-345-prover-optimizations
sumchecker Aug 8, 2026
bb42140
docs(spec): define PR 375 end state
quangvdao Aug 8, 2026
0d2fb19
fix(cache): align NTT prewarm and release
quangvdao Aug 8, 2026
bcd2383
refactor(onehot): unify sparse block representation
quangvdao Aug 8, 2026
d90b039
refactor(commit): finish source-typed kernel cutover
quangvdao Aug 9, 2026
0798713
perf(onehot): unify commit sweep scheduling
quangvdao Aug 9, 2026
c9fcd30
merge(main): integrate planner cutovers
quangvdao Aug 9, 2026
791a9f5
merge(main): update cmov dependency
quangvdao Aug 9, 2026
6a1250b
fix(commit): restore group source parallelism
quangvdao Aug 9, 2026
731dff4
refactor(onehot): remove mutable derived caches
quangvdao Aug 9, 2026
7f72b30
ci(profile): improve reports and narrow builds
quangvdao Aug 9, 2026
de130d5
perf(planner): reduce recursive sizing overhead
quangvdao Aug 9, 2026
afcc44c
merge(main): update verifier kernels
quangvdao Aug 9, 2026
4c37e14
refactor(ring-switch): unify quotient planning
quangvdao Aug 9, 2026
e232344
ci(profile): unify fold report layout
quangvdao Aug 9, 2026
b6d934f
chore(pr375): complete validation slice
quangvdao Aug 9, 2026
3f99bf9
fix(prover): close independent review gaps
quangvdao Aug 9, 2026
0f9a710
fix(profile): correct multi-group report values
quangvdao Aug 9, 2026
b51d732
feat(profile): compare verifier thread modes
quangvdao Aug 9, 2026
2e4f995
perf(planner): retain hot suffix cache entries
quangvdao Aug 9, 2026
f08d32d
refactor(profile): clarify fold report cells
quangvdao Aug 9, 2026
69ef6bb
merge main (b0f2cadc5) into quang/pr-345-prover-optimizations
quangvdao Aug 9, 2026
7d507ae
perf(planner): bound recursive split frontier
quangvdao Aug 9, 2026
e68d0c6
fix(sis): restore generated table identity
quangvdao Aug 9, 2026
46a6dcd
fix(profile): remove persisted bench setup
quangvdao Aug 9, 2026
86a4a60
fix(prover): preserve i16 opening digits
quangvdao Aug 9, 2026
d6ccd94
docs(pr375): reopen CPU policy spec
quangvdao Aug 9, 2026
a32b3ab
refactor(planner): resolve review findings
quangvdao Aug 9, 2026
2a2c033
feat(compute): configure CPU resource limits
quangvdao Aug 9, 2026
d9c0c13
fix(planner): preserve terminal basis winners
quangvdao Aug 9, 2026
e7746b5
fix(compute): release all CPU NTT caches
quangvdao Aug 9, 2026
e9a25b8
fix(compute): retain compression NTT cache
quangvdao Aug 9, 2026
9c35ec5
feat(profile): report CPU resource limits
quangvdao Aug 9, 2026
628a950
perf(ntt): use exact tail for quotients
quangvdao Aug 10, 2026
f882b24
test(ntt): guard small-field cache plans
quangvdao Aug 10, 2026
7303892
ci(profile): clarify dense benchmark suite
quangvdao Aug 10, 2026
fc948f9
merge(profile): stack benchmark report updates
quangvdao Aug 10, 2026
c3c0195
merge: stack prover optimizations into planner
quangvdao Aug 10, 2026
c45a544
fix(ntt): fail closed on unsafe streaming
quangvdao Aug 10, 2026
53c9c24
Merge branch 'quang/pr-345-prover-optimizations' into codex/inner-bas…
quangvdao Aug 10, 2026
466a97c
test(pcs): dispatch adaptive opening dimensions
quangvdao Aug 10, 2026
6e620cd
fix(pcs): generalize adaptive opening helper
quangvdao Aug 10, 2026
c5fbbf0
fix(profile): close benchmark report review gaps
quangvdao Aug 10, 2026
5dbc813
Merge remote-tracking branch 'origin/feat/profile-bench-report-layout…
quangvdao Aug 10, 2026
8feefc3
refactor(planner): centralize admission and pruning
quangvdao Aug 10, 2026
055ebca
fix(prover): resolve routed cache review findings
quangvdao Aug 10, 2026
b0ce7cf
Merge remote-tracking branch 'origin/quang/pr-345-prover-optimization…
quangvdao Aug 10, 2026
5b80b8d
fix(ci): align recursive profile linkage
quangvdao Aug 10, 2026
acfa13c
Merge remote-tracking branch 'origin/quang/pr-345-prover-optimization…
quangvdao Aug 10, 2026
08f2f0c
fix(ci): align recursive profile linkage
quangvdao Aug 10, 2026
c13a885
merge updated profile report base into prover optimizations
quangvdao Aug 10, 2026
6d9611a
merge updated prover optimization base into inner basis planner
quangvdao Aug 10, 2026
bd9e308
fix(ci): restore balanced nextest shards
quangvdao Aug 10, 2026
d120fdb
test(pcs): pin adaptive W8R2 schedule shape
quangvdao Aug 10, 2026
ef88d0a
Merge commit 'bd9e30827' into quang/pr-345-prover-optimizations
quangvdao Aug 10, 2026
6f30be0
Merge commit 'ef88d0a3f' into codex/inner-basis-padded-prefix
quangvdao Aug 10, 2026
39c95cd
merge(main): connect squashed benchmark base
quangvdao Aug 10, 2026
779b322
fix(profile): address benchmark review follow-ups
quangvdao Aug 10, 2026
4507a47
merge PR 375 (779b322b1) into PR 355
quangvdao Aug 10, 2026
318366c
merge(main): connect squashed PR 375
quangvdao Aug 10, 2026
8bf66b3
fix(ci): isolate recursion build cache
quangvdao Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,9 @@ jobs:
shared-key: ci-test-all-schedules-drift
add-job-id-key: false
cache-on-failure: true
- name: Committed catalog coverage guard
run: |
cargo test --release -p akita-config --features all-schedules generated_catalogs_cover_emitted_keys
- name: Generate schedule tables
run: scripts/generate-schedule-tables.sh
- name: Drift guard (all-schedules)
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/profile-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,9 @@ jobs:
group:
- name: 1-fp128-dense
cases: |
dense_fp128:24:1
dense_fp32_d128:26:1
dense_fp64_d128:26:1
dense_fp128:26:1
- name: 3-flat-onehot-suite
cases: |
onehot_fp32_d128:28:1
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 14 additions & 10 deletions book/src/how/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,24 @@ Module-SIS projection:
where `width[r - 1] = cutoff_m(B, n = r * d) / d`.

The shipped policy is `Quantum128BitADPS16`. It accepts a row only when the
exhaustive ADPS16 quantum certificate reports a finite score or a classified
above-target lower bound of at least 128 bits. A lookup for an unsupported
policy, exact modulus profile, role, or scalar cell fails closed.
complete ADPS16 quantum certificate reports a finite score or a classified
above-target lower bound of at least 128 bits. The beta search checks values
from 40 through the capped Euclidean baseline and stops once the monotone
ADPS16 lower bound exceeds the best complete candidate. For each visited beta,
the LGSA profile transition proves that the checked zeta endpoints cover the
full zeta domain. A lookup for an unsupported policy, exact modulus profile,
role, or scalar cell fails closed.

The checked-in policy table may use `local-minimum` only to discover a candidate
boundary. Every emitted boundary and its immediate rejected successor are
certified by exhaustive search over the configured beta and zeta domain.
Parallel generation parallelizes independent rows and does not change the
certificate domain or output ordering.
certified under the proven-pruned beta and zeta domain. Parallel generation
parallelizes independent rows and does not change the certificate domain or
output ordering.

CSV table-generation artifacts include the certified accepted and rejected
successor witnesses, cutoff kind, cap provenance, and role provenance. These
are audit inputs, not verifier-visible state, and are committed separately from
the runtime table digest.
are audit inputs, not verifier-visible state. The shared table digest commits
to the compact runtime table and its policy audit files together.

The planner derives role bounds as coefficient-`L∞` values because those are the
values enforced by the protocol. It does not convert production role bounds
Expand All @@ -61,8 +65,8 @@ implementation acceptance criteria live in
- `crates/akita-types/src/sis/mod.rs`, `ajtai_key.rs`, `generated_sis_table/`, `norm_bound.rs`.
- Paper §2.2 `def:msis`, §3.12 `sec:batched-soundness` ("MSIS targets", "Two norm models").
- `docs/security-posture.md`, `specs/sis-quantum128-scalar-n-table.md`.
- `scripts/sis_golden/infinity_width_table.csv` (generation provenance for the
infinity-width golden grid).
- `crates/akita-types/src/sis/generated_sis_table/policy_audit.csv` (canonical
production table certificate).

## Norm bounds and weak binding

Expand Down
62 changes: 51 additions & 11 deletions crates/akita-challenges/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,17 @@ macro_rules! production_fold_challenge_ring_dims {

production_fold_challenge_ring_dims!(64, 128, 256, 512, 1024, 2048);

const PRODUCTION_FOLD_CHALLENGE_LADDER: &[(usize, usize, usize)] = &[
(64, D64_PRODUCTION_PM1_COUNT, D64_PRODUCTION_PM2_COUNT),
(128, 31, 0),
(256, 23, 0),
(512, 19, 0),
(1024, 16, 0),
(2048, 14, 0),
// The last coordinate is floor(log2(support)). It lets the verifier and the
// offline planner validate the fixed production families without repeatedly
// evaluating dozens of floating-point logarithms. The tests below recompute
// every value from the canonical support formula.
const PRODUCTION_FOLD_CHALLENGE_LADDER: &[(usize, usize, usize, u32)] = &[
(64, D64_PRODUCTION_PM1_COUNT, D64_PRODUCTION_PM2_COUNT, 128),
(128, 31, 0, 129),
(256, 23, 0, 131),
(512, 19, 0, 132),
(1024, 16, 0, 131),
(2048, 14, 0, 131),
];

/// Fixed-weight sparse ring fold challenge family.
Expand Down Expand Up @@ -70,8 +74,8 @@ impl SparseChallengeConfig {
pub fn production_for_ring_dim(ring_d: usize) -> Option<Self> {
PRODUCTION_FOLD_CHALLENGE_LADDER
.iter()
.find(|(d, _, _)| *d == ring_d)
.map(|(_, pm1, pm2)| Self {
.find(|(d, _, _, _)| *d == ring_d)
.map(|(_, pm1, pm2, _)| Self {
count_pm1: *pm1,
count_pm2: *pm2,
})
Expand Down Expand Up @@ -160,6 +164,19 @@ impl SparseChallengeConfig {
ring_dim: usize,
required_bits: u32,
) -> Result<(), &'static str> {
if let Some((_, _, _, support_floor_bits)) =
PRODUCTION_FOLD_CHALLENGE_LADDER
.iter()
.find(|(d, pm1, pm2, _)| {
*d == ring_dim && *pm1 == self.count_pm1 && *pm2 == self.count_pm2
})
{
return if required_bits <= *support_floor_bits {
Ok(())
} else {
Err("sparse challenge family has insufficient min-entropy for security floor")
};
}
__dispatch_fold_challenge_ring_dim!(self, ring_dim, required_bits)
}

Expand Down Expand Up @@ -203,9 +220,32 @@ mod entropy_tests {

#[test]
fn production_ladder_matches_proof_optimized_dims() {
for &d in PRODUCTION_FOLD_CHALLENGE_RING_DIMS {
for (&d, &(_, _, _, support_floor_bits)) in PRODUCTION_FOLD_CHALLENGE_RING_DIMS
.iter()
.zip(PRODUCTION_FOLD_CHALLENGE_LADDER)
{
let cfg = SparseChallengeConfig::production_for_ring_dim(d).expect("ladder entry");
assert!(cfg.validate_for_ring_dim(d).is_ok(), "d={d}");
let computed_floor = match d {
64 => cfg.log2_support_bits::<64>().floor() as u32,
128 => cfg.log2_support_bits::<128>().floor() as u32,
256 => cfg.log2_support_bits::<256>().floor() as u32,
512 => cfg.log2_support_bits::<512>().floor() as u32,
1024 => cfg.log2_support_bits::<1024>().floor() as u32,
2048 => cfg.log2_support_bits::<2048>().floor() as u32,
_ => unreachable!("production dimension list is exhaustive"),
};
assert_eq!(computed_floor, support_floor_bits, "d={d}");
assert!(
cfg.validate_min_entropy_for_ring_dim(d, support_floor_bits)
.is_ok(),
"d={d}"
);
assert!(
cfg.validate_min_entropy_for_ring_dim(d, support_floor_bits + 1)
.is_err(),
"d={d}"
);
}
}

Expand Down Expand Up @@ -260,7 +300,7 @@ mod entropy_tests {
assert_eq!(uni256.challenge_l2_sq_max(), 23);
assert_eq!(uni256.nonzero_count_max(), 23);

for (d, pm1, pm2) in PRODUCTION_FOLD_CHALLENGE_LADDER {
for (d, pm1, pm2, _) in PRODUCTION_FOLD_CHALLENGE_LADDER {
if *d >= 512 {
let cfg = SparseChallengeConfig {
count_pm1: *pm1,
Expand Down
7 changes: 7 additions & 0 deletions crates/akita-config/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ schedules-default = [
"schedules-fp128-onehot",
"schedules-fp128-dense",
"schedules-fp32-d128-onehot",
"schedules-fp32-d128-dense",
"schedules-fp32-d256-onehot",
"schedules-fp64-d128-dense",
"schedules-fp64-d128-onehot",
Expand Down Expand Up @@ -55,6 +56,7 @@ schedules-fp128-onehot-multi-chunk-w4r2 = [
schedules-fp128-dense-multi-chunk = ["akita-schedules/fp128-dense-multi-chunk"]

schedules-fp32-d128-onehot = ["akita-schedules/fp32-d128-onehot"]
schedules-fp32-d128-dense = ["akita-schedules/fp32-d128-dense"]
schedules-fp32-d256-onehot = ["akita-schedules/fp32-d256-onehot"]
schedules-fp64-d128-dense = ["akita-schedules/fp64-d128-dense"]
schedules-fp64-d128-onehot = ["akita-schedules/fp64-d128-onehot"]
Expand Down Expand Up @@ -84,5 +86,10 @@ name = "generated_tables"
path = "tests/generated_tables.rs"
required-features = ["all-schedules"]

[[test]]
name = "dense_inner_basis"
path = "tests/dense_inner_basis.rs"
required-features = ["all-schedules"]

[lints]
workspace = true
57 changes: 20 additions & 37 deletions crates/akita-config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,11 @@ macro_rules! impl_multi_chunk_companion {
max_num_batched_polys,
)
}
fn basis_range() -> (u32, u32) {
<$base as $crate::CommitmentConfig>::basis_range()
fn opening_basis_range() -> (u32, u32) {
<$base as $crate::CommitmentConfig>::opening_basis_range()
}
fn inner_basis_range() -> (u32, u32) {
<$base as $crate::CommitmentConfig>::inner_basis_range()
}
fn root_honest_fold_policy() -> akita_types::sis::HonestFoldPolicySpec {
<$base as $crate::CommitmentConfig>::root_honest_fold_policy()
Expand Down Expand Up @@ -104,9 +107,7 @@ pub mod setup_prefix_slots;
pub mod test_support;
mod transcript_binding;
pub use akita_schedules::ResolvedScheduleRow;
pub use precommitted_commitment::{
committed_group_params, committed_group_profile, PrecommittedCommitmentConfig,
};
pub use precommitted_commitment::committed_group_profile;
pub use proof_optimized::{
ensure_prover_schedule_fits_setup, ensure_verifier_schedule_fits_setup,
setup_level_params_from_schedule,
Expand Down Expand Up @@ -138,7 +139,8 @@ pub fn policy_of<Cfg: CommitmentConfig>() -> PlannerPolicy {
ring_subfield_norm_bound: Cfg::ring_subfield_embedding_norm_bound(),
claim_ext_degree: Cfg::EXT_DEGREE,
chal_ext_degree: Cfg::EXT_DEGREE,
basis_range: Cfg::basis_range(),
inner_basis_range: Cfg::inner_basis_range(),
opening_basis_range: Cfg::opening_basis_range(),
witness_chunk: Cfg::chunked_witness_cfg(),
recursive_setup_planning,
}
Expand Down Expand Up @@ -276,9 +278,15 @@ pub trait CommitmentConfig: Clone + Send + Sync + 'static {
Self::D
}

/// Inclusive `(min, max)` log-basis search range.
/// Inclusive `(min, max)` B/D opening and folded-response basis range.
#[doc(hidden)]
fn basis_range() -> (u32, u32);
fn opening_basis_range() -> (u32, u32);

/// Inclusive `(min, max)` A/source decomposition basis range.
#[doc(hidden)]
fn inner_basis_range() -> (u32, u32) {
Self::opening_basis_range()
}

/// Group-owned honest sizing rule used only during offline planning.
fn root_honest_fold_policy() -> akita_types::sis::HonestFoldPolicySpec;
Expand Down Expand Up @@ -325,14 +333,6 @@ pub trait CommitmentConfig: Clone + Send + Sync + 'static {
None
}

/// Whether multi-group `commit_final_group` may run under this config adapter.
///
/// Precommit adapters return `false`; multi-group final commits
/// require the regular preset config.
fn supports_multi_group_final_commit() -> bool {
true
}

/// Build the runtime [`FoldSchedule`] for `key`.
///
/// Scalar openings use `AkitaScheduleLookupKey::single(group_key)` with an
Expand Down Expand Up @@ -471,7 +471,7 @@ mod tests {
Ok(SetupMatrixCapacity::minimum())
}

fn basis_range() -> (u32, u32) {
fn opening_basis_range() -> (u32, u32) {
(3, 3)
}

Expand Down Expand Up @@ -738,14 +738,8 @@ mod precommit_tests {
fn exact_precommit_params_freeze_standalone_metadata() {
let group = PolynomialGroupLayout::new(16, 1);
group.validate().expect("group layout");
let singleton =
OpeningClaimsLayout::new(group.num_vars(), group.num_polynomials()).expect("singleton");
let params =
<PrecommittedCommitmentConfig<fp128::OneHot> as CommitmentConfig>::get_params_for_batched_commitment(
&singleton,
)
.expect("precommitted group params");
let precommitted = akita_types::CommittedGroupProfile::from_params(group, &params);
let precommitted =
committed_group_profile::<fp128::OneHot>(&group).expect("precommitted group profile");
assert_eq!(
precommitted.inner_commit_matrix.ring_dimension(),
64,
Expand All @@ -756,21 +750,10 @@ mod precommit_tests {
64,
"adaptive precommits use the uniform suffix dimension for B"
);
let root_basis = fp128::OneHot::basis_range().0;
let root_basis = fp128::OneHot::opening_basis_range().0;
assert_eq!(precommitted.log_basis_inner, root_basis);
assert_eq!(precommitted.log_basis_outer, root_basis);
assert_ne!(precommitted.inner_commit_matrix.output_rank(), 0);
assert_ne!(precommitted.outer_commit_matrix.output_rank(), 0);
}

#[test]
fn precommit_config_rejects_prove_schedule() {
let layout = OpeningClaimsLayout::new(2, 1).expect("opening layout");
let err =
<PrecommittedCommitmentConfig<fp128::OneHot> as CommitmentConfig>::get_params_for_prove(
&layout,
)
.expect_err("precommit config must not prove");
assert!(matches!(err, AkitaError::InvalidSetup(_)));
}
}
Loading
Loading