Mint/Burn Flow Changelog: v4 archive
Historical release evidence. Return to current versions and the complete history index.
What this controls
Mint/Burn Flow Changelog: v4 archive version history
Use this changelog to trace how Pharos changed the related scoring, data-source, threshold, or interpretation rules over time. Entries record the contract active at each release; archived rules are retained so historical charts and citations can be read against the rules active at the time.
Primary references
Latest version
Deterministic repair loops and adapter provenance disclosures
Mint/burn repair and coverage semantics were tightened through historical-first valuation repair, deterministic cleanup backlogs, aligned FTQ classification, and explicit adapter provenance on public coverage metadata.
Impact snapshot
- Historical price repair now values events from event-day `supply_history` instead of current `price_cache` snapshots
- NULL-price healing and atomic-roundtrip sweeping now use deterministic ordered backlog queries
- The daily digest now shares the same report-card-cache FTQ classification semantics as `/api/mint-burn-flows`
- Per-coin coverage now exposes `adapterKinds`, `startBlockSource`, and `startBlockConfidence` so blanket start-block defaults are visible in the API
v4.9Mar 24, 2026Deterministic repair loops and adapter provenance disclosures
Mint/burn repair and coverage semantics were tightened through historical-first valuation repair, deterministic cleanup backlogs, aligned FTQ classification, and explicit adapter provenance on public coverage metadata.
- Historical price repair now values events from event-day `supply_history` instead of current `price_cache` snapshots
- NULL-price healing and atomic-roundtrip sweeping now use deterministic ordered backlog queries
- The daily digest now shares the same report-card-cache FTQ classification semantics as `/api/mint-burn-flows`
- Per-coin coverage now exposes `adapterKinds`, `startBlockSource`, and `startBlockConfidence` so blanket start-block defaults are visible in the API
DetailsHide details
Deterministic repair loops and adapter provenance disclosures
Mint/burn repair and coverage semantics were tightened through historical-first valuation repair, deterministic cleanup backlogs, aligned FTQ classification, and explicit adapter provenance on public coverage metadata.
- Historical price repair now values events from event-day `supply_history` instead of current `price_cache` snapshots
- NULL-price healing and atomic-roundtrip sweeping now use deterministic ordered backlog queries
- The daily digest now shares the same report-card-cache FTQ classification semantics as `/api/mint-burn-flows`
- Per-coin coverage now exposes `adapterKinds`, `startBlockSource`, and `startBlockConfidence` so blanket start-block defaults are visible in the API
Impact notes
- Historical price repair now values events from event-day `supply_history` instead of current `price_cache` snapshots
- NULL-price healing and atomic-roundtrip sweeping now use deterministic ordered backlog queries
- The daily digest now shares the same report-card-cache FTQ classification semantics as `/api/mint-burn-flows`
- Per-coin coverage now exposes `adapterKinds`, `startBlockSource`, and `startBlockConfidence` so blanket start-block defaults are visible in the API
v4.8Mar 24, 2026Ethereum coverage wave for long-tail mint/burn tracking
Mint/burn flow coverage expanded materially by restoring and adding long-tail Ethereum ERC-20 configs that can be tracked with the standard zero-address Transfer path.
- Added 40 additional Ethereum transfer-based configs for previously uncovered tracked assets
- Extended flow coverage now includes more long-tail fiat, non-USD, commodity, and yield-bearing assets where shared metadata already exposes an Ethereum contract
- Coverage scope increased from 84 contract configs / 83 stablecoin IDs to 124 contract configs / 123 stablecoin IDs while preserving the existing critical-lane set
DetailsHide details
Ethereum coverage wave for long-tail mint/burn tracking
Mint/burn flow coverage expanded materially by restoring and adding long-tail Ethereum ERC-20 configs that can be tracked with the standard zero-address Transfer path.
- Added 40 additional Ethereum transfer-based configs for previously uncovered tracked assets
- Extended flow coverage now includes more long-tail fiat, non-USD, commodity, and yield-bearing assets where shared metadata already exposes an Ethereum contract
- Coverage scope increased from 84 contract configs / 83 stablecoin IDs to 124 contract configs / 123 stablecoin IDs while preserving the existing critical-lane set
Impact notes
- Added 40 additional Ethereum transfer-based configs for previously uncovered tracked assets
- Extended flow coverage now includes more long-tail fiat, non-USD, commodity, and yield-bearing assets where shared metadata already exposes an Ethereum contract
- Coverage scope increased from 84 contract configs / 83 stablecoin IDs to 124 contract configs / 123 stablecoin IDs while preserving the existing critical-lane set
v4.7Mar 10, 2026Closed-day baseline, fixed aggregate 24h semantics, and coverage disclosures
Pressure Shift now compares live 24-hour flows against trailing fully closed daily baselines, aggregate API 24h fields are fixed regardless of chart window, and the product now exposes Ethereum-only scope plus coverage/freshness metadata.
- Pressure Shift baseline now excludes the current UTC day and uses the last 30 fully closed daily buckets
- Aggregate `/api/mint-burn-flows?hours=N` now keeps coin-level 24h fields fixed to the canonical 24h window while only the hourly series respects `hours`
- Aggregate flow API now exposes `scope`, `sync`, `windowHours`, and per-coin `coverage` metadata
- The `/flows` page now labels the feature as Ethereum-only and visually marks partial-history or lagging coverage states
DetailsHide details
Closed-day baseline, fixed aggregate 24h semantics, and coverage disclosures
Pressure Shift now compares live 24-hour flows against trailing fully closed daily baselines, aggregate API 24h fields are fixed regardless of chart window, and the product now exposes Ethereum-only scope plus coverage/freshness metadata.
- Pressure Shift baseline now excludes the current UTC day and uses the last 30 fully closed daily buckets
- Aggregate `/api/mint-burn-flows?hours=N` now keeps coin-level 24h fields fixed to the canonical 24h window while only the hourly series respects `hours`
- Aggregate flow API now exposes `scope`, `sync`, `windowHours`, and per-coin `coverage` metadata
- The `/flows` page now labels the feature as Ethereum-only and visually marks partial-history or lagging coverage states
Impact notes
- Pressure Shift baseline now excludes the current UTC day and uses the last 30 fully closed daily buckets
- Aggregate `/api/mint-burn-flows?hours=N` now keeps coin-level 24h fields fixed to the canonical 24h window while only the hourly series respects `hours`
- Aggregate flow API now exposes `scope`, `sync`, `windowHours`, and per-coin `coverage` metadata
- The `/flows` page now labels the feature as Ethereum-only and visually marks partial-history or lagging coverage states
- Flow freshness headers now follow successful sync timestamps instead of latest event timestamps, avoiding false staleness during quiet periods
v4.6Mar 9, 2026Safe-frontier ingestion and counted event-history alignment
Mint/burn ingestion now advances only to a shared safe coverage frontier under partial scans, and product event-history surfaces now default to counted economic-flow rows.
- Partial event-definition coverage no longer advances sync state past uncovered log ranges
- Missing block timestamps now cap advancement at the earliest unresolved block instead of silently skipping rows forever
- The event API now exposes `flowType` and supports `scope=counted` for rows that participate in aggregates
- Detail-page flow history now excludes bridge burns, review-required burns, and atomic roundtrips by default
DetailsHide details
Safe-frontier ingestion and counted event-history alignment
Mint/burn ingestion now advances only to a shared safe coverage frontier under partial scans, and product event-history surfaces now default to counted economic-flow rows.
- Partial event-definition coverage no longer advances sync state past uncovered log ranges
- Missing block timestamps now cap advancement at the earliest unresolved block instead of silently skipping rows forever
- The event API now exposes `flowType` and supports `scope=counted` for rows that participate in aggregates
- Detail-page flow history now excludes bridge burns, review-required burns, and atomic roundtrips by default
Impact notes
- Partial event-definition coverage no longer advances sync state past uncovered log ranges
- Missing block timestamps now cap advancement at the earliest unresolved block instead of silently skipping rows forever
- The event API now exposes `flowType` and supports `scope=counted` for rows that participate in aggregates
- Detail-page flow history now excludes bridge burns, review-required burns, and atomic roundtrips by default
- Unpriced event rows now render native token amounts instead of false dollar values
- `minAmount` filtering is now strictly USD-only when `amountUsd` is available
v4.5Mar 9, 2026Data quality: noise filtering, auto-heal, and activity gating
Improves flow data reliability by excluding flash-loan roundtrips from aggregation, auto-healing missing USD prices, and gating pressure shift for low-activity coins.
- Transactions containing both mint and burn for the same token (flash loans, atomic arb) are now flagged as atomic_roundtrip and excluded from all flow aggregates
- Events synced without USD price are now automatically backfilled within 48h by the sync cron
- Coins with less than $50K absolute 24h flow now return NR instead of a potentially misleading pressure shift score
- New observability counters in cron metadata: atomicRoundtripsDetected, nullPricesHealed
DetailsHide details
Data quality: noise filtering, auto-heal, and activity gating
Improves flow data reliability by excluding flash-loan roundtrips from aggregation, auto-healing missing USD prices, and gating pressure shift for low-activity coins.
- Transactions containing both mint and burn for the same token (flash loans, atomic arb) are now flagged as atomic_roundtrip and excluded from all flow aggregates
- Events synced without USD price are now automatically backfilled within 48h by the sync cron
- Coins with less than $50K absolute 24h flow now return NR instead of a potentially misleading pressure shift score
- New observability counters in cron metadata: atomicRoundtripsDetected, nullPricesHealed
Impact notes
- Transactions containing both mint and burn for the same token (flash loans, atomic arb) are now flagged as atomic_roundtrip and excluded from all flow aggregates
- Events synced without USD price are now automatically backfilled within 48h by the sync cron
- Coins with less than $50K absolute 24h flow now return NR instead of a potentially misleading pressure shift score
- New observability counters in cron metadata: atomicRoundtripsDetected, nullPricesHealed
v4.4Mar 7, 2026ReconstructedTwo-signal flow semantics and baseline-aware interpretation
Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift while preserving the underlying formula.
- Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift
- API now exposes canonical `pressureShiftScore` and interpretation fields while retaining `flowIntensity` as a deprecated alias
- Frontend printer and shredder visuals now key off actual net flow direction instead of score sign
- Methodology and product copy now distinguish current direction from pressure-versus-baseline context
DetailsHide details
Two-signal flow semantics and baseline-aware interpretation
Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift while preserving the underlying formula.
- Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift
- API now exposes canonical `pressureShiftScore` and interpretation fields while retaining `flowIntensity` as a deprecated alias
- Frontend printer and shredder visuals now key off actual net flow direction instead of score sign
- Methodology and product copy now distinguish current direction from pressure-versus-baseline context
Impact notes
- Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift
- API now exposes canonical `pressureShiftScore` and interpretation fields while retaining `flowIntensity` as a deprecated alias
- Frontend printer and shredder visuals now key off actual net flow direction instead of score sign
- Methodology and product copy now distinguish current direction from pressure-versus-baseline context
v4.3Mar 4, 2026ReconstructedNR gating for no-activity flow windows
Coins with no mint/burn activity in the active 24h window now publish NR flow intensity and are excluded from gauge weighting.
- Removed synthetic neutral intensity fallback for sparse no-activity windows
- No-activity windows now return `flowIntensity = null` (NR) instead of `0`
- Bank Run Gauge now excludes those NR windows from the market-cap-weighted composite
- Frontend flow-intensity UI now displays NR explicitly for null values
DetailsHide details
NR gating for no-activity flow windows
Coins with no mint/burn activity in the active 24h window now publish NR flow intensity and are excluded from gauge weighting.
- Removed synthetic neutral intensity fallback for sparse no-activity windows
- No-activity windows now return `flowIntensity = null` (NR) instead of `0`
- Bank Run Gauge now excludes those NR windows from the market-cap-weighted composite
- Frontend flow-intensity UI now displays NR explicitly for null values
Impact notes
- Removed synthetic neutral intensity fallback for sparse no-activity windows
- No-activity windows now return `flowIntensity = null` (NR) instead of `0`
- Bank Run Gauge now excludes those NR windows from the market-cap-weighted composite
- Frontend flow-intensity UI now displays NR explicitly for null values
v4.2Mar 4, 2026ReconstructedSigned zero-baseline flow-intensity semantics
Flow Intensity Score and Bank Run Gauge moved from midpoint semantics to canonical signed outputs centered at zero baseline.
- Flow Intensity Score now emits signed values via `clamp(-100, 100, z * 50)`
- Gauge score now uses signed -100 to +100 output with neutral baseline at 0
- Band thresholds were remapped around zero while retaining existing band labels
- Frontend midpoint conversion shim was removed; UI now consumes canonical signed API values directly
DetailsHide details
Signed zero-baseline flow-intensity semantics
Flow Intensity Score and Bank Run Gauge moved from midpoint semantics to canonical signed outputs centered at zero baseline.
- Flow Intensity Score now emits signed values via `clamp(-100, 100, z * 50)`
- Gauge score now uses signed -100 to +100 output with neutral baseline at 0
- Band thresholds were remapped around zero while retaining existing band labels
- Frontend midpoint conversion shim was removed; UI now consumes canonical signed API values directly
Impact notes
- Flow Intensity Score now emits signed values via `clamp(-100, 100, z * 50)`
- Gauge score now uses signed -100 to +100 output with neutral baseline at 0
- Band thresholds were remapped around zero while retaining existing band labels
- Frontend midpoint conversion shim was removed; UI now consumes canonical signed API values directly
v4.1Mar 4, 2026ReconstructedReliability remediation and controlled backfill recovery
Ingestion moved to a reliability-first runtime policy with degraded/error health signaling and operator-grade recovery controls.
- Added run-state rotation plus per-chain quotas so coverage remains balanced under budget pressure
- Added degraded/error escalation from sustained low coverage or repeated API failures
- Introduced authenticated chunked backfill endpoint (`/api/backfill-mint-burn`) reusing ingestion parsing and aggregation
DetailsHide details
Reliability remediation and controlled backfill recovery
Ingestion moved to a reliability-first runtime policy with degraded/error health signaling and operator-grade recovery controls.
- Added run-state rotation plus per-chain quotas so coverage remains balanced under budget pressure
- Added degraded/error escalation from sustained low coverage or repeated API failures
- Introduced authenticated chunked backfill endpoint (`/api/backfill-mint-burn`) reusing ingestion parsing and aggregation
Impact notes
- Added run-state rotation plus per-chain quotas so coverage remains balanced under budget pressure
- Added degraded/error escalation from sustained low coverage or repeated API failures
- Introduced authenticated chunked backfill endpoint (`/api/backfill-mint-burn`) reusing ingestion parsing and aggregation
- 20f56c3
v4.0Mar 4, 2026ReconstructedreUSD deposit amount scale correction
Fixed a scale mismatch in reUSD mint decoding that overstated deposit-side mint volume.
- reUSD `Deposited` events now decode with 18 decimals instead of 6
- Removed artificial inflation in reUSD mint flow and related aggregates
- Added regression test validating a known on-chain `Deposited` payload decodes to 10 tokens
DetailsHide details
reUSD deposit amount scale correction
Fixed a scale mismatch in reUSD mint decoding that overstated deposit-side mint volume.
- reUSD `Deposited` events now decode with 18 decimals instead of 6
- Removed artificial inflation in reUSD mint flow and related aggregates
- Added regression test validating a known on-chain `Deposited` payload decodes to 10 tokens
Impact notes
- reUSD `Deposited` events now decode with 18 decimals instead of 6
- Removed artificial inflation in reUSD mint flow and related aggregates
- Added regression test validating a known on-chain `Deposited` payload decodes to 10 tokens
- a49abfa