No reviewers
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!275
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/cross-mesh-federation-design"
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?
Cross-Mesh Federation Protocol v1 (META-001, issues #199 / #276).
Scope
Implementation of the normative spec at docs/federation/spec.md (commit
5d94f6b). This PR extends the docs branch with the full implementation: envelope codec, handshake state machine, message router, HTTP transport, demo harness, and unit/integration tests.Deliverables
Demo: two nodes federating end-to-end
Run:
python scripts/demo_federation.py(uses shared in-memory backplane, boots mesh-seed-alpha + mesh-seed-beta).Verified output (2026-08-14):
Tests
Closes #276 (implementation), builds on #199 umbrella.
Implements META-001 per docs/federation/spec.md and the plan at .kilo/plans/META-001-cross-mesh-federation-protocol.md: - runtime/federation_protocol.py: federation/v1 envelope codec, canonical serialization, HMAC-SHA256 sign/verify with freshness window + replay LRU (spec 3-4, including the 4.4 test vector) - runtime/federation_handshake.py: hello/challenge/response/ack state machine, ed25519 identity proof, TOFU pinning, split-brain detection (spec 5) - runtime/federation_credentials.py: per-peer secret resolution (env -> SecretsManager -> legacy token) and rotation - runtime/mesh_federation.py: signed heartbeats/intent routes, real _check_node_timeouts (parsed datetimes, online->degraded->offline), _dispatch_local_route wired to FederationWorker, get_federation_health, removed duplicate mesh_forwarded_intents CREATE - runtime/cross_mesh_forwarding.py: envelope wrapping in forward_intent, accept_envelope, resolver-based bearer (legacy fallback + metric) - runtime/http_entrypoint.py: POST /v1/federation/{handshake,heartbeat, intent,disconnect}, GET /v1/federation/{siblings,health}, trust-tier gate, spec 7.3 error model - ledger migration 0008 (federation_peer_keys, federation_heartbeat_log, federation_route_intents) + MeshLedger/federation repo helpers - federation_worker.py: use route_intent() (IntentRouter class never existed) - scripts/demo_federation.py CLI harness booting two meshes end-to-end - tests: envelope codec, handshake state machine, credentials, mesh_federation, gateway envelope wrapping, HTTP routes, two-mesh integration (all green) - docs: docs/reference/MESH_FEDERATION.md, API.md federation endpoints, config/mesh.yaml federation section Demo (in PR description): python scripts/demo_federation.py -> peer discovery, 4-step handshake w/ TOFU pinning, intent forward round-trip, shared-secret rotation, all end-to-end in-processdocs(#199): cross-mesh federation protocol design & requirementsto feat(#276)+docs(#199): cross-mesh federation protocol v1 (design, spec, implementation)CI: federation integration suite wired (card t_a053f7c8)
Added
.forgejo/workflows/federation.yml— a dedicated Forgejo Actions workflow that runs the full federation integration suite (pytest -m federation) on the mesh-seed user runner. It:setup-pythonpip cache.pytest-timeout --timeout=300— bounds every test class so a single hung test cannot stall the job.federation-test-resultsartifact onalways().The workflow triggers on any
pull_requesttomaster/main, so it gates this implementation PR — all federation tests must be green to merge.Sample green run (federation suite 63 passed, 5 xfailed, job on
localhost-user-runner): https://forgejo.tail018ac4.ts.net/Mark/mesh-seed/actions/runs/164Note for review: the existing
ci.ymlupload steps useupload-artifact@v4, which this Forgejo version rejects (GHESNotSupportedError— v2 artifact API unsupported). The new federation job pinsupload-artifact@v3(verified tag v3.2.1); the other jobs may hit the same issue on their next run.