{
  "schema_version": "1.0.0",
  "version": "1.0.26",
  "current_sdk_version": "6.0.24",
  "current_version": "1.0.26",
  "generated": "2026-09-02T00:00:00.000Z",
  "description": "Version history of all /agents/ layer changes, SDK version bumps, and audit passes. Each entry includes the agent-layer content version, affected files, trigger description, and breaking/migration flags. current_version tracks the latest entry; version tracks this file's own schema revision.",
  "entries": [
    {
      "date": "2026-09-02T00:00:00.000Z",
      "version": "1.0.26",
      "changes": [
        "PC-20 coverage propagated across the agent layer (the follow-up deferred from the 2026-09-01 PC-20 docs PR #1233). PC-20 = a token born ON Push Chain, mirrored outward as wrappers on external chains via UniversalCore's on-chain registry (async getPC20Address). PRC-20 = a token born on an external chain, mirrored inward as a synthetic on Push Chain (static table, sync getPRC20Address).",
        "errors.json: added the full typed PC-20 error family from @pushchain/core (base PC20Error plus 14 concrete classes, each with a stable `code` discriminator, curated context fields, and a remediation hint): PC20_INVALID_ADDRESS, PC20_TOKEN_CHAIN_MISMATCH, PC20_WRAPPER_NOT_REGISTERED, PC20_REGISTRY_MISMATCH, PC20_FACTORY_MISMATCH, PC20_INVALID_METADATA, PC20_EXPECTED_BUT_PRC20, PC20_UNSUPPORTED_DESTINATION, PC20_INSUFFICIENT_BALANCE, PC20_AMBIGUOUS_ADDRESS, PC20_UNKNOWN_CHAIN_NAMESPACE, PC20_WRAPPER_PREDICTION_UNAVAILABLE, PC20_EXPORT_REVERTED, PC20_UNSAFE_EMPTY_PAYLOAD.",
        "sdk-capabilities.json: added PushChain.utils.tokens.getPC20Address (async, registry-backed, returns canonical address + decimals + confirmed .registry deployments) and clarified getPRC20Address as the sync static-table counterpart for external-born tokens.",
        "capabilities.json: tx.funds input now documents both token forms — MoveableToken accessor (PRC-20 inbound path) and PC-20 reference { chain, address } (never add `symbol`; funds.token.chain = where the tokens sit now, to.chain = destination).",
        "decision-tree.json: new choose_token_standard tree routing on where the token was born; feature-matrix.json: new pc20_token_movement feature; routes.json: new shared.funds_token_forms section; retrieval-map.json: new PC-20 task entry pointing at important-concepts#token-types-on-push-chain; mcp-candidates.json: new read-only get_pc20_address candidate (16 total).",
        "Skills and workflows (the 'load first' surface) gained PC-20 coverage: push-backend SKILL.md has a new 'Moving Tokens with tx.funds - PRC-20 vs PC-20' section (shape table, full export example with registry-based wrapper resolution, typed-error guidance), a getPC20Address utility entry, and four new Common Mistakes rows; push-frontend SKILL.md has a compact 'Moving a PC-20' section and a symbol-trap mistake row; workflows/send-universal-transaction.md documents the PC-20 funds form step-by-step; workflows/use-utility-functions.md documents getPC20Address. Skill frontmatter pins (package_version / current_sdk_version) refreshed to 6.0.24. push-contracts is untouched - no contract-side PC-20 interface is documented in the docs yet.",
        "examples/index.json regeneration unfrozen: build.agents.examples.mjs previously carried the wrapper metadata over verbatim, freezing current_sdk_version at 6.0.19 / generated at 2026-07-03 forever; the builder now refreshes current_sdk_version from the installed @pushchain/core, stamps `generated` only when content actually changed, writes a trailing newline (ends the prettier churn), and backfills empty sdk_methods_used lists from the example files on every run Method detection is now boundary-aware and runs on fenced code only, so a prefix like getChainName no longer matches getChainNamespace and the auto-generated 'SDK Methods Used' footer can no longer re-seed its own past mistakes; every footer is kept in sync with its index entry on every run (a drift check, not a one-off). Net effect: 10 entries backfilled, 5 pre-existing toUniversal/toUniversalFromKeypair false positives pruned, and the removed-API tombstones (status: removed) deliberately left empty so a deleted method is never advertised as usable. Added fromChainAgnostic and getSupportedChainsByName to the detection list. Remaining empty lists are honest: Solidity-only tutorials and pure ethers/viem read examples.",
        "Naming pass completed: utility-get-prc20-address example heading and index name now read 'Get PRC-20 Address' (hyphenated in prose; the bare `PRC20` / `PC20` forms only inside identifiers).",
        "source-freshness.json: remapped 8 source_sections paths broken by the docs renumbering (01-Create-Universal-Signer→02, 02-Initialize-Client→03-Initialize-Push-Chain-Client, 07-Track→10, 09-Sign→11, 10-Utility-Functions→12, 11-Reading-Blockchain-State→13, 12-Contract-Helpers→14, 03-build/03-Important-Concepts→03-Important-Concepts) and pointed constants entries at the new 99-Constants.mdx.",
        "SDK pins refreshed across the layer: @pushchain/core and @pushchain/ui-kit 6.0.24 (from 6.0.19/6.0.18) in llms.txt and in the current_sdk_version of every file touched by this update (untouched files keep their own pins per index.json's version_policy)."
      ],
      "files_affected": [
        "static/llms.txt",
        "static/agents/errors.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/capabilities.json",
        "static/agents/decision-tree.json",
        "static/agents/feature-matrix.json",
        "static/agents/routes.json",
        "static/agents/retrieval-map.json",
        "static/agents/mcp-candidates.json",
        "static/agents/source-freshness.json",
        "static/agents/examples/index.json",
        "static/agents/examples/utility-get-prc20-address.md",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "build.agents.examples.mjs",
        "build.agents.llms.mjs",
        "static/agents/skills/index.json",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-backend/references/send-universal-transaction.md",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/workflows/send-universal-transaction.md",
        "static/agents/workflows/use-utility-functions.md"
      ],
      "sdk_version": "6.0.24",
      "ui_kit_version": "6.0.24",
      "category": "pc20-agent-layer",
      "trigger": "PR #1233 shipped the PC-20 documentation (docs/chain: Important Concepts token types, Send Universal Transaction 'Moving PC-20 Tokens', Utility Functions getPC20Address) but deliberately deferred the agent layer. Agents reading errors.json / capabilities.json / decision-tree.json had zero PC-20 coverage while the docs advertised the feature, silently degrading retrieval.",
      "breaking": false,
      "migration": "None. All changes are additive; existing MoveableToken (PRC-20) flows are untouched. Agents should reload errors.json and sdk-capabilities.json to pick up the PC-20 error family and getPC20Address."
    },
    {
      "date": "2026-07-15T00:00:00.000Z",
      "version": "1.0.25",
      "changes": [
        "Launched the push.org docs MCP server at https://mcp.push.org/api (Streamable HTTP, spec revision 2025-11-25; stateless JSON responses, read-only, no API key). Four tools: search_docs (ranked full-text search over the indexed docs pages), get_page (full page as clean markdown with title/url/section/lastUpdated frontmatter), list_sections (hierarchical docs tree), get_agent_resource (raw JSON of capabilities, errors, contract-addresses, supported-chains, sdk-capabilities, or changelog — snapshotted at site build time). Docs pages and the six agent files are also exposed as MCP resources under their canonical URLs. Artifacts are generated at site build time by a Docusaurus postBuild plugin into build/mcp/ (MiniSearch index, per-page markdown, manifest.json with build hash + doc count); pages containing raw i18n placeholder keys are excluded from the index and logged to build/mcp/skipped.json. Discovery document published at /.well-known/mcp.json.",
        "Updated the mcp-candidates.json description in index.json and llms.txt: docs access is now a supported tool server; SDK-operation candidates (send_universal_transaction, sign_universal_message, etc.) remain reference definitions to adapt per framework. Added a top-level mcp_server object to index.json for endpoint discovery."
      ],
      "files_affected": [
        "static/llms.txt",
        "static/agents/index.json",
        "static/agents/changelog.json",
        "static/.well-known/mcp.json",
        "build.agents.llms.mjs",
        "api/index.ts",
        "mcp/ (new workspace: build plugin, runtime, tests)",
        "plugins/docusaurus-plugin-push-mcp/",
        "vercel.json"
      ],
      "sdk_version": "6.0.19",
      "ui_kit_version": "6.0.18",
      "category": "mcp-server-launch",
      "trigger": "mcp-candidates.json shipped as reference definitions explicitly marked 'not a supported tool server'. The docs-access half is now a real, supported MCP endpoint: agents and MCP-capable clients (Claude, Cursor, Windsurf) get ranked search and clean-markdown page access to push.org docs without scraping HTML or adapting candidate definitions.",
      "breaking": false,
      "migration": "None. Additive: new endpoint, new discovery file, and description updates only. Existing consumers of mcp-candidates.json are unaffected; SDK-operation candidates remain reference definitions with unchanged shapes."
    },
    {
      "date": "2026-07-03T00:00:00.000Z",
      "version": "1.0.24",
      "changes": [
        "Bumped @pushchain/core 6.0.16 → 6.0.19 and @pushchain/ui-kit 6.0.16 → 6.0.18 across the agent layer (note the versions are intentionally unequal). Public-API delta verified by diffing the published npm tarballs' type definitions and dist JS between the pinned and new versions.",
        "EIP-7702 atomic batching for native Push Chain EOAs (core 6.0.19 headline). sendTransaction multicall (outer to = zero address, data = call array) from a Push-native EOA now executes the whole batch atomically in a single type-4 (SetCode) transaction: the EOA signs an authorization delegating its code to PushBatchExecutor (ERC-7821 executor, Donut: 0x0106BF2F9B02f32203A83a3bDaD79fE8818f3796, deployed 2026-06-22) and self-calls execute(mode, executionData). Requires a signAuthorization-capable signer — auto-wired by toUniversal for ethers v6 Wallet and viem local accounts; JSON-RPC/browser accounts and ethers v5 cannot sign authorizations, so the SDK raises the internal EIP7702NotSupportedError strictly pre-broadcast and safely falls back to the legacy sequential per-call loop (console.warn emitted). New additive response field atomic: boolean (false only on that sequential fallback; UEA_MULTICALL external-origin batches were already atomic and are unchanged). New validation: an inner multicall entry with a zero to address is rejected with PushChainExecutionError (ERC-7821 reinterprets target 0 as address(this)). UniversalSigner gains the optional signAuthorization method (SignAuthorizationParams → SignedAuthorization), accepted by PushChain.utils.signer.construct. Also corrected a stale claim carried since earlier versions: Push-native senders could already multicall in 6.0.16 (sequential loop) — the 'cannot use multicall / SDK will throw' text in the push-backend skill, send-universal-transaction workflow, and Send-Universal-Transaction docs page was wrong and is now fixed.",
        "Archive-RPC fallback for pruned history on Donut. Chain config gains archive endpoints (EVM https://archive.evm.donut.rpc.push.org/, Tendermint https://archive.donut.rpc.push.org/); history-sensitive SDK reads (getTransaction, receipts, trackTransaction status queries) automatically retry the archive on a pruned-history miss. No new public option; mainnet/localnet behavior unchanged. Documented in read-blockchain-state + track-transaction workflows, Reading-Blockchain-State + Track-Universal-Transaction docs, supported-chains.json (archive_rpc_url / archive_tendermint_rpc_url), and the push-backend skill.",
        "Progress hooks: no event IDs added, removed, or renumbered in 6.0.17–6.0.19 (verified against dist). Outbound wait-stage markers (awaiting/polling/timeout/failed) now carry pushTxHash in the event response (failed may also carry the destination txHash). Noted in progress-hook-events.md and the docs wait-stage payload tables.",
        "Smaller 6.0.19 items propagated: user-facing revert messages are now normalized/human-formatted (internal normalizePublicErrorMessage / formatDecodedRevertForUser); the internal gas calculator no longer shrinks the buffered WPC swap estimate below the swap's real minimum, so tight-balance preflights report the actual shortfall instead of an on-chain Uniswap STF revert (errors.json STF guidance updated); SDK-built outbound bridge payloads now approve only the PRC-20 burn amount with destination gas funded via native PC msg.value (swapAndBurnGas). ui-kit 6.0.18 is internal-only (viem/wagmi type refresh, Buffer polyfill hygiene, core re-pin to ^6.0.17) — no public component/prop/config changes.",
        "Registry updates: sdk-capabilities.json 1.0.1 → 1.1.0 (atomic batching, signAuthorization, archive fallback), errors.json 1.0.0 → 1.1.0 (multicall_zero_address_entry, eip7702_not_supported), contract-addresses.json 1.2.0 → 1.3.0 (PushBatchExecutor), feature-matrix.json, capabilities.json, constants.json patch bumps; version stamps refreshed across all agent-layer manifests; recovery-playbook multicall_partial_failure rewritten to the documented response.atomic detection signal."
      ],
      "files_affected": [
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-backend/references/signer-options.md",
        "static/agents/skills/push-backend/references/send-universal-transaction.md",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/skills/index.json",
        "static/agents/workflows/send-universal-transaction.md",
        "static/agents/workflows/send-multichain-transaction.md",
        "static/agents/workflows/progress-hook-events.md",
        "static/agents/workflows/read-blockchain-state.md",
        "static/agents/workflows/track-transaction.md",
        "static/agents/workflows/create-universal-signer.md",
        "static/agents/workflows/constants-reference.md",
        "static/agents/workflows/use-utility-functions.md",
        "static/agents/workflows/initialize-client.md",
        "static/agents/sdk-capabilities.json",
        "static/agents/capabilities.json",
        "static/agents/errors.json",
        "static/agents/contract-addresses.json",
        "static/agents/constants.json",
        "static/agents/feature-matrix.json",
        "static/agents/index.json",
        "static/agents/README.md",
        "static/agents/task-router.md",
        "static/agents/retrieval-map.json",
        "static/agents/routes.json",
        "static/agents/decision-tree.json",
        "static/agents/supported-chains.json",
        "static/agents/source-freshness.json",
        "static/agents/mcp-candidates.json",
        "static/agents/recovery-playbook.md",
        "static/agents/resources/index.json",
        "static/agents/schemas/universal-transaction-response.json",
        "static/agents/schemas/index.json",
        "static/agents/workflows/index.json",
        "static/agents/examples/index.json",
        "static/agents/changelog.json",
        "docs/chain/03-build/06-Send-Universal-Transaction.mdx",
        "docs/chain/03-build/07-Universal-Transaction-Scenarios.mdx",
        "docs/chain/03-build/13-Reading-Blockchain-State.mdx",
        "docs/chain/03-build/10-Track-Universal-Transaction.mdx",
        "docs/chain/02-setup/02-Smart-Contract-Address-Book.mdx",
        "docs/chain/03-build/01-advanced/01-Custom-Universal-Signer.mdx",
        "docs/chain/999-CHANGELOG.mdx",
        "build.agents.llms.mjs",
        "static/llms.txt"
      ],
      "sdk_version": "6.0.19",
      "ui_kit_version": "6.0.18",
      "category": "sdk-bump",
      "trigger": "package.json bumped @pushchain/core to ^6.0.19 and @pushchain/ui-kit to ^6.0.18 while the agent layer was pinned to 6.0.16 for both. Core 6.0.17–6.0.19 introduced real public-surface changes (EIP-7702 atomic batching, atomic response field, optional UniversalSigner.signAuthorization, archive-RPC fallback), unlike the byte-identical-constants re-pin in 1.0.22.",
      "breaking": false,
      "migration": "Additive and non-breaking for existing code. The atomic response field is new; existing single-call and external-origin flows behave identically. Two behavior notes: (1) a native-EOA batch from a local-key signer (ethers v6 Wallet / viem local account) now lands as ONE type-4 transaction instead of N sequential txs — indexers watching per-call txs should read the batch tx; (2) an inner multicall entry targeting the zero address now rejects pre-broadcast with PushChainExecutionError instead of sending to the zero address — use explicit targets. Browser (JSON-RPC) wallets keep the previous sequential behavior; check response.atomic when partial-execution matters."
    },
    {
      "date": "2026-07-02T00:00:00.000Z",
      "version": "1.0.23",
      "changes": [
        "Restructured SKILL.md YAML frontmatter on all three skills (push-frontend, push-backend, push-contracts) for Anthropic Agent Skills spec compliance. The spec allows only name, description, license, compatibility, metadata, and allowed-tools as top-level keys; the Claude Code / Claude desktop app skill-save validator hard-rejects anything else, so installing the skills raised a frontmatter error. All custom keys (id, intent, package, package_version, current_sdk_version, entry, resources, references, scripts) moved under the spec-sanctioned metadata: map. metadata values must be strings, so version numbers are quoted and list-valued fields (references, scripts) are comma-separated strings. Only name and description remain top-level. No body content changed; skills/index.json — which carries the same fields for machine consumption — is unchanged and remains the canonical machine-readable index.",
        "Applied the same fix to the external push-pusd skill in the push-chain-pusd repo (app/public/agents/skill/push-pusd/SKILL.md): version, network, chain_id, rpc, explorer, contracts.*, packages.*, and resources moved under metadata. The contracts/packages nested maps were flattened to contract_* / package_* string keys and chain_id stringified ('42101') — it previously parsed as a YAML number, violating the string-map requirement. All four skills now pass strict Agent Skills frontmatter validation (name/dir match, name pattern, description ≤ 1024 chars, no unknown top-level keys, string-only metadata)."
      ],
      "files_affected": [
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/changelog.json",
        "build.agents.llms.mjs",
        "static/llms.txt"
      ],
      "sdk_version": "6.0.16",
      "ui_kit_version": "6.0.16",
      "category": "frontmatter-spec-compliance",
      "trigger": "Saving the Push Chain skills into Claude (desktop app skill-save flow / Claude Code skill loader) failed with a frontmatter validation error: unknown top-level YAML keys are a hard rejection under the Agent Skills spec (agentskills.io) enforced by Anthropic's skill tooling.",
      "breaking": false,
      "migration": "No action needed for agents that read SKILL.md body content — nothing below the frontmatter changed. Tooling that previously read the custom frontmatter keys at the top level must now read them from the metadata: map; all values are strings there (list-valued fields are comma-separated). skills/index.json still exposes the same fields with full structure and is the preferred machine-readable source."
    },
    {
      "date": "2026-06-08T00:00:00.000Z",
      "version": "1.0.22",
      "changes": [
        "Bumped @pushchain/core 6.0.9 → 6.0.16 and @pushchain/ui-kit 6.0.12 → 6.0.16 across the agent layer (all current_sdk_version stamps, index.json sdk_version, the three skills' package_version / current_sdk_version, build.agents.llms.mjs SDK_VERSIONS, source-freshness.json). AGENT_LAYER_VERSION 1.0.21 → 1.0.22, AGENT_LAYER_DATE → 2026-06-08. Verified the public-API delta by diffing the SDK type definitions 6.0.9 → 6.0.16: constants/enums.d.ts, constants/chain.d.ts, constants/tokens.d.ts, and constants/selectors.d.ts are byte-identical, so chains, tokens, token accessors, selectors, contract addresses, and PushChain.CONSTANTS did not change — no value content was edited, only version stamps.",
        "Renamed the SEND-TX-203-02 progress-event title 'Execution Account Ready' → 'Execution Account Resolved' to match the 6.0.16 progress-hook source (the only progress-hook wording change in the range; no event IDs were added, removed, or renumbered). Updated workflows/progress-hook-events.md and workflows/send-multichain-transaction.md. Re-pinned the three inline '@pushchain/core@6.0.9' progress-hook references (progress-hook-events.md, send-universal-transaction.md, send-multichain-transaction.md) to 6.0.16.",
        "Documented the previously-undocumented client.universal.migrateCEA(chain) and client.universal.rescueFunds({ universalTxId, prc20 }) maintenance methods in sdk-capabilities.json (pushChainClient.universal namespace) and the push-backend skill (new '## Account & CEA Maintenance' section). migrateCEA upgrades a CEA on an external chain via a MIGRATION_SELECTOR Route 2 dispatch; rescueFunds recovers source-chain Vault funds locked by a failed Route 3 inbound via a manual TSS revert (TX_TYPE.RESCUE_FUNDS = 4). Both predate 6.0.9 but were never surfaced. Deliberately kept out of the intent-level capabilities.json: every entry there carries a real docs_url and these are niche recovery ops, not standalone agent intents."
      ],
      "files_affected": [
        "static/agents/index.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/source-freshness.json",
        "static/agents/changelog.json",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/workflows/progress-hook-events.md",
        "static/agents/workflows/send-multichain-transaction.md",
        "static/agents/workflows/send-universal-transaction.md",
        "build.agents.llms.mjs",
        "static/llms.txt"
      ],
      "sdk_version": "6.0.16",
      "ui_kit_version": "6.0.16",
      "category": "sdk-bump",
      "trigger": "package.json bumped @pushchain/core and @pushchain/ui-kit 6.0.13 → 6.0.16. The agent layer was pinned to core 6.0.9 / ui-kit 6.0.12 (the 1.0.21 audit deliberately kept the pin), so core 6.0.10–6.0.16 and ui-kit 6.0.13–6.0.16 were never recorded. This is a re-pin / sync pass, not a feature rewrite: the agent layer already covered the features shipped through 6.0.9 (ARBITRUM_SEPOLIA + BASE_SEPOLIA, the MOVEABLE/PAYABLE token taxonomy, WETH/stETH/DAI, USDT.bsc/USDC.bsc accessors, the explorer namespace, funds.getConversionQuote).",
      "breaking": false,
      "migration": "No code changes required. The 6.0.9 → 6.0.16 public-API delta is additive and non-breaking: trackTransaction gained options.chain (track by an origin/source-leg hash, resolved via the universal-tx detector), TxResponse / receipt / CascadeCompletionResult gained finalTxHash (one terminal 'where it landed' hash: R1 → hash, R2 → externalTxHash, R3 → pushInboundTxHash), and CascadeExecutionOptions gained a cascade-wide enforceGasCheck — all already documented in the agent layer. ui-kit 6.0.12 → 6.0.16 changed only the PushWalletToast internal (a failed toast now also triggers on level === 'ERROR'); no public type or config change, so the toast docs stay accurate."
    },
    {
      "date": "2026-06-06T00:00:00.000Z",
      "version": "1.0.21",
      "changes": [
        "Audit cleanup pass. Removed the stale 'Push → Sepolia outbound is not relayed by TSS / use BNB Testnet for now' caveat now that Push → Ethereum Sepolia outbound relays end-to-end on Donut Testnet. Deleted from push-contracts/SKILL.md (Limitations + Common Mistakes rows) and workflows/contract-initiated-multichain-execution.md (Common Failures row).",
        "Fixed push-frontend/SKILL.md cascade example to target PushChain.CONSTANTS.CHAIN.BNB_TESTNET (was POLYGON_AMOY, which is not in supported-chains.json).",
        "Fixed the Solana Devnet CAIP-2 in push-contracts/SKILL.md executeUniversalTx reference to the 32-char form solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 (was the full 44-char genesis hash), matching supported-chains.json and CAIP-2.",
        "Fixed workflows/use-contract-helpers.md bs58 import (default import, not named) and rewrote the advanced-custom-universal-signer example to match the documented signer contract (signAndSendTransaction returns the tx-hash Uint8Array via broadcastTransaction; ethers v6 signTypedData; ethers.getBytes for byte conversion).",
        "Reconciled BNB Testnet token lists in supported-chains.json to [BNB, USDT, USDC] (moveable + payable), matching constants.json and contract-addresses.json (previously listed ETH incorrectly and omitted USDC).",
        "Added PushUI.CONSTANTS.TOAST.POSITION (six anchors) to constants.json, propagating the ui-kit 6.0.12 toast surface beyond changelog/skill prose.",
        "Manifest completeness: added agents/routes.json and agents/mcp-candidates.json to index.json files[]; registered the theme-variables workflow in workflows/index.json (corrected metadata: write 9→10, total 17→18); catalogued five previously-orphaned example files in examples/index.json (2 multichain execute examples + 3 'removed in v6' tombstones); sub_index counts updated (examples 57→62, workflows 17→18). generated dates refreshed on touched files.",
        "Fixed the upstream docs source for the custom-signer example (docs/chain/03-build/01-advanced/01-Custom-Universal-Signer.mdx): corrected the schematic construct() option key (signTransaction → signAndSendTransaction with the defined function) and rewrote the Live Playground signing functions to the documented contract, keeping it in sync with examples/advanced-custom-universal-signer.md.",
        "Harmonized the UI-kit provider config shape across frontend workflows against the authoritative ProviderConfigProps type. connect-wallet-ui-kit.md now nests rpcUrls/blockExplorers under chainConfig, uses wallet: { enabled: true } (not the silently-ignored wallet: true), and passes app as a top-level provider prop (not inside config). use-universal-wallet-provider.md chainConfig.rpcUrls/blockExplorers types corrected to Partial<Record<CHAIN, string[]>>.",
        "Standardized the Hardhat solc version in configure-dev-environment.md to 0.8.26 (was 0.8.24), matching deploy-push-chain-contract.md and the contract examples.",
        "Corrected examples/index.json sdk_methods_used for four entries to match the actual code: track-transaction (was orchestrator.trackTransaction; the example tracks via sendTransaction + progressHook), send-transaction-ethers-basic (added sendTransaction), and execute-transactions / execute-transactions-fund-and-call (added prepareTransaction + executeTransactions).",
        "source-freshness.json: refreshed last_verified_date to 2026-06-06 for all internally-audited files (the push-pusd external entry is unchanged) and added the three previously-untracked dependency entries (contract-addresses.json, routes.json, changelog.json).",
        "Removed the stale 'Donut Testnet pSOL liquidity is shallow / use BNB Testnet first' caveat now that the PC↔pSOL pool is provisioned: dropped the Limitations row in push-contracts/SKILL.md and the trailing shallow-pool sentence in references/contract-interfaces.md. The Solana value-sizing guidance (size msg.value for the $PC→pSOL swap; a flat balance/2 reverts with STF) is retained as a real constraint."
      ],
      "files_affected": [
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/workflows/contract-initiated-multichain-execution.md",
        "static/agents/workflows/use-contract-helpers.md",
        "static/agents/workflows/index.json",
        "static/agents/examples/advanced-custom-universal-signer.md",
        "static/agents/examples/index.json",
        "static/agents/supported-chains.json",
        "static/agents/constants.json",
        "static/agents/index.json",
        "static/agents/changelog.json",
        "static/llms.txt",
        "build.agents.llms.mjs",
        "docs/chain/03-build/01-advanced/01-Custom-Universal-Signer.mdx",
        "static/agents/workflows/connect-wallet-ui-kit.md",
        "static/agents/workflows/use-universal-wallet-provider.md",
        "static/agents/workflows/configure-dev-environment.md",
        "static/agents/source-freshness.json",
        "static/agents/skills/push-contracts/references/contract-interfaces.md"
      ],
      "sdk_version": "6.0.9",
      "ui_kit_version": "6.0.12",
      "category": "audit-cleanup",
      "trigger": "Agent-layer audit identified stale claims (Push → Sepolia outbound), an unsupported-chain example (POLYGON_AMOY), a non-CAIP-2 Solana namespace, a bs58 import bug, a broken custom-signer example, a BNB token-list conflict between supported-chains.json and the other registries, the un-propagated ui-kit 6.0.12 TOAST constant, and manifest omissions (routes.json, mcp-candidates.json, theme-variables workflow, five orphaned examples).",
      "breaking": false,
      "migration": "No code changes required. Agents previously steered away from Push → Sepolia outbound (per the now-removed caveat) can target Ethereum Sepolia directly."
    },
    {
      "date": "2026-05-21T00:00:00.000Z",
      "version": "1.0.20",
      "changes": [
        "Bumped @pushchain/ui-kit 6.0.9 → 6.0.12 across the agent layer (index.json sdk_version sub-object, push-frontend SKILL.md package_version, build script SDK_VERSIONS.uiKit). @pushchain/core stays at 6.0.9; push-backend package_version unchanged. AGENT_LAYER_VERSION 1.0.19 → 1.0.20, AGENT_LAYER_DATE → 2026-05-21. llms.txt regenerated.",
        "Documented the new progress toast configuration shipped in ui-kit 6.0.12. ProviderConfigProps gained an optional `toast?: ToastProps` field where `ToastProps = { hidden?: boolean; position?: ToastPosition }`. Verified against /tmp/pushchain-ui-kit-6.0.12/package/src/lib/types/PushWalletProvider.types.d.ts (line 35 + lines 74-77) and the WalletContext renderer at context/WalletContext.js (passes config?.toast?.position and config?.toast?.hidden into PushWalletToast).",
        "ToastPosition enum has six anchors exposed via PushUI.CONSTANTS.TOAST.POSITION: TOP_LEFT, TOP_MIDDLE, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_MIDDLE, BOTTOM_RIGHT. Default is 'bottom-right'. Verified against components/PushWalletToast/index.d.ts TOAST_POSITION declaration and constants/index.js POSITION accessor.",
        "Documented the PUAToast className. The default className on the rendered PushWalletToast component is the literal string 'PUAToast' (verified in components/PushWalletToast/index.js line 37: `className = 'PUAToast'`). Surfaced this in the new Progress Toast section so devs can target the toast in their own CSS for restyling, repositioning via transform, or z-index layering without rewriting the component.",
        "push-frontend SKILL.md changes: (1) provider example in `## Setup - Wrap Your App` now includes a `toast: { position, hidden }` block inside `config` with inline defaults; (2) provider-shape callout (`⚠️ Provider prop shape`) now lists `toast` among the valid `config` keys (previously: network, login, uid, rpcUrl, modal, chainConfig, version); (3) new `## Progress Toast` section between Theme Customization and Hooks, covering config table, six position values, PUAToast CSS targeting examples, and a `hidden: true` callout for dApps that already surface progress through `tx.progressHook`."
      ],
      "files_affected": [
        "build.agents.llms.mjs",
        "static/llms.txt",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "static/agents/skills/push-frontend/SKILL.md",
        "package.json",
        "yarn.lock"
      ],
      "sdk_version": "6.0.9",
      "ui_kit_version": "6.0.12",
      "category": "ui-kit-feature-add",
      "trigger": "@pushchain/ui-kit published as 6.0.12 with a new progress toast configuration surface. Verified against the published 6.0.12 tarball: PushWalletProvider.types.d.ts adds `toast?: ToastProps` on ProviderConfigProps; PushWalletToast component carries the default className 'PUAToast' and accepts `toastPosition` / `hidden` props that the provider wires through from config.toast. No core changes.",
      "breaking": false,
      "migration": "No code changes required to existing apps. The toast renders in the default position (bottom-right) when omitted. To customize, add `toast: { position: PushUI.CONSTANTS.TOAST.POSITION.<ANCHOR>, hidden: false }` inside the provider config object. To restyle, target the `.PUAToast` className in your own CSS."
    },
    {
      "date": "2026-05-19T00:00:00.000Z",
      "version": "1.0.19",
      "changes": [
        "Bumped pinned SDK versions across the agent layer: @pushchain/core 6.0.8 → 6.0.9 and @pushchain/ui-kit 6.0.8 → 6.0.9. Build script constants SDK_VERSIONS.core, SDK_VERSIONS.uiKit, AGENT_LAYER_VERSION (1.0.18 → 1.0.19) updated; llms.txt regenerated. package_version frontmatter on push-frontend / push-backend SKILL.md bumped 6.0.8 → 6.0.9.",
        "6.0.9 SDK release notes (verified via diff against 6.0.8 tarball from npm): zero API surface change (all .d.ts files byte-identical), zero progress hook ID change, two internal .js files changed (execute-funds-payload.js + cascade.js, both internal orchestration improvements). Three documented default values changed: CascadeTrackOptions.pollingIntervalMs 5000 → 3000, CascadeTrackOptions.timeout 600000 → 300000 (10 min → 5 min); WaitForOutboundOptions initial wait 30000 → 15000, poll 5000 → 3000; OUTBOUND_MAX_TIMEOUT_MS 180000 → 300000. Defaults updated in send-multichain-transaction.md, push-backend/SKILL.md, and 08-Send-Multichain-Transactions.mdx (3 files × 4 spots each).",
        "Behavioral fix shipped in 6.0.9 (no doc impact needed beyond changelog narrative): the UGPC GasPriceBelowBase() revert (selector 0x05aab006) that intermittently failed Route 2 dispatches when the UniversalCore gas oracle lagged the destination chain's current base price is resolved. The SDK now buffers gas-price quotes against oracle staleness. Decided not to add GasPriceBelowBase to errors.json since the failure mode is no longer expected at the user level; if it resurfaces, errors.json can pick it up then.",
        "New internal helper added in 6.0.9: resolveR2DestinationFundsToken(token, targetChain, pushNetwork) in route-handlers.js. Not in the public TypeScript surface (no .d.ts export change visible to consumers); flagged here for completeness but no skill or capability doc needs to mention it."
      ],
      "files_affected": [
        "build.agents.llms.mjs",
        "static/llms.txt",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "static/agents/README.md",
        "static/agents/recovery-playbook.md",
        "static/agents/task-router.md",
        "static/agents/capabilities.json",
        "static/agents/constants.json",
        "static/agents/contract-addresses.json",
        "static/agents/decision-tree.json",
        "static/agents/errors.json",
        "static/agents/feature-matrix.json",
        "static/agents/mcp-candidates.json",
        "static/agents/retrieval-map.json",
        "static/agents/routes.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/source-freshness.json",
        "static/agents/supported-chains.json",
        "static/agents/examples/index.json",
        "static/agents/resources/index.json",
        "static/agents/skills/index.json",
        "static/agents/workflows/index.json",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/workflows/send-multichain-transaction.md",
        "docs/chain/03-build/08-Send-Multichain-Transactions.mdx",
        "package.json",
        "yarn.lock"
      ],
      "sdk_version": "6.0.9",
      "category": "sdk-version-bump",
      "trigger": "@pushchain/core and @pushchain/ui-kit published as 6.0.9. Maintenance release: fixes the UGPC GasPriceBelowBase() Route 2 revert and tunes cascade / outbound polling defaults. No API surface or progress hook changes. Documentation defaults updated to match the new constants.",
      "breaking": false,
      "migration": "If your code hardcoded the old CascadeTrackOptions defaults (pollingIntervalMs=5000, timeout=600000) by passing them explicitly, no change needed; you're already on the previous values. If you relied on the implicit defaults, your cascades now poll faster (3s vs 5s) and time out sooner (5 min vs 10 min). Pass explicit { pollingIntervalMs, timeout } if you want the old behavior."
    },
    {
      "date": "2026-05-19T00:00:00.000Z",
      "version": "1.0.18",
      "changes": [
        "Bumped pinned SDK versions across the agent layer: @pushchain/core 6.0.6 → 6.0.8 and @pushchain/ui-kit 6.0.6 → 6.0.8. Build script constants SDK_VERSIONS.core, SDK_VERSIONS.uiKit, AGENT_LAYER_VERSION (1.0.17 → 1.0.18), and AGENT_LAYER_DATE (2026-05-18 → 2026-05-19) updated; llms.txt regenerated.",
        "Audited the in-tree SKILL.md drafts against the installed @pushchain/core@6.0.8 + @pushchain/ui-kit@6.0.8 source. Three agent-trapping documentation bugs caught and fixed: (1) push-backend/SKILL.md now states that client.universal.account is a plain `0x${string}` address — not an object — and the Common Mistakes table calls out the `account.address` silent-undefined trap. Verified against orchestrator.d.ts (computeUEAOffchain returns `0x${string}`, getUOA returns UniversalAccount { chain, address }).",
        "(2) push-frontend/SKILL.md: PushUniversalWalletProvider provider example rewritten — `app`, `themeMode`, `themeOverrides` are TOP-LEVEL props on the provider, NOT keys inside `config`. `config` carries network, login, uid, rpcUrl, modal, chainConfig, version. Verified against ui-kit's PushWalletProvider.types.d.ts (PushWalletProviderProps definition).",
        "(3) push-frontend/SKILL.md: `login.wallet` must be the object form `{ enabled: true }` — bare boolean `wallet: true` is silently ignored by the provider and leaves pushChainClient null after connect. Verified against LoginMethodConfig.wallet?: { enabled?, chains?, excludedChains? }.",
        "New EIP-712 typed-data signing sections added in two places to close the cross-chain signing loop end-to-end. push-frontend/SKILL.md gained `## EIP-712 Typed-Data Signing (Cross-Chain Wallets)` covering the chainId trap (MetaMask rejects when domain.chainId ≠ active chainId), the fix (sign with origin chainId, route via pushChainClient.universal.signTypedData not (window as any).ethereum), and a slim Solidity skeleton with `if (req.originChainId == block.chainid)` branching for native Push EOAs vs cross-chain UEAs.",
        "push-contracts/SKILL.md gained the companion section `### Verifying EIP-712 Signatures from Cross-Chain Wallets` under `## 1 - IUEAFactory`. Full pattern: PaymentRequest typehash, domain rebuild with req.originChainId (NOT block.chainid), ECDSA.recover, branch on Push-native vs cross-chain origin, IUEAFactory.getUEAForOrigin resolution. Plus replay protection guidance (nonce keying, deadline, domain pinning, cross-chain replay), ERC-1271 fallback for contract signers, and anti-pattern table.",
        "docs/chain/03-build/08-Send-Multichain-Transactions.mdx (Cross-Chain AMM Swap: ETH → pSOL example): fixed the `📍 Solana CEA (Hop 5 destination)` log to display the base58 Solana address (DpYNdQbc7o47ShmsU1vfJswTvB5JLxgSXz1uvoN8LVMM-style) instead of the SDK's internal hex form (deriveSvmCeaPda returns 0x… hex by design — base58 is for display only). Hop 5's tx.to.address keeps the hex form since that's the wire format the SDK accepts for SVM targets. Reduced Hop 0 PC seed from 200 → 30 PC (the cascade only needs ~15-25 PC for hops 1-5 + SVM outbound gas-swap; fee-lock cost scales down accordingly).",
        "Cosmetic fix: removed broken markdown rendering of the type cast `const me = client.universal.account as `0x${string}`` in both push-backend and push-frontend Common Mistakes tables. Was previously rendered as literal `+ '`0x${string}`' +` concatenation. Now uses double-backtick code spans for inline backtick preservation.",
        "Added cross-skill discoverability pointers near the top of all three core SKILL.md files (push-frontend, push-backend, push-contracts). Two consistent callouts in each: (a) 'Full agent layer' pointing to https://push.org/llms.txt as the entry index for workflows, examples, error codes, constants, and routing decisions; (b) 'PUSD stablecoin?' pointing to https://pusd.push.org/agents/skill/push-pusd/SKILL.md for the native par-backed (PUSD) and yield-bearing (PUSD+) stablecoin integration. Second-sentence framing tailored per skill: frontend emphasizes cross-chain mint/redeem and NAV mechanics; backend emphasizes multicall sentinel pattern for one-signature deposits; contracts emphasizes IPUSD/IPUSDManager/IPUSDPlusVault interfaces and the role model.",
        "Audited the push-pusd skill (lives in the push-chain-pusd repo at app/public/agents/skill/push-pusd/SKILL.md) for the same agent-trap patterns caught in this pass. Fixed: 9 occurrences of `pushChainClient.universal.account.address` / `pc.universal.account.address` (silent-fail; account is `0x${string}`, .address returns undefined → recipient becomes address(0)); `wallet: true` → `wallet: { enabled: true }` in the provider login config; `app` moved from inside `config` to top-level prop on PushUniversalWalletProvider; and `PushChain.utils.signer.toUniversalFromEthersSigner(wallet)` (does not exist in the SDK — verified against signer.d.ts) replaced with `await PushChain.utils.signer.toUniversal(wallet)`. PUSD skill frontmatter resources expanded to include https://push.org/llms.txt; body gained a 'Push Chain agent layer' callout referencing the core skills. Source updated in `public/`; `dist/` rebuild pending on the PUSD repo side."
      ],
      "files_affected": [
        "build.agents.llms.mjs",
        "static/llms.txt",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "static/agents/README.md",
        "static/agents/recovery-playbook.md",
        "static/agents/task-router.md",
        "static/agents/capabilities.json",
        "static/agents/constants.json",
        "static/agents/contract-addresses.json",
        "static/agents/decision-tree.json",
        "static/agents/errors.json",
        "static/agents/feature-matrix.json",
        "static/agents/mcp-candidates.json",
        "static/agents/retrieval-map.json",
        "static/agents/routes.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/source-freshness.json",
        "static/agents/supported-chains.json",
        "static/agents/examples/index.json",
        "static/agents/resources/index.json",
        "static/agents/skills/index.json",
        "static/agents/workflows/index.json",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/workflows/send-multichain-transaction.md",
        "static/agents/workflows/send-universal-transaction.md",
        "docs/chain/03-build/08-Send-Multichain-Transactions.mdx",
        "package.json",
        "yarn.lock"
      ],
      "sdk_version": "6.0.8",
      "category": "sdk-version-bump",
      "trigger": "@pushchain/core and @pushchain/ui-kit published as 6.0.8. Audit pass against installed SDK source surfaced three agent-trap documentation defects in the SKILL.md files (account shape, provider props, login.wallet shape) and one gap (no EIP-712 cross-chain signing guidance). Documentation fixes verified directly against orchestrator.d.ts, PushWalletProvider.types.d.ts, and signer.js in node_modules/@pushchain/core@6.0.8 + @pushchain/ui-kit@6.0.8.",
      "breaking": false,
      "migration": "No breaking changes to the SDK surface. Documentation-only fixes: if your code previously read `client.universal.account.address` or `pushChainClient.universal.account.address`, that was always undefined — replace with `client.universal.account` directly. If your PushUniversalWalletProvider config nested `app` / `themeMode` / `themeOverrides` inside `config`, move them to top-level props. If your login config used `wallet: true`, switch to `wallet: { enabled: true }`. If you sign EIP-712 typed data from a cross-chain wallet, do not hardcode Push Chain's chainId — read origin chainId from pushChainClient.universal.origin.chain and rebuild the EIP-712 domain dynamically on the contract via req.originChainId. See [push-frontend EIP-712 section](https://push.org/agents/skills/push-frontend/SKILL.md#eip-712-typed-data-signing-cross-chain-wallets) and [push-contracts EIP-712 section](https://push.org/agents/skills/push-contracts/SKILL.md#verifying-eip-712-signatures-from-cross-chain-wallets)."
    },
    {
      "date": "2026-05-18T00:00:00.000Z",
      "version": "1.0.17",
      "changes": [
        "Bumped pinned SDK versions across the agent layer: @pushchain/core 6.0.3 → 6.0.6 and @pushchain/ui-kit 6.0.2 → 6.0.6. Build script constants SDK_VERSIONS.core, SDK_VERSIONS.uiKit, AGENT_LAYER_VERSION (1.0.16 → 1.0.17), and AGENT_LAYER_DATE (2026-05-17 → 2026-05-18) updated; llms.txt regenerated.",
        "Rewrote static/agents/workflows/progress-hook-events.md against the published 6.0.6 source (extracted from npm tarball, not the local SDK checkout which is on 4.x). Added: SEND-TX-103-03-04 (Route 1 Prepaid Deposit Estimated), SEND-TX-203-03/04/05 (Route 2 pre-flight balance check), SEND-TX-303-03-01/02/03 (Route 3 prepaid-deposit sub-events), SEND-TX-303-04/05/06 (Route 3 pre-flight), SEND-TX-003-03/04/05 (cascade pre-flight).",
        "Reconciled the three new progress hooks from v1.0.16's pre-bump (SEND-TX-199-03, SEND-TX-199-99, SEND-TX-399-99) with the canonical SDK titles and response shapes. Updated titles: 199-03 'Push Chain Shared Execute Timeout (UGPC relay pending)' → 'Syncing State with Push Chain Timeout', 199-99 'Push Chain Tx Completed (intermediate)' → 'Intermediate Push Chain Tx Completed', 399-99 'Round-trip Tx Completed (intermediate)' → 'Intermediate <chain> to Push Tx Completed'.",
        "Removed from progress-hook-events.md (no longer emitted by SDK 6.0.6): SEND-TX-102-02 (Route 1 Gas Estimated SUCCESS), SEND-TX-103-04 (renamed to 103-03-04), SEND-TX-199-99-99 (misplaced 5-part ID, superseded by 4-part 199-99), SEND-TX-302-03 + 302-03-01/02/03 (renumbered to 303-03-01/02/03), SEND-TX-302-04 (no replacement; Route 3 no longer emits a terminal 'estimated' wrapper).",
        "Added 'Pre-flight Balance Check Events' callout to progress-hook-events.md explaining the three-bucket pattern (Route 2 / Route 3 / cascade) and the level semantics (INFO when sufficient, WARNING when short with enforceGasCheck=false, ERROR terminal only with enforceGasCheck=true). Added 'Removed in 6.0.6' migration table for agents upgrading from earlier versions.",
        "Added current_sdk_version frontmatter field to all three SKILL.md files (push-frontend, push-backend, push-contracts). push-frontend and push-backend also carry package_version (6.0.6 for both). Frontmatter additions made in the prior pass, version values bumped here.",
        "Fixed duplicate resolveControllerAccount definition in push-backend/SKILL.md. Kept the { accounts: Array<...> } signature (canonical across sdk-capabilities.json, retrieval-map.json, task-router.md, workflows/use-utility-functions.md). Deleted the second definition with the broken convertExecutorToOriginAccount code example (that function was removed in @pushchain/core@6.0.0).",
        "Consolidated account.owner decoding rules in push-contracts/SKILL.md into a single 'Decoding account.owner' subsection between the inline IUEAFactory interface and the on-chain usage example, instead of three partial mentions scattered across the file. Removed the redundant inline note after the off-chain query example and the duplicate table at end-of-file. Added ethers.js EVM decode line (ethers.getAddress(ethers.hexlify(...))) which was missing before."
      ],
      "files_affected": [
        "build.agents.llms.mjs",
        "static/llms.txt",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "static/agents/README.md",
        "static/agents/skills/index.json",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/workflows/progress-hook-events.md"
      ],
      "sdk_version": "6.0.6",
      "category": "sdk-version-bump",
      "trigger": "@pushchain/core and @pushchain/ui-kit published as 6.0.6. SDK source extracted from npm tarball revealed a renumbering of Route 3 prepaid-deposit events and a new pre-flight UEA balance check trio (Route 2, Route 3, cascade) plus level semantics gated on tx.options.enforceGasCheck. progress-hook-events.md reconciled against published source.",
      "breaking": false,
      "migration": "Progress hook IDs changed. If your code matches on SEND-TX-102-02, SEND-TX-103-04, SEND-TX-199-99-99, or any SEND-TX-302-03-* / SEND-TX-302-04 ID, see the 'Removed in 6.0.6' table at the bottom of progress-hook-events.md for replacements."
    },
    {
      "date": "2026-05-17T00:00:00.000Z",
      "version": "1.0.16",
      "changes": [
        "Reshaped every Route 3 playground in docs/chain/03-build/07-Universal-Transaction-Scenarios.mdx and the matching agent-layer guidance around a clearer dev-ex model: most Route 3 calls only need the source-chain UOA funded (e.g. 0.01 Sepolia ETH); the CEA's destination-chain gas + first-time deployment is funded automatically by the SDK's UGPC swap path. Manual CEA funding is only needed when an asset is being bridged back from that chain.",
        "Replaced raw `CEAFactory.getCEAForPushAccount(...)` ABI usage in every Route 3 example with the canonical SDK helper `PushChain.utils.account.deriveExecutorAccount(uoa, { chain, skipNetworkCheck: true })`. Dropped the inline factory ABI, the per-example BNB JSON-RPC provider, and the hand-typed `0x3f1B16e0B072d472951C4563d29d3da6a3EE3Ce8` factory address from the playground bodies.",
        "Dropped the misleading `~$10 fee-lock deposit` / `One-time deposit covers CEA deployment` wording from every Route 3 funding prompt. The CEA does not receive a $10 deposit; the SDK fee-locks source-chain native to mint ~$1+ of PC into the UEA, then routes PC → UGPC → destination-chain native for CEA gas. The dev-facing prompts now just say what to fund and where, without exposing the SDK plumbing.",
        "Moved `progressHook` placement to per-call (`sendTransaction({ ..., progressHook })`) in every example in 07-Universal-Transaction-Scenarios.mdx. The `PushChain.initialize` call is now hook-free in all examples. One showcase (Multicall on Push Chain) keeps the richer hook signature that also surfaces `p.timestamp`.",
        "Bridge Native Back / Bridge Funds Back / Funds with Payload from CEA / Multicall from CEA / Solana CEA examples: funding asks now ordered UOA-first, CEA-second; amounts trimmed to match what the SDK actually consumes (e.g. 0.001 BNB for the Bridge Native Back burn, 0.01 USDT for the Bridge Funds Back burn); CEA address embedded inline in the prompt; consistent emoji + label scheme across all five examples (🔑 Sepolia UOA, 📍 UEA on Push Chain, 📍 CEA on <chain>, ✅ / 🌐 / 🔍 for final logs).",
        "Bridge Funds Back / Funds with Payload examples now point devs at the SDK-registered USDT contract on BNB Testnet (`PushChain.CONSTANTS.MOVEABLE.TOKEN.BNB_TESTNET.USDT.address` = 0xE935d9c9C24D02E61186c640cc01d713C876d40F) via its writeProxyContract page (`mint(address,uint256)` is function F3) instead of the generic BNB Chain faucet, since the SDK only routes the bridge through that specific deployed USDT.",
        "Bridge Native Back: replaced the failing viem-based CEA derivation (`bscTestnet` import was throwing 'BSC Testnet is not defined' at runtime in the playground env) with the same ethers + SDK pattern used by the other Route 3 examples. Bumped the bridged amount from a confusing 0.00005 BNB (a tiny slice of a 0.02 BNB ask) to a clean 0.001 BNB (exactly the bridge amount, with a matching 0.001 BNB funding ask). Bridge Native Back / Bridge Funds Back funding asks are now ordered UOA-first, CEA-second to match the typical funding flow (faucet first, then transfer to CEA).",
        "Added route-origin reference to every agent surface (decision-tree.json, README.md, task-router.md, workflows/send-universal-transaction.md, workflows/send-multichain-transaction.md). Each route now spells out the full set of allowed signing accounts: Route 1 = external wallet OR native Push Chain wallet; Route 2 = external wallet OR Push Account (UEA, native Push wallet, smart contract on Push); Route 3 = Push Account (UEA, native Push wallet, smart contract on Push) acting through its CEA on the named external chain.",
        "Added a Route 3 funding-pattern table to task-router.md and skills/push-backend/SKILL.md with the four sub-patterns (plain contract call, bridge native back, bridge funds back, funds-with-payload) and an explicit anti-pattern callout: do not tell devs to send '0.02 BNB to the CEA for gas + fee-lock deposit' for a plain Route 3 call.",
        "Solana CEA log in the Contract Call from a Solana CEA playground now converts the SDK's 0x-prefixed 32-byte hex address to canonical base58 via `new PublicKey(ethers.getBytes(solanaCEA.address)).toBase58()`. Devs see the familiar Solana wallet form (`D2u...`) instead of `0xb24bb3...` in console output.",
        "Bumped pinned SDK versions across the agent layer: `current_sdk_version` 6.0.2 → 6.0.3 in every JSON, README, recovery-playbook, and task-router. Matches `@pushchain/core@6.0.3` in the repo's package.json. `@pushchain/ui-kit` stays at 6.0.2; the frontend skill is unaffected.",
        "Added agents/routes.json as a machine-readable companion describing Push Chain's three universal transaction routes (id, internal_name, input_shape, execution_target, executor, origin_types, origin_note, use_cases, sdk_call, llms_summary, plus Route 3 funding_patterns and anti_pattern). build.agents.llms.mjs now reads route prose from routes.json instead of hardcoding it, so llms.txt regenerates automatically when routes.json changes. The other route-prose surfaces (README, task-router, decision-tree, workflows, skills) keep their human-oriented copies; no in-file pointer notes added since route definitions are stable and the extra prose would create its own drift-of-instructions problem.",
        "build.agents.llms.mjs constants synced: SDK_VERSIONS.core 6.0.1 → 6.0.3, SDK_VERSIONS.uiKit 6.0.1 → 6.0.2, AGENT_LAYER_VERSION 1.0.14 → 1.0.16, AGENT_LAYER_DATE 2026-05-16 → 2026-05-17. Added ROUTES_PATH constant and loadRoutes() helper following the same pattern as loadSkills / loadResources."
      ],
      "files_affected": [
        "docs/chain/03-build/07-Universal-Transaction-Scenarios.mdx",
        "static/agents/decision-tree.json",
        "static/agents/README.md",
        "static/agents/task-router.md",
        "static/agents/workflows/send-universal-transaction.md",
        "static/agents/workflows/send-multichain-transaction.md",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/changelog.json",
        "static/agents/constants.json",
        "static/agents/feature-matrix.json",
        "static/agents/capabilities.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/errors.json",
        "static/agents/retrieval-map.json",
        "static/agents/supported-chains.json",
        "static/agents/contract-addresses.json",
        "static/agents/mcp-candidates.json",
        "static/agents/source-freshness.json",
        "static/agents/index.json",
        "static/agents/resources/index.json",
        "static/agents/workflows/index.json",
        "static/agents/schemas/index.json",
        "static/agents/skills/index.json",
        "static/agents/examples/index.json",
        "static/agents/recovery-playbook.md",
        "static/agents/routes.json",
        "build.agents.llms.mjs",
        "static/llms.txt"
      ],
      "sdk_version": "6.0.3",
      "category": "dev-ex-pass",
      "trigger": "Manual review of the Route 3 playgrounds and the agent-layer route guidance. The playgrounds were asking devs to send BNB / SOL to the CEA for every Route 3 example (with $10-deposit language) when the CEA's gas is actually funded automatically through the UGPC swap path from source-chain fee-lock.",
      "breaking": false
    },
    {
      "date": "2026-05-16T00:00:00.000Z",
      "version": "1.0.15",
      "changes": [
        "Fixed the Cross-Chain AMM Swap playground in docs/chain/03-build/08-Send-Multichain-Transactions.mdx. The 6-hop cascade (ETH → pETH → WPC → pSOL → Solana) now runs end-to-end from a single user signature. Verified live on Push Chain Donut: Push tx 0xe9cb35b4fa3412143e8db23e7ba46f39f894d7949c85b7e7547c82590ceba8da + Solana tx 5PNf2FjDVmG8dZ6vJAkTm1oXPoqCrLqD1UtwHDfE3D757wkAHcf8ztR6Crr1FTi2cntv3jmMWYSAJ27iwvoB4T6a.",
        "Root cause of the prior broken example: the SwapRouter ABI we shipped used the Uniswap V3 SwapRouter02 7-field ExactInputSingleParams tuple (no deadline). Push Chain's deployed SwapRouter is the Uniswap V3 SwapRouter V1 — it takes an 8-field tuple WITH `deadline` between `recipient` and `amountIn`. Calling with the wrong tuple shape silently reverts with selector 0xacfdb444 (decoded as ExecutionFailed). Same bug fired for both single sendTransaction swaps and multi-hop cascades.",
        "Fix: the example now embeds the 8-field ExactInputSingleParams ABI inline so devs copying the playground get the right tuple shape without depending on any SDK-internal import path. Each swap hop populates a fresh `deadline` (now + 10 min).",
        "UX improvements applied while in the file:",
        "  - Hop 0 no longer sends a bogus `value: 25 PC` (which triggered an unrelated fresh-wallet gas-swap path). The SDK's $1 prepaid-deposit floor automatically seats ~7 PC on a fresh UEA — enough for hops 1-5 plus the SVM outbound.",
        "  - Dual-funding prompt collapsed to single-account: the user funds only the Sepolia UOA (~0.01 ETH). No manual UEA top-up step.",
        "  - pSOL console output now formats with 9 decimals (mirrors native SOL) instead of 18 — readable quote values like `0.0168 pSOL` instead of `0.0000000000169`.",
        "Source-chain stablecoin re-deployment (carried forward from v1.0.14 entry): new USDT contracts on Sepolia / Arbitrum Sepolia / Base Sepolia / BNB Testnet, plus a new USDC on BNB Testnet. SDK @pushchain/core@6.0.2 picks these up via the standard MOVEABLE.TOKEN accessors."
      ],
      "files_affected": [
        "docs/chain/03-build/08-Send-Multichain-Transactions.mdx",
        "static/agents/changelog.json"
      ],
      "sdk_version": "6.0.2",
      "category": "example-fix",
      "trigger": "Live end-to-end testing of the Cross-Chain AMM Swap playground surfaced a silent revert. Reverse-engineering a working RamenFi swap transaction on Push Chain (Push tx 0xddf7a51edee288cfa4b76ad83a598b215d959893ec69c936b4b37b91e07c7516) revealed the deployed SwapRouter expects the 8-field V1 tuple with `deadline`, not the 7-field V2 tuple the doc playground was using.",
      "breaking": false
    },
    {
      "date": "2026-05-16T00:00:00.000Z",
      "version": "1.0.14",
      "changes": [
        "Source-chain stablecoin re-deployment: new USDT contracts on Sepolia / Arbitrum Sepolia / Base Sepolia / BNB Testnet, plus a new USDC on BNB Testnet. The gateway now recognises these as the source assets. Verified on-chain — all five resolve to live 6-decimal `Tether USD` / `USD Coin` ERC-20s on their respective chains.",
        "static/agents/contract-addresses.json: source addresses under each chain's `supported_tokens.USDT` (Ethereum / Arbitrum / Base / BNB) and `bnb_testnet.supported_tokens.USDC` updated. `prc20_on_push` entries unchanged — Push-side PRC-20 wrappers verified live (`totalSupply = 100000` each); the bridge re-wires source -> existing PRC-20 transparently.",
        "docs/chain/02-setup/02-Smart-Contract-Address-Book.mdx: per-chain Supported Tokens tables (Ethereum / Arbitrum / Base / BNB) updated for the new USDT sources; BNB Testnet USDC row updated for the new USDC source. Annotated each PRC-20 cell with the SDK accessor name (`USDT.eth` / `USDT.arb` / `USDT.base` / `USDT.bnb` / `USDC.bsc`) for cross-reference.",
        "push-chain-examples: hardcoded old-USDT.eth references in `pusd-mint-from-external-chain` (.env.sample / README.md / index.ts), `pusd-redeem/index.ts`, `send-universal-transaction-pay-gas-with-any-token/README.md`, and `send-universal-transaction-with-funds/README.md` switched to the new USDT contract so the `mint` faucet links and script constants point at the live token."
      ],
      "files_affected": [
        "static/agents/contract-addresses.json",
        "docs/chain/02-setup/02-Smart-Contract-Address-Book.mdx",
        "core-sdk-functions/pusd-mint-from-external-chain/.env.sample",
        "core-sdk-functions/pusd-mint-from-external-chain/README.md",
        "core-sdk-functions/pusd-mint-from-external-chain/index.ts",
        "core-sdk-functions/pusd-redeem/index.ts",
        "core-sdk-functions/send-universal-transaction-pay-gas-with-any-token/README.md",
        "core-sdk-functions/send-universal-transaction-with-funds/README.md",
        "static/agents/changelog.json"
      ],
      "sdk_version": "6.0.1",
      "category": "address-update",
      "trigger": "Push team deployed new source-chain USDT contracts on Sepolia / Arbitrum Sepolia / Base Sepolia / BNB Testnet, plus a new USDC on BNB Testnet. Gateway re-wired to the new sources.",
      "breaking": false,
      "migration": "Push-side PRC-20 wrapper addresses are unchanged — no migration needed for code that holds or queries `USDT.eth` / `USDT.arb` / `USDT.base` / `USDT.bnb` / `USDC.bsc` PRC-20s on Push Chain. Source-chain USDT/USDC addresses are picked up via the standard SDK accessors `PushChain.CONSTANTS.MOVEABLE.TOKEN.<chain>.{USDT,USDC}` once the matching `@pushchain/core` release is installed."
    },
    {
      "date": "2026-05-16T00:00:00.000Z",
      "version": "1.0.13",
      "changes": [
        "All agent metadata files: bump current_sdk_version 6.0.0 -> 6.0.1 (matches @pushchain/core@6.0.1 and @pushchain/ui-kit@6.0.1 on npm).",
        "SDK v6.0.1 introduces a new canonical accessor `PushChain.CONSTANTS.MOVEABLE.TOKEN.PUSH_TESTNET_DONUT.USDC.bsc` for the Push-wrapped USDC from BNB Chain. The legacy `USDC.bnb` accessor still resolves to the same token but is marked @deprecated. Scope of the rename: USDC only. `USDT.bnb` and `pBnb` are unchanged. Verified at runtime: `m.USDT.bsc === undefined`, `m.USDC.bsc === m.USDC.bnb`.",
        "static/agents/constants.json: renamed `USDC.bnb` -> `USDC.bsc` in MOVEABLE.TOKEN.PUSH_TESTNET_DONUT.",
        "static/agents/contract-addresses.json: renamed `USDC_bnb` -> `USDC_bsc` under `from_bnb_testnet`, added `USDC_bsc_WPC` pool entry (`0xf09aD7D5e8800d0863F5ea845509bC1B1aCAe37a`), and an `_USDC_bnb_alias_note` documenting the deprecation.",
        "static/agents/workflows/constants-reference.md: row updated to `MOVEABLE.TOKEN.PUSH_TESTNET_DONUT.USDC.bsc` with a deprecation note for `.bnb`.",
        "docs/chain/03-build/99-Constants.mdx and docs/chain/02-setup/02-Smart-Contract-Address-Book.mdx: rendered constants and address tables updated to use `USDC.bsc` (PRC-20 row plus AMM pool row).",
        "src/components/ConstantsDropdown/ConstantsDropdown.tsx: dropdown chip switched from `USDC.bnb` to `USDC.bsc`.",
        "build.agents.llms.mjs: SDK_VERSIONS bumped to 6.0.1, AGENT_LAYER_VERSION -> 1.0.13, AGENT_LAYER_DATE -> 2026-05-16, and recent-changes line refreshed to describe the rename.",
        "Documented `tx.options.enforceGasCheck` (defaults to `false`) on `sendTransaction` and `prepareTransaction` across docs (06-Send-Universal-Transaction.mdx, 08-Send-Multichain-Transactions.mdx), agent capabilities (sdk-capabilities.json, capabilities.json — both single-tx and cascade entries), agent workflows (send-universal-transaction.md, send-multichain-transaction.md), and push-backend SKILL.md. When `true`, the SDK throws `InsufficientUEABalanceError` on pre-flight UEA-balance shortfall instead of emitting a `WARNING` and proceeding.",
        "errors.json: added `insufficient_uea_balance` entry documenting `InsufficientUEABalanceError` shape (required / available / shortfall / pathTag / reason / burnToken / segmentIndex) plus per-`reason` recovery steps."
      ],
      "files_affected": [
        "static/agents/constants.json",
        "static/agents/contract-addresses.json",
        "static/agents/workflows/constants-reference.md",
        "src/components/ConstantsDropdown/ConstantsDropdown.tsx",
        "docs/chain/03-build/99-Constants.mdx",
        "docs/chain/02-setup/02-Smart-Contract-Address-Book.mdx",
        "build.agents.llms.mjs",
        "static/agents/index.json",
        "static/agents/source-freshness.json",
        "static/agents/capabilities.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/decision-tree.json",
        "static/agents/errors.json",
        "static/agents/feature-matrix.json",
        "static/agents/mcp-candidates.json",
        "static/agents/retrieval-map.json",
        "static/agents/supported-chains.json",
        "static/agents/examples/index.json",
        "static/agents/resources/index.json",
        "static/agents/schemas/index.json",
        "static/agents/skills/index.json",
        "static/agents/workflows/index.json",
        "static/agents/README.md",
        "static/agents/recovery-playbook.md",
        "static/agents/task-router.md",
        "static/agents/changelog.json"
      ],
      "sdk_version": "6.0.1",
      "category": "sdk-bump",
      "trigger": "SDK v6.0.1 release: renamed USDC.bnb -> USDC.bsc on the MOVEABLE token accessor to align with the chain's canonical name (Binance Smart Chain). USDT.bnb and pBnb retained their .bnb labels in this release.",
      "breaking": false,
      "migration": "Existing code calling `PushChain.CONSTANTS.MOVEABLE.TOKEN.PUSH_TESTNET_DONUT.USDC.bnb` continues to work in v6.0.1 (compile-time `@deprecated` warning only). For new code, use `USDC.bsc`. No change needed for `USDT.bnb` or `pBnb` references — those accessors are unchanged. Address registry keys aligned: `USDC_bnb` -> `USDC_bsc` in contract-addresses.json's `from_bnb_testnet` section."
    },
    {
      "date": "2026-05-15T00:00:00.000Z",
      "version": "1.0.12",
      "changes": [
        "All agent metadata files: bump current_sdk_version 5.1.17 -> 6.0.0 (matches @pushchain/core@6.0.0 and @pushchain/ui-kit@6.0.0 on npm).",
        "static/agents/contract-addresses.json: refreshed CEAFactory addresses on Sepolia / Arbitrum / Base / BNB plus USDT PRC-20 addresses for all chains (live SDK v6 deployments).",
        "static/agents/resources/push-contracts/IUniversalGatewayPC.sol: UniversalOutboundTxRequest struct gained gasPrice and maxPCForGas fields (8 fields total). recipient field kept unchanged (matches canonical TypesUGPC.sol).",
        "docs/chain/01-tutorials/02-power-features/04-Tutorial-Universal-Cross-Chain-Counter.mdx + tutorials/universal-cross-chain-counters READMEs: refreshed reference deployment table with redeployed SDK v6 contracts (MultiChainCounter on Push Donut, ExternalCounter on Sepolia + BNB Testnet)."
      ],
      "files_affected": [
        "static/agents/index.json",
        "static/agents/source-freshness.json",
        "static/agents/contract-addresses.json",
        "static/agents/capabilities.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/constants.json",
        "static/agents/decision-tree.json",
        "static/agents/errors.json",
        "static/agents/feature-matrix.json",
        "static/agents/mcp-candidates.json",
        "static/agents/retrieval-map.json",
        "static/agents/supported-chains.json",
        "static/agents/examples/index.json",
        "static/agents/resources/index.json",
        "static/agents/schemas/index.json",
        "static/agents/skills/index.json",
        "static/agents/workflows/index.json",
        "static/agents/README.md",
        "static/agents/recovery-playbook.md",
        "static/agents/task-router.md",
        "static/agents/resources/push-contracts/IUniversalGatewayPC.sol",
        "docs/chain/01-tutorials/02-power-features/04-Tutorial-Universal-Cross-Chain-Counter.mdx"
      ],
      "sdk_version": "6.0.0",
      "category": "sdk-bump",
      "trigger": "SDK v6 release: UGPC outbound struct gained gasPrice + maxPCForGas; CEAFactory + USDT PRC-20 addresses changed across all destination chains; push-chain-examples contracts redeployed against v6 layout (universal-cross-chain-counters tutorial verified end-to-end).",
      "breaking": true,
      "migration": "Contracts calling UGPC.sendUniversalTxOutbound must populate the two new fields (gasPrice + maxPCForGas). For most flows both default to 0 (UGPC auto-prices and uses the EOA's PC). PRC-20 holders on Sepolia/Arb/Base/BNB testnets should re-derive USDT addresses from contract-addresses.json. App code calling deriveExecutorAccount or factoryAddress should consult the refreshed CEAFactory entries."
    },
    {
      "date": "2026-05-10T00:00:00.000Z",
      "version": "1.0.11",
      "changes": [
        "decision-tree.json: bump 1.2.0 -> 1.3.0. Add new tree `choose_pusd_product` with 3 branches (PUSD = 1:1 stable / PUSD+ = NAV-bearing yield / preview NAV before mint or redeem). Tree marked external:true with external_skill_url pointing at the push-pusd SKILL on pusd.push.org. Each branch documents contract calls, two-mint-routes for PUSD+ (depositToPlus direct vs vault.deposit wrap), 3-tier PUSD+ redemption fulfillment, and the no-fee wrap path. Trees prior to this all routed through SDK capability_ids; this one routes through an external skill.",
        "task-router.md: enhance the 'Mint or Redeem PUSD / PUSD+' section. Add a 'Two products, distinct intents' row that explicitly contrasts PUSD (no yield) vs PUSD+ (NAV-bearing). Add 3 new code examples: B (mint PUSD+ direct from reserves via depositToPlus), C (wrap existing PUSD into PUSD+ via vault.deposit, no wrap fee), D (preview NAV via previewMintPlus / previewBurnPlus, no signature). Cross-link to the new decision tree branch via a comment marker."
      ],
      "files_affected": [
        "static/agents/decision-tree.json",
        "static/agents/task-router.md",
        "static/agents/changelog.json"
      ],
      "sdk_version": "5.1.17",
      "category": "external-product-routing",
      "trigger": "Decision-tree gap from prior audit: PUSD was reachable via skills/index.json, task-router.md, retrieval-map.json, source-freshness.json, and llms.txt, but not via decision-tree.json. Adding a dedicated tree closes the gap and makes PUSD vs PUSD+ a first-class branching decision rather than a single combined entry.",
      "breaking": false
    },
    {
      "date": "2026-05-10T00:00:00.000Z",
      "version": "1.0.10",
      "changes": [
        "All agent metadata files: bump current_sdk_version 5.1.12 -> 5.1.17 and ui-kit 5.2.3 -> 5.2.10 (live npm versions). Affects llms.txt frontmatter as well.",
        "Add push-pusd as the 4th skill (external, hosted on pusd.push.org). Wired into llms.txt (Skills bullet + new 'Products on Push Chain' section), agents/README.md (skills table row marked external), agents/skills/index.json (new entry with external/host/agent_layer/repo fields), agents/task-router.md (new 'Mint or Redeem PUSD / PUSD+' section + Quick Reference row), agents/retrieval-map.json (new entry with external=true), agents/source-freshness.json (new dependency entry tracking the external skill).",
        "skills/index.json: bump schema_version 1.0.0 -> 1.1.0, document new optional fields (external, host, agent_layer, repo) in schema_notes for external skills.",
        "agents/workflows/contract-initiated-multichain-execution.md: fix gasLimit:0 contradiction. Both Minimal Complete Contract examples now use gasLimit: 2_000_000 (matches the round-trip section's hard requirement). Updated Agent Notes wording.",
        "agents/skills/push-contracts/SKILL.md: add 6 new rows to Common Mistakes table covering empirical findings (gasLimit floor, destination CEA prefunding, Solana STF + value sizing, Push -> Sepolia outbound TSS gap, 6-arg-only inbound dispatch, refund accumulation). Added a 'Two distinct UG entry points' callout disambiguating sendUniversalTx (4-param, inbound) vs sendUniversalTxFromCEA (round-trip back-leg)."
      ],
      "files_affected": [
        "static/llms.txt",
        "static/agents/README.md",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "static/agents/capabilities.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/supported-chains.json",
        "static/agents/feature-matrix.json",
        "static/agents/decision-tree.json",
        "static/agents/errors.json",
        "static/agents/retrieval-map.json",
        "static/agents/mcp-candidates.json",
        "static/agents/source-freshness.json",
        "static/agents/recovery-playbook.md",
        "static/agents/task-router.md",
        "static/agents/examples/index.json",
        "static/agents/skills/index.json",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/workflows/index.json",
        "static/agents/workflows/contract-initiated-multichain-execution.md",
        "static/agents/resources/index.json",
        "static/agents/resources/push-frontend/package.json",
        "static/agents/schemas/index.json",
        "static/agents/constants.json",
        "static/agents/contract-addresses.json"
      ],
      "sdk_version": "5.1.17",
      "category": "version-bump+integration+docs-fix",
      "trigger": "Audit cycle 2026-05-10: SDK npm versions had drifted (5.1.12 -> 5.1.17), workflow contradicted itself on gasLimit, push-pusd was a new external product missing from the discovery layer, push-contracts SKILL Common Mistakes table missing empirical findings from Donut Testnet validation",
      "breaking": false
    },
    {
      "date": "2026-04-24T00:00:00.000Z",
      "version": "1.0.9",
      "changes": [
        "contract-addresses.json: update USDC_eth_WPC pool (0x69B21→0x524B9), USDC_arb_WPC pool (0xF3578→0xB3ccb), USDC_base_WPC pool (0x96Ef4→0xC76D2)",
        "contract-addresses.json: update ETH Sepolia gateway impl (0xA787f→0xa594c), Base Sepolia gateway impl (0xd1d25→0x9f63e)",
        "contract-addresses.json: update Base Sepolia USDC source (0x5dd39→0x5c350)",
        "contract-addresses.json: rename BNB testnet native_ETH→native_BNB, remove DAI entry",
        "constants.json: rename MOVEABLE.TOKEN.BNB_TESTNET.ETH→BNB (Native BNB), PUSH_TESTNET_DONUT.pEthBnb→pBnb",
        "llms-full.txt: sync all above changes plus BNB table Native ETH→Native BNB and DAI row removal",
        "All agent metadata files: bump current_sdk_version 5.1.7→5.1.12"
      ],
      "files_affected": [
        "static/agents/contract-addresses.json",
        "static/agents/constants.json",
        "static/llms-full.txt",
        "static/agents/changelog.json",
        "static/agents/index.json",
        "static/agents/capabilities.json",
        "static/agents/sdk-capabilities.json",
        "static/agents/supported-chains.json",
        "static/agents/feature-matrix.json",
        "static/agents/decision-tree.json",
        "static/agents/errors.json",
        "static/agents/retrieval-map.json",
        "static/agents/mcp-candidates.json",
        "static/agents/source-freshness.json",
        "static/agents/recovery-playbook.md",
        "static/agents/README.md",
        "static/agents/task-router.md",
        "static/agents/examples/index.json",
        "static/agents/skills/index.json",
        "static/agents/workflows/index.json",
        "static/agents/resources/index.json",
        "static/agents/schemas/index.json"
      ],
      "sdk_version": "5.1.17",
      "category": "address-sync",
      "trigger": "Sync contract addresses and constants from MDX docs update: AMM pool redeploys, gateway impl upgrades, Base Sepolia USDC source change, BNB native token rename, pEthBnb→pBnb constant rename",
      "breaking": false
    },
    {
      "date": "2026-04-21T17:54:00.000Z",
      "version": "1.0.8",
      "changes": [
        "push-frontend/SKILL.md: added name and description fields to YAML frontmatter (above id) for Anthropic skill-loader compatibility",
        "push-backend/SKILL.md: added name and description fields to YAML frontmatter (above id) for Anthropic skill-loader compatibility",
        "push-contracts/SKILL.md: added name and description fields to YAML frontmatter (above id) for Anthropic skill-loader compatibility"
      ],
      "files_affected": [
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-contracts/SKILL.md",
        "static/agents/changelog.json"
      ],
      "sdk_version": "5.1.7",
      "category": "skill-revision",
      "trigger": "Add name + description frontmatter fields to all three skill files for Anthropic skill-loader compatibility",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-21T00:00:00.000Z",
      "version": "1.0.7",
      "changes": [
        "decision-tree.json: added capability_ids array to all 28 branches across 9 trees (25 distinct capability references); bumped to v1.2.0",
        "decision-tree.json: added mapping_note to 3 diagnostic-only branches in handle_transaction_failure (capability_ids: [])",
        "task-router.md: added version/schema/sdk/generated header comment at file top",
        "task-router.md: added capability_ids HTML comment block under all 13 section headings (12 problem sections + Quick Reference Table)",
        "Coverage result: 22/25 capabilities now reachable via decision-tree or task-router; 3 intentional gaps documented (contract_initiated_multichain, get_constants, use_contract_helpers)"
      ],
      "files_affected": [
        "static/agents/decision-tree.json",
        "static/agents/task-router.md",
        "static/agents/changelog.json",
        "static/llms.txt"
      ],
      "sdk_version": "5.1.7",
      "category": "capability-linkage",
      "trigger": "Close P3 finding — cross-file capability linkage from routing layer",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-21T00:00:00.000Z",
      "version": "1.0.6",
      "changes": [
        "index.json: added schemas/index.json and skills/index.json to the description's sub-index list (were previously omitted)",
        "index.json: added top-level sub_indexes array with category, path, and count fields for all 5 sub-indexes (examples:60, workflows:17, resources:3, schemas:7, skills:3)",
        "index.json: bumped version from 1.0.0 to 1.1.0 (additive field added)",
        "index.json: updated generated timestamp to 2026-04-21"
      ],
      "files_affected": [
        "static/agents/index.json",
        "static/agents/changelog.json",
        "static/llms.txt"
      ],
      "sdk_version": "5.1.7",
      "category": "metadata-normalization",
      "trigger": "Close P3 finding — clarify index.json manifest scope and expose sub-index references as structured metadata",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-21T00:00:00.000Z",
      "version": "1.0.5",
      "changes": [
        "recovery-playbook.md: added dedicated recovery entries for unsupported_chain",
        "recovery-playbook.md: added dedicated recovery entry for signature_mismatch",
        "recovery-playbook.md: added dedicated recovery entry for invalid_tx_hash",
        "recovery-playbook.md: added dedicated recovery entry for tx_timeout",
        "recovery-playbook.md: added dedicated recovery entry for uea_not_deployed",
        "recovery-playbook.md: added dedicated recovery entry for chain_not_supported_for_cea",
        "recovery-playbook.md: added dedicated recovery entry for uea_upgrade_required",
        "recovery-playbook.md: added dedicated recovery entry for funds_transfer_failed",
        "recovery-playbook.md: added dedicated recovery entry for multicall_partial_failure",
        "recovery-playbook.md: added YAML front matter with schema_version, version, current_sdk_version, generated",
        "recovery-playbook.md: renumbered General Recovery Patterns → Section 7, Escalation Protocol → Section 8",
        "changelog.json: bumped current_version from 1.0.4 to 1.0.5",
        "llms.txt: added v1.0.5 bullet to Changelog section; bumped header version to v1.0.5"
      ],
      "files_affected": [
        "static/agents/recovery-playbook.md",
        "static/agents/changelog.json",
        "static/llms.txt"
      ],
      "sdk_version": "5.1.7",
      "category": "playbook-completion",
      "trigger": "Close P1 gap — 9 missing errors/recovery-playbook entries",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-20T00:00:00.000Z",
      "version": "1.0.4",
      "changes": [
        "Metadata normalization sweep across all 16 agent-layer JSON files",
        "Added current_sdk_version: 5.1.7 to all files that lacked it (constants.json, contract-addresses.json, feature-matrix.json, index.json, source-freshness.json, supported-chains.json, schemas/index.json, skills/index.json, workflows/index.json, resources/index.json)",
        "Wrapped 3 bare-array roots in canonical object envelopes: errors.json → {errors:[]}, mcp-candidates.json → {candidates:[]}, examples/index.json → {examples:[]}",
        "Renamed last_generated → generated in source-freshness.json; added description field",
        "Added version + generated + description to changelog.json; added current_sdk_version",
        "Added schema_version + version + current_sdk_version + generated to skills/index.json (had only description)",
        "Added version + current_sdk_version to workflows/index.json",
        "Updated stale generated timestamps to 2026-04-20 in constants.json, feature-matrix.json, supported-chains.json, schemas/index.json"
      ],
      "files_affected": [
        "static/agents/changelog.json",
        "static/agents/constants.json",
        "static/agents/contract-addresses.json",
        "static/agents/errors.json",
        "static/agents/feature-matrix.json",
        "static/agents/index.json",
        "static/agents/mcp-candidates.json",
        "static/agents/source-freshness.json",
        "static/agents/supported-chains.json",
        "static/agents/schemas/index.json",
        "static/agents/examples/index.json",
        "static/agents/skills/index.json",
        "static/agents/workflows/index.json",
        "static/agents/resources/index.json"
      ],
      "sdk_version": "5.1.7",
      "category": "metadata-normalization",
      "trigger": "Metadata normalization audit pass — align all JSON files to capabilities.json canonical shape",
      "breaking": true,
      "migration": "errors.json: was array root, now object — use .errors[N] instead of [N]. mcp-candidates.json: was array root, now object — use .candidates[N] instead of [N]. examples/index.json: was array root, now object — use .examples[N] instead of [N]. Each wrapped file includes a migration_note field with the exact access path change."
    },
    {
      "date": "2026-04-17T17:00:00.000Z",
      "version": "1.0.3",
      "changes": [
        "push-backend SKILL.md: moved Read Blockchain State section to immediately after EVM Compatible (fixes agent context-window retrieval ordering)",
        "push-backend SKILL.md: added ⚠️ read-only client callout near PushChain.initialize read-only block",
        "push-backend SKILL.md: fixed trackTransaction default chain from bare CHAIN.PUSH_TESTNET_DONUT to fully-qualified PushChain.CONSTANTS.CHAIN.PUSH_TESTNET_DONUT",
        "push-backend SKILL.md: fixed formatUnits argument name from options.decimals/options.precision to decimals: number | { decimals, precision? }",
        "push-backend SKILL.md: expanded Route 3 section with CEA explanation, universal vault flow, and ASCII diagram",
        "push-backend SKILL.md: added TxResponse note — external chain fields only available on TxReceipt after tx.wait()",
        "push-backend SKILL.md: expanded CascadedTxResponse table — initialTxHash vs initialTxResponse disambiguation",
        "push-backend SKILL.md: added try/catch + errors.json link to tx.wait() example",
        "push-backend SKILL.md: added security comments on PRIVATE_KEY and SOLANA_KEY env var loading",
        "push-backend SKILL.md: added encodeTxData bigint args example with TypeScript strictness note",
        "push-backend SKILL.md: added Contract Helpers cross-ref to deriveExecutorAccount for off-chain usage",
        "push-backend SKILL.md: added client.orchestrator is internal SDK note",
        "push-backend SKILL.md: added multicall zero-address explanation and External-chain-origin-only constraint",
        "push-backend SKILL.md: fixed LIBRARY comment — SOLANA_WEB3JS is for toUniversalFromKeypair; link to constants-reference.md",
        "push-frontend SKILL.md: expanded Route 3 section with full CEA explanation, vault flow, and diagram",
        "push-frontend SKILL.md: fixed install block — moved CLI comments out of code fence into blockquote",
        "push-frontend SKILL.md: replaced imaginary <ErrorBanner>/<Spinner> in guard pattern with concrete HTML elements",
        "push-frontend SKILL.md: added usePushChain hook-vs-direct-import note",
        "workflows/use-utility-functions.md: fixed formatUnits arg name; added encodeTxData bigint example",
        "workflows/track-transaction.md: fixed CHAIN.PUSH_TESTNET_DONUT to fully-qualified path",
        "workflows/send-multichain-transaction.md: expanded Route 3 section with CEA explanation, vault flow, diagram; fixed initialTxResponse note",
        "workflows/send-universal-transaction.md: added try/catch + receipt.status check + errors.json link to basic send example",
        "workflows/initialize-client.md: added ⚠️ read-only warning; updated PRIVATE_KEY placeholders to process.env; added orchestrator internal note",
        "workflows/create-universal-signer.md: updated PRIVATE_KEY placeholders to process.env; added LIBRARY constants link",
        "workflows/use-contract-helpers.md: added cross-ref to deriveExecutorAccount for off-chain use"
      ],
      "files_affected": [
        "static/agents/skills/push-backend/SKILL.md",
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/workflows/use-utility-functions.md",
        "static/agents/workflows/track-transaction.md",
        "static/agents/workflows/send-multichain-transaction.md",
        "static/agents/workflows/send-universal-transaction.md",
        "static/agents/workflows/initialize-client.md",
        "static/agents/workflows/create-universal-signer.md",
        "static/agents/workflows/use-contract-helpers.md",
        "static/agents/changelog.json"
      ],
      "sdk_version": "5.1.7",
      "category": "skill-revision",
      "trigger": "16-issue audit pass — push-backend SKILL.md + propagation to workflows",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-17T07:20:00.000Z",
      "version": "1.0.2",
      "changes": [
        "Rewrote push-frontend SKILL.md: merged duplicate Hooks sections into single table+note format",
        "Added canonical guard pattern (error → isInitialized → pushChainClient)",
        "Fixed usePushChain() description: removed misleading PushChain.initialize() reference",
        "Enumerated connectionStatus values (NOT_CONNECTED, CONNECTING, CONNECTED)",
        "Added Route 3 section with code example (from: { chain } CEA-origin pattern)",
        "Replaced single-hop cascade with real 2-hop example + progressHook + result.success check",
        "Fixed signMessage example to use Uint8Array (recommended); clarified return type",
        "Added @pushchain/core import clarity note (bundled in ui-kit, no separate install)",
        "Added SSR / Next.js 'use client' warning in Setup section",
        "Surfaced themeMode in top-level walletConfig example",
        "Clarified loginAppOverride vs modalAppOverride (pre/post-auth distinction)",
        "Updated create-universal-dapp description (Next.js or CRA choice)",
        "Replaced thin Notes section with Common Mistakes table (5 rows)",
        "Fixed signMessage signature in sdk-capabilities.json (string | Uint8Array)",
        "Fixed usePushChain description in ui-components.md"
      ],
      "files_affected": [
        "static/agents/skills/push-frontend/SKILL.md",
        "static/agents/skills/push-frontend/references/ui-components.md",
        "static/agents/sdk-capabilities.json",
        "static/agents/changelog.json"
      ],
      "sdk_version": "5.1.7",
      "category": "skill-revision",
      "trigger": "Claude audit pass — push-frontend SKILL.md 13-issue review",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-17T06:21:28.989Z",
      "version": "1.0.1",
      "changes": [
        "Added Common Mistakes table (7 rows) to llms.txt",
        "Expanded Minimal Example with origin-chain provider variants",
        "Corrected Solana signer hint (Connection → toUniversalFromKeypair pattern)",
        "Added Claude.ai Projects to AI Editor integrations",
        "Faucet rate limits confirmed and documented (1 PC / 6 h, CAPTCHA-gated)",
        "Added Route 1 taxonomy comment to Minimal Example",
        "Added machine-readable changelog.json link to llms.txt Changelog section"
      ],
      "files_affected": [
        "static/llms.txt",
        "build.agents.llms.mjs",
        "static/agents/changelog.json"
      ],
      "sdk_version": "5.1.7",
      "category": "content-polish",
      "trigger": "manual audit pass — llms.txt polish",
      "breaking": false,
      "migration": null
    },
    {
      "date": "2026-04-17T04:23:42.400Z",
      "version": "1.0.0",
      "changes": [
        "Initial /agents/ layer generated",
        "Pinned SDK versions: @pushchain/core@5.1.4, @pushchain/ui-kit@5.2.10",
        "Corrected Route 1/2 descriptions for native Push Chain accounts",
        "Added Route 3 CEA-identity semantics",
        "Added Core / Extended agent layer tiers",
        "Directives expanded to 7 (split ethers/viem rule; added agent key model)",
        "Added Minimal Example section",
        "Grouped canonical workflows by category",
        "Designated contract-addresses.json as authoritative address source",
        "Created mcp-candidates.json with 12 MCP tool candidates",
        "Created source-freshness.json for dependency tracking"
      ],
      "files_affected": [
        "static/llms.txt",
        "build.agents.llms.mjs",
        "static/agents/index.json",
        "static/agents/mcp-candidates.json",
        "static/agents/workflows/index.json",
        "static/agents/changelog.json",
        "static/agents/source-freshness.json"
      ],
      "sdk_version": "5.1.4",
      "category": "initial-generation",
      "trigger": "build.agents.mjs initial run + manual audit pass",
      "breaking": false,
      "migration": null
    }
  ]
}
