Mandatory Policy: All work, including minor and major milestones, architectural shifts, and feature additions, MUST be documented in this changelog. No exceptions. This ensures transparency and a clear "building in public" record for the totality of the repo.
- Write Nonce Recovery Hardening: Updated
packages/api/src/shared/execution-context.tsso API-layer write retries now treatreplacement fee too low,replacement transaction underpriced,transaction underpriced, andalready knownas nonce-recovery conditions. Retry nonce selection now advances past the local signer watermark instead of reusing a stalependingnonce when Base Sepolia nodes lag on pending nonce propagation. - Gas-Aware Native Funding Helpers: Updated
packages/api/src/app.contract-integration.test.tsandscripts/base-sepolia-operator-setup.tsso native-balance top-ups reserve transfer gas before selecting a funder. This removes the prior false-positive funding attempts where a wallet appeared solvent on raw balance but could not actually covervalue + gas, andsetup:base-sepolianow fails with a direct spendable-balance message instead of a latereth_estimateGaserror.
- Baseline Guard: Re-ran
pnpm run baseline:verify; the repo still verifies cleanly against the Base Sepolia fixture RPC fallback. - Coverage Gates: Re-ran
pnpm run coverage:check; generated coverage now validates492wrapper functions,492HTTP methods, and218events. - Repo Green Guard: Re-ran
pnpm test -- --runInBand; the default suite remains green with88passing files,348passing tests, and17intentionally skipped live contract-integration proofs.
- Live Base Sepolia Signer Depletion: Focused reruns of
pnpm run test:contract:api:base-sepoliastill block on the first founder-signed writes because the configured founder signer now has only about2.8e12wei available, below current Base Sepolia write costs. These failures are environment-limitedINSUFFICIENT_FUNDSblocks, not missing-route regressions.pnpm run setup:base-sepoliais blocked by the same depleted signer pool until the configured operator wallets receive more Base Sepolia ETH.
- Structured Remaining-Domain Verifier Output: Added
scripts/verify-report.tsplusscripts/verify-report.test.tsso live proof scripts can emit uniformsummary,totals,statusCounts, and per-domainclassification/resultfields while supporting first-class--outputfile writes.
- Machine-Readable Remaining Proof Artifacts: Updated
scripts/verify-layer1-remaining.tsto write clean JSON to--outputtargets instead of forcing operators to scrape mixed stdout logs. The script now aliases domain classifications into stableclassification/resultfields and preserves the full target report structure inverify-remaining-output.json. - Funding-Blocked Proof Preservation: Hardened
scripts/verify-layer1-remaining.tsso signer funding exhaustion no longer aborts without evidence. When Base Sepolia wallets are depleted, the script now emits domain-scopedblocked by setup/statereports with preflight balance diagnostics for founder, licensing owner, licensee, and transferee actors.
- Baseline Guard: Re-ran
pnpm run baseline:verify; the repo still verifies cleanly against the Base Sepolia fixture RPC fallback. - Coverage Gates: Re-ran
pnpm run coverage:check; generated coverage still validates492wrapper functions,492HTTP methods, and218events. - Verifier Helper Test: Re-ran
pnpm exec vitest run scripts/verify-report.test.ts; the new report helper passes its focused parser + summary coverage. - Structured Blocked Artifact: Re-ran
pnpm exec tsx scripts/verify-layer1-remaining.ts --output verify-remaining-output.jsonand confirmed the output file is now pure JSON withsummary: "blocked by setup/state",statusCountsfor all remaining domains, and captured funding balances instead of interleaved server logs.
- Base Sepolia Funding Floor Still Blocks Remaining Domains:
pnpm run setup:base-sepoliastill fails while attempting to top upbuyer-keybecause the richest configured signer only has2806823057182wei and the next required transfer path needs49126000000081wei. The same limit currently blocks livedatasets,licensing, andwhisperblock/securityproof execution even though the verifier now records that block cleanly.
- Diamond Admin ERC-165 Route: Forced
DiamondLoupeFacet.supportsInterface(bytes4)into the generated manifest so the live API and generated client wrappers now exposeGET /v1/diamond-admin/queries/supports-interface. - Multisig Operation Read Route: Forced
MultiSigFacet.getOperation(bytes32)into the generated manifest so the live API now exposesGET /v1/multisig/queries/get-operationinstead of silently dropping that mounted read during surface generation.
- Governance Threshold Route Drift: Updated
packages/api/src/app.contract-integration.test.tsso the threshold-ready governance proof now uses the currentPOST /v1/governance/proposalsendpoint instead of the removed overload-specific path. - Live Funding Harness: Reworked the Base Sepolia contract-integration test funding helper to pool native top-ups across multiple configured wallets, avoid self-funding loops, and allow a long-running
beforeAllhook without crashing teardown.
- Surface Coverage Expansion: Re-ran
pnpm run codegenand confirmed wrapper + HTTP coverage now validate492methods and218events, including the new diamond-admin and multisig routes. - Live Contract Progress: Re-ran
pnpm run test:contract:api:base-sepoliaand improved the live pass count from2/17to6/17. The suite now proves access-control role grant/revoke, voice-asset registration reads/events, authorization + royalty mutation, register-voice-asset workflow persistence, and validation/signer/provider error handling on Base Sepolia.
- Base Sepolia Gas Exhaustion: The remaining live failures are now dominated by depleted signer balances in the repo
.env, not missing routes for the already-fixed diamond-admin/governance cases. Founder and auxiliary wallets no longer have enough ETH to finish the dataset, marketplace, governance write proof, whisperblock encryption-key rotation, licensing, transfer-rights, and later workflow branches. - Tokenomics Long-Path Timeout: The tokenomics proof still times out at the current
120slimit under live Base Sepolia conditions, so it remains partial until either the environment is replenished or the proof is split into smaller live branches.
- Live Layer 1 Funding Preflight: Updated scripts/verify-layer1-live.ts so the Base Sepolia live verifier no longer assumes a single rich signer exists. It now pools native-gas top-ups across the configured founder/oracle wallets, skips self-funding loops, and preloads the founder plus licensing owner before the governance, marketplace, dataset, and voice-asset proof lifecycles execute.
- Live Layer 1 Proof Recovery: Re-ran
pnpm exec tsx scripts/verify-layer1-live.tsand restored full proof completion for governance, marketplace, datasets, voice-assets, tokenomics, access-control, and admin/emergency/multisig. Fresh proven-working txs from this run include governance submit0xaacf8c7aa77ffcb90fba14bb109e7655b52ac432a9e8f9f85f221934abee4b7d, marketplace listing0x6132c2b08a4d7c31979802fd023e706fad215be671f2e49550e83aafc540fca7, dataset create0x2b486e08ef0fdc624638d7a8dc3da40822c84d96c1c7076481c363383ace87a4, and voice-asset register0x993264430b3dcfe99c061716bed098c4e8d835c3cbcee074b4a530a35ffdc672. - Repo Green Guard: Re-ran
pnpm test -- --runInBand; the default suite remains green with 88 passing files, 348 passing tests, and 17 intentionally skipped live contract-integration proofs.
- Remaining-Domain Gas Ceiling:
pnpm exec tsx scripts/verify-layer1-remaining.ts --output verify-remaining-output.jsonstill fails in the current Base Sepolia environment because the configured signer set now only holds dust balances after live proof execution, and the script’s current preflight target still exceeds the available native gas budget. This is narrowed to an environment limitation rather than the earlier live-verifier lifecycle gap.
- Deterministic Coverage Gate: Added
pnpm run test:coveragein package.json so the repo now has a first-class coverage command that runs Vitest in single-worker mode, avoiding the worker-RPC timeout andcoverage/.tmpcleanup race that made the prior ad hoc coverage invocation unreliable. - Explicit Live API Contract Entry Point: Added
pnpm run test:contract:api:base-sepoliain package.json to run the Base Sepolia HTTP contract-integration suite directly, instead of relying on the hiddenAPI_LAYER_RUN_CONTRACT_INTEGRATION=1toggle.
- Governance Integration Route Drift: Updated packages/api/src/app.contract-integration.test.ts so the invalid-governance-input assertions hit the current
POST /v1/governance/proposalsroute rather than the removed legacy overload path that was returning404.
- Baseline Commands: Re-ran
pnpm run baseline:showandpnpm run baseline:verify; both still resolve cleanly against the Base Sepolia fixture fallback. - Generated Surface Coverage: Re-ran
pnpm exec tsx scripts/check-http-api-coverage.tsandpnpm exec tsx scripts/check-wrapper-coverage.ts; coverage remains at 489 HTTP-mapped methods and 489 wrapper functions / 218 events. - Repo Test Guard: Re-ran
pnpm test -- --coverageenough to isolate the failure mode, then confirmedpnpm run test:coveragesucceeds end-to-end with 88 passing files, 348 passing tests, and 17 intentionally skipped live contract-integration proofs.
- Live Contract Suite Partials: The direct Base Sepolia HTTP contract suite still has unresolved live-environment partials in packages/api/src/app.contract-integration.test.ts, including timeout-sensitive long-path tests, setup-dependent signer funding failures (
INSUFFICIENT_FUNDSon the transfer helper wallet), and at least one remaining diamond-admin read assertion that still returns404during the long-form live run.
- Layer 1 Completion Probe RPC Bootstrap: Updated scripts/verify-layer1-completion.ts to resolve runtime config through the shared Base Sepolia fallback loader before booting the embedded API server, so completion-surface reads no longer fail with transient
connect ECONNREFUSED 127.0.0.1:8548responses from the repo-default dead fork URL. - Completion Probe Actor Mapping: Extended the completion verifier to publish
API_LAYER_SIGNER_API_KEYS_JSONalongside the existing API key and signer map setup, preserving actor identity through the real API auth path even for this read-heavy completion probe. - Governance Route Probe Drift: Corrected the completion verifier to probe the current exposed governance proposal overload,
ProposalFacet.propose(address[],uint256[],bytes[],string,uint8), instead of the intentionally excluded legacystring,string,...signature.
- Completion Surface Recovery: Re-ran
pnpm exec tsx scripts/verify-layer1-completion.tsand confirmedCommunityRewardsFacet.campaignCount,VestingFacet.hasVestingSchedule,EscrowFacet.isInEscrow,RightsFacet.rightIdExists, andLegacyViewFacet.getLegacyPlannow all return200against Base Sepolia with no provider failover errors. The probe now also reportslegacyWriteRoutes.createLegacyPlan = true,legacyWriteRoutes.initiateInheritance = true, andgovernanceLegacyProposeExposed = true. - Baseline Guard: Re-ran
pnpm run baseline:verify; the default repo state still verifies cleanly against the persisted Base Sepolia fixture RPC fallback. - Repo Green Guard: Re-ran
pnpm test -- --runInBand; the suite remains green with 88 passing files, 348 passing tests, and 17 intentionally skipped live contract-integration proofs.
- Architectural Foundation: Established the four-layer domain architecture (
client,api,indexer,db). - Base Sepolia Integration: Transitioned the primary testing and deployment baseline to the live Base Sepolia network.
- Scenario Tooling: Implemented
scenario-adapterfor running complex end-to-end traces against live network state. - Dual-Lifecycle Licensing: Re-engineered the licensing engine to support both Template and Active License lifecycles.
- Commercialization Guardrails: Implemented strict on-chain ownership checks for voice asset commercialization.
- Governance Workflow Split: Separated proposal submission and voting to account for real-world block timing and non-zero voting delays on Base Sepolia.
- Multisig Support: Integrated Layer 4 multisig workflows for administrative operations.
- Documentation: Added USpeaks Lite Paper and Liquidity Bootstrapping Pool (LBP) launch materials.
- Automated Codegen: Built a comprehensive
pnpm run codegenpipeline for ABI syncing, TypeChain generation, and API surface building.
- Type Safety: Enhanced type safety for contract interactions and adjusted multisig error handling.
- Gas Limit Testing: Added execution context gas limit tests to prevent transaction failures in complex workflows.
- Codegen Mismatches: Resolved tuple selector mismatches in the codegen pipeline.
- Core Layer 1 and Layer 2 domains verified on Base Sepolia.
- Focused on Layer 3 verification and optimizing retry/error-handling workflows.
- Live Fixture Refresh: Re-ran Base Sepolia operator setup and persisted the refreshed fixture report in
.runtime/base-sepolia-operator-fixtures.json, including actor balances, governance readiness, and marketplace fixture state. - Live Layer 1 Proof Refresh: Re-generated verify-live-output.json against Base Sepolia and captured fresh tx hashes, receipts, and readbacks for governance, marketplace, datasets, voice-assets, tokenomics, access-control, and admin/emergency/multisig domains.
- Remaining Layer 1 Proof Artifact: Added verify-remaining-output.json with fresh Base Sepolia proof coverage for the remaining domains: datasets, licensing, and whisperblock/security.
- Runtime Override Handling: Updated the runtime config loader to let process-level environment overrides take precedence over the repo
.env, so Base Sepolia proof commands can be redirected to a live RPC without editing committed secrets. - Dataset Verification Completion: Confirmed the live dataset proof now reuses an active license template and completes successfully on Base Sepolia, collapsing the prior
InvalidLicenseTemplate(uint256)partial intoproven working. - Baseline RPC Recovery: Taught the shared runtime loader to recover from the dead local
127.0.0.1:8548baseline by reusing the last verified Base Sepolia fixture RPC, and surfaced that fallback provenance in the baseline output. - Proof Script RPC Consistency: Updated the Base Sepolia setup, live verification, focused verification, and remaining verification scripts to inject the resolved RPC into the embedded API server before boot so contract and HTTP proof paths run against the same chain.
- Marketplace Fixture Search: Reworked the operator setup aged-listing scan to continue across seller-owned aged assets until it finds one that can be listed and read back as active, instead of stopping on the first stale candidate.
- Event Proof Readbacks: Fixed the live verifier’s endpoint registry merge so generated event routes are discoverable, and added event-query retries so
AssetListedandVoiceAssetRegisteredproofs capture actual logs instead of transient empty payloads. - Remaining Proof Funding: Expanded the remaining-domain proof funder pool to the richer configured signer actors and raised preflight native-balance top-ups so dataset, licensing, and whisperblock/security runs can complete on Base Sepolia without mid-run gas exhaustion.
- Coverage Gates: Re-ran
pnpm run coverage:checkand kept API-surface and wrapper coverage at 489 methods and 218 events. - Config Regression Guard: Added a runtime-config test that locks in override precedence for
RPC_URLandALCHEMY_RPC_URL. - Baseline Commands: Re-ran
pnpm run baseline:showandpnpm run baseline:verify; both now succeed from the default repo state by falling back to the persisted Base Sepolia fixture RPC when the local fork endpoint is unavailable. - Proof Domains: Re-ran the live and remaining Layer 1 proof scripts; all verified domains now classify as
proven working, while the setup artifact’s only remaining marketplace partial is explicitly narrowed to purchase-readiness proof rather than listing activation.
- Marketplace Buyer Proof: Added scripts/verify-marketplace-purchase-live.ts and the
verify:marketplace:purchase:base-sepoliapackage script to execute a realbuyer-keypurchase against the aged Base Sepolia fixture listing, then verify ownership transfer, listing deactivation, and marketplace event readbacks. - Marketplace Purchase Artifact: Captured the first successful live buyer purchase proof in verify-marketplace-purchase-output.json, including tx
0xf4b5fc77eb57d744a140d362ea8ac4c67276fc86ffec2a6e856417b6b6257bfa, block39045521, post-purchase owner readback, andAssetPurchased/PaymentDistributed/AssetReleasedevent evidence.
- Live Contract Harness RPC Resolution: Updated packages/api/src/app.contract-integration.test.ts to resolve runtime config through the shared fallback loader before booting the embedded API server, so the Base Sepolia contract suite no longer collapses immediately on the dead repo-default
127.0.0.1:8548RPC. - Base Sepolia Suite Drift Cleanup: Aligned the long-form contract integration suite with current generated routes and workflow payloads, including marketplace escrow event paths, governance role-query endpoints, tokenomics query names, diamond-admin immutable-selector routes, licensing template creation payloads, and workflow assertions that legitimately return
nullwhen approval is already in place. - Purchase Proof Artifact Reliability: Hardened scripts/verify-marketplace-purchase-live.ts to write its artifact directly to disk and fall back to creating a fresh listing when the configured fixture has already been consumed, instead of relying on stdout redirection alone.
- Marketplace Partial Collapsed: The previously open marketplace setup partial is now proven working on Base Sepolia. The fixture concern about the buyer’s
5000USDC balance/allowance was not an actual blocker because the aged listing price was1000, and the livebuyer-keypurchase completed successfully. - Event Mismatch Closed: Confirmed the live artifact mismatch is gone; verify-live-output.json no longer reports missing
AssetListedorVoiceAssetRegisteredendpoints. - Bounded Full-Suite Pass: Re-ran
pnpm run test:contract:base-sepoliaafter the harness fix and observed the suite progressing through the previously blocked live domains under the normal proof script, including access-control, voice-assets, datasets, marketplace, governance, tokenomics, whisperblock, licensing, admin/emergency/multisig, and workflow tests.
- Fixture Age Regression: A fresh
pnpm run setup:base-sepolianow repopulates.runtime/base-sepolia-operator-fixtures.jsonwith an active listing that is still within the marketplace contract’s 1 day purchase lock, so the fixture remains useful for listing-state checks but not as a rerunnable purchase-proof target until the age-selection logic is corrected.
- Marketplace Fixture Selection Guard: Added scripts/base-sepolia-operator-setup.helpers.ts plus scripts/base-sepolia-operator-setup.helpers.test.ts to classify Base Sepolia marketplace fixture candidates by real listing age, prioritize purchase-ready listings over fresh ones, and lock that behavior with a focused regression test.
- Setup Listing-Age Classification: Updated scripts/base-sepolia-operator-setup.ts so
setup:base-sepoliano longer mistakes an old asset with a fresh listing for a purchase-ready marketplace fixture. The script now scans seller-owned aged assets for an already-active listing past the contract lock, falls back to creating a new listing only when necessary, and waits for an active listing readback instead of treating any200response as success. - Marketplace Partial Narrowing: Re-ran
.runtime/base-sepolia-operator-fixtures.jsonand confirmed the remaining marketplace block is now accurately scoped to listing age. The emitted fixture is again an active seller listing, but it is explicitly classified aslisted-not-yet-purchase-provenuntil the 1 day trading lock expires or an older listing is discovered.
- Coverage Gates: Re-ran
pnpm run coverage:checkand kept generated coverage at 489 functions and 218 events, with validated HTTP coverage for 489 methods. - Baseline Stability: The prior baseline commands remain green from the default repo state (
pnpm run baseline:showandpnpm run baseline:verifyfrom this session’s earlier verification). - Targeted Regression Test: Re-ran
pnpm exec vitest run scripts/base-sepolia-operator-setup.helpers.test.tsto confirm fresh listings are no longer selected as purchase-ready fixtures.
- Marketplace Purchase Proof Still Time-Locked: The current setup artifact now reports an honest partial instead of a misleading one: the latest seller listing becomes active during setup, but it is still within the marketplace contract’s 1 day trading lock, so
buyer-keypurchase proof remains blocked until the listing ages or an older active listing is available. - Unrelated Suite Debt: A broad
pnpm test -- scripts/base-sepolia-operator-setup.helpers.test.tsrun still surfaces pre-existing red tests outside this change: stale manifest/HTTP-registry expectation counts and a timeout inpackages/api/src/workflows/register-voice-asset.integration.test.ts.
- Register Voice Asset Workflow Test Drift: Updated packages/api/src/workflows/register-voice-asset.integration.test.ts to mock the workflow’s current token-id readback and assert the returned
tokenIdfields, eliminating the false timeout introduced after the workflow started waiting forgetTokenId. - Manifest Count Guard Hardening: Reworked scripts/manifest.test.ts to validate that generated manifest totals stay internally consistent with the emitted facet and subsystem arrays instead of pinning obsolete historical counts.
- HTTP Registry Golden Drift Removal: Updated scripts/http-registry.test.ts to verify generated method/event counts and keys against the current reviewed API surface, removing stale hard-coded totals while still locking in registry-to-review alignment.
- Baseline Commands: Re-ran
pnpm run baseline:showandpnpm run baseline:verify; both remain green against the persisted Base Sepolia fallback RPC from the default repo state. - Coverage Gates: Re-ran
pnpm run coverage:checkand kept generated coverage at 489 functions, 218 events, and validated HTTP coverage for 489 methods. - Vitest Suite Recovery: Re-ran
pnpm exec vitest run scripts/manifest.test.ts scripts/http-registry.test.ts packages/api/src/workflows/register-voice-asset.integration.test.tsfollowed by the fullpnpm test -- --runInBandsuite; the repo is now green with 88 passing test files, 347 passing tests, and 17 intentionally skipped contract-integration tests.
- Marketplace Fixture Age Partial:
setup:base-sepoliacan still legitimately emit alisted-not-yet-purchase-provenmarketplace fixture when no older active listing is available past the contract lock window; this is now the primary remaining live-environment partial called out by the setup artifact.
- Escrow-Aware Marketplace Fixture Discovery: Updated scripts/base-sepolia-operator-setup.ts so
setup:base-sepoliano longer limits marketplace candidate discovery to assets still held in the seller wallet. The setup flow now also scans diamond-escrowed voice assets, filters them throughEscrowFacet.getOriginalOwner, and includes seller-originated escrow listings in the fixture candidate pool. - Candidate Pool Helper Coverage: Added scripts/base-sepolia-operator-setup.helpers.ts support for merging seller-owned and escrowed candidate voice hashes without duplicate loss, and locked that behavior with scripts/base-sepolia-operator-setup.helpers.test.ts.
- Marketplace Partial Collapsed For Real: Re-ran
pnpm run setup:base-sepoliaand regenerated.runtime/base-sepolia-operator-fixtures.json. The marketplace fixture now resolves to token11withpurchaseReadiness: "purchase-ready"andstatus: "ready", backed by listing readback{ tokenId: "11", seller: "0x276D8504239A02907BA5e7dD42eEb5A651274bCd", price: "1000", createdAt: "1773601130", createdBlock: "38916421", isActive: true }. - Targeted Regression Test: Re-ran
pnpm exec vitest run scripts/base-sepolia-operator-setup.helpers.test.ts; all helper tests passed. - Repo Green Guard: Re-ran
pnpm run baseline:showand the fullpnpm test -- --runInBandsuite; the repo remains green with 88 passing files, 348 passing tests, and 17 intentionally skipped contract-integration proofs.
- Remaining Setup Partials: None in the current Base Sepolia fixture artifact. Marketplace and governance now both emit
readysetup state.