Repository navigation
Release v0.24.0 - #56
Merged
Merged
Conversation
- concepts/actions.md says BATCH is all-or-none; the rest of the corpus (and the same file) says BATCH is not atomic
- Cross-chain SWAP described as atomic ('both sides settle, or neither does') against user-guide pages that document a residual non-atomic window
- Decoder table count given as 9 in decoder README/operations and sync docs, but the decoder schema page lists 10 tables
- utxo-tracker architecture gives a fixed 2 GB heap-flush trigger; its configuration page derives the threshold from the memory budget (256-2048 MB)
- AUX_POW: operations and decoder pages say set it for Dogecoin only; utxo-tracker pages say it is required for Litecoin (HogEx) too
- Testnet cross-chain pair recipe states the cross_chain quorum as bare 2f+1, which the corpus elsewhere says is not the rule
- component-map describes wallet storage as browser localStorage; wallet architecture puts the vault in IndexedDB, chrome.storage, an Electron encrypted
- Decoder architecture flowchart deletes expired dispensers inside the block transaction; the corpus elsewhere says soft-expire, then purge outside the
- sync/operations.md says the decoder hard-DELETEs expired dispensers each block; sync/configuration.md and data-retention.md say rows are soft-expired
- Threat model still lists background auto-lock as an open item, though it has shipped
- ux.md says the popup auto-locks on tab/window blur; no blur trigger exists
- Docs give the default auto-lock timeout as 5 minutes; the schema default is 15
- LLM provider default base fee: providers/llm.md says 0.50, smart-contracts.md says '0'
- Android Data safety page says the update check sends the running version; two other privacy pages say it doesn't
- Indexer database page lists every validator_rewards reward_type but leaves out rollcall_publish
- SDK actions page shows UNSTAKE v0 and COLLECT without the optional partial AMOUNT that other pages document
- Hub architecture says three offense types are monitored; database and decentralization pages list four
- protocol-activation.md gives 36 registered ACTIONs (21 + 16), but concepts/actions.md gives 38 (21 + 17)
- Indexer README says 16 ACTIONs are at protocol version 0.2.0; concepts/actions.md says 17
- Wallet build-release.md uses a 1.0.0-rc.N version line that conflicts with the 0.338.0 current version stated elsewhere
- Wallet pages say the native iOS app is still on the post-launch roadmap; the release docs describe a shipping iOS build lane
- decentralization.md says the full-node reward tranche is paid, but other docs say it is not minted
- NODEPROOF says PRICE derives the full-node reward, but COLLECT says PRICE derives no reward rows
- PRICE says an oracle_publish + price pubkey earns both rewards per round, but oracle rewards are not minted
- gas.md "Complete Fee Schedule" omits the shipped LIST_SHARE / LIST_SHARED_EDIT_BASE / LIST_SHARED_EDIT_PER_ITEM gas keys
- Smart-contract dev guide cites stale pre-rename doc paths (protocol/actions/DEPLOY.md, protocol/Cross_Chain_Calls.md, protocol/actions/XCALL.md) that
- Destructured banned-global spellings (`LINT_DESTRUCTURE` / `enforceLintDestructure`) are missing from the author-facing deploy-rule docs, and shipped
- Action index lists BET as v0-v3 'end to end' but the manifest and bet.md ship a user-encodable v4 (edit feed lists)
- Deploy-validation docs list 10 deploy-blocking rules; shipped CONSENSUS_RULES has 11 and validateSyntax runs a nesting-depth check first
- Docs say the `with`-statement deploy ban is unarmed on testnet; shipped VM and indexer arm it on all three testnet chains
- Protocol-activation and VM architecture docs call the destructure, BigInt-strip and nesting-depth gates inert on testnet; shipped maps arm them
- VM configuration 'Additional Internal Limits' table cites stale source locations for the return-value and binary-expression limits
- encoding.md says the 8,192-byte decoder ceiling applies to 'every embedding format', but the shipped Taproot envelope lane is exempt
- protocol-activation.md says LINT_DESTRUCTURE_ACTIVATION is inert on mainnet/testnet, but the shipped DEPLOY path enforces the destructure refinement a
- send.md says only gated FILEs that have "not been superseded" count, but nothing can supersede a gated FILE
- BATCH spec says the handoff MESSAGE is always required, ignoring the GATE_MIN_AMOUNT exemption
- TIS pack_id row says the protocol groups packs by KEY_HASH alone; the spec and indexer use (publisher, GATE_TICKER, KEY_HASH)
- Current TIS example uses `action:12345` both as public on-chain artwork and as a locked, gated PDF
- TIS lets a `locked` entry point at a sibling-chain FILE, but SEND key-handoff enforcement only sees gated FILEs on the token's own chain
- send.md says the gated threshold uses the total across all legs, but on mainnet the indexer still sums per literal TICK spelling
- checkpointSkipsAnchoring and attestRotationStep accept pre-commitment checkpoints that carry unsigned, server-attached roots
- WS `stale` marker is nested in `data` on WELCOME but sits at the frame top level on every other frame
- SDK WS client ignores the explorer's `stale: true` marker and closes its catch-up gap on a stale replay
- /api/status shows a decoder stopped on a REORG_HALT as 'healthy': health() halt fields are never read
- Explorer error-code coverage guard does not scan src/contract/vm_query.js or the mirror-gate `blocked:` shape, so codes emitted there can ship without
- index-id-references.md says new single-value addresses get ids in byte-sorted order, but ISSUE, SWEEP and DEPLOY assign them in handler order
- protocol-activation.md xchain-vm row says six VM gates are unarmed on testnet; the code arms all six on testnet
- UPSTREAM_ERROR is registered as a fee-service failure, but the explorer also returns it when the action pre-flight upstream fails
- blockchains.md says BTC testnet4 contract deploys cannot be mined, but the indexer records mined TBTC contracts
- trading.md says listing edits are priced on the 90-day-free schedule, but the indexer charges every added day once the new total passes 90
- trading.md leaves out that dispenser allow/block list edits only take effect after a one-hour delay
- Decoder transaction quarantines have no signal of their own: lumped into a noisy parse_errors counter that the dashboard ignores
- Published operations doc still says the fee pin is always settxfee with fallback to the estimate; BTC now never calls settxfee and pins fee_rate per c
- status field table omits wallet_balance / wallet_funded / wallet_balance_at, the published surface of the 5s getbalance refresh contract
- X402Client spending ceiling checks only the number, not the token, and the remote server picks the token
- websocket.md TOKEN_UPDATE example shows `holders` as a JSON number, but schema v2 sends it as a decimal string
- Spec says the envelope ceiling applies after compression, but the encoder rejects oversize payloads before compressing
- controller-bound-tokens.md class table lists only SEND/DEPOSIT/WITHDRAW as transfer-class guard action_types, but the indexer also passes AIRDROP, DIV
- Bind/unbind rejection table omits the ownership-escrowed and non-owner verdicts that ISSUE v6 actually returns
- Docs say desktop keychain auto-unlock is opt-in and off by default, but the master key is always written to session.bin when safeStorage is available
- State-tree orphan-node reclaim silently self-disables above 2M nodes, with no log or metric
- Decoder deploy-precondition 2026-06-02-widen-ids-to-bigint.sql has no MIGRATION_PRECONDITIONS baseline, so a fresh decoder DB never records it and the
- Hub metrics heartbeat covers only OracleRound; attestation, checkpoint, publisher and abandoned-round signals are RPC-only
- Lifecycle frames are routed only to the source address; the action row's `destinations` are dropped and `extractAddresses` still checks a `destination
Describe activation-gated folded anchor bundles in both map copies and allow the documented v3 wire version in the integrity gate.
Document the conjunctive fold termination boundary. Guard the whitepaper ANCHOR summary against fold-only reward retirement claims.
The wire-version test passed vacuously when no ANCHOR version reference was present. Require at least one reference and that both v0 and v3 are named in each file.
Clarify that the local oracle-price fallback cannot replace the finalized ATTEST response source on armed BTC networks. Add a source-backed documentation guard with marker-removal falsification coverage.
Add hub configuration rows for NODE_OPTIONS, XCHAIN_SUITE_TITLE_REPO_ROOT and XCHAIN_DOCS_DIR, which bin/suite-title-map.js reads and resets around the mocha children it spawns.
…regenerate flag days
…riables and the utxo-tracker trust proxy hops
…r code row and the bridge panel routes to the registry scan
Document the pre-launch skip rule, the validator action exemption, the pinned seed source exemption, and that testnet and regtest are never gated.
MAINNET_LAUNCH_ACTIVATION is the time-keyed launch gate and PRELAUNCH_SEED_SOURCES holds the per-coin mainnet seed lists, empty until the key ceremony. Both are exported at the end of the list, and the canonical index in flag-days.md lists the new gate.
…ull requests Contributors now branch off develop and open pull requests against it, as the docs and PR template say. A new pull_request_target check fails any pull request into master that is not this repository's own develop, release/* or hotfix/* branch, and CI now runs on pull requests into develop.
master stays the default branch, so contributors still switch the base to develop by hand.
…ch gate section The section now says the launch instant is the time-keyed MAINNET_LAUNCH_ACTIVATION map in protocol/constants.js and the per-chain seed lists are PRELAUNCH_SEED_SOURCES.
…et launch gate section
…ing, burst allowance and new error codes
… explorer and SDK
…s by proof behind gates
…tion behind a gate
…ith no local copy behind a gate
…mitted amounts, each behind an unarmed gate
…elegation Add a registry-only height activation that refuses a VOTE v3 delegation whose TICK has no valid ISSUE row, unarmed on mainnet and testnet and armed on regtest by XC_VOTE_V3_TICK_EXISTENCE_REGTEST_ACTIVATION. Below the activation the original null-only predicate runs unchanged.
Add MATCH_ORIGIN_OPEN_ACTIVATION so ORDER_MATCH and SWAP_MATCH return before candidate lookup unless the originating offer is still open, which stops order and swap matching when a LIST rematch plan reaches an origin its earlier step completed or when a cancel dispatches a match from the offer it has just cancelled. The gate is unarmed on mainnet and testnet and armed on regtest by XC_MATCH_ORIGIN_OPEN_REGTEST_ACTIVATION, and below it both handlers replay unchanged.
Name the compose-first path in the App Store review walkthrough and keep the Airplane Mode sequence explicit.
BASE, DASH, HBAR, HOOD, HYPE and NEAR were taken out of the mainnet genesis manifests, so the RESERVED_FUTURE_ROOTS note no longer calls them squatted. Comment only; the list and its order are unchanged.
Document that only the exact value 1 requests an unbind and that every other value binds for token and address controllers.
Tell reviewers and release preparers to enable Developer mode before selecting the Testnet network.
Document the distinct mainnet clamp and test-chain fallback paths. State the monotonic ordering guaranteed across estimate_fee tiers.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this release carries
Added
Changed
Fixed
Testnet activation
ORDER_MATCH_PRICE_CROSS_ACTIVATIONonBTC:testnetat height156908ORDER_MATCH_PRICE_CROSS_ACTIVATIONonLTC:testnetat height4927400ORDER_MATCH_PRICE_CROSS_ACTIVATIONonDOGE:testnetat height68005165REMOTE_TOKEN_ADMISSION_ACTIVATIONonBTC:testnetat height156908REMOTE_TOKEN_ADMISSION_ACTIVATIONonLTC:testnetat height4927400REMOTE_TOKEN_ADMISSION_ACTIVATIONonDOGE:testnetat height68005165GAS_CEILING_EXHAUSTED_ACTIVATIONonBTC:testnetat height156908GAS_CEILING_EXHAUSTED_ACTIVATIONonLTC:testnetat height4927400GAS_CEILING_EXHAUSTED_ACTIVATIONonDOGE:testnetat height68005165RESOURCE_FAULT_SIGNAL_ACTIVATIONonBTC:testnetat height156908RESOURCE_FAULT_SIGNAL_ACTIVATIONonLTC:testnetat height4927400RESOURCE_FAULT_SIGNAL_ACTIVATIONonDOGE:testnetat height68005165HOST_ERROR_STACK_STRIP_ACTIVATIONonBTC:testnetat height156908HOST_ERROR_STACK_STRIP_ACTIVATIONonLTC:testnetat height4927400HOST_ERROR_STACK_STRIP_ACTIVATIONonDOGE:testnetat height68005165JSON_STRINGIFY_REENTRY_ACTIVATIONonBTC:testnetat height156908JSON_STRINGIFY_REENTRY_ACTIVATIONonLTC:testnetat height4927400JSON_STRINGIFY_REENTRY_ACTIVATIONonDOGE:testnetat height68005165NATIVE_STACK_TERMINAL_ACTIVATIONonBTC:testnetat height156908NATIVE_STACK_TERMINAL_ACTIVATIONonLTC:testnetat height4927400NATIVE_STACK_TERMINAL_ACTIVATIONonDOGE:testnetat height68005165VOTE_SETTLEMENT_EXACT_ACTIVATIONonBTC:testnetat height156908VOTE_SETTLEMENT_EXACT_ACTIVATIONonLTC:testnetat height4927400VOTE_SETTLEMENT_EXACT_ACTIVATIONonDOGE:testnetat height68005165SETTLEMENT_BOUNDS_ACTIVATIONonBTC:testnetat height156908SETTLEMENT_BOUNDS_ACTIVATIONonLTC:testnetat height4927400SETTLEMENT_BOUNDS_ACTIVATIONonDOGE:testnetat height68005165PASS_PROGRESS_RETIREMENT_ACTIVATIONonBTC:testnetat height156908PASS_PROGRESS_RETIREMENT_ACTIVATIONonLTC:testnetat height4927400PASS_PROGRESS_RETIREMENT_ACTIVATIONonDOGE:testnetat height68005165SLASH_HISTORICAL_SET_ACTIVATIONonBTC:testnetat height156908SLASH_HISTORICAL_SET_ACTIVATIONonLTC:testnetat height4927400SLASH_HISTORICAL_SET_ACTIVATIONonDOGE:testnetat height68005165ANCHOR_REWARD_COPY_SELECTION_ACTIVATIONonBTC:testnetat height156908ANCHOR_REWARD_COPY_SELECTION_ACTIVATIONonLTC:testnetat height4927400ANCHOR_REWARD_COPY_SELECTION_ACTIVATIONonDOGE:testnetat height68005165TOKEN_SUPPLY_REPRESENTATION_ACTIVATIONonBTC:testnetat height156908TOKEN_SUPPLY_REPRESENTATION_ACTIVATIONonLTC:testnetat height4927400TOKEN_SUPPLY_REPRESENTATION_ACTIVATIONonDOGE:testnetat height68005165DISPENSER_FIAT_PRICING_ACTIVATIONonBTC:testnetat height156908DISPENSER_FIAT_PRICING_ACTIVATIONonLTC:testnetat height4927400DISPENSER_FIAT_PRICING_ACTIVATIONonDOGE:testnetat height68005165BRIDGE_POLICY_APPLY_ORDER_ACTIVATIONonBTC:testnetat height156908BRIDGE_POLICY_APPLY_ORDER_ACTIVATIONonLTC:testnetat height4927400BRIDGE_POLICY_APPLY_ORDER_ACTIVATIONonDOGE:testnetat height68005165VM_EMISSION_AMOUNT_FORMAT_ACTIVATIONonBTC:testnetat height156908VM_EMISSION_AMOUNT_FORMAT_ACTIVATIONonLTC:testnetat height4927400VM_EMISSION_AMOUNT_FORMAT_ACTIVATIONonDOGE:testnetat height68005165EXECUTE_FEE_CAP_ACTIVATIONonBTC:testnetat height156908EXECUTE_FEE_CAP_ACTIVATIONonLTC:testnetat height4927400EXECUTE_FEE_CAP_ACTIVATIONonDOGE:testnetat height68005165VOTE_V3_TICK_EXISTENCE_ACTIVATIONonBTC:testnetat height156908VOTE_V3_TICK_EXISTENCE_ACTIVATIONonLTC:testnetat height4927400VOTE_V3_TICK_EXISTENCE_ACTIVATIONonDOGE:testnetat height68005165MATCH_ORIGIN_OPEN_ACTIVATIONonBTC:testnetat height156908MATCH_ORIGIN_OPEN_ACTIVATIONonLTC:testnetat height4927400MATCH_ORIGIN_OPEN_ACTIVATIONonDOGE:testnetat height68005165VM_LINT_SYNTAX_DEPTH_ACTIVATIONonBTC:testnetat height156908VM_LINT_SYNTAX_DEPTH_ACTIVATIONonLTC:testnetat height4927400VM_LINT_SYNTAX_DEPTH_ACTIVATIONonDOGE:testnetat height68005165NESTED_EXECUTE_GAS_SUM_ACTIVATIONonBTC:testnetat height156908NESTED_EXECUTE_GAS_SUM_ACTIVATIONonLTC:testnetat height4927400NESTED_EXECUTE_GAS_SUM_ACTIVATIONonDOGE:testnetat height68005165EMISSION_DEPTH_EXECUTE_ONLYonBTC:testnetat block time1792303200EMISSION_DEPTH_EXECUTE_ONLYonLTC:testnetat block time1792303200EMISSION_DEPTH_EXECUTE_ONLYonDOGE:testnetat block time1792303200ARCHIVE_REPLAY_WRAPPER_WATERMARKonBTC:testnetat block time1792303200ARCHIVE_REPLAY_WRAPPER_WATERMARKonLTC:testnetat block time1792303200ARCHIVE_REPLAY_WRAPPER_WATERMARKonDOGE:testnetat block time1792303200LEGACY_ANCHOR_REWARD_PINonBTC:testnetat block time1792303200LEGACY_ANCHOR_REWARD_PINonLTC:testnetat block time1792303200LEGACY_ANCHOR_REWARD_PINonDOGE:testnetat block time1792303200GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGSonBTC:testnetat block time1792303200GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGSonLTC:testnetat block time1792303200GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGSonDOGE:testnetat block time1792303200HOST_CALL_BOUNDSonBTC:testnetat block time1792303200HOST_CALL_BOUNDSonLTC:testnetat block time1792303200HOST_CALL_BOUNDSonDOGE:testnetat block time1792303200PER_ELEMENT_METERonBTC:testnetat block time1792303200PER_ELEMENT_METERonLTC:testnetat block time1792303200PER_ELEMENT_METERonDOGE:testnetat block time1792303200CALLBACK_ARGS_EXACTonBTC:testnetat block time1792303200CALLBACK_ARGS_EXACTonLTC:testnetat block time1792303200CALLBACK_ARGS_EXACTonDOGE:testnetat block time1792303200GAS_CEILING_EXHAUSTED_ACTIVATIONonBTC:testnetat height156908GAS_CEILING_EXHAUSTED_ACTIVATIONonLTC:testnetat height4927400GAS_CEILING_EXHAUSTED_ACTIVATIONonDOGE:testnetat height68005165LINT_SYNTAX_DEPTH_ACTIVATIONonBTC:testnetat height156908LINT_SYNTAX_DEPTH_ACTIVATIONonLTC:testnetat height4927400LINT_SYNTAX_DEPTH_ACTIVATIONonDOGE:testnetat height68005165RESOURCE_FAULT_SIGNAL_ACTIVATIONonBTC:testnetat height156908RESOURCE_FAULT_SIGNAL_ACTIVATIONonLTC:testnetat height4927400RESOURCE_FAULT_SIGNAL_ACTIVATIONonDOGE:testnetat height68005165HOST_ERROR_STACK_STRIP_ACTIVATIONonBTC:testnetat height156908HOST_ERROR_STACK_STRIP_ACTIVATIONonLTC:testnetat height4927400HOST_ERROR_STACK_STRIP_ACTIVATIONonDOGE:testnetat height68005165JSON_STRINGIFY_REENTRY_ACTIVATIONonBTC:testnetat height156908JSON_STRINGIFY_REENTRY_ACTIVATIONonLTC:testnetat height4927400JSON_STRINGIFY_REENTRY_ACTIVATIONonDOGE:testnetat height68005165NATIVE_STACK_TERMINAL_ACTIVATIONonBTC:testnetat height156908NATIVE_STACK_TERMINAL_ACTIVATIONonLTC:testnetat height4927400NATIVE_STACK_TERMINAL_ACTIVATIONonDOGE:testnetat height68005165Release v0.24.0
Base:
masterat66f32ad61861f814d0f6192e76fdab9c83aae2e3Head:
release/v0.24.0at4f9de316dd515e15601feda07c23459274e28d65Landed refs