Version history and release notes for the ECCA Stack v3 monorepo.
New paper and full working demo extending the ECCA cognitive identity stack to secure BGP routing. Autonomous agents sign route advertisements with ed25519, commit per-epoch RouteTableRoot hashes, and convert routing anomalies into on-chain evidence with economic accountability.
contracts/scripts/deploy.ts now deploys ResidueToRoutingSwap + RouteOracle and wires minter rights + oracle authorization.tests/axonal-bgp/agent-bgp-router.js: lightweight HTTP service simulating a BGP speaker with signed advertisements, route tables, attack injection, and pause state.tests/axonal-bgp/k8s/: namespace, Cortex EVM dev chain, contracts deployer Job, 4 agent Deployments+Services, orchestrator Job.tests/axonal-bgp/terraform/: k3d cluster, image builds, k3d import, manifest apply, orchestrator launch — mirroring the Playfair pattern..github/workflows/axonal-bgp.yml: nightly @ 04:00 UTC, on push, workflow_dispatch with epoch override. Publishes report to GitHub Pages.Re-architected the Playfair test for full reproducibility. The 9-phase bash script is now a thin wrapper around a Terraform module that declares every state transition (cluster, image builds, image imports, latency injection, manifests, orchestrator, results) as a tracked resource with content-hashed triggers.
tests/playfair/terraform/ manages 25 resources via null_resource + local-exec. Idempotent re-runs only re-execute the resources whose source-tree SHA-256 changed; terraform destroy tears down the entire cluster + tc netem state cleanly..github/workflows/playfair.yml: nightly @ 03:00 UTC, on push to main, and workflow_dispatch with epoch + latency overrides. Builds all images on the runner, applies Terraform against a local k3d cluster, uploads the report as an artifact, and (on main) commits the rendered HTML back so it's published via Pages.generate-playfair-report.js rewritten with inline SVG charts (stacked area timeline of perceives/stores/routes/syncs, per-agent activity sparklines, per-region token-usage bars), a "runtime config" panel with commit/runner/branch metadata, and an embedded "how to read" explainer.PRISMA_QUERY_ENGINE_LIBRARY hard-pinned in 03-services.yaml; (2) thalamus-router crash from sharing one NATS JetStream consumer across 3 regions — consumer names now scoped by ECCA_REGION; (3) k3d image import deadlock under concurrent Terraform workers — imports serialised in a single shell loop; (4) empty playfair-results.json when the orchestrator pod terminated before kubectl cp — fallback extracts JSON between the ═══ RESULTS JSON ═══ marker and the next banner so the trailing summary doesn't corrupt parsing; (5) Node 24 ESM/CJS clash — tests/playfair/package.json now declares "type": "commonjs" overriding the parent tests/package.json so the host-side report generator runs../tests/playfair/run.sh (full), --skip-images (reuse cached), --epochs N, --skip-latency, --destroy, --plan.618eac8 on macOS aarch64 / Docker Desktop / k3d v5.8.3):
2026-05-09T13:36:25Z → 13:37:17Z (orchestrator 56s, terraform apply ≈ 8 min from-scratch): 50 epochs, 6 agents, 3 regions, 152 perceptions / 43 stores / 31 routes, 1 residue (resolved), 31 cross-region migrations, 9 scripted scenarios, verdict FAIR on every epoch.2026-05-09T13:47:13Z → 13:48:05Z (orchestrator 51.7s, full re-run with rebuilt orchestrator image): 50 epochs, 152 perceptions / 49 stores / 33 routes / 24 syncs, 1 residue (resolved), 33 migrations, verdict FAIR on every epoch (unfairEpochs: []).terraform destroy -auto-approve tore the cluster down cleanly between runs.See the latest run at /playfair-report.html and the docs at /playfair.html.
Complete Kubernetes-based test harness that runs 6 agents across 3 regions with asymmetric resource profiles, proving the variable-bitrate thesis from the dev blog in actual multi-node infrastructure.
region-storage (cheap storage, throttled compute), region-compute (cheap compute, throttled storage), region-bandwidth (cheap bandwidth, both others throttled). Each region deploys its own medulla-pow, hippocampus-dag, and cortex-evm with tuned resource limits and ECCA_DIFFICULTY settingsorchestrator.js: Node.js game engine running 50 epochs with per-agent perceive/store/route/sync actions at variable rates, fairness auditing every epoch, token usage tracking (compute/storage/bandwidth), and full results JSON outputgenerate-playfair-report.js produces playfair-report.html in the cyberpunk neon theme with region comparison cards, agent stat cards with token usage/drift/CPV, ASCII epoch timeline sparklines, needlecast flow log, scenario event timeline, and fairness verdict bannerrun.sh (cluster → build → shared infra → regions → contracts → services → game → results → cleanup) with --skip-cluster, --skip-build, --epochs N flagsDockerfile.orchestrator (node:20-alpine), Dockerfile.service (generic TS service with SERVICE build arg)npx hardhat run scripts/deploy.ts --network cortexRun: pnpm test:playfair or ./tests/playfair/run.sh --epochs 20
Major milestone: full unit test coverage across all packages and contracts, with cyberpunk-themed HTML reporting.
verifyContinuity() for sequential epoch validation and verifyShardInclusion() for Merkle shard proofs; integrated pin lease system@ecca/proto — 35 tests: token taxonomy, event schemas, zod validators, ECCA constants@ecca/crypto — 53 tests: SHA-256, HKDF, AES-GCM, Ed25519, Merkle trees, MMR, coherence roots@ecca/chain — 25 tests: cortex chain config, 7 contract ABIs, client wrappers@ecca/service-base — 10 tests: Fastify bootstrap, health probes, CORS, shutdown@ecca/semantic-address — 17 tests: 5-facet grammar, prefix queries, address bookrun-unit-tests.sh master runner with --packages/--contracts flags; scripts/generate-test-report.js produces unit-test-report.html in the cyberpunk neon theme with per-suite WHAT/HOW/WHY/WHEN/WHERE detail boxes, service dependency tags, individual test results, and lifecycle gridsynapse-api → siyana-api across all services, imports, and documentation@ecca/semantic-address — new package implementing hierarchical content-derived addressing with a 5-facet grammar (domain › entity › relation › temporal › qualifier)@ecca/proto export mismatches — added standalone re-exports for EPOCH_INTERVAL_MS, DRIFT_MAX_DEFAULT, etc.@ecca/crypto type mismatches — hex encoding for coherenceRoot() callers@ecca/proto, @ecca/crypto, @ecca/bus, @ecca/db, @ecca/chain, @ecca/service-base