diff --git a/docs/CURRENT_STATE.md b/docs/CURRENT_STATE.md index d04e206b..bd4a9696 100644 --- a/docs/CURRENT_STATE.md +++ b/docs/CURRENT_STATE.md @@ -8,7 +8,9 @@ This file is the beginner-friendly source of truth for what exists in FlowMemory FlowMemory is in launch-candidate V0 hardening. -The bootstrap repository operating system, contracts V0 foundation, crypto V0 foundation, local indexer/verifier fixture package, dashboard V0, FlowRouter hardware POC, local no-value devnet prototype, launch-core contract-event spine, and pre-production hardening guardrails have merged into `main`. The current launch-candidate branch adds swap-derived memory signals, stricter launch validation, and Base Sepolia testnet deploy/read commands. +The bootstrap repository operating system, contracts V0 foundation, crypto V0 foundation, local indexer/verifier fixture package, dashboard V0, FlowRouter hardware POC, local no-value devnet prototype, launch-core contract-event spine, and pre-production hardening guardrails have merged into `main`. The launch-candidate work added swap-derived memory signals, stricter launch validation, and Base Sepolia testnet deploy/read commands. + +On 2026-05-13 a small Base mainnet canary deployment was broadcast for V0 testing. It is documented in `docs/DEPLOYMENTS/2026-05-13-base-canary-v0.md`. This is not a production launch and does not change the production/mainnet-readiness guardrails. The launch-core V0 stack now has a single runnable local command that connects contract fixtures, local indexing/verifier outputs, crypto schema vocabulary, Rootflow transitions, Flow Memory objects, generated dashboard state, local no-value devnet output, and hardware POC output without production deployment. @@ -54,6 +56,7 @@ Indexer/verifier local package: - `npm run index:base-sepolia -- --rpc-url --address --from-block --to-block ` provides a constrained Base Sepolia reader path. - The Base Sepolia reader requires an explicit RPC URL, rejects non-Base-Sepolia chain ids, and persists both canonical state and a durable checkpoint without storing RPC URLs or keys. - `npm run deploy:base-sepolia` and `npm run deploy:base-sepolia:broadcast` provide Foundry deploy commands for the current V0 Base Sepolia testnet contract set. They require local env values and do not commit credentials. +- A Base mainnet V0 canary deployment exists for testing only; deployed addresses and smoke transactions are recorded in `docs/DEPLOYMENTS/2026-05-13-base-canary-v0.md`. Dashboard V0: @@ -112,6 +115,8 @@ Launch-core specifications: - Production indexer or verifier service runtime. - Production persistence layer, production live RPC reader, production APIs, or hosted services. - Base mainnet reader. +- Dashboard ingestion of the Base mainnet canary deployment. +- Contract source verification automation for the deployed canary contracts. - Explorer or hardware console implementation. - FlowRouter firmware, manufacturing, final enclosure work, or field deployment. - Real Meshtastic or LoRa device integration. @@ -171,9 +176,9 @@ Before assigning agents, check for dirty worktrees and avoid overlapping folders ## Current Operator Priorities 1. Keep the generated launch-core command stable in CI. -2. Exercise the Base Sepolia deploy/read path on explicit testnet contract addresses only. -3. Continue contracts hardening without production mainnet deployment or token mechanics. -4. Keep swap-memory signal semantics narrow until a real Uniswap v4 hook issue scopes the next step. +2. Build a guarded Base canary reader path for the deployed V0 canary addresses. +3. Exercise the Base Sepolia deploy/read path on explicit testnet contract addresses only. +4. Continue contracts hardening without production mainnet deployment or token mechanics. 5. Keep dashboard work fixture-backed until a production API is explicitly scoped. ## Update Rule diff --git a/docs/DEPLOYMENTS/2026-05-13-base-canary-v0.md b/docs/DEPLOYMENTS/2026-05-13-base-canary-v0.md new file mode 100644 index 00000000..9211486a --- /dev/null +++ b/docs/DEPLOYMENTS/2026-05-13-base-canary-v0.md @@ -0,0 +1,106 @@ +# Base Canary V0 Deployment + +Date: 2026-05-13 + +Status: live Base mainnet canary deployment for V0 testing only. + +This is not a production launch, production L1 deployment, token launch, +production verifier network, or production Uniswap v4 hook deployment. + +## Network + +- Network: Base mainnet +- Chain id: `8453` +- RPC used for deployment/testing: public Base RPC +- Deployer: `0x3A6fBA5a78216ba3a8DA8d8F501dee2C8186aFf9` +- Starting balance observed before dry run: `0.005451853012787615 ETH` +- Balance observed after deploy and smoke actions: `0.005423591837039270 ETH` +- Approximate total ETH spent by deploy plus smoke actions: `0.000028261175748345 ETH` + +Private key material was loaded from a local ignored environment file and was +not committed. + +## Deployed Contracts + +| Contract | Address | Deploy tx | Block | +| --- | --- | --- | --- | +| `RootfieldRegistry` | `0x2a7ADd68a1d45C3251E2F92fFe4926124654a97C` | `0x9ef9cb563646921e8f8dd71ad237054b8ee5b0c8e8ecc0c3b1577661844d6108` | `45955460` | +| `FlowMemoryHookAdapter` | `0x179Df6d52e9DeF5D02704583a2E4E5a9FF427245` | `0xab22f1b9a19c090c63d4b3a4e100cf80571f5142ab91620fbc76d739d1f318b9` | `45955461` | +| `ArtifactRegistry` | `0x8F074d0F4e66975b740A4b7a316330c9660a485E` | `0xbd07e7d0280a20344521628b13353152da859e62fdcdb4355bf04b50a4176b0b` | `45955462` | +| `CursorRegistry` | `0x3360689009685eade15c876855D24161b05829C1` | `0x7eecbb949a617bff8fc8c0749a3332e1e2d2fe7b17f0cf3d7522155f5675cee9` | `45955463` | +| `ReceiptVerifier` | `0x94ba7aA4562f8F8528C327378F6352350f6ddB5B` | `0x3b29454ebb4104e38a0f886a4a370f26d3e3bc5ab22bbfb921374fa904e38e95` | `45955464` | +| `WorkerRegistry` | `0xa8c07eF53Eeb4e57297ee35025a9cD5303fCCD29` | `0x213a1ba85d6e998937c907699be83b7cd7db9eba4e43f937f94ad7b62bf3cfde` | `45955465` | +| `VerifierRegistry` | `0xAf920ca7436Bb72172E27C96E0B716f01dcC5DBd` | `0x87696577de6522f885a67c9df98fd8942387e7e7c735f3215f067b2cbc913d2f` | `45955466` | +| `WorkReceiptRegistry` | `0x2874cee0D581E4562ac9015BfCf330f1ea58a1F3` | `0xa278992a28c2a1ad9e4c78998dbbfb43399e55182ca93f8aac40e9447b2f854f` | `45955467` | +| `VerifierReportRegistry` | `0x95bC7455AdFD60e1B908ba455c25Ae732C1Ef996` | `0x9def1a9338bf65e04bc43fd3f4ef1bb973ebdf1ee4b351a77157c396da6af074` | `45955468` | +| `WorkDebtScheduler` | `0xa752e9bC7fAf39f659110D8Cf408E7707db94E34` | `0x139e3b89b0c674c6031d34fbfafb2649e114443ed7b98b9722d59bc19ffb6bdc` | `45955469` | + +All 10 deployed addresses returned non-empty bytecode through `cast code`. + +## Smoke Actions + +Rootfield id: + +```text +0x19c830e926bfd3ce06d71ed0ef2e90ddc73accf4367b0defea835dc1cd3b3114 +``` + +### Rootfield Registration + +- Transaction: `0x994b98b1cff0c897d75b62cf7c95340f74a59d0c208af68f1dea2d161b80cf00` +- Block: `45955506` +- FlowPulse pulse id: `0xa62ffb4b36a415032949138edbdcba5005de2e35952df88bdf592d4266184b87` +- Pulse type: `1` / `ROOTFIELD_REGISTERED` + +### Root Submission + +- Transaction: `0x24a43789ef489dd6c697567466944a210273e46c333e7be878cda6df9acb8e7a` +- Block: `45955533` +- FlowPulse pulse id: `0x72407268a2ea62659d6b0f62800931936cc6ea7ea5f5b6db91801ba2f8b43eab` +- Pulse type: `2` / `ROOT_COMMITTED` +- Latest root after smoke action: + `0x4a7b8601c06c20bcc7b69c05c51980c12dbd50cbd95a59f460d40555bfc37ce3` + +### Swap-Memory Signal + +- Transaction: `0xaee21f6d0e9df1a45eae0c7714a4f8eae7fb72afbb07dd67b3a1f0ff724a014f` +- Block: `45955535` +- FlowPulse pulse id: `0x16c2adf5f3e46ee91d16a432d2420c566851b311e767860cab99068dcaca2591` +- Pulse type: `4` / `SWAP_MEMORY_SIGNAL` +- Commitment: + `0x30055afe075a7c6ea8557ea3a2d3c7012d9d558ebda95803726179355f98ede9` + +## State Readback + +`RootfieldRegistry.getRootfield(rootfieldId)` returned: + +```text +owner: 0x3A6fBA5a78216ba3a8DA8d8F501dee2C8186aFf9 +schemaHash: 0x0b4537a7fa7cdd45fd6ff2052f1e4f9087a40b09fb6fe06a686ac67ac96fa5c3 +metadataHash: 0x5f2a82ffa386793a2a67971ab801b2633b76954a95ee873e463730e6442ef90d +latestRoot: 0x4a7b8601c06c20bcc7b69c05c51980c12dbd50cbd95a59f460d40555bfc37ce3 +pulseCount: 2 +rootCount: 1 +active: true +``` + +## Important Gaps Found + +1. The checked-in live reader is Base Sepolia-only and intentionally rejects + Base mainnet chain id `8453`. A guarded Base canary reader is needed before + the dashboard can ingest live mainnet canary logs. +2. The dashboard still consumes generated fixtures. It does not yet ingest a + deployment artifact plus live read output. +3. Contract source verification is not automated for all deployed contracts. +4. `FlowMemoryHookAdapter` is still an adapter scaffold. It is not a production + Uniswap v4 hook wired into PoolManager permissions. +5. Ownership is still direct deployer ownership where applicable. There is no + multisig, governance, recovery, or operational key policy. +6. Verifier and worker registry flows are deployed, but live verifier report + submission, report signing, and verifier economics are not built. + +## Notes + +The first registration command encountered a public-RPC nonce race after the +transaction landed. The chain state and FlowPulse log were checked directly +before subsequent smoke actions were sent. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 25713844..d7cc48f8 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -68,6 +68,7 @@ Status: implemented as fixture-first services plus generated launch-core state; - Deterministic persistence exists for fixture state and the constrained Base Sepolia reader checkpoint. - A Base Sepolia reader path exists for explicit RPC URLs and explicit FlowPulse contract addresses; it rejects non-Base-Sepolia chain ids. - Base Sepolia deploy/read commands exist for the current V0 testnet contract set. +- A Base mainnet V0 canary deployment has been performed for testing only and is documented under `docs/DEPLOYMENTS/`. - Runtime schema validation and generated fixture drift checks exist for launch-core outputs. - Local devnet smoke-test gates exist as a no-value Rust prototype, without mainnet or production deployment. @@ -141,7 +142,8 @@ The initial merge sequence has completed for repo OS, contracts foundation, cryp Next merge preference: -1. Base Sepolia reader soak tests against explicit testnet deployments. -2. Dashboard polish and explorer/hardware-console separation. -3. Static analysis follow-up findings triaged for any public testnet deployment. +1. Guarded Base canary reader and deployment-artifact ingestion. +2. Base Sepolia reader soak tests against explicit testnet deployments. +3. Dashboard live/canary mode separation from generated fixtures. +4. Static analysis follow-up findings triaged for any public testnet deployment. 5. Production-gated research only after V0 local acceptance stays green.