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.