Skip to content

Promote the Workflow Manifest Declarations and the Carried-Wording Fixes - #741

Merged
ptr727 merged 2 commits into
mainfrom
develop
Aug 15, 2026
Merged

Promote the Workflow Manifest Declarations and the Carried-Wording Fixes#741
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Promotes develop to main. Two commits since #734, both governance rather than tooling, and the trial merge is conflict-free.

Closes #737
Closes #738

#736, the publisher and validator declared at intent fidelity

spec/files.json gains .github/workflows/publish-release.yml and .github/workflows/validate-task.yml, and the two matching investigate rows leave spec/divergences.json, a declared file being no longer a gap.

This reverses the call #732 shipped. That change settled both as accepted, which silences the finding and stops the audit measuring either file again, and the maintainer caught that as the opposite of what the fleet wants for them. interface genuinely does not fit, since job keys and triggers are per-repo across every carrier, but intent does: presence asserted, equivalence judged by hand, and a staleness advisory when the hub's copy moves past a carrier's.

Scope is measured rather than assumed. The publisher applies to the three publishing releaseTrigger values, which selects exactly the 18 carriers, since every repository lacking one carries releaseTrigger: none. The validator applies to * by decision, making the reusable validation task the fleet standard.

What promoting this turns on, fleet-wide, measured in one run at audit run 2026-08-15T17:35:45Z | hub 0713008: 0 absences for the publisher, 8 for the validator (homeassistant-purpleair, KiCadLibrary, EspDinIoT, ESPHome-Config, HomeAssistant-Config, DevKitCIoT, Vantage-Config, HolidayLights), and 30 staleness advisories. 17 of those 30 are a known false class, since the advisory has no action-pin normalization and the hub's publisher last changed in a Dependabot bump, filed as #735.

reports/plexcleaner/audit.md is updated in the same commit, since it is the report the earlier settlement was written into.

#740, two carried-wording fixes

Both raised by Copilot against a carried copy on ptr727/ESPHome-Config#94, and both are the same failure: a faithful copy makes every carrier re-litigate one finding.

Verification

Run against develop at 7c67328: whole-tree prose gate, repo_gate.py (eol, eol-coverage, sha-pin), spec/validate.py, spec/audit.py --selftest, build_dist.py --check, markdownlint, and editorconfig-checker all pass. git merge-tree of main and develop is conflict-free, so there is no EOL-only conflict to resolve on this promotion.

ptr727 added 2 commits August 15, 2026 10:57
Follow-up to #732, which settled `.github/workflows/publish-release.yml`
and `.github/workflows/validate-task.yml` as `accepted` gaps. That call
was wrong and this reverses it.

## What was wrong

`accepted` means "a path collision, the repo's own file", and its effect
is to silence the finding and stop the audit measuring either file ever
again. The fleet's intent for these two is the opposite: carry the hub's
copy as closely as each repository's targets allow, so a diff against
the canonical stays small and readable.

The reasoning behind #732 tested both files against `interface`
fidelity, found correctly that no named contract fits (job keys and
triggers are genuinely per-repo), and then concluded that nothing could
be declared. That skipped `intent`, which is exactly the tier for this:
presence asserted, equivalence judged by hand against the `intentRef`,
content never hashed, and a staleness advisory raised when the hub's
canonical moves past a carrier's copy.

The `appliesTo` claim was also wrong for the publisher. Re-measured:
every repository lacking one carries `releaseTrigger: none`
(AudioCleaner, HolidayLights, EspDinIoT, DevKitCIoT), and all 18
carriers carry a publishing trigger. That is an exact selector, and it
states something true, namely that a repository which publishes a
release has a publisher.

## What this does

```json
{ "path": ".github/workflows/validate-task.yml", "fidelity": "intent",
  "intentRef": "WORKFLOW.md#d1---pr-fast-feedback-smoke", "appliesTo": "*" },
{ "path": ".github/workflows/publish-release.yml", "fidelity": "intent",
  "intentRef": "WORKFLOW.md#d4---release--publish",
  "appliesTo": ["two-phase", "dispatch-only", "publish-on-merge"] }
```

Both ledger rows are deleted, since a declared file is no longer a gap
and `fidelity_honesty.py` drops such a row from the generated report by
construction.

The validator is declared fleet-wide **by decision rather than by
measurement**: no selector separates its carriers from the repositories
that inline validation into `test-pull-request.yml`, and the
maintainer's call is that the reusable task is the fleet standard. The
skill text already reads that way, naming `publish-release.yml` in the
orchestration layer that is "the standardization baseline".

## Measured impact, whole fleet

One full audit run at `audit run 2026-08-15T17:35:45Z | hub 0713008`:

| | absent (letter) | staleness advisory (drift) |
| --- | --- | --- |
| `publish-release.yml` | 0 | 17 |
| `validate-task.yml` | 8 | 13 |

- The publisher's 0 absences confirm the selector is exact.
- The validator's 8 absences are the convergence this asks for:
homeassistant-purpleair, KiCadLibrary, EspDinIoT, ESPHome-Config,
HomeAssistant-Config, DevKitCIoT, Vantage-Config, HolidayLights.
- **17 of the 30 advisories are a false class**, and they are not this
change's fault so much as this change's discovery: the intent advisory
compares dates with no action-pin normalization, and the hub's publisher
last changed in a Dependabot pin bump (`1892d6f`), so every carrier
trips at once on drift the fidelity model already calls governed and
per-repo. Filed as #735 with three options.
- The other 13 are against `0d18078`, which added `ruff format --check`.
Real content, though a repository that adopted the same step
independently still reports as trailing, which is why the tier is an
advisory and not a verdict.

## PlexCleaner report

`reports/plexcleaner/audit.md` is updated in place, since it is the
report this settlement was written into. Its two new advisories are read
and retired in Drift Finding 6: the validator copy already runs `ruff
format --check` at a pinned version, and the publisher advisory is the
pin-bump class above. Verdict is unchanged at operational.

Verified: `spec/validate.py`, `spec/audit.py --selftest` (which asserts
no declared path leaks into the hub-only set), `scripts/repo_gate.py`,
the whole-tree prose gate, markdownlint, and editorconfig-checker all
pass.
Closes #737
Closes #738

Two wording defects in `.github/copilot-instructions.md`, both raised by
Copilot against the carried copy on ptr727/ESPHome-Config#94. They ship
together because they are the same failure: a carried file whose
faithful copy makes every carrier re-litigate the same finding, which is
exactly what a per-repository Disproved Claims ledger cannot absorb.

## #737, the unmarked quotation

`GOVENANCE.md` is quoted as the spelling a review round actually
emitted, and it is the evidence for the sentence it sits in: a partial
round can name a path no diff carries. Nothing marked it as quoted, and
it sits in the same sentence as a correctly spelled `GOVERNANCE.md`, so
it reads as an obvious typo. Correcting the spelling would delete the
evidence and invert the claim, since the sentence would then say a round
named a path that does exist.

Each Markdown occurrence now reads "the reviewer's own spelling and a
path no diff carries", which is the marker the issue proposed and leaves
the misspelling literal:

- `.github/copilot-instructions.md`, the `Counts unequal` bullet
- `scripts/README.md`
- `TODO.md`

`scripts/pr_review.py:778` and `scripts/tests/test_pr_review.py:1320`
are deliberately unchanged, per the issue's own note that a Python
string literal reads less like a path. The `pr_review.py` docstring also
calls it "that typo" two sentences later, so the disambiguation is
already there in the prose that matters.

## #738, what AGENTS.md actually carries

The sentence read "`AGENTS.md` is the thin router and carries three
byte-locked sections of its own, with no repository-specific ones". True
of the sections, wrong about the file, and wrong in a way that inverts
the sentence's purpose: it exists so a reviewer knows what is safe to
flag, and it reads as "none of `AGENTS.md` is editable" when every
`AGENTS.md` preamble is the repository's own prose.

Reworded as the issue proposed, naming the three sections and stating
that everything above the first is the repository's own and editable.
Verified the three names against `spec/files.json`, which declares
exactly `Fleet Bootstrap`, `Context and Delegation Discipline`, and
`Where the Rules Live` as the verbatim sections, so the sentence is
accurate in every carrier rather than only here.

## Downstream

ESPHome-Config already applied the #738 reword locally, which `intent`
fidelity permits, and recorded #737 as its first Disproved Claims entry
whose "Delete when" names this change. Both retire on that repository's
next resync.

Verified: whole-tree prose gate, markdownlint on the three files,
`repo_gate.py`, `spec/validate.py`, `build_dist.py --check`,
editorconfig-checker, and the `test_pr_review` and `test_prose_lint`
modules all pass. All three files keep their CRLF endings.
Copilot AI lite review requested due to automatic review settings August 15, 2026 19:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This promotion PR updates the fleet’s canonical governance/spec state on main by (1) declaring the publisher and reusable validator workflows at intent fidelity in the manifest, and (2) applying two carried-wording fixes that prevent repeated false “typo” findings across downstream repositories. It also refreshes the PlexCleaner audit report and the generated divergences report to reflect the updated ledger/manifest state.

Changes:

  • Declare .github/workflows/validate-task.yml and .github/workflows/publish-release.yml in spec/files.json at intent fidelity, and remove their prior “gap” dispositions from spec/divergences.json.
  • Mark the intentionally quoted misspelling (GOVENANCE.md) as “the reviewer’s own spelling” in multiple Markdown references to prevent repeated typo reports.
  • Update reports/plexcleaner/audit.md and regenerate reports/divergences.md to reflect the new manifest/ledger state.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
TODO.md Clarifies the quoted misspelling as the reviewer’s spelling in the partial-coverage discussion.
spec/files.json Adds intent-fidelity declarations for validate-task.yml and publish-release.yml.
spec/divergences.json Removes now-declared workflow gaps; keeps pyproject.toml as the remaining investigate gap.
scripts/README.md Clarifies the quoted misspelling as the reviewer’s spelling in the partial-round explanation.
reports/plexcleaner/audit.md Updates run stamps and narrative to reflect the workflows being declared at intent fidelity and advisory handling.
reports/divergences.md Regenerated report reflecting removal of the two workflow gap entries from the ledger.
.github/copilot-instructions.md Fixes carried wording about what AGENTS.md contains, and marks the quoted misspelling as the reviewer’s spelling.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ptr727
ptr727 merged commit 79f4f17 into main Aug 15, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants