No description
  • Go 52.2%
  • Python 47%
  • Shell 0.7%
  • C 0.1%
Find a file
2026-10-03 22:20:39 +02:00
.agents/skills feat(methodology): add modular development and research skills 2026-10-03 22:20:39 +02:00
.claude feat(rig): R4-R6.3 execution bridge, component protocol, and durable state 2026-09-19 17:07:22 +02:00
analysis/m1c1a/first_pass research(m1c): complete M1C1A campaign and first-pass analysis 2026-10-03 21:13:16 +02:00
cmd feat(rig): ADR-0012 step 9 - post hoc id-template adapter and E001 declaration 2026-09-29 16:54:37 +02:00
components feat(fly-research): freeze FR2-M1B1-E001 Spec, descriptors, and budgets 2026-09-26 14:22:59 +02:00
configs research(m1c): complete M1C1A campaign and first-pass analysis 2026-10-03 21:13:16 +02:00
docker feat(lab): establish automated FlyAdmin experiment pipeline v1 2026-09-12 20:54:20 +02:00
docs docs(evidencerig): preserve CI/CD v1 design 2026-10-03 21:25:16 +02:00
evaluator feat(gate11): add supervisor utility benchmark 2026-09-14 11:26:44 +02:00
experiments docs(evidence): preserve pre-lab FlyAdmin experiments 2026-09-12 21:01:31 +02:00
fixtures/lab-v1 feat(lab): establish automated FlyAdmin experiment pipeline v1 2026-09-12 20:54:20 +02:00
internal test(rig): ADR-0012 step 11 acceptance correction - hermetic E001 tests, pinned Phase 4 source 2026-09-29 18:11:43 +02:00
k8s/rig-v1 fix(rig): make restart-loop recovery transactional 2026-09-13 16:46:25 +02:00
project-methodology feat(methodology): add modular development and research skills 2026-10-03 22:20:39 +02:00
provenance feat(lab): establish automated FlyAdmin experiment pipeline v1 2026-09-12 20:54:20 +02:00
schemas research(m1c): complete M1C1A campaign and first-pass analysis 2026-10-03 21:13:16 +02:00
scripts research(m1c): complete M1C1A campaign and first-pass analysis 2026-10-03 21:13:16 +02:00
src/flyadmin feat(methodology): add modular development and research skills 2026-10-03 22:20:39 +02:00
systemd fix(m1b): harden managed launch retries and mounts 2026-09-14 22:05:12 +02:00
testdata/rig feat(rig): ADR-0012 step 7 - deterministic result.md renderer 2026-09-29 11:53:38 +02:00
tests feat(methodology): add modular development and research skills 2026-10-03 22:20:39 +02:00
tools feat(rig): ADR-0012 step 7 - deterministic result.md renderer 2026-09-29 11:53:38 +02:00
upstream chore(m1b): pin temporal smoke runtime source 2026-09-14 22:50:49 +02:00
.dockerignore feat(lab): establish automated FlyAdmin experiment pipeline v1 2026-09-12 20:54:20 +02:00
.gitignore feat(fly-research): freeze FR2-M1B1-E001 Spec, descriptors, and budgets 2026-09-26 14:22:59 +02:00
.gitmodules feat(lab): establish automated FlyAdmin experiment pipeline v1 2026-09-12 20:54:20 +02:00
AGENTS.md feat(methodology): add modular development and research skills 2026-10-03 22:20:39 +02:00
compose.yaml feat(lab): add bounded disk write diagnosis v3 2026-09-13 09:36:35 +02:00
Dockerfile fix(m1b): separate config and artifact mounts 2026-09-14 22:16:36 +02:00
fr2-p2-flycoinrh-smoke.spec.yaml wip(rig): start OCI component launcher integration 2026-09-25 22:47:38 +02:00
go.mod EvidenceRig R1 contract refinement and R2 Go compiler/CLI 2026-09-16 09:43:25 +02:00
go.sum EvidenceRig R1 contract refinement and R2 Go compiler/CLI 2026-09-16 09:43:25 +02:00
pyproject.toml feat(methodology): add modular development and research skills 2026-10-03 22:20:39 +02:00
README.md feat(rig): R4-R6.3 execution bridge, component protocol, and durable state 2026-09-19 17:07:22 +02:00
rig.workspace.yaml feat(rig): ADR-0012 step 9 - post hoc id-template adapter and E001 declaration 2026-09-29 16:54:37 +02:00
roadmap.md research(fr2): freeze M1C.0D operating thresholds 2026-10-01 20:09:14 +02:00

EvidenceRig

EvidenceRig turns declarative experiment specifications into immutable execution plans and reproducible evidence.

EvidenceRig is a declarative experimentation and evidence orchestration platform for reproducible computational research. You describe an experiment as data. The platform compiles it into a canonical, immutable plan, binds a human approval to that plan's hash, executes it under a recorded runtime, and keeps every result, artifact, decision and state transition as content-addressed evidence.

The distinguishing capability is not batch execution. It is being able to answer, long after the fact and without trusting anybody's memory: what was planned, what actually ran, under which exact runtime, what evidence was produced, which data was visible when, and why a gate promoted or stopped the work.

CLI: rig. Status: pre-release. See current status.

What it does

Capability What it means in practice
Deterministic planning The same specification compiles to the same plan bytes on any machine. No timestamps, host paths, locale or map ordering leak into a plan.
Immutable plans An ExperimentPlan is canonical JSON with a SHA-256 identity. Every default is materialized, so nothing is hidden behind a framework.
Approvals bound to identity Approval binds the plan hash, not editable source bytes. Change one parameter and the approval no longer applies.
Content-addressed artifacts An artifact is named by the SHA-256 of its exact bytes. A path never silently refers to different data.
Provenance A typed graph links spec, plan, approval, runtime, component digests, attempts, artifacts, analyses, decisions and reports.
Evidence lifecycle Append-only events, an authoritative state projection, checksummed checkpoints, and immutable attempt records.
Checkpoints and recovery Restart reconciles durable evidence before doing new work. Success is never inferred from a process disappearing; contradictions fail closed.
Controlled held-out data Evidence cohorts carry roles and release policies, so confirmation and final-validation data stay sealed until the declared conditions are met.
Validation and gates Typed validators check results; gates are deterministic predicates over declared metrics, with recorded reasons.
Human-comprehensible status Commands explain state, progress, resource use, runtime identity and the next gate in plain terms.

What it is not: a workflow programming language, a cluster scheduler, a CI runner, a notebook platform, or a way to make a result look more reproducible than it is.

Where it came from

EvidenceRig grew out of a real system. FlyAdmin is a read-only Linux and Kubernetes diagnostic research project that needed staged scientific experiment matrices with exact approval, immutable container provenance, typed attempts, resource limits, deterministic promotion and a separate adjudication phase. The runtime it produced works, and it is still the authoritative executor for its own campaigns.

That relationship is now one-directional:

                EvidenceRig  (generic platform)
                     ^
                     |
   FlyAdmin / FlyCoinRH / other experiment systems  (consumers, case studies)

FlyAdmin and FlyCoinRH are historical origin, compatibility targets, real-world case studies, and future backend/plugin consumers. They do not define the generic core. No FlyAdmin or neuroscience vocabulary belongs in EvidenceRig generic contracts, schemas or packages.

Repository layout

Path What it is
docs/rig/ EvidenceRig product documentation: architecture, contracts, CLI, CI/CD, migration plan, ADRs, methodologies, templates, examples
schemas/rig/v1/ EvidenceRig v1 contract schemas (JSON Schema 2020-12)
testdata/rig/v1/ EvidenceRig v1 conformance data: canonical-JSON vectors, node-identity vectors, a hand-authored Plan fixture
testdata/rig/legacy-m1b/, testdata/rig/canonical/ The R0 conformance corpus: a frozen characterization of the legacy runtime, never regenerated casually
tools/rig/ Small Python reference implementations used by tests and CI: canonicalization, schema loading, node-identity computation, deterministic-ordering and Plan semantic-invariant checks. Not the product runtime.
src/flyadmin/ The legacy FlyAdmin runtime, including the M1B campaign executor being migrated from. Still authoritative for its own campaigns.
scripts/, configs/, systemd/, schemas/*.json Legacy preparation, configuration, installed-path and schema assets
roadmap.md Both tracks: the EvidenceRig product roadmap and the FlyAdmin scientific roadmap

Current status

EvidenceRig is contract-first and pre-implementation. Milestones are defined in docs/rig/migration-plan.md.

Milestone State
R0 — current-state semantic freeze and conformance corpus complete
R0.5 — legacy runtime hardening complete
R1 — generic EvidenceRig contracts and schemas complete; approved for implementation after human architecture review
R2 — Go CLI and deterministic compiler complete; rig validate, rig plan, planner only
R3 — legacy adapter and read-only observer UX complete; rig status, rig inspect, rig verify (legacy M1B only, read-only)
R4 — managed compatibility launch adapter R4.2 complete; rig run requests execution via the existing systemd unit (legacy M1B only). R4.1 (plan registry) and R4.3 (observer collision fix) deferred
R5 — generic component and backend protocol R5.1 complete; internal/component describes, validates, invokes, and verifies one bounded component invocation. R5.2 (worker-pool backend) and R5.3 (FlyCoinRH adapter) deferred
R6–R9 planned

rig compiles an ExperimentSpec into an ExperimentPlan; it does not execute one. Its legacy status/inspect/verify commands only ever read an existing campaign directory, rig run only ever requests execution through the existing systemd-owned flyadmin-m1b@<id>.service unit, and internal/component can invoke one isolated component process and verify its result -- none of this schedules work, owns lifecycle state, or invokes Python/Docker directly. Until a milestone explicitly transfers ownership after installed-path acceptance, the legacy systemd -> controller -> Docker -> CampaignRunner chain remains the authoritative executor for existing campaigns.

Start here

Running the tests

The legacy runtime requires POSIX (fcntl leases). Contract and schema tests additionally need jsonschema and PyYAML; they skip cleanly without them.

PYTHONPATH=src:tests:tools python3 -m unittest discover -s tests -t tests
pip install -e '.[dev]'

Some legacy tests depend on host-specific installed paths and on generated artifact directories that are not checked in; those failures are environmental and are listed in docs/rig/current-state-inventory.md.