Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ This is not a product spec. It's an evolving exploration of a hard problem space
- [Vertex AI Inference Provisioning](docs/plans/vertex-inference-provisioning.md) — Provisioning and configuration for Vertex AI inference endpoints
- [ADR-0045 Forge-Portable Harness Schema — Phase 1](docs/plans/adr-0045-forge-portable-harness-phase1.md) — Implementation plan for ADR-0045 forge-portable harness schema (Phase 1)
- [ADR-0045 Forge-Portable Harness Schema — Phase 2](docs/plans/adr-0045-forge-portable-harness-phase2.md) — Implementation plan for ADR-0045 Phase 2: adopt new schema fields across install, scaffold, and lock flows
- [ADR-0045 Forge-Portable Harness Schema — Phase 3](docs/plans/adr-0045-forge-portable-harness-phase3.md) — Implementation plan for ADR-0045 Phase 3: deprecate config.yaml agents block, add Lint() diagnostics, migrate to harness-first discovery
- [ADR-0046 Drift Scanner](docs/plans/2026-03-06-adr46-drift-scanner.md) — Implementation plan for ADR-0046 drift detection tool
- **[docs/guides/](docs/guides/)** — Practical how-to documentation for administrators and developers (see [ADR 0023](docs/ADRs/0023-user-documentation-structure.md))
- **[docs/ADRs/](docs/ADRs/)** — Architecture Decision Records for crystallizing specific decisions (see [ADR 0001](docs/ADRs/0001-use-adrs-for-decision-making.md))
Expand Down
14 changes: 7 additions & 7 deletions docs/ADRs/0045-forge-portable-harness-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,9 @@ agent definition `.md` file). `agent` describes *how* the agent behaves;
`role` describes *what function* the agent serves in the pipeline; `slug`
describes *who* the agent authenticates as. During Phase 1-2, `role` and
`slug` are optional — `Validate()` does not require them. In Phase 3,
`Validate()` emits warnings when `role` is missing. In Phase 4,
`Validate()` requires `role`.
`Validate()` continues to allow missing `role`, but `Lint()` emits
warnings when `role` is missing. In Phase 4, `Validate()` requires
`role`.

`base` references another harness file whose fields serve as defaults for
this harness. Any field set in the child overrides the corresponding base
Expand Down Expand Up @@ -516,11 +517,10 @@ func (h *Harness) ResolveForge(platform string) error { ... }
Note: `role`/`slug` becoming required is independent of the `forge:`
section — a harness that only targets one platform still needs `role`
and `slug` but does not need `forge:`.
Implementation note: the current `Validate()` method returns hard errors
only — there is no warning/advisory path. Phase 3 will need a separate
`Lint()` method or log-level warnings to emit non-fatal diagnostics
without breaking existing callers that treat any `Validate()` error as
a hard stop.
Implementation note: `Validate()` returns hard errors only. Phase 3
adds a separate `Lint()` method that returns non-fatal `[]Diagnostic`
warnings without breaking existing callers that treat any `Validate()`
error as a hard stop.

4. **Phase 4 (remove):** Require `role` in all harness files. Remove the
`agents:` block from config.yaml entirely. Agent identity and
Expand Down
Loading
Loading