diff --git a/reports/divergences.md b/reports/divergences.md index a8ba1f0a..4e2eebed 100644 --- a/reports/divergences.md +++ b/reports/divergences.md @@ -24,7 +24,7 @@ Generated by `python3 spec/fidelity_honesty.py --report` - do not hand-edit. Cur - **.github/workflows/build-docker-task.yml** (manifest gap, carried by ESPHome-NonRoot, NxWitness, PlexCleaner, VSCode-Server-DotNetCore) - The Docker core is hub-hosted as its own workflow_call task alongside build-release-task.yml, per docs/reusable-workflows.md "Stage 4: The Release Chain and the Docker Core", so a downstream copy of this filename is retired rather than re-vendored the same way. The five carriers measured on develop at hub 7c67328 are ESPHome-NonRoot, NxWitness, PhotoCleaner, PlexCleaner, and VSCode-Server-DotNetCore. Delete the copy as each repo adopts the hub task; adoption is a separate, later change per repo (docs/reusable-workflows.md "Rollout" Stage 4). - **.github/workflows/get-version-task.yml** (manifest gap, carried by ESPHome-NonRoot, KiCadLibrary, NxWitness, PlexCleaner, VSCode-Server-DotNetCore, aiopurpleair, homeassistant-purpleair) - The task is hub-hosted rather than carried, per GOVERNANCE.md "Hub-Hosted Tooling", so it is no manifest entry and a downstream copy is retired rather than re-vendored. Every copy is the hub's own NBGV logic with nothing per-repo in it beyond the action pins Dependabot already owns. The carriers, read from the fleet on 2026-08-15, are ESPHome-NonRoot, NxWitness, PhotoCleaner, PlexCleaner, VSCode-Server-DotNetCore, KiCadLibrary, aiopurpleair, and homeassistant-purpleair. Delete the copy and reach the hub task by pin as each repo is next visited, per docs/reusable-workflows.md "Adopting the Pure Functions". - **.github/workflows/publish-plan-task.yml** (manifest gap, carried by ESPHome-NonRoot, NxWitness, Utilities) - The task is hub-hosted rather than carried, per GOVERNANCE.md "Hub-Hosted Tooling", so it is no manifest entry and a downstream copy is retired rather than re-vendored. The carriers, read from the fleet on 2026-08-15, are ESPHome-NonRoot, NxWitness, and Utilities, and all three carry a strict subset of the canonical, missing the -E in set -Eeuo pipefail and the ::warning:: branch for an unrecognized actor pushing to main (WORKFLOW.md D8.4). Delete the copy and reach the hub task by pin as each repo is next visited, per docs/reusable-workflows.md "Adopting the Pure Functions". -- **.github/workflows/validate-task.yml** (manifest gap, carried by AudioCleaner, ESPHome-NonRoot, LanguageTags, MediaTools, NxWitness, PlexCleaner, Utilities, VSCode-Server-DotNetCore, aiopurpleair) - The file is hub-hosted as a workflow_call task rather than carried, per GOVERNANCE.md "Hub-Hosted Tooling" and docs/reusable-workflows.md "Stage 2: The Gates". The fleet doc-lint block, the language lint, the prose gate, and the repo gate move into the hub task, and a repo's own domain checks move into its own .github/actions/validate/action.yml hook instead, so a downstream copy is retired rather than re-vendored. The thirteen repos carrying a copy today are PhotoCleaner, PlexCleaner, LanguageTags, Utilities, MediaTools, AudioCleaner, aiopurpleair, Financial-Modeling, Blog, ESPHome-NonRoot, NxWitness, VSCode-Server-DotNetCore, and HomeAutomation-Config. Delete the copy and adopt the caller stub in docs/reusable-workflows.md "Adopting the Gates" as each repo is next visited. +- **.github/workflows/validate-task.yml** (manifest gap, carried by AudioCleaner, ESPHome-NonRoot, LanguageTags, MediaTools, NxWitness, PlexCleaner, Utilities, VSCode-Server-DotNetCore, aiopurpleair) - The file is hub-hosted as a workflow_call task rather than carried, per GOVERNANCE.md "Hub-Hosted Tooling" and docs/reusable-workflows.md "Stage 2: The Gates". The fleet doc-lint block, the language lint, the prose gate, and the repo gate move into the hub task, and a repo's own domain checks move into its own .github/actions/validate/action.yml hook instead, so a downstream copy is retired rather than re-vendored. The thirteen repos carrying a copy as of 2026-08-16 were PhotoCleaner, PlexCleaner, LanguageTags, Utilities, MediaTools, AudioCleaner, aiopurpleair, Financial-Modeling, Blog, ESPHome-NonRoot, NxWitness, VSCode-Server-DotNetCore, and HomeAutomation-Config, and the live current carrier list above may have moved on since. Delete the copy and adopt the caller stub in docs/reusable-workflows.md "Adopting the Gates" as each repo is next visited. - **.github/workflows/publish-docker-readme-task.yml** (manifest gap, carried by VSCode-Server-DotNetCore) - The task is hub-hosted per docs/reusable-workflows.md "The Docker Family", so a downstream copy of the job graph is retired rather than converged. The carrier is VSCode-Server-DotNetCore, whose copy replaces with the caller stub in docs/reusable-workflows.md "Adopting the Type-Specific Tasks" once a release carries the task. - **.github/workflows/check-upstream-version-task.yml** (manifest gap, carried by ESPHome-NonRoot) - The task is hub-hosted per docs/reusable-workflows.md "The Docker Family", so a downstream copy of the job graph is retired rather than converged. The carrier is ESPHome-NonRoot, whose check-upstream-version.yml caller and check-upstream-version-task.yml body both replace with the caller stub once a release carries the task. Its second tracker, check-upstream-dependency.yml, is a candidate to fold into the same hub task with auto-merge false, tracked as an adoption note rather than a gap here since it was never a copy of this snippet. - **.github/workflows/run-codegen-pull-request-task.yml** (manifest gap, carried by LanguageTags, NxWitness) - The task is hub-hosted per docs/reusable-workflows.md "Adopting the Type-Specific Tasks", so a downstream copy of the job graph is retired rather than converged. The carriers are LanguageTags and NxWitness, each replacing its copy with a codegen hook plus the caller stub once a release carries the task. diff --git a/spec/divergences.json b/spec/divergences.json index 0baecd52..d7b42a6b 100644 --- a/spec/divergences.json +++ b/spec/divergences.json @@ -23,7 +23,7 @@ { "path": "pyproject.toml", "disposition": "investigate", "reason": "The hub gained a config-only Scripts-profile pyproject.toml in #388. Decide whether to track it (intent, appliesTo python) after confirming the python repos carry an equivalent.", "tracking": null }, { "path": ".github/workflows/get-version-task.yml", "disposition": "retire", "reason": "The task is hub-hosted rather than carried, per GOVERNANCE.md \"Hub-Hosted Tooling\", so it is no manifest entry and a downstream copy is retired rather than re-vendored. Every copy is the hub's own NBGV logic with nothing per-repo in it beyond the action pins Dependabot already owns. The carriers, read from the fleet on 2026-08-15, are ESPHome-NonRoot, NxWitness, PhotoCleaner, PlexCleaner, VSCode-Server-DotNetCore, KiCadLibrary, aiopurpleair, and homeassistant-purpleair. Delete the copy and reach the hub task by pin as each repo is next visited, per docs/reusable-workflows.md \"Adopting the Pure Functions\".", "tracking": null }, { "path": ".github/workflows/publish-plan-task.yml", "disposition": "retire", "reason": "The task is hub-hosted rather than carried, per GOVERNANCE.md \"Hub-Hosted Tooling\", so it is no manifest entry and a downstream copy is retired rather than re-vendored. The carriers, read from the fleet on 2026-08-15, are ESPHome-NonRoot, NxWitness, and Utilities, and all three carry a strict subset of the canonical, missing the -E in set -Eeuo pipefail and the ::warning:: branch for an unrecognized actor pushing to main (WORKFLOW.md D8.4). Delete the copy and reach the hub task by pin as each repo is next visited, per docs/reusable-workflows.md \"Adopting the Pure Functions\".", "tracking": null }, - { "path": ".github/workflows/validate-task.yml", "disposition": "retire", "reason": "The file is hub-hosted as a workflow_call task rather than carried, per GOVERNANCE.md \"Hub-Hosted Tooling\" and docs/reusable-workflows.md \"Stage 2: The Gates\". The fleet doc-lint block, the language lint, the prose gate, and the repo gate move into the hub task, and a repo's own domain checks move into its own .github/actions/validate/action.yml hook instead, so a downstream copy is retired rather than re-vendored. The thirteen repos carrying a copy today are PhotoCleaner, PlexCleaner, LanguageTags, Utilities, MediaTools, AudioCleaner, aiopurpleair, Financial-Modeling, Blog, ESPHome-NonRoot, NxWitness, VSCode-Server-DotNetCore, and HomeAutomation-Config. Delete the copy and adopt the caller stub in docs/reusable-workflows.md \"Adopting the Gates\" as each repo is next visited.", "tracking": null }, + { "path": ".github/workflows/validate-task.yml", "disposition": "retire", "reason": "The file is hub-hosted as a workflow_call task rather than carried, per GOVERNANCE.md \"Hub-Hosted Tooling\" and docs/reusable-workflows.md \"Stage 2: The Gates\". The fleet doc-lint block, the language lint, the prose gate, and the repo gate move into the hub task, and a repo's own domain checks move into its own .github/actions/validate/action.yml hook instead, so a downstream copy is retired rather than re-vendored. The thirteen repos carrying a copy as of 2026-08-16 were PhotoCleaner, PlexCleaner, LanguageTags, Utilities, MediaTools, AudioCleaner, aiopurpleair, Financial-Modeling, Blog, ESPHome-NonRoot, NxWitness, VSCode-Server-DotNetCore, and HomeAutomation-Config, and the live current carrier list above may have moved on since. Delete the copy and adopt the caller stub in docs/reusable-workflows.md \"Adopting the Gates\" as each repo is next visited.", "tracking": null }, { "path": ".github/workflows/deploy-site-task.yml", "disposition": "retire", "reason": "The task is hub-hosted per docs/reusable-workflows.md \"Adopting the Type-Specific Tasks\", so it is no longer a manifest entry (spec/files.json keeps only the deploy-site.yml caller stub entry for the hugo type) and a downstream copy is retired rather than converged. The carrier is Blog, replacing its copy with the caller stub once a release carries the task.", "tracking": null }, { "path": ".github/workflows/publish-docker-readme-task.yml", "disposition": "retire", "reason": "The task is hub-hosted per docs/reusable-workflows.md \"The Docker Family\", so a downstream copy of the job graph is retired rather than converged. The carrier is VSCode-Server-DotNetCore, whose copy replaces with the caller stub in docs/reusable-workflows.md \"Adopting the Type-Specific Tasks\" once a release carries the task.", "tracking": null }, { "path": ".github/workflows/check-upstream-version-task.yml", "disposition": "retire", "reason": "The task is hub-hosted per docs/reusable-workflows.md \"The Docker Family\", so a downstream copy of the job graph is retired rather than converged. The carrier is ESPHome-NonRoot, whose check-upstream-version.yml caller and check-upstream-version-task.yml body both replace with the caller stub once a release carries the task. Its second tracker, check-upstream-dependency.yml, is a candidate to fold into the same hub task with auto-merge false, tracked as an adoption note rather than a gap here since it was never a copy of this snippet.", "tracking": null },