I0601 — Let a policy name a shared source it does not copy
Let a repository's policy name a shared policy source and resolve it offline from the filesystem, so that one statement of a rule can govern more than one repository without being pasted into each.
BLOCKED wave 0 · p3 · deep-work profile · runs alone
Part of shared-policy — Shared policy across repositories and workers.
Blocked. This issue cannot start until milestone:shared-policy is done. The status is derived from that, not declared.
Objective
Let a repository's policy name a shared policy source and resolve it offline from the filesystem, so that one statement of a rule can govern more than one repository without being pasted into each.
Why
Copying is what makes organisational policy drift: every repository holds a fork of the rule and nobody can see which forks moved. A named source is the smallest change that makes drift detectable at all.
Current state
Policy is per repository and entirely local. Nothing refers to anything outside the checkout.
Desired state
A policy names a shared source, the tool resolves it without a network call, and every command that reads policy reads the resolved result.
Scope
- lib
- share
- docs
Out of scope
- Fetching a policy over a network, from a registry, or from any service
- A hosted component that must be running for the tool to work
Dependencies
None. This issue is a root of the graph.
What waits on this
Acceptance criteria
- A shared source is resolved from the filesystem with no network access
- Every policy reader sees the resolved policy, and no reader bypasses resolution
- An unresolvable source is a named finding that stops the command, never a silent fallback to local
- A repository that names no shared source behaves exactly as it does today
Validation
- bash test/run.sh
- bin/majordomus doctor
Evidence required
- suite
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
This is where a local-first tool grows a dependency outside its checkout; keeping resolution to the filesystem is what preserves the offline guarantee.
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/I0601.yaml. Read it back with majordomus plan show I0601.