Commit 05e74ca
authored
feat(spec): sync v0.4.0 — add 11 requirement IDs across P1/P2/P4/P6/P8 (#50)
## Summary
v0.4.0 spec sync companion. Ships live check implementations for 11 new
requirement IDs across P1, P2, P4, P6, and the brand-new P8 (skill
bundle discoverability), suppresses `p6-must-sigterm` under
`--audit-profile human-tui` to mirror `p6-sigpipe`'s rationale, and
bumps the CLI from 0.3.1 to 0.4.0.
## Changelog
### Added
- Add P1 secret-handling check (`p1-must-secret-non-leaky-path`): scans
target CLIs' `--help` for secret-bearing flag families (`--token`,
`--password`, `--api-key`, `--secret`, `--auth`, `--credential`) and
verifies each has either a `--*-file` companion or stdin path
advertised. Vacuous Pass when no secret-bearing flag is detected.
- Add P2 schema trio (`p2-must-schema-print`, `p2-should-schema-file`,
`p2-should-json-aliases`): runtime-discoverable output schema via
`schema` subcommand or `--schema` flag, file-export of schemas
(`schema/*.json`, `*.schema.json` at repo root), and `--json` /
`--jsonl` short aliases for `--output`.
- Add P4 closed-set rejection check (`p4-should-enumerate-valid-set`,
Rust + Python): detects clap `ValueEnum`, `PossibleValuesParser`,
`value_parser!`, and Python `argparse.choices=` / `click.Choice()`.
- Add P6 lifecycle and naming checks (`p6-must-sigterm`, Rust + Python;
`p6-may-standard-names`): SIGTERM-handler detection across
`signal_hook`, `tokio::signal::unix`, `signal.signal`, and
`loop.add_signal_handler`; community-standard-verb allow-list applied to
top-level subcommands.
- Add P8 skill-bundle suite (`p8-should-bundle-exists`,
`p8-must-bundle-install`, `p8-may-install-all`, `p8-may-bundle-update`):
repo-root detection of `AGENTS.md` / `SKILL.md` with YAML frontmatter,
plus help-surface probes for `skill install`, `skill install --all`, and
`skill update` / `skill upgrade`. Brand-new principle in the registry.
### Changed
- Bump CLI from 0.3.1 to 0.4.0 (MINOR; meaningful coverage growth across
five principles, including a brand-new principle).
### Documentation
- Document prose-scrubbing runbook in `RELEASES.md` for release-flow
artifacts (PR bodies, `CHANGELOG.md`, release-PR bodies) using Vale +
LanguageTool + unslop.
- Add `## PR body` section to `RELEASES.md` codifying what belongs in PR
bodies (NEW user-facing substance, six required template sections) and
what does not (workflow recap, triple-diff output, pre-push gate
results, CI status, AI attribution).
## Type of Change
- [x] `feat`: New feature (non-breaking change which adds functionality)
- [ ] `fix`: Bug fix (non-breaking change which fixes an issue)
- [ ] `refactor`: Code refactoring (no functional changes)
- [ ] `perf`: Performance improvement
- [ ] `docs`: Documentation update
- [ ] `test`: Adding or updating tests
- [ ] `chore`: Maintenance tasks (dependencies, config, etc.)
- [ ] `ci`: CI/CD configuration changes
- [ ] `style`: Code style/formatting changes
- [ ] `build`: Build system changes
- [ ] `BREAKING CHANGE`: Breaking API change (requires major version
bump)
## Related Issues/Stories
- Story: agentnative-spec v0.4.0 (brettdavies/agentnative#25,
brettdavies/agentnative#26)
- Issue: n/a
- Architecture: docs/plans/2026-05-07-001-feat-v0.4.0-spec-sync-plan.md
- Related PRs:
docs/plans/2026-05-07-002-feat-prose-tooling-import-plan.md (sibling, no
governance deadline)
## Files Modified
**Modified:**
- `Cargo.toml`, `Cargo.lock`: version 0.3.1 to 0.4.0
- `RELEASES.md`: prose-scrubbing runbook + new `## PR body` section
- `docs/coverage-matrix.md`, `coverage/matrix.json`: regenerated for 57
requirements
- `src/principles/spec/**`: vendored from agentnative-spec v0.4.0
- `src/principles/registry.rs`: counter bumps, principle range to
`1..=8`, `p6-sigterm` in `HumanTui` suppression
- `src/types.rs`, `src/scorecard/mod.rs`: `CheckGroup::P8` variant +
label/order
- `src/checks/{behavioral,project,source/{rust,python}}/mod.rs`:
register the 13 new check files
- `tests/build_parser.rs`: integration test pin updated for v0.4.0 / 57
requirements
**Created:**
- `src/principles/spec/principles/p8-discoverable-skill-bundle.md`
(vendored)
- `src/checks/behavioral/secret_non_leaky_path.rs` (P1)
- `src/checks/source/{rust,python}/enumerate_valid_set.rs` (P4)
- `src/checks/behavioral/{schema_print,json_aliases}.rs`,
`src/checks/project/schema_file.rs` (P2)
- `src/checks/source/{rust,python}/sigterm.rs`,
`src/checks/behavioral/standard_names.rs` (P6)
- `src/checks/project/bundle_exists.rs`,
`src/checks/behavioral/{bundle_install,install_all,bundle_update}.rs`
(P8)
**Renamed:**
- None.
**Deleted:**
- None.
## Testing
- [x] Unit tests added/updated
- [x] Integration tests added/updated
- [x] Manual testing completed (dogfood `anc check .`)
- [x] All tests passing
**Test Summary:**
495 unit tests pass; 51 integration tests pass (including the
spec-version drift sentry, the
`convention_check_result_constructed_only_in_run_body` rule, the
`dangling_cover_ids` detector, and the matrix artifact drift gate);
clippy `-Dwarnings` clean; `anc generate coverage-matrix --check` exits
0.1 parent 86fd96e commit 05e74ca
46 files changed
Lines changed: 4820 additions & 206 deletions
File tree
- completions
- coverage
- docs
- plans
- src
- checks
- behavioral
- project
- source
- python
- rust
- principles
- spec
- principles
- scorecard
- tests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
| 3 | + | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
41 | 82 | | |
42 | 83 | | |
43 | 84 | | |
| |||
139 | 180 | | |
140 | 181 | | |
141 | 182 | | |
142 | | - | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
143 | 189 | | |
144 | 190 | | |
145 | 191 | | |
| |||
253 | 299 | | |
254 | 300 | | |
255 | 301 | | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
256 | 348 | | |
257 | 349 | | |
258 | 350 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
31 | 34 | | |
32 | 35 | | |
33 | 36 | | |
| |||
52 | 55 | | |
53 | 56 | | |
54 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
55 | 61 | | |
56 | 62 | | |
57 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
58 | 79 | | |
59 | 80 | | |
60 | 81 | | |
61 | 82 | | |
62 | 83 | | |
63 | 84 | | |
64 | 85 | | |
65 | | - | |
| 86 | + | |
66 | 87 | | |
67 | 88 | | |
68 | 89 | | |
| |||
76 | 97 | | |
77 | 98 | | |
78 | 99 | | |
79 | | - | |
| 100 | + | |
80 | 101 | | |
81 | 102 | | |
82 | 103 | | |
| |||
106 | 127 | | |
107 | 128 | | |
108 | 129 | | |
109 | | - | |
| 130 | + | |
110 | 131 | | |
111 | 132 | | |
112 | 133 | | |
| |||
120 | 141 | | |
121 | 142 | | |
122 | 143 | | |
123 | | - | |
| 144 | + | |
124 | 145 | | |
125 | 146 | | |
126 | 147 | | |
| |||
134 | 155 | | |
135 | 156 | | |
136 | 157 | | |
137 | | - | |
| 158 | + | |
138 | 159 | | |
139 | 160 | | |
140 | 161 | | |
| |||
198 | 219 | | |
199 | 220 | | |
200 | 221 | | |
201 | | - | |
| 222 | + | |
202 | 223 | | |
203 | 224 | | |
204 | 225 | | |
| |||
281 | 302 | | |
282 | 303 | | |
283 | 304 | | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
284 | 407 | | |
285 | 408 | | |
286 | 409 | | |
| |||
0 commit comments