Skip to content

I2671 — A provider offers its cache as a signed, expiring mesh record, and a stopped provider goes stale

Let a node publish its offer through the mesh journal so peers discover it without a committed endpoint, and let the offer expire when the provider stops.

BLOCKED wave 1 · p1 · implementation profile · runs alone

Part of development-runtime — The runtime has a development surface.

Blocked. This issue cannot start until I2670 is done. The status is derived from that, not declared.

Objective

Let a node publish its offer through the mesh journal so peers discover it without a committed endpoint, and let the offer expire when the provider stops.

Why

The owner, 2026-10-13, with full clearance: set up MinIO, an sccache server and every mesh node, verified and validated. The cluster compiles the same Rust on every machine from a cold cache; two declared offload hosts were under their disk minimum that day. See ADR 0157.

Current state

Measured on master b29cf4e487 on 2026-10-13: the advertisement datagram carries transports only and is size-bound; no generic service event exists in the journal.

Desired state

A signed service record kind in the journal with a lifetime shorter than a few heartbeats, refreshed only while the provider's own health probe passes, replayed and expired by the existing liveness rules.

Scope

  • apps/majordomus-cli/src/mesh/
  • docs/MESH.md

Out of scope

  • Provisioning the store: I2674

Dependencies

Acceptance criteria

  • A peer sees an offer within one heartbeat of the provider becoming healthy
  • The offer is stale within its lifetime after the provider stops
  • A record from a key that is not trusted is not an offer (mesh-is-observation-not-authority)
  • The record carries no secret

Validation

  • bin/majordomus plan validate
  • MJ_TEST_JOBS=2 bash test/run.sh 3013_a_mesh_build_cache

Evidence required

  • offer_discovery_case
  • offer_expiry_case

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2671.yaml. Read it back with majordomus plan show I2671.

Searches the titles and descriptions of every page this site publishes.