Skip to content

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.

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