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
8 changes: 5 additions & 3 deletions .claude/agents/adr-reviewer.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ It does not edit artifacts, execute lifecycle verbs, create work items, or perfo
When invoked:

1. Read the rendered ADR using `govctl adr show <ADR-ID>` (never read the raw TOML file — use the rendered markdown)
2. Evaluate against the checklist below
3. Report findings organized by severity
2. Run or inspect `govctl check` diagnostics when evaluating source-sensitive reference syntax
3. Evaluate against the checklist below
4. Report findings organized by severity

## Review Checklist

Expand Down Expand Up @@ -58,7 +59,8 @@ When invoked:
### References

- [ ] Links to related RFCs/ADRs that constrained or informed the decision
- [ ] All artifact IDs in prose use `[[artifact-id]]` syntax — never bare IDs like "ADR-0026" or "RFC-0001" in running text. The `[[...]]` wrapper makes references clickable when rendered.
- [ ] Source-sensitive inline reference syntax is backed by `govctl check` diagnostics. Do not infer raw `[[artifact-id]]` usage from rendered output alone.
- [ ] If `govctl check` reports `W0112` for this ADR, flag the corresponding known artifact ID as needing `[[artifact-id]]` syntax. If no source diagnostics are available, report raw reference syntax as not assessed rather than guessing from rendered IDs.
- [ ] `refs` field uses plain IDs (not `[[...]]` syntax)
- [ ] `refs` field uses clause-level precision where applicable (e.g., `RFC-0000:C-WORK-DEF` not just `RFC-0000`)
- [ ] No redundant "References:" paragraph at the end of content fields — the `refs` field already tracks cross-references; repeating them as prose is noise
Expand Down
8 changes: 5 additions & 3 deletions .claude/agents/rfc-reviewer.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ It does not edit artifacts, execute lifecycle verbs, create work items, or perfo
When invoked:

1. Read the rendered RFC using `govctl rfc show <RFC-ID>` (never read raw artifact files directly — use the rendered markdown)
2. Evaluate against the checklist below
3. Report findings organized by severity
2. Run or inspect `govctl check` diagnostics when evaluating source-sensitive reference syntax
3. Evaluate against the checklist below
4. Report findings organized by severity

## Review Checklist

Expand All @@ -44,7 +45,8 @@ When invoked:

### Cross-references

- [ ] All artifact IDs in clause text use `[[artifact-id]]` syntax — never bare IDs like "ADR-0026" or "RFC-0001" in running text. The `[[...]]` wrapper makes references clickable when rendered.
- [ ] Source-sensitive inline reference syntax is backed by `govctl check` diagnostics. Do not infer raw `[[artifact-id]]` usage from rendered output alone.
- [ ] If `govctl check` reports `W0112` for this RFC, flag the corresponding known artifact ID as needing `[[artifact-id]]` syntax. If no source diagnostics are available, report raw reference syntax as not assessed rather than guessing from rendered IDs.
- [ ] `refs` field uses clause-level precision where applicable (e.g., `RFC-0000:C-WORK-DEF` not just `RFC-0000`)
- [ ] No redundant "References:" paragraph at the end of clause text — the `refs` field already tracks cross-references
- [ ] Referenced artifacts exist and are not deprecated
Expand Down
6 changes: 4 additions & 2 deletions .claude/agents/wi-reviewer.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ When invoked:

1. Read the rendered work item using `govctl work show <WI-ID>` (never read the raw TOML file — use the rendered markdown)
2. Use the rendered acceptance-criteria category labels such as `added:`, `fixed:`, `changed:`, and `chore:` as the source of truth for category checks
3. Report findings organized by severity
3. Run or inspect `govctl check` diagnostics when evaluating source-sensitive reference syntax
4. Report findings organized by severity

## Review Checklist

Expand Down Expand Up @@ -56,7 +57,8 @@ When invoked:

### References

- [ ] All artifact IDs in description and notes use `[[artifact-id]]` syntax — never bare IDs like "ADR-0026" or "RFC-0001" in running text
- [ ] Source-sensitive inline reference syntax is backed by `govctl check` diagnostics. Do not infer raw `[[artifact-id]]` usage from rendered output alone.
- [ ] If `govctl check` reports `W0112` for this Work Item, flag the corresponding known artifact ID as needing `[[artifact-id]]` syntax. If no source diagnostics are available, report raw reference syntax as not assessed rather than guessing from rendered IDs.
- [ ] `refs` field uses clause-level precision where applicable (e.g., `RFC-0000:C-WORK-DEF` not just `RFC-0000`)
- [ ] No redundant "References:" paragraph at the end of content fields — the `refs` field already tracks cross-references
- [ ] If implementing an RFC, the RFC ID is in refs
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,19 @@ Release entries are curated summaries for readers. Work item traceability remain

## [Unreleased]

### Added

- govctl check warns when reviewable governed prose contains a known artifact ID outside [[...]] syntax (WI-2026-06-11-001)

### Fixed

- reviewer agents no longer judge raw reference syntax from rendered output alone (WI-2026-06-11-001)
- work edit supports adding and removing verification.required_guards (WI-2026-06-11-002)
- work get can inspect verification.required_guards (WI-2026-06-11-002)
- work edit supports verification.waivers guard and reason fields (WI-2026-06-11-002)
- check from a subdirectory does not emit W0111 when the project root .gitignore contains local-state entries (WI-2026-06-12-001)
- source scanning during check is project-root relative even when invoked from a subdirectory (WI-2026-06-12-001)

## [0.9.4] - 2026-06-09

0.9.4 is a workflow hygiene and distribution patch. It tightens agent guidance
Expand Down
26 changes: 23 additions & 3 deletions docs/rfc/RFC-0000.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!-- GENERATED: do not edit. Source: RFC-0000 -->
<!-- SIGNATURE: sha256:496196ed1073947f867c6730c56c34da58f1b045bf939d98b7804511f8feea9a -->
<!-- SIGNATURE: sha256:6e27578ee123c2d51b62e243fbb3a07d215ac6cc100983375d66f341c1acefb7 -->

# RFC-0000: govctl Governance Framework

> **Version:** 1.3.2 | **Status:** normative | **Phase:** stable
> **Version:** 1.3.3 | **Status:** normative | **Phase:** stable

---

Expand Down Expand Up @@ -119,12 +119,24 @@ Implementations MUST validate these rules during project validation (for example

- Work Item `refs` entries and `[[...]]` link targets MAY identify any artifact type.

This clause only defines the RFC/ADR/Work Item authority hierarchy. It does not impose additional target-kind restrictions for artifact types outside that hierarchy.
Known artifact-ID mentions in reviewable governed RFC clause text, governed ADR content fields, and governed Work Item prose SHOULD use `[[artifact-id]]` inline reference syntax. This inline syntax expectation does not apply to structured `refs` field entries.

For this inline syntax warning, reviewable governed prose means draft RFC clause text, proposed ADR content fields, and Work Item description, notes, and acceptance criteria for Work Items that are not `done`.

Project validation SHOULD report a warning when a known artifact ID appears in reviewable governed prose outside `[[...]]` inline reference syntax.

Project validation MAY omit this inline syntax warning for accepted, stable, deprecated, superseded, done, or otherwise historical artifacts.

Unknown artifact-ID-shaped text MAY appear as an example without being treated as an artifact reference.

This clause only defines the RFC/ADR/Work Item authority hierarchy and inline reference syntax expectations. It does not impose additional target-kind restrictions for artifact types outside that hierarchy.

**Rationale:**

This hierarchy prevents circular dependencies and maintains clear authority chains. An RFC that links to or names an ADR or Work Item as a governed reference inverts the dependency direction — lower layers become authorities over the specification.

Inline reference syntax makes artifact links explicit in source while allowing rendered projections to remain human-readable. A validation warning gives reviewers source-level evidence for raw reference syntax without requiring them to infer it from rendered output. Limiting this warning to reviewable artifacts avoids forcing historical backfill before existing accepted or completed artifacts can pass normal project validation.

**Prose outside governed reference surfaces:**

Normative RFC clause text SHOULD remain self-contained. Non-governed explanatory text MAY mention artifact identifier shapes as examples, but known lower-authority artifact identifiers in governed RFC clause text and governed ADR content fields are validated as references even without `[[...]]` delimiters.
Expand Down Expand Up @@ -316,6 +328,14 @@ A guard check MUST pass only when the command exits successfully. If `pattern` i

## Changelog

### v1.3.3 (2026-06-11)

Clarify inline reference validation

#### Changed

- Project validation should warn on known artifact IDs in governed prose that are not written with inline reference syntax

### v1.3.2 (2026-06-04)

Align reference hierarchy wording
Expand Down
14 changes: 13 additions & 1 deletion gov/rfc/RFC-0000/clauses/C-REFERENCE-HIERARCHY.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,24 @@ Implementations MUST validate these rules during project validation (for example

- Work Item `refs` entries and `[[...]]` link targets MAY identify any artifact type.

This clause only defines the RFC/ADR/Work Item authority hierarchy. It does not impose additional target-kind restrictions for artifact types outside that hierarchy.
Known artifact-ID mentions in reviewable governed RFC clause text, governed ADR content fields, and governed Work Item prose SHOULD use `[[artifact-id]]` inline reference syntax. This inline syntax expectation does not apply to structured `refs` field entries.

For this inline syntax warning, reviewable governed prose means draft RFC clause text, proposed ADR content fields, and Work Item description, notes, and acceptance criteria for Work Items that are not `done`.

Project validation SHOULD report a warning when a known artifact ID appears in reviewable governed prose outside `[[...]]` inline reference syntax.

Project validation MAY omit this inline syntax warning for accepted, stable, deprecated, superseded, done, or otherwise historical artifacts.

Unknown artifact-ID-shaped text MAY appear as an example without being treated as an artifact reference.

This clause only defines the RFC/ADR/Work Item authority hierarchy and inline reference syntax expectations. It does not impose additional target-kind restrictions for artifact types outside that hierarchy.

**Rationale:**

This hierarchy prevents circular dependencies and maintains clear authority chains. An RFC that links to or names an ADR or Work Item as a governed reference inverts the dependency direction — lower layers become authorities over the specification.

Inline reference syntax makes artifact links explicit in source while allowing rendered projections to remain human-readable. A validation warning gives reviewers source-level evidence for raw reference syntax without requiring them to infer it from rendered output. Limiting this warning to reviewable artifacts avoids forcing historical backfill before existing accepted or completed artifacts can pass normal project validation.

**Prose outside governed reference surfaces:**

Normative RFC clause text SHOULD remain self-contained. Non-governed explanatory text MAY mention artifact identifier shapes as examples, but known lower-authority artifact identifiers in governed RFC clause text and governed ADR content fields are validated as references even without `[[...]]` delimiters."""
12 changes: 9 additions & 3 deletions gov/rfc/RFC-0000/rfc.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@
[govctl]
id = "RFC-0000"
title = "govctl Governance Framework"
version = "1.3.2"
version = "1.3.3"
status = "normative"
phase = "stable"
owners = ["@govctl-org"]
created = "2026-01-17"
updated = "2026-06-04"
updated = "2026-06-11"
tags = [
"core",
"schema",
"validation",
"lifecycle",
]
signature = "496196ed1073947f867c6730c56c34da58f1b045bf939d98b7804511f8feea9a"
signature = "ba16714af2ca8c1b32b812963d4b02da4c67a647eafc1c88b03fa622085b1205"

[[sections]]
title = "Summary"
Expand Down Expand Up @@ -50,6 +50,12 @@ clauses = ["clauses/C-RELEASE-DEF.toml"]
title = "Verification Guard Specification"
clauses = ["clauses/C-GUARD-DEF.toml"]

[[changelog]]
version = "1.3.3"
date = "2026-06-11"
notes = "Clarify inline reference validation"
changed = ["Project validation should warn on known artifact IDs in governed prose that are not written with inline reference syntax"]

[[changelog]]
version = "1.3.2"
date = "2026-06-04"
Expand Down
54 changes: 54 additions & 0 deletions gov/schema/edit-ops.json
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,60 @@
}
}
},
{
"artifact": "work",
"root": "verification",
"content_path": ["verification"],
"node": {
"kind": "object",
"verbs": ["get"],
"fields": [
{
"name": "required_guards",
"node": {
"kind": "list",
"verbs": ["get", "set", "add", "remove"],
"text_key": null,
"item": {
"kind": "scalar",
"verbs": ["get", "set"],
"set_mode": { "type": "string" }
}
}
},
{
"name": "waivers",
"node": {
"kind": "list",
"verbs": ["get", "remove"],
"text_key": "guard",
"item": {
"kind": "object",
"verbs": ["get"],
"fields": [
{
"name": "guard",
"node": {
"kind": "scalar",
"verbs": ["get", "set"],
"set_mode": { "type": "string" }
}
},
{
"name": "reason",
"node": {
"kind": "scalar",
"verbs": ["get", "set"],
"set_mode": { "type": "string" }
}
}
]
}
}
}
]
}
},
{
"artifact": "guard",
"root": "check",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#:schema ../schema/work.schema.json

[govctl]
id = "WI-2026-06-11-002"
title = "Expose work item verification guard edit paths"
status = "done"
created = "2026-06-11"
started = "2026-06-11"
completed = "2026-06-11"
refs = [
"RFC-0001:C-GATE-CONDITIONS",
"RFC-0000:C-WORK-DEF",
"ADR-0037",
]

[content]
description = "Expose Work Item verification guard fields through the canonical path-first edit surface so agents and users can add, remove, and inspect per-work-item guard requirements without hand-editing TOML."

[[content.acceptance_criteria]]
text = "work edit supports adding and removing verification.required_guards"
status = "done"
category = "fixed"

[[content.acceptance_criteria]]
text = "work get can inspect verification.required_guards"
status = "done"
category = "fixed"

[[content.acceptance_criteria]]
text = "work edit supports verification.waivers guard and reason fields"
status = "done"
category = "fixed"

[[content.acceptance_criteria]]
text = "govctl check and targeted edit tests pass"
status = "done"
category = "chore"
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#:schema ../schema/work.schema.json

[govctl]
id = "WI-2026-06-11-001"
title = "Validate raw artifact reference syntax for reviewer evidence"
status = "done"
created = "2026-06-11"
started = "2026-06-11"
completed = "2026-06-11"
refs = [
"ADR-0024",
"RFC-0000:C-REFERENCE-HIERARCHY",
]
tags = [
"skills-agents",
"validation",
]

[content]
description = "Add source-sensitive validation for bare known artifact IDs in governed prose so reviewer agents can rely on deterministic diagnostics instead of inferring raw reference syntax from rendered output. Update reviewer guidance to distinguish rendered review evidence from raw-source validation evidence."

[[content.acceptance_criteria]]
text = "reviewer agents no longer judge raw reference syntax from rendered output alone"
status = "done"
category = "fixed"

[[content.acceptance_criteria]]
text = "govctl check warns when reviewable governed prose contains a known artifact ID outside [[...]] syntax"
status = "done"
category = "added"

[[content.acceptance_criteria]]
text = "govctl check and cargo test pass"
status = "done"
category = "chore"
31 changes: 31 additions & 0 deletions gov/work/2026-06-12-fix-subdirectory-check-path-handling.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#:schema ../schema/work.schema.json

[govctl]
id = "WI-2026-06-12-001"
title = "Fix subdirectory check path handling"
status = "done"
created = "2026-06-12"
started = "2026-06-12"
completed = "2026-06-12"
refs = [
"RFC-0002",
"ADR-0009",
]

[content]
description = "Fix govctl check so running from a project subdirectory still uses project-root paths for local support files and source scanning, preventing false .gitignore warnings and preserving source reference validation."

[[content.acceptance_criteria]]
text = "check from a subdirectory does not emit W0111 when the project root .gitignore contains local-state entries"
status = "done"
category = "fixed"

[[content.acceptance_criteria]]
text = "source scanning during check is project-root relative even when invoked from a subdirectory"
status = "done"
category = "fixed"

[[content.acceptance_criteria]]
text = "focused regression tests and govctl check pass"
status = "done"
category = "chore"
31 changes: 31 additions & 0 deletions gov/work/2026-06-12-raise-patch-coverage-for-pr-26.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#:schema ../schema/work.schema.json

[govctl]
id = "WI-2026-06-12-002"
title = "Raise patch coverage for PR 26"
status = "done"
created = "2026-06-12"
started = "2026-06-12"
completed = "2026-06-12"
refs = [
"RFC-0000",
"RFC-0002",
]

[content]
description = "Add focused regression coverage for the PR #26 Codecov patch gaps in bracket reference validation and project support .gitignore handling, without changing user-visible behavior."

[[content.acceptance_criteria]]
text = "Bracket reference validation patch paths are covered by focused tests"
status = "done"
category = "chore"

[[content.acceptance_criteria]]
text = "Project support .gitignore patch paths are covered by focused tests"
status = "done"
category = "chore"

[[content.acceptance_criteria]]
text = "govctl check and relevant coverage tests pass"
status = "done"
category = "chore"
Loading
Loading