Skip to content

I0604 — Prove the offline guarantee survives sharing

Prove with cases and a doctrine that no path introduced by shared policy reaches a network, and that an unavailable shared source degrades to a named refusal rather than a fetch or a silent local fallback.

BLOCKED wave 3 · p3 · debugging profile · runs alone

Part of shared-policy — Shared policy across repositories and workers.

Blocked. This issue cannot start until I0603, milestone:shared-policy are done. The status is derived from that, not declared.

Objective

Prove with cases and a doctrine that no path introduced by shared policy reaches a network, and that an unavailable shared source degrades to a named refusal rather than a fetch or a silent local fallback.

Why

Every guarantee this tool makes rests on it being local and offline. Sharing policy across repositories is the exact feature that historically converts a local tool into a client of something, and it has to be refused structurally rather than by intention.

Current state

Resolution, override and drift reporting all exist and are documented as filesystem-only. Nothing enforces that they stay so.

Desired state

A doctrine refuses a network call in the policy resolution path, cases cover an unavailable source, and the refusal names the doctrine.

Scope

  • share
  • lib
  • test/cases

Out of scope

  • Any offline cache of a remote source, which would be a fetch with extra steps

Dependencies

What waits on this

Acceptance criteria

  • A doctrine declares the rule, its validator exists, and doctor proves it reaches the command that runs it
  • A case shows an unavailable shared source producing a named refusal, with nothing fetched and no fallback
  • CI runs the case

Validation

  • bash test/run.sh
  • bin/majordomus doctor

Evidence required

  • suite
  • doctor

Evidence

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

Risk

The pressure to add a remote source arrives with the first user who has repositories on two machines; the doctrine is what makes that a decision rather than a patch.

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/I0604.yaml. Read it back with majordomus plan show I0604.

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