Conversation
* Resync Carried Instruction Set, Config, and README Against the Hub Phase 8 (fleet-wide Skills rollout) batch 2 of ptr727/ProjectTemplate's hub-docs-to-skills-conversion project. Re-vendors 13 stale/absent verbatim AGENTS.md/GOVERNANCE.md sections against hub main, plus the whole-file config carries: .markdownlint-cli2.jsonc, repo-config/develop.json, repo-config/ main.json, repo-config/README.md. Re-vendors the github-release job in build-release-task.yml (declared verbatimJobs contract): action SHA pin bumps and the current one-sentence-per-line comment style, keeping this repo's own target-specific needs: list (console/docker only, no nuget/pypi) per WORKFLOW.md's per-target subsetting rule. Adds host-tools.json (genuinely absent, an empty declaration since this repo needs no host tool beyond the fleet baseline). Retires the local repo-config/configure.sh copy per spec/divergences.json's 'retire' disposition (hub-hosted, not carried), fixing its two remaining references in AUDIT.md and repo-config/README.md in the same pass. Fixes AUDIT.md's ruleset-comparison snippet to stop diffing bypass_actors, the same gap caught on Financial-Modeling#111 in this batch, applied proactively here. README: adds the required 3rd Party Tools section (19 dependencies and CI/dev tools, alphabetized, matched to the shared catalog where one exists); renames commit-link to commits-link and docker-link to docker-hub-link (shared destination names); renames history-link and license-link to bare history/license (in-repo paths carry no suffix); renames the Internal reference group to Distribution and sorts External by reference name, per spec/readme-structure.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Reorder README Reference Groups to Match the Declared Order Self-caught before review: the reference-definition groups landed as Shields, Repo, Distribution, External. spec/readme-structure.md declares Sections, Shields, Distribution, Repo, External - Distribution before Repo. Swapped. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Round 1 Review: Explicit configure.sh Path, Consistent checkout Pin Three real findings: - repo-config/README.md and AUDIT.md's configure.sh examples read as runnable without a path or a hub checkout in view. Made every example invocation explicit (repo-config/configure.sh), matching how it is actually run. - build-release-task.yml's re-vendored github-release job carried the hub catalog snippet's actions/checkout@v7.0.0 pin, while this repo's other workflows are already on the Dependabot-bumped v7.0.1. Aligned to the SHA already verified elsewhere in this repo, not a new pin. Also fixed three pre-existing prose_lint semicolon violations on lines this PR's own diff touches (AUDIT.md), since CI's diff-scoped prose gate lints any line a commit changes, not just the ones a fix targets. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Round 2 Review (suppressed): One More Unqualified configure.sh Mention The bypass_actors bullet's own configure.sh mention was missed in the round-1 sweep. repo-config/configure.sh, matching every other mention in this file now. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Round 3 Review (suppressed): Revert an Accidental Action Downgrade The github-release job re-vendor carried the hub catalog snippet's softprops/action-gh-release@v3.0.1 pin over this repo's own already- Dependabot-bumped v3.0.2, a real downgrade. Restored v3.0.2 (the SHA on develop, not re-typed). Diffed every uses: line in the job against develop afterward and confirmed no other pin was silently changed - this is the same class of gap the checkout pin fix caught in round 1, now swept for the whole job rather than the one instance flagged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Round 4 Review: Qualify configure.sh as the Hub's in the bypass_actors Bullet The bypass_actors bullet's configure.sh mention already carried the repo-config/ path, but read as a local script since the bullet itself never says hub, unlike the bullet right after it. Reads 'the hub's repo-config/configure.sh' now. xUnit.Net's casing (README.md:928, suppressed) is not changed: spec/third-party-tools.json's own catalog entry names it 'xUnit.Net', and a shared tool is named identically everywhere it appears per spec/readme-structure.md 3rd Party Tools - a local casing fix would diverge from the catalog rather than fix a typo. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* Resync the Carried Instruction Set and Config Against Hub 0e84805 Re-vendors the 10 verbatim AGENTS.md/GOVERNANCE.md sections the audit reported stale against hub main (Fleet Bootstrap, Where the Rules Live, Branching Model, Communicating with the User, Documentation Style Conventions, Durable Knowledge and Self-Improvement, Git and Commit Rules, Repository Boundaries and Write Safety, Verification Discipline, Workflow YAML Conventions). The distinctive-phrase probe found no local addition in any of them: every non-current line traced to a past hub revision. Reconciles the intent-carried files against the hub's history since the copies last synced, keeping each repo-specific adaptation: - CODESTYLE.md takes the hub's pointer-ized shape (language sections now summarize and route to the dotnet-codestyle, python-codestyle, and shell rules) and keeps this repo's Full Post-Change Set as its own .NET subsection. GOVERNANCE.md Devcontainer re-points at the .NET section and .vscode/tasks.json, since Tooling and Editor is gone. - WORKFLOW.md takes the hub's diagram labels, S12/S13 rows, and the operational-model allowance text, keeping the repo's D1 adaptations. - .github/copilot-instructions.md takes the current runbook, including the Disproved Claims section's shape and rules with the hub's own entries dropped, since each names a hub file this repo does not hold. - .editorconfig and .gitattributes take the current pin set with the hub-only Python and catalog pins left out, and mark the pins that match no file here as forward-declared, which clears a pre-existing repo_gate eol-coverage failure. - spec/secrets.json and AUDIT.md claim CODECOV_TOKEN in both stores, matching the hub and the live configuration, and AUDIT.md's ruleset snippet adopts the whole-content sort, pagination, and exactly-one check the hub's audit.py uses. - cspell.json gains the hub's new words. codecov.yml takes the hub snippet's header comment. Audited against this branch with the hub's audit.py at 0e84805 before push, and the local gates (markdownlint, cspell, actionlint, prose_lint on the diff, repo_gate) report clean. * Route the unrecognized-shape issue to the hub without naming it The audit's carried-content check flags a template mention outside a verbatim section, and AGENTS.md "Fleet Bootstrap" already names the destination, so the runbook points there instead. * Point the disproof rule at PR Review Etiquette, where it now lives The Every Finding Ends in an Action heading left GOVERNANCE.md when the review-loop contract was packaged as the pr-review-conduct Skill, so the link resolves to the section that routes there.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@## main #51 +/- ##
=======================================
Coverage 43.37% 43.37% =======================================
Files 28 28 Lines 3896 3896 Branches 306 306 =======================================
Hits 1690 1690 Misses 2154 2154 Partials 52 52 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Promotes develop to main, carrying the hub resync work (per PR #50) so the repository’s carried governance/config/instructions reflect the hub state at 0e84805.
Changes:
- Updates operational/release workflow documentation and audit guidance, including ruleset normalization and CI trigger explanation.
- Aligns secrets/spec and ruleset payloads with the hub model (e.g., Dependabot secret store coverage; unmanaged
bypass_actors). - Refreshes repo documentation and “carried content” runbooks (README link cleanup + third-party tooling list; Copilot runbook updates; host tool declaration).
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
WORKFLOW.md | Clarifies operational PR vs direct-push paths and labels key workflow contract nodes (D1/D3/D4/D5/D6). |
spec/secrets.json | Adds dependabot store for Codecov token to reflect Dependabot-triggered workflow secret visibility. |
repo-config/README.md | Updates guidance to treat configure.sh as hub-hosted tooling and documents unmanaged bypass_actors. |
repo-config/main.json | Removes managed bypass_actors from the expected ruleset payload. |
repo-config/develop.json | Removes managed bypass_actors from the expected ruleset payload. |
repo-config/configure.sh | Removes locally-carried script (now documented as hub-hosted). |
README.md | Fixes reference links and adds a “3rd Party Tools” dependency/action inventory section. |
host-tools.json | Adds repo-scoped host tool declaration (empty list; tighten-only layering note). |
cspell.json | Expands dictionary with hub-synced terms. |
CODESTYLE.md | Refactors detailed prose into hub-skill pointers + concise summaries; preserves repo-specific .NET “post-change set”. |
codecov.yml | Clarifies advisory coverage semantics and keeps benchmarks excluded from coverage. |
AUDIT.md | Updates ruleset diff normalization and secrets verification guidance (including Dependabot store). |
AGENTS.md | Re-vendors hub “Fleet Bootstrap” and expands routing/skill packaging references. |
.markdownlint-cli2.jsonc | Minor comment wording updates (proper-noun “Markdown”). |
.github/workflows/build-release-task.yml | Comment-only clarifications for release asset download and artifact cleanup steps. |
.github/copilot-instructions.md | Updates carried-content guidance and expands Copilot review runbook (refusal/coverage/suppressed-findings shapes, etc.). |
.gitattributes | Adds forward-declared EOL pins and clarifies rationale for LF-pinned tooling files. |
.editorconfig | Adds LF pin for composite action metadata and forward-declares uv.lock LF pin. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Refreshes `reports/photocleaner/audit.md` after the resync driven from
hub `0e84805`, per RESYNC.md section 6 ("done means measured").
- `main` (`c457ff3`) still measures as the pre-resync state (43
findings, run stamp `audit run 2026-08-15T14:28:27Z | hub 0e84805`),
reported as such rather than reading `develop` as ground truth.
- `develop` (`e8b7a81`, after ptr727/PhotoCleaner#49 and
ptr727/PhotoCleaner#50) reports only the two `investigate`-dispositioned
hub-only files (`audit run 2026-08-15T14:58:12Z | hub d54862a | branch
override develop`).
- The `develop -> main` promotion ptr727/PhotoCleaner#51 is open and
blocked on the prose gate's `dead-path` rule flagging verbatim mentions
of the retired `repo-config/configure.sh`, filed as #721. The second hub
finding from the pass, the dead `every-finding-ends-in-an-action` anchor
in `.github/copilot-instructions.md`, is #722.
- The registry `driftNotes` stand: both still describe reality (publish
shape, private-for-now).
Report lints clean (markdownlint, prose_lint), and `spec/validate.py`
passes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)Closes#721 A repository that retires its copy of a hub-hosted file, per the `retire` disposition in `spec/divergences.json`, keeps naming the hub's copy in its carried docs. That is what `GOVERNANCE.md` "Hub-Hosted Tooling" requires of carried text naming a tool ("a pointer that resolves nowhere teaches the reader that a pointer in carried text is decorative"), so rewording is the wrong remedy. But the tree no longer holds the file and git once tracked it, which is exactly the signature `dead-path` keys on, so every such mention is reported. The rule's own exemption reads the scanning tree's `spec/files.json`, which no repository carries, so downstream the exemption set is empty and the class cannot be recognized at all. It surfaces at the `develop -> main` promotion, whose diff base brings the whole retirement into scope, leaving a maintainer's ruleset bypass as the only local remedy for a linter false positive. Observed on ptr727/PhotoCleaner#51, and PlexCleaner carries the same `GOVERNANCE.md:29` mention. This is option 1 from the issue. Option 2 (reword the verbatim units to name no path) is the one `RESYNC.md` section 4 warns against, since a layout sentence that names no path is the blind spot the whole `dead-path` rule exists to narrow. - `HUB_HOSTED` is a literal in `prose_lint.py`, because the prose-gate action fetches that one file with no hub tree beside it to read the ledger from. - A test asserts the literal equals the ledger's `retire` dispositions, so a new retirement cannot land on one side only. - A second test builds a repository that tracked and deleted `repo-config/configure.sh` and asserts the mention is clean. - The two exemption sets are now compared as posix paths, which is the form the manifest and the ledger hold. `docs/fleet-map.md` G4 records the second exemption and why it cannot be derived downstream. Verified: 246 tests in `test_prose_lint.py` pass, every other `scripts/tests` module passes, `build_dist.py --check` is current, ruff format and check are clean, and the whole-tree prose gate, `repo_gate.py`, and `spec/validate.py` all pass.
Takes the two reviewer-set bullets the hub added (union: false replaces the set, and gh pr view omits a Bot reviewer), and aligns the two sentences #50 had already reworded to the canonical text that hub #730 landed for #722, so the shared prefix matches byte for byte.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 19 changed files in this pull request and generated no new comments.
Suppressed comments (1)
WORKFLOW.md:112
- In the "Fast PR Feedback" Mermaid diagram, the
validation jobnode (val) is not connected to the PR trigger, which makes the diagram imply validation is independent of PRs. Adding an explicitpr --> valedge would align the diagram with the surrounding text (“Input: any PR”).
flowchart TD
pr[pull request] --> ch[changes paths-filter]
ch -->|target changed| sb[smoke-build changed targets]
ch -->|workflow-only or docs| skip[smoke-build skipped]
val[validation job] --> agg["Check pull request workflow status job (D1)"]
ptr727
commented
Aug 15, 2026
Answering the suppressed finding on |
Uh oh!
There was an error while loading. Please reload this page.
…nc (#739) Follow-up to #723 after ptr727/PhotoCleaner#51 promoted `develop` to `main` (`f56178a`), carrying ptr727/PhotoCleaner#50 and ptr727/PhotoCleaner#52. `spec/audit.py PhotoCleaner` at hub `b09078e` reports **clean** at `main` (`audit run 2026-08-15T18:43:20Z | hub b09078e`) and at `develop`, including the two hub-only workflow findings that #736 settled. The report moves to **operational**: `readme-structure` and `agent-instruction-set` to pass, no defects, no drift, nothing in flight. It records the one-round `dead-path` block on the promotion (#721, fixed by #731, cleared by a re-run since the gate reads rules from hub `develop`) and closes both escalations (#721, #722). The registry entry is unchanged: `status` stays `cataloged` (the schema's only non-backlog value) and both `driftNotes` still describe reality (publish shape, private-for-now) and assert no outstanding work. Report lints clean (markdownlint, prose_lint), and `spec/validate.py` passes. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Promotes
developtomain, carrying #50 (resync of the carried instruction set and config against the ptr727/ProjectTemplate hub at0e84805).Merge-commit promotion per the branching model,
developstays.🤖 Generated with Claude Code