AGENTS.md@infrastructure/methods · git:20260717.e58a93d · 2026-07-17 · sha256 a9e5494ec1d4277e

AGENTS.md@infrastructure/methods git:20260717.e58a93dA

Immutable. This exact content is served forever at /api/v1/blob/a9e5494ec1d4277e.

# Methods Orchestration Package

## Purpose

`infrastructure.methods` turns existing repo contracts into an explicit methods
orchestration plan:

- pipeline stages and `contract:` metadata from `pipeline.yaml`
- manuscript method sections — a file qualifies when its **name** carries a
  method token (`method`/`methodology`/`experimental_setup`/`protocol`) **or**
  its body contains a top-level Methods/Methodology/Protocol heading. The
  heading fallback covers exemplars whose Methods content lives in a
  differently-named section file (e.g. `template_template`'s `03a_architecture.md`).
- `artifact_manifest.json`
- `evidence_registry.json`
- validation commands that prove the methods surface is current

It is a Layer-1 read-only orchestration contract. Do not put scientific
algorithms or project analysis logic here.

## Files

| File | Role |
| --- | --- |
| `models.py` | Dataclasses for stages, plans, and validation issues. |
| `orchestration.py` | Plan builder, validator, and Markdown renderer. |
| `cli.py` | `python -m infrastructure.methods plan` command. |
| `__main__.py` | Module entry point. |

## Contracts

- Preserve the thin-orchestrator pattern: scripts run stages; this package maps
  contracts and validation surfaces.
- Keep paths repo-relative in public payloads so generated reports are stable.
- When a project ships `methods_pipeline.yaml`, that file overrides
  `pipeline.yaml` and the repository default pipeline for plan discovery.
- `validate_methods_orchestration_plan(..., require_generated_artifacts=True)`
  (default) treats missing artifact manifests and evidence registries as
  publication-blocking errors. Source-only publication audits pass
  `require_generated_artifacts=False`.
- Stage `script` values must already be repo-relative paths (`scripts/...` or
  `projects/...`); verification commands expand `{project}` only.

## Tests

```bash
uv run pytest tests/infra_tests/methods -q
```