A repository-native standard for durable agent work: binding invariants, evidence-gated work items, and drift audits.
Project description
RepoPact
RepoPact is a repository-native operating system for durable agent work. It makes authority, intent, evidence, and architectural drift visible in the filesystem so that a new contributor or agent can recover the state of the project without depending on a prior conversation.
The repository is the pact: authority, intent, evidence, and history that survive every session.
Why "pact"
Conventions like AGENTS.md, ADRs, and issue trackers each capture a fragment of
project knowledge, but none of them makes the binding part explicit — the
guarantees an agent must not silently weaken. RepoPact's distinguishing primitive is
the binding invariant: a declared guarantee with a rationale, an escalation path,
and (where possible) a machine enforcer. That, plus evidence-gated completion and a
filesystem state machine, is what turns a folder convention into a contract.
Core loop
intent -> scoped authority -> work item -> implementation -> evidence -> audit -> history
Primitives
- Charter & invariants: principles (judgment) and binding invariants
(escalation-gated) in
governance/. - Frozen surface: paths and symbols that require operator approval to change.
- Scopes & roles: layered
AGENTS.mdfiles plus a role/scope map ingovernance/owners.json. - Work items: narrative
README.mdplus machine-readablework-item.json, with evidence-linked acceptance criteria. - Evidence: immutable run manifests under
evidence/runs/. - Decisions & policies: durable choices (
decisions/) and operating rules (governance/policies/) whose rationale outlives any single work item. - Reconciliation: audits and a generated dashboard that surface drift and review staleness rather than hand-maintaining it.
Quick start
pip install -r requirements.txt
python scripts/validate_repo.py
python scripts/generate_dashboard.py
python -m unittest discover -s tests -v
python scripts/check_frozen_surface.py --base origin/main
Records are validated against schemas/*.json (structure) and by the validator
(cross-record semantics). See decision
0003.
Begin with AGENTS.md, then read
governance/charter.md and
governance/workflow.md.
Adopt into a new repository
Install the CLI, then bootstrap:
pipx install git+https://github.com/ForgeWireLabs/repopact # or: pip install .
repopact init --target ../your-repo # seed a valid RepoPact
cd ../your-repo
repopact new work-item "Title of the work" # stamp records from templates/
repopact validate
repopact dispatches init, adopt, validate, new, dashboard, spec, and
check-frozen against the current repository. The loose-script form still works
(python scripts/init_repo.py --target ...) for repos that vendor the scripts.
Adopt an existing repository
For a project that already has CODEOWNERS, CI workflows, and nested AGENTS.md
contracts, adopt maps those existing signals into RepoPact records without
overwriting anything:
repopact adopt --target ../existing-repo --dry-run # preview the plan, write nothing
repopact adopt --target ../existing-repo # create records, then validate
CODEOWNERS becomes scopes and roles; each .github/workflows/* becomes a binding-gate
policy (plus invariant INV-2 and a frozen-surface entry); every nested AGENTS.md
is registered as a contract; git history seeds the first evidence run. It is
idempotent — re-running skips records that already exist.
init_repo.py writes the minimal valid source records, copies the schemas and
tooling, and validates the result. Templates for every record type live in
templates/. RepoPact is licensed under Apache-2.0 (see
LICENSE and decision 0002);
its spec version is in VERSION.
Status is a filesystem transition
Work moves between work/active, work/blocked, work/deferred, and
work/completed. Its work-item.json status must match its directory. Moving a
work item never deletes its reasoning, decisions, or evidence links.
Derive over declare
Anything computable from source records is generated, not authored by hand. The
dashboard and audit-freshness views are derived; the only hand-maintained files
are genuine sources (charter, invariants, frozen surface, schemas, owners, work
items, evidence, decisions, policies). See policy 001.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repopact-1.9.0.tar.gz.
File metadata
- Download URL: repopact-1.9.0.tar.gz
- Upload date:
- Size: 62.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ac2d948af177ac5a9953731277d8205170bca7217c084f58485971920b3917c
|
|
| MD5 |
c578e00a63f7555dc16bc106730d79c2
|
|
| BLAKE2b-256 |
1f8ee1bbae463e19f99e8c4a1d84f71169b85cd2d4afc9c3ac9f66aed9f853e4
|
File details
Details for the file repopact-1.9.0-py3-none-any.whl.
File metadata
- Download URL: repopact-1.9.0-py3-none-any.whl
- Upload date:
- Size: 62.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31f363af6d2975aad2c66928ff8554e8b6b87de66bb7371ff08f02c2c679bc30
|
|
| MD5 |
f3d0cd550a94df3ebcf3d5e25f9b369b
|
|
| BLAKE2b-256 |
80350f739278b04f6f0b2f7396bee18719ff13cbcccd6615850c31b5baf8a4e7
|