Skip to content

Promote develop to main: per-section fidelity, issue generator, editorconfig fix, PhotoCleaner audit - #402

Merged
ptr727 merged 7 commits into
mainfrom
develop
Jul 23, 2026
Merged

Promote develop to main: per-section fidelity, issue generator, editorconfig fix, PhotoCleaner audit#402
ptr727 merged 7 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Promotes the develop line to main. Merge-commit promotion (not squash); develop is the head and is never deleted.

Included (6 commits)

Why now

The PhotoCleaner convergence agent vendors canonicals from main — this promotion makes them current (notably the fixed .editorconfig).

Verification

spec/validate.py green; audit.py --selftest passes; trial merge conflict-free (0 markers). Human merge, so no release fires.

🤖 Generated with Claude Code

ptr727 added 6 commits July 22, 2026 17:11
Two backlog work items with no open questions move from standing issues to the README TODO running backlog (per AGENTS.md): #363 (OCI docker labels) and #310 (onboarding hardening). Both issues closed referencing the backlog. Adds 'opencontainers' to the cspell dictionary.
A carried markdown file can be intent overall while individual ## sections are verbatim (byte-identical to the hub canonical, EOL-normalized, region-hashed incl. the heading, code-fence aware). AGENTS.md's three universal rule sections (Repository Boundaries and Write Safety, Git and Commit Rules, Verification Discipline) are now verbatim, closing the #305 propagation gap for the docs class - a downstream paraphrase missing a rule now surfaces as DRIFT.
The #305 fleet view: fidelity_honesty check_units enumerates whole intent/verbatim files plus each verbatim section, and the report surfaces the three universal AGENTS.md rule sections diverging across all 19 cataloged repos - the propagation gap made visible in one regenerable artifact. Section units are labelled 'path > section'; the ledger can carry section-scoped dispositions.
…399)

audit.py --issue <repo> emits a ready-to-file convergence issue (title on line 1, body from line 2) generated from that repo's live audit findings, grouped into must-fix / converge / could-not-verify. The content is a view over the audit, never composed by hand, so it cannot drift and regenerates as the repo changes. AUDIT.md section 8 documents it.
) (#400)

Remove dotnet_analyzer_diagnostic.severity=suggestion from the root .editorconfig - it demoted every analyzer to a non-failing suggestion fleet-wide, defeating AnalysisMode=All and violating CODESTYLE.md. The specific IDE0055 entry stays. Hub side of #353; downstream re-vendor is per-repo.
…tNotes (#401)

First committed audit for PhotoCleaner (main@3b33b98, not operational): PR gate + lint architecture live and contract-passing, secrets provisioned, but both rulesets missing (the defect), eleven baseline files absent, AGENTS.md an old skeleton, no release pipeline, develop trailing main by 3. driftNotes refreshed to current state.
Copilot AI review requested due to automatic review settings July 23, 2026 14:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Promotes develop to main while advancing the repo's governance/audit tooling: it adds per-section verbatim fidelity for Markdown, extends fleet divergence reporting to section-scoped units, introduces an audit-driven convergence-issue generator, removes the repo-wide analyzer severity relaxation from the canonical .editorconfig, and adds the first committed audit report for PhotoCleaner.

Changes:

  • Add section-scoped verbatim fidelity for Markdown (##-delimited) and wire it through validation, auditing, and fleet divergence reporting.
  • Add spec/audit.py --issue <repo> to generate a ready-to-file convergence issue directly from live audit findings; document the generator in AUDIT.md.
  • Remove dotnet_analyzer_diagnostic.severity = suggestion from the canonical .editorconfig, and add PhotoCleaner audit + registry driftNotes refresh.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
spec/validate.py Validates section objects (name, fidelity) and recognizes section-scoped divergence units (path > section).
spec/files.schema.json Extends section object schema with fidelity (intent/verbatim).
spec/files.json Marks selected AGENTS.md universal sections as verbatim while keeping the file overall intent.
spec/fidelity-model.md Documents section-level verbatim fidelity and positions universal AGENTS.md sections as verbatim candidates.
spec/fidelity_honesty.py Treats verbatim sections as first-class “units” for fleet spread reporting via path > section.
spec/divergences.json Updates ledger note to describe section-unit keys (path > section).
spec/audit.py Adds verbatim section extraction/checking and --issue convergence issue generation from audit findings.
reports/photocleaner/audit.md Adds PhotoCleaner’s first committed audit report with evidence and recommended follow-ups.
reports/divergences.md Regenerates divergence burn-down to include untriaged verbatim-section units.
registry/repos.json Refreshes PhotoCleaner driftNotes to reflect current state and gaps.
README.md Moves #363/#310 into the README TODO backlog as running backlog items.
cspell.json Adds opencontainers to the allowed word list.
AUDIT.md Documents audit-derived issue generation (spec/audit.py --issue <repo>) in the audit guidance.
.editorconfig Removes the repo-wide analyzer demotion (dotnet_analyzer_diagnostic.severity = suggestion).

Comment thread spec/audit.py
Comment thread spec/audit.py Outdated
Comment thread spec/files.schema.json
…title, schema minLength (#403)

extract_section docstring no longer overclaims whitespace folding, --issue prints the bare title on line 1 (pipe-friendly), and the section-name schema gains minLength 1 to match validate.py. Findings from Copilot's #402 promotion review.
Copilot AI review requested due to automatic review settings July 23, 2026 14:30
@ptr727
ptr727 merged commit 029f358 into main Jul 23, 2026
7 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

Comments suppressed due to low confidence (1)

spec/audit.py:168

  • extract_section's fenced-code handling toggles on any line starting with or ~~~, without tracking which marker opened the fence. A mismatched fence marker inside a code block (e.g. ~~~ inside a fence) incorrectly flips out of fenced mode, allowing a later ## line inside the code block to be treated as a real section boundary.
    out, capturing, fenced = [], False, False
    for ln in normalize(text).split("\n"):
        stripped = ln.strip()
        if stripped.startswith("```") or stripped.startswith("~~~"):
            fenced = not fenced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants