# Plonky3 Recursion - Milestones and main issues (WIP)
Listed milestones aren't necessarily *time-ordered* / *importance-ordered*.
Audit scoping can be studied once we're happy with the overall work, and performances are already sufficiently good.
There can always be additional audits down the line if iterations are modifying the codebase non-negligibly.
## Milestone - Circuit generation
### Define Chip Abstraction
### Symbolic execution to selected IR translation
### Traces and transparent columns population
### CTL / Lookups events emission
### Pretty-printer / Debugger for trace generation
### Automatic recursive constraints deduction from symbolic ones
## Milestone — Witness/Lookup Subsystem
### Implement grand-product gadget (logUp?) for multiset equality checks
(Blocked by Netherminds)
### Implement `Witness` table (central chip)
### Implement `PublicInput` binding chip
### Implement `CONST` chip
## Milestone — Extension-field Core arithmetic chips
### `Add`/`Sub` chip
### `Mul` chip
### `REV` / bit-reverse chip
We may want a packing table instead? Packing would also come in handy for eventual support of binary hashes later on.
## Milestone — Verifier primitives (hash/Merkle/Challenger)
### Implement `HashAbsorb` chip
### Implement `MerkleVerify` chip
### Implement `GetChallenger` chip
### Implement `CTL/LookupVerify` chip
### Implement `SELECT` chip
## Milestone: Transparent Columns
Normally handled by Duplex, with our supervision.
### Define Transparent Column API
### Add periodic selectors
### Add an `Interpolation` chip
### Transparent columns integration
Plug into components of the recursive verifier
## Milestone — FRI verification chips (fixed params)
### Implement `FriCommit` chip
### Implement `FriFold` chip
### Implement `FriQuery` Accumulator chip
### Integrate FRI chips with Merkle
## Milestone — Fixed Recursive Verifier
### Validate inner STARK shape and parameters
### Quotient poly and constraints check
### Wire `Fri`/`MerkleVerify` chips to the PCS verification
## Milestone — Demos, strenghtening and doc (audit prep)
### Toy example end-to-end (Fibonacci? Keccak?)
### Chips Unit and Proptests
### Fuzzing
### System strengthening
### Doc: Chip specs
### Doc: Architecture diagram
### Doc: Control flow
### Doc: Lookups & CTL Spec
### Doc: Parameterization and configuration
## Milestone — Parameterization & modularity
### Configurable sponge/permutation
Generalize sponge (add support for Keccak, Blake, Poseidon ?). Keep Poseidon2 as default.
### Configurable FRI parameters
Lift fixed FRI parameters to runtime config (blowup, number of queries, final_poly_len, etc...)
## Milestone — Extension and Future Work
### Proof aggregation
### Support for 64-bit Goldilocks? (if not already)
May interest the Miden folks, TBD
### "Cross-circuit" aggregation (maybe for later?)
Allow AIRs with distinct configs to be aggregated
### Additional permutations support for the Sponge gadget
Rescue, Monolith, basically what remains in Plonky3. Probably low prio
### Make ZK recursively verifiable as an option
### Configurable PCS => probably not for a long time (reconsider with WHIR?)
## Milestone — Performance & audit
### Benchmarking infra
### Perf profiling
### Audit scoping (externals)
### Internal auditing (crypto, sec team)