Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
eeb3fb0
Move the Audit Self-Test Matrix into tests/
ptr727 Oct 23, 2026
bc8b2ce
Read Workflows with PyYAML and Markdown with markdown-it-py in the Audit
ptr727 Oct 23, 2026
305a32c
Give the Audit Checks a Registry in spec/checks.json
ptr727 Oct 23, 2026
25c834e
Trim the Audit's Docstrings and Split Out Its Markdown Checks
ptr727 Oct 23, 2026
425233b
Run the Audit Helper Suite Under Coverage in the Validate Action
ptr727 Oct 23, 2026
fa57d84
Merge remote-tracking branch 'origin/develop' into audit-refactor-reg…
ptr727 Oct 23, 2026
0113be7
Fix Local Review Findings on the Audit Refactor
ptr727 Oct 23, 2026
d92bb4e
Fix Second-Pass Review Findings on the Audit Refactor
ptr727 Oct 23, 2026
28b517c
Fix Third-Pass Review Findings on the Audit Refactor
ptr727 Oct 23, 2026
ac60822
Run the Audit Through uv Wherever a Line Invokes It
ptr727 Oct 23, 2026
e8469e0
Read an Image in a Tagline as Markup, and Tidy Two Pointers
ptr727 Oct 23, 2026
d8698af
Fix Review Findings on the Registry Validator and Doc Lines
ptr727 Oct 24, 2026
b66a482
Parse Each Workflow Once and Resolve a DriftNote Id in One Place
ptr727 Oct 24, 2026
9dbf189
Name What Each Tool Shares from spec/carried_text.py
ptr727 Oct 24, 2026
1e84fa4
Hold the DriftNote Check Last and Scope the Fence-Reading Claims
ptr727 Oct 24, 2026
24e6b7f
Point at description_findings Where It Now Lives
ptr727 Oct 24, 2026
2c4cc9c
State What a Registry-Only DriftNote Id and CI's Audit Suites Do
ptr727 Oct 24, 2026
df6eb4e
Test a Declared Dependabot Ecosystem and Narrow the Carry Claim
ptr727 Oct 24, 2026
9487e8e
Keep a Tagline's Code Spans as Written and Pin the Registry Wiring
ptr727 Oct 24, 2026
d32d306
Test the Hub's Own Run, an Unparsed Dependabot File, and on: Shapes
ptr727 Oct 24, 2026
b914f08
Hold strip_md_links Linear by Ratio Rather Than Wall Clock
ptr727 Oct 24, 2026
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
4 changes: 2 additions & 2 deletions .agents/skills/audit-a-repo/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The audit is the fleet's measurement procedure, and the failure shapes it guards

- **Route first.** A repo with no carried instruction set, or a partial one, has a baseline that never arrived rather than drift to report, so it goes to `STANDUP.md` sections 1A and 2 first (`AUDIT.md` section 0). Auditing it anyway produces a report that is all absences and reads as catastrophe.
- **Verify the host.** Run `python3 scripts/host_gate.py --repo <target-checkout>` from the hub checkout before any hub tool, and pass `--repo`, since a bare run skips the target's own `host-tools.json` overlay. A stale tool answers `--version`, looks healthy, and produces a wrong answer.
- **Read `main` as ground truth**, for every workflow model, and read `develop` only to detect divergence (`AUDIT.md` section 1). An `operational` repo's `develop` is mid-flight by design, so conformance work sitting there is un-promoted work, not a defect, and it counts when it reaches `main`. Use `spec/audit.py --branch <ref>` to preview in-flight work, which stamps the override so the finding cannot be mistaken for one against ground truth.
- **Read `main` as ground truth**, for every workflow model, and read `develop` only to detect divergence (`AUDIT.md` section 1). An `operational` repo's `develop` is mid-flight by design, so conformance work sitting there is un-promoted work, not a defect, and it counts when it reaches `main`. Use `uv run --no-project --script spec/audit.py --branch <ref>` to preview in-flight work, which stamps the override so the finding cannot be mistaken for one against ground truth.

## Measuring

Expand All @@ -28,7 +28,7 @@ The audit is the fleet's measurement procedure, and the failure shapes it guards

- **Write `reports/<repo>/audit.md` from `reports/_template.md`**, findings ranked most severe first, each with the `file:line` it was judged against, and quote the run stamp, since findings are a point-in-time snapshot (`AUDIT.md` section 8).
- **The hub authors the report.** A downstream repo never opens a hub pull request to write its own, which would be self-certification. Downstream context goes into issues filed against the hub instead.
- **Generate a convergence issue, never compose one**: `spec/audit.py --issue <repo>` emits it from live findings. An agent picking such an issue up re-runs the audit first and acts on the live result, not the pasted findings.
- **Generate a convergence issue, never compose one**: `uv run --no-project --script spec/audit.py --issue <repo>` emits it from live findings. An agent picking such an issue up re-runs the audit first and acts on the live result, not the pasted findings.
- **Reconcile registry `driftNotes` in the same pass**: a resolved deviation's note is deleted, not left describing finished work, and a note naming a check id is retired by a person, not by a run (`AUDIT.md` section 8).
- **Stale-versus-modified classification and the intent staleness advisory need a full hub clone with git history.** In a shallow clone the audit reports one ERROR per repo and exits non-zero, so run `git fetch --unshallow origin` in the hub checkout first. To verify one finding without history, compare against the current hub canonical on `main`, which decides current-match only.

Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/fleet-skills/.source-digests/audit-a-repo
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5a9bc7db47dcc412
e1a9ebd2d8fe8c70
4 changes: 2 additions & 2 deletions .claude-plugin/fleet-skills/skills/audit-a-repo/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The audit is the fleet's measurement procedure, and the failure shapes it guards

- **Route first.** A repo with no carried instruction set, or a partial one, has a baseline that never arrived rather than drift to report, so it goes to `STANDUP.md` sections 1A and 2 first (`AUDIT.md` section 0). Auditing it anyway produces a report that is all absences and reads as catastrophe.
- **Verify the host.** Run `python3 scripts/host_gate.py --repo <target-checkout>` from the hub checkout before any hub tool, and pass `--repo`, since a bare run skips the target's own `host-tools.json` overlay. A stale tool answers `--version`, looks healthy, and produces a wrong answer.
- **Read `main` as ground truth**, for every workflow model, and read `develop` only to detect divergence (`AUDIT.md` section 1). An `operational` repo's `develop` is mid-flight by design, so conformance work sitting there is un-promoted work, not a defect, and it counts when it reaches `main`. Use `spec/audit.py --branch <ref>` to preview in-flight work, which stamps the override so the finding cannot be mistaken for one against ground truth.
- **Read `main` as ground truth**, for every workflow model, and read `develop` only to detect divergence (`AUDIT.md` section 1). An `operational` repo's `develop` is mid-flight by design, so conformance work sitting there is un-promoted work, not a defect, and it counts when it reaches `main`. Use `uv run --no-project --script spec/audit.py --branch <ref>` to preview in-flight work, which stamps the override so the finding cannot be mistaken for one against ground truth.

## Measuring

Expand All @@ -28,7 +28,7 @@ The audit is the fleet's measurement procedure, and the failure shapes it guards

- **Write `reports/<repo>/audit.md` from `reports/_template.md`**, findings ranked most severe first, each with the `file:line` it was judged against, and quote the run stamp, since findings are a point-in-time snapshot (`AUDIT.md` section 8).
- **The hub authors the report.** A downstream repo never opens a hub pull request to write its own, which would be self-certification. Downstream context goes into issues filed against the hub instead.
- **Generate a convergence issue, never compose one**: `spec/audit.py --issue <repo>` emits it from live findings. An agent picking such an issue up re-runs the audit first and acts on the live result, not the pasted findings.
- **Generate a convergence issue, never compose one**: `uv run --no-project --script spec/audit.py --issue <repo>` emits it from live findings. An agent picking such an issue up re-runs the audit first and acts on the live result, not the pasted findings.
- **Reconcile registry `driftNotes` in the same pass**: a resolved deviation's note is deleted, not left describing finished work, and a note naming a check id is retired by a person, not by a run (`AUDIT.md` section 8).
- **Stale-versus-modified classification and the intent staleness advisory need a full hub clone with git history.** In a shallow clone the audit reports one ERROR per repo and exits non-zero, so run `git fetch --unshallow origin` in the hub checkout first. To verify one finding without history, compare against the current hub canonical on `main`, which decides current-match only.

Expand Down
11 changes: 6 additions & 5 deletions .github/actions/validate/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# The fleet doc-lint block and the Python leg in validate-task.yml, which runs the unittest suite under tests/, do not cover the rest of the hub's own machinery.
# Carrying this hook makes the hub exercise the override path on every hub pull request, where a repo with no hook of its own exercises the hub default at .github/actions/validate-default.
name: Validate repository (hub)
description: Registry and spec validation, the self-tests outside the unittest suite, the fleet-skills freshness check, and the unclassified-character report.
description: Registry and spec validation, the audit helper suite and the self-tests outside the unittest suite, the fleet-skills freshness check, and the unclassified-character report.

runs:
using: composite
Expand All @@ -23,14 +23,15 @@ runs:
python-version: "3.13"

# The unittest suite under tests/ is the validator's Python leg, since the hub declares '.' in python-directories, so it runs there under coverage and uploads to Codecov like any adopter's.
# What stays here is each self-test that is not a unittest suite, and the agent-safety kit carries its own tests because it ships as a unit.
# Every run after the first appends, so one report covers these self-tests, informational with no threshold adopted.
# What stays here is the audit's helper suite and each self-test that is not a unittest suite.
# The agent-safety kit carries its own tests because it ships as a unit.
# The audit's libraries come from tests/requirements.txt, since uvx alone reads no script's inline metadata.
- name: Run script self-tests step
shell: bash
run: |
set -Eeuo pipefail
uvx coverage@latest run --source=scripts,spec,host-setup spec/audit.py --selftest
uvx coverage@latest run --source=scripts,spec,host-setup --append spec/workflow_reuse.py --selftest
uvx --with-requirements tests/requirements.txt coverage@latest run --source=scripts,spec,host-setup -m unittest discover -s tests -p test_audit_helpers.py
Comment thread
ptr727 marked this conversation as resolved.
Resolved
uvx --with-requirements tests/requirements.txt coverage@latest run --source=scripts,spec,host-setup --append spec/workflow_reuse.py --selftest
uvx coverage@latest run --source=scripts,spec,host-setup --append host-setup/agent-safety/claude/gh-write-guard.py --selftest
uvx coverage@latest run --source=scripts,spec,host-setup --append host-setup/agent-safety/claude/test_install.py
uvx coverage@latest report
Expand Down
4 changes: 2 additions & 2 deletions .github/skills/audit-a-repo/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The audit is the fleet's measurement procedure, and the failure shapes it guards

- **Route first.** A repo with no carried instruction set, or a partial one, has a baseline that never arrived rather than drift to report, so it goes to `STANDUP.md` sections 1A and 2 first (`AUDIT.md` section 0). Auditing it anyway produces a report that is all absences and reads as catastrophe.
- **Verify the host.** Run `python3 scripts/host_gate.py --repo <target-checkout>` from the hub checkout before any hub tool, and pass `--repo`, since a bare run skips the target's own `host-tools.json` overlay. A stale tool answers `--version`, looks healthy, and produces a wrong answer.
- **Read `main` as ground truth**, for every workflow model, and read `develop` only to detect divergence (`AUDIT.md` section 1). An `operational` repo's `develop` is mid-flight by design, so conformance work sitting there is un-promoted work, not a defect, and it counts when it reaches `main`. Use `spec/audit.py --branch <ref>` to preview in-flight work, which stamps the override so the finding cannot be mistaken for one against ground truth.
- **Read `main` as ground truth**, for every workflow model, and read `develop` only to detect divergence (`AUDIT.md` section 1). An `operational` repo's `develop` is mid-flight by design, so conformance work sitting there is un-promoted work, not a defect, and it counts when it reaches `main`. Use `uv run --no-project --script spec/audit.py --branch <ref>` to preview in-flight work, which stamps the override so the finding cannot be mistaken for one against ground truth.

## Measuring

Expand All @@ -28,7 +28,7 @@ The audit is the fleet's measurement procedure, and the failure shapes it guards

- **Write `reports/<repo>/audit.md` from `reports/_template.md`**, findings ranked most severe first, each with the `file:line` it was judged against, and quote the run stamp, since findings are a point-in-time snapshot (`AUDIT.md` section 8).
- **The hub authors the report.** A downstream repo never opens a hub pull request to write its own, which would be self-certification. Downstream context goes into issues filed against the hub instead.
- **Generate a convergence issue, never compose one**: `spec/audit.py --issue <repo>` emits it from live findings. An agent picking such an issue up re-runs the audit first and acts on the live result, not the pasted findings.
- **Generate a convergence issue, never compose one**: `uv run --no-project --script spec/audit.py --issue <repo>` emits it from live findings. An agent picking such an issue up re-runs the audit first and acts on the live result, not the pasted findings.
- **Reconcile registry `driftNotes` in the same pass**: a resolved deviation's note is deleted, not left describing finished work, and a note naming a check id is retired by a person, not by a run (`AUDIT.md` section 8).
- **Stale-versus-modified classification and the intent staleness advisory need a full hub clone with git history.** In a shallow clone the audit reports one ERROR per repo and exits non-zero, so run `git fetch --unshallow origin` in the hub checkout first. To verify one finding without history, compare against the current hub canonical on `main`, which decides current-match only.

Expand Down
Loading
Loading