{"id":51145824,"url":"https://github.com/forgewirelabs/repopact","last_synced_at":"2026-06-26T03:00:36.232Z","repository":{"id":365042815,"uuid":"1269646927","full_name":"ForgeWireLabs/repopact","owner":"ForgeWireLabs","description":"Repository-native operating system for durable work between humans and coding agents: scoped authority, work items, evidence, audits, and project history kept inside the repo.","archived":false,"fork":false,"pushed_at":"2026-06-23T01:10:43.000Z","size":449,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-23T03:09:41.332Z","etag":null,"topics":["agentic-workflows","agents-md","ai-governance","coding-agents","developer-tools","policy-as-code","repository-governance"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ForgeWireLabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audits/README.md","citation":null,"codeowners":null,"security":null,"support":null,"governance":"governance/charter.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-15T00:54:50.000Z","updated_at":"2026-06-23T01:10:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ForgeWireLabs/repopact","commit_stats":null,"previous_names":["forgewirelabs/repopact"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ForgeWireLabs/repopact","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForgeWireLabs%2Frepopact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForgeWireLabs%2Frepopact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForgeWireLabs%2Frepopact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForgeWireLabs%2Frepopact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ForgeWireLabs","download_url":"https://codeload.github.com/ForgeWireLabs/repopact/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForgeWireLabs%2Frepopact/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34801014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-workflows","agents-md","ai-governance","coding-agents","developer-tools","policy-as-code","repository-governance"],"created_at":"2026-06-26T03:00:24.618Z","updated_at":"2026-06-26T03:00:36.218Z","avatar_url":"https://github.com/ForgeWireLabs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RepoPact\n\nRepoPact is a **repository-native governance kernel for durable agent work**. It keeps the\nload-bearing state of a project — intent, authority, evidence, decisions, and drift — as\ntyped, version-controlled records in the filesystem, so a new contributor or agent can\nrecover where things stand *without* a prior conversation, and so the guarantees that matter\ncannot be silently weakened.\n\n\u003e The repository is the pact: authority, intent, evidence, and history that survive every\n\u003e session.\n\n`pip install repopact` · Apache-2.0 · current release **2.0.1**\n([changelog](decisions/0021-preflight-mandatory-and-provenance.md)).\n\n## How it relates to `AGENTS.md`\n\n`AGENTS.md` (and `CLAUDE.md`, editor rules) tell an agent *what to do* — they're\ninstructions, plain Markdown, with no enforcement. RepoPact is the layer **above** them:\n\n\u003e `AGENTS.md` tells the agent what to do. RepoPact proves it didn't quietly undo it.\n\nRepoPact's distinguishing primitive is the **binding invariant** — a declared guarantee with\na rationale, an escalation path, and (where its logical type permits) a machine enforcer.\nThat, plus evidence-gated completion and a filesystem state machine, is what turns a folder\nconvention into a contract. `repopact adopt` ingests an existing `AGENTS.md` rather than\nreplacing it (decision [`0020`](decisions/0020-launch-positioning-layer-above-agents-md.md)).\n\n## Core loop\n\n```text\nintent -\u003e scoped authority -\u003e work item -\u003e implementation -\u003e evidence -\u003e audit -\u003e history\n```\n\n![RepoPact core loop over a filesystem state machine](docs/assets/repopact-flow.svg)\n\n## Primitives\n\n1. **Charter \u0026 invariants** — principles (judgment) and binding invariants\n   (escalation-gated) in `governance/`.\n2. **Frozen surface** — paths and symbols that require operator approval (`--ack`) to change.\n3. **Scopes \u0026 roles** — layered `AGENTS.md` contracts plus a role/scope map in\n   `governance/owners.json`.\n4. **Work items** — narrative `README.md` + machine-readable `work-item.json` with\n   evidence-linked acceptance criteria. **Mandatory preflight** (2.0): a work item must be\n   recorded *before* implementation begins (`repopact new` stamps the marker).\n5. **Evidence** — immutable run manifests under `evidence/runs/`.\n6. **Decisions \u0026 policies** — durable choices (`decisions/`) and operating rules\n   (`governance/policies/`) whose rationale outlives any single work item.\n7. **Provenance** (2.0) — every record is `concrete`, `provisional`, or `inferred`.\n   `adopt` emits provisional/inferred records (honest, not fabricated); `doctor` ratchets\n   them to `concrete` as real evidence arrives. See *2.0 changes* below.\n8. **Reconciliation** — audits and a *generated* dashboard surface drift and review\n   staleness rather than hand-maintaining it.\n\n## Install \u0026 quick start\n\n```powershell\npip install repopact                # the CLI + reference validator, from PyPI\nrepopact init --target ../your-repo # seed a valid RepoPact in a new repo\ncd ../your-repo\nrepopact new work-item \"Title of the work\"   # stamps records (incl. the preflight marker)\nrepopact validate\nrepopact dashboard\n```\n\n`repopact` dispatches `init`, `adopt`, `validate`, `new`, `dashboard`, `spec`,\n`check-frozen`, `import-plan`, and `doctor`. Records are validated against `schemas/*.json`\n(structure) and by the validator (cross-record semantics; decision\n[`0003`](decisions/0003-validate-records-against-json-schemas.md)). Begin with\n[`AGENTS.md`](AGENTS.md), then [`governance/charter.md`](governance/charter.md) and\n[`governance/workflow.md`](governance/workflow.md).\n\n## Adopt an *existing* repository\n\nFor a project that already has CODEOWNERS, CI workflows, and nested `AGENTS.md` contracts,\n`adopt` maps those existing signals into RepoPact records without overwriting anything:\n\n```powershell\nrepopact adopt --target ../existing-repo --dry-run   # preview the plan, write nothing\nrepopact adopt --target ../existing-repo             # create records, then validate\nrepopact doctor                                      # diagnose + repair drift; migrate on upgrade\n```\n\nCODEOWNERS becomes scopes and roles; each `.github/workflows/*` becomes a binding-gate policy\n(plus invariant `INV-2` and a frozen-surface entry); every nested `AGENTS.md` is registered as\na contract; git history seeds a first **inferred** evidence run, and the adoption record is\nrecorded as **provisional** — honestly typed, not a fabricated \"completed\" claim. Adoption is\nidempotent.\n\n## 2.0: mandatory preflight + provenance-typed records\n\nDecision [`0021`](decisions/0021-preflight-mandatory-and-provenance.md) (supersedes 0018):\n\n- **Mandatory preflight (default on).** No work begins until a work item exists and\n  propagates through the pact; `repopact new` stamps the marker. Existing repos grandfather\n  their pre-2.0 items automatically — `adopt`/`init` set a preflight epoch and `doctor`\n  migrates on upgrade. *This is a breaking change*: run `repopact doctor` after upgrading.\n- **Provenance typing** (`concrete` / `provisional` / `inferred`, default `concrete`). This\n  is the principled escape from the *adoption trilemma*: `adopt` emits provisional/inferred\n  records so the result is both **valid** and **faithful** (reconstruction is labelled, not\n  faked). Completion still requires `concrete` evidence; `doctor` ratchets when it arrives.\n\n## Status is a filesystem transition\n\nWork moves between `work/active`, `work/blocked`, `work/deferred`, and `work/completed`; its\n`work-item.json` status must match its directory. Moving a work item never deletes its\nreasoning, decisions, or evidence links.\n\n## Derive over declare\n\nAnything computable from source records is generated, not authored by hand (the dashboard,\naudit-freshness views, and the derived blocks of `SPEC.md`). Only genuine sources are\nhand-maintained. See policy `001`.\n\n## Evaluation, formal model \u0026 the Proving Ground\n\nRepoPact is developed against its own evidence, not assertion. The `research/` lab notebook\nholds a [formal model](research/formal-model.md) (the L0–L5 kernel, the typed invariant\nlattice, the adoption trilemma), the pre-registered [experiment protocol](research/protocol.md)\nand [benchmark protocol](research/benchmark-protocol.md) (hypotheses H1–H13, falsification\ncriteria, [threats to validity](research/threats-to-validity.md)), a [findings\nregister](research/findings.md), and a full [paper draft](research/paper.md).\n\n**PactBench** — the runnable benchmark suite (pre-registered tasks measuring whether RepoPact\nenforcement reduces silent guarantee drift, with a model-agnostic harness and an S5 drift\nharness) — lives in the **[RepoPact Proving\nGround](https://github.com/ForgeWireLabs/repopact-proving-ground)**, a throwaway-but-real\nproject that consumes RepoPact from PyPI and is driven across every primitive, including cases\ndesigned to break it. RepoPact defines the *protocol* (`research/`); the Proving Ground hosts\nthe runnable suite. *RepoPact defines the pact; the Proving Ground tests whether the pact\nholds under agent pressure.*\n\n## Ecosystem\n\nRepoPact is the work-governance layer of [ForgeWire Labs](https://github.com/ForgeWireLabs) —\ninspectable agentic infrastructure (*inspect the work, bound the authority, preserve the\nevidence*). It composes with Fabric (execution governance) and ForgeLink (human-agent\ncommunication governance), but is independently useful on its own.\n\n## License \u0026 version\n\nApache-2.0 ([`LICENSE`](LICENSE), decision [`0002`](decisions/0002-license-apache-2.0.md)).\nThe spec version is in [`VERSION`](VERSION); templates for every record type live in\n[`templates/`](templates/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforgewirelabs%2Frepopact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforgewirelabs%2Frepopact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforgewirelabs%2Frepopact/lists"}