[Federation] Multi-node mesh with tailnet #19
Labels
No labels
blocked:children
blocked:commit-ready-failed
blocked:depends-231
blocked:depends-236
blocked:depends-237
blocked:depends-238
blocked:depends-239
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-lint
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:no-changes
blocked:no-procedure
blocked:preflight
blocked:verify-failed
bug
enhancement
feature-request
high-priority
in-progress
lint-cleanup
needs-decompose
needs-triage
ops-retry
ops-task
phase-5
quickfix
security/medium
self-building
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/mesh-seed#19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Distribute mesh across multiple physical nodes.
Nodes
Features
Files
Acceptance
Status update from pico/nano test-platform implementation:
Implemented in working tree:
runtime/worker_profiles.pywithstandard,nano,picoprofilesruntime/node1_worker.pynow supports--profileand profile-driven economics/claimsclawdeploy/mesh-worker-nano.yamlclawdeploy/mesh-worker-pico.yamlscripts/run_pico_nano_mesh_test.shfor multi-worker local/tailnet test runsREADME.md,USAGE.md,specs/pico-nano-test-platforms.mdVerification:
Inflection observed:
Next-wave progress update (decentralization step):
Implemented in working tree:
runtime/settlement_worker.py--no-local-settlementso settlement can move off Node0scripts/run_mesh_triplet.sh(Node0 + Worker + Settlement)tests/unit/test_settlement_worker.pyResult:
Remaining for full federation target:
Next-wave progress update (arbitration hardening):
Implemented in working tree:
substrate/ledger.pyacquire_claim_lease(intent_id, agent_id, lease_seconds)complete_claim_lease(intent_id, status)runtime/node1_worker.pyruntime/settlement_worker.pytests/unit/test_claim_lease.py(first-claim-wins and lease-expiry reassignment)Verification:
This advances mesh behavior beyond Node0-centric claim handling by making claim ownership explicit and time-bounded.
Next-wave progress update (distributed ingress + arbitration safety):
Implemented in working tree:
runtime/intent_submitter.pyscripts/run_peer_ingress_mesh.shacquire_settlement_lock(intent_id, holder_id)complete_settlement_lock(intent_id, holder_id)Verification:
./scripts/run_peer_ingress_mesh.shsuccessfulintent.discoveredThis further reduces Node0 centrality by proving ingress can originate from a non-Node0 peer.
Next-wave progress update (active-active settlement safety + long-run lease support):
Implemented in working tree:
substrate/ledger.py:renew_claim_lease(intent_id, agent_id, lease_seconds)runtime/node1_worker.py --simulate-exec-secondssubstrate/ledger.py:acquire_settlement_lock(intent_id, holder_id)complete_settlement_lock(intent_id, holder_id)scripts/run_dual_settlement_race.shtests/unit/test_settlement_lock.pytests/unit/test_claim_lease.pywith renewal coverageVerification:
./scripts/run_dual_settlement_race.sh):lock_heldand did not double-settleNext-wave progress update (long-run lease heartbeat + multi-worker contention):
Implemented in working tree:
substrate/ledger.pyand integrated heartbeat renewal path inruntime/node1_worker.py--lease-renew-interval,--disable-lease-heartbeat,--simulate-exec-secondsscripts/run_claim_contention_mesh.shtests/unit/test_claim_contention.pyVerification:
./scripts/run_claim_contention_mesh.sh):lease_heldThis wave adds explicit long-run lease maintenance and validates first-claim-wins behavior under 3-worker contention.
Wave status + inflection:
Implemented this wave:
--lease-renew-interval,--disable-lease-heartbeat)scripts/run_claim_contention_mesh.sh)scripts/run_lease_expiry_recovery.sh)runtime/metrics.py) integrated in worker + settlement rolesVerification:
Inflection discovered:
already_settled.Wave progress update (crash recovery + metrics + retry-state fix):
Implemented:
runtime/metrics.py)scripts/run_lease_expiry_recovery.sh)Verification:
Issue #25 is resolved and closed.
Wave progress update (lease heartbeat + contention metrics + recovery tooling):
Implemented in working tree:
runtime/metrics.pyMETRICevents and optional JSONL sinks (--metrics-jsonl)scripts/mesh_metrics_snapshot.pyscripts/run_claim_contention_mesh.sh(writes contender/settlement metric sinks)scripts/run_lease_expiry_recovery.sh(crash->retry recovery path with metrics)Verification:
This adds lightweight observability for lease contention and settlement outcomes while preserving the decentralized mesh topology.
Wave progress update (dead-letter hardening + metrics tooling):
Implemented:
scripts/mesh_metrics_snapshot.pyscripts/deadletter_cli.pytests/unit/test_deadletter_cli.py)Verification:
Issue #24 is now resolved and closed.
Wave progress update (elastic capacity controller):
Implemented in working tree:
runtime/capacity_controller.pyintent.discoveredruntime/substrate_bootstrap.pyscripts/run_elastic_spawn_mesh.shscripts/mesh_metrics_snapshot.pytests/unit/test_capacity_controller.pytests/unit/test_substrate_bootstrap.pytests/unit/test_metrics.pytests/unit/test_deadletter_cli.pyVerification:
writer_v1detectedThis directly adds the mesh behavior: if required capacity is missing, spawn the appropriate worker under policy control.
Wave progress update (substrate role election + clawdeploy-aligned spawn):
Implemented:
substrate/ledger.py(role_leases)substrate.redis.v1inruntime/substrate_redis_worker.pyscripts/run_substrate_election_demo.shevolution/spawner.py--spawn-via-clawdeploy)Verification:
run_substrate_election_demo.shshows single role holderrun_elastic_spawn_mesh.shshows missing capability -> clawdeploy-mode spawn -> successful settleWave progress update (testing and capability maturity):
Implemented:
tests/load_test.pytests/chaos_test.py.forgejo/workflows/mesh-tests.ymlsubstrate/bone.pywith testsruntime/capability_execution.pywith testsVerification:
Phase Dependency Mapping
Linked to Phase Tracker: #29 (Phase 2: Federation)
Prerequisites:
Blocks:
Current Status: 13 comments show active development
Completion: ~60% (tailnet + mesh coordination implemented)
Acceptance Criteria:
Estimated Complexity: High (2-3 weeks)
Priority: P1 (blocking Phase 2-4)
✅ COMPLETED - Phase 2 Federation
Implementation Summary:
Node Topology:
Files Changed:
Verification:
Closed as part of Phase 2 completion.