Releases: Phinetwork/Verahai
v2.6.0
Verahai v2.6.0 — Market Status: “Canceled” Can No Longer Be Overridden by Resolution
What changed
- Updated
deriveMarketStatusinsrc/SigilMarkets/utils/marketTiming.tsto preserve explicitcanceledstatus even when aresolutionobject exists. - The function now captures status earlier and short-circuits when
status === "canceled"so cancellation can’t be reclassified downstream.
Why this matters
Previously, if a market had a resolution object, deriveMarketStatus could return a resolution-based status (voided / resolved) even when the market was explicitly marked canceled.
That caused:
- UI components to show the wrong state
- Messaging to lose cancellation-specific copy / flows
- Confusion between “canceled by authority” vs “resolved by outcome” vs “voided by policy”
Verahai’s UX depends on canceled being distinct, so it must remain intact.
Behavior (after v2.6.0)
-
✅ If a market is explicitly
canceled, it stayscanceledno matter what other objects exist. -
✅ For non-canceled markets, resolution override behavior is unchanged:
resolutioncan still map status tovoidedorresolvedexactly as before.
No semantic changes elsewhere
isResolvedLikeStatusis unchanged and continues to treatcanceledas resolved-like where that behavior is relied on (e.g., disabling trading, final-state UI groupings, etc.).
Summary
v2.6.0 fixes a subtle but critical classification bug: cancellation is now authoritative and won’t be overwritten by resolution-derived statuses, while all existing resolution mapping behavior for non-canceled markets remains the same.
What's Changed
- v2.6.0 by @Phinetwork in #14
Full Changelog: v2.5.0...v2.6.0
v2.5.0
Verahai v2.5.0 — Prophecy Exports Now Preserve Full ZK Proof Bundles
What changed
- Prophecy payload decoding now retains the original ZK proof bundle instead of trimming it away.
- Updated
src/utils/payload.tsso when decoding query payloads, the trimmed prophecy object copiesrawProphecy.zkinto the decoded/trimmed prophecy payload.
Why this matters
Previously, prophecyPayload was “trimmed” in a way that dropped the zk bundle, which meant:
-
Exporters (especially
exportZIP) could not embed the original proof into:- the export manifest, and
- the SVG
<metadata>/data-*metadata
-
Result: prophecy exports looked valid visually, but were missing the cryptographic ZK attestation required for full portability and offline verification continuity.
With v2.5.0, the exact proof bundle that was sealed with the prophecy is preserved end-to-end, so exports can carry the full ZK integrity artifact.
Technical details
-
File:
src/utils/payload.ts -
Behavior: During decode/trim of prophecy payloads:
-
If
rawProphecy.zkis an object, we now assign it onto the trimmed object: -
trimmedProphecy.zk = rawProphecy.zk(guarded — only whenrawProphecy.zkis an object)
-
Impact
-
payload.prophecyPayload.zkis now available after decoding. -
The ZK bundle is also available via
payload.payloadExtras(where applicable), enabling:- export manifest to include the full
zkobject - SVG metadata embedding to include the original
zkbundle - Future verifiers to check that an export contains the same proof that was originally sealed
- export manifest to include the full
Compatibility & safety
- Non-ZK prophecies unchanged: if no
zkis present, nothing new is added. - Guarded copy: only copies
zkwhen it’s an object to avoid malformed payloads. - No new crypto, no schema change: just preserves already-existing data instead of dropping it.
Summary
Verahai v2.5.0 fixes a critical portability gap: sealed prophecy exports now include the full ZK proof bundle exactly as originally minted, ensuring manifests + SVGs remain complete, self-verifying artifacts.
What's Changed
- v2.5.0 by @Phinetwork in #13
Full Changelog: v2.3.0...v2.5.0
v2.3.0
What's Changed
- v2.2.0 by @Phinetwork in #11
- v2.3.0 by @Phinetwork in #12
Full Changelog: v2.1.1...v2.3.0
v2.1.1
v2.1.0
v2.0.5
v2.0.4
v2.0.3
v2.0.2
What's Changed
- v2.0.2 by @Phinetwork in #4
- Update buildInfo.ts by @Phinetwork in #5
Full Changelog: v2.0.1...v2.0.2