Skip to content

ZK term-anchor drift guard does not cover the GUI copy (gui/app/src/lib/zk-filter.ts)Β #6041

Description

@sparq-orchestrator

πŸ€– SPARQ agent β€” out-of-scope finding while repairing CI for PR #5737.

crates/sparq-zk-compose/tests/site_age_enc_drift.rs pins the committed xsd:integer term encodings against the native encode_int_literal for TWO files only:

  • site/src/lib/zk-prover.ts (AGE_OPERAND_ENC)
  • site/scripts/capture-zk-manifest.mjs (OPERAND_ENC)

PR #5737 introduces a THIRD copy of the same four constants β€” COMMITTED_TERM_ANCHORS in gui/app/src/lib/zk-filter.ts β€” which the drift guard does not parse. The values are byte-identical to the site's today (verified), so nothing is wrong right now, but a circuit/encoder bump would fail the guard on the site copy while leaving the GUI copy stale and silently unprovable ("operand encoding mismatch" at witness-solve time) β€” exactly the drift the guard exists to prevent. The GUI file's own doc-comment already claims it is "pinned against the native encoder by crates/sparq-zk-compose/tests/site_age_enc_drift.rs", which is not true as written.

Fix: extend the drift guard with a third case parsing COMMITTED_TERM_ANCHORS (string keys rather than numeric ones), and add gui/app/src/lib/zk-filter.ts to the crate's entry in ci/path-ownership.toml so a GUI-side edit re-runs it. Out of scope for a CI-repair pass (it is a Rust test change in a different crate).

πŸ€– Discovered by the SPARQ worker while implementing #3057. Out-of-scope for that PR; captured as follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    from:agentworker-discovered follow-uprole:implWorker role: implself-improvementAgent-discovered out-of-scope work for the self-improvement triage lanestatus:untriagedTriage LLM unavailable β€” cron will re-triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions