Better handling of "fixed" public inputs in CIVC
In CIVC there are several distinct objects that are stored in the public inputs in "fixed" sense, e.g. pairing points, IPA accumulator, Databus commitments, (and eventually ecc op queue table commitments for the merge protocol). The storage of these components (i.e. metadata about their size and location within the public inputs) is clunky and handled in multiple inconsistent ways. It would be nice to have some kind of PublicInputs class that makes the handling uniform and provides a single location/object to understand what's being propagated.
Not fully addressed, but added asserts in https://github.com/AztecProtocol/aztec-packages/pull/13828 to enforce ordering and existence of certain backend public inputs, which should help a lot.
Seems unlikely we will ever need to implement this full solution.
Handling this issue now means fully integrating the KernelIO mechanism (and probably an analogous thing for apps, rollup circuits) for handling "internal" public inputs all in one place. Once this is done we should also be able to remove all PublicComonentKeys from the VK.