Skip to content

Fix variant J README badges and preserve authored rows - #13

Open
CompleteDotTech wants to merge 158 commits into
mainfrom
fix/badges-variant-j
Open

CompleteDotTech wants to merge 158 commits into
mainfrom
fix/badges-variant-j

Conversation

@CompleteDotTech

@CompleteDotTech CompleteDotTech commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Resolves #7

What and why

Variant J (.github) READMEs now derive a GitHub-profile type badge using the standard's badge category and brand palette, alongside the captured license badge, so readme --write fills the badge block and lint readme passes (R7). Generated badge rows carry a content digest: untouched generated rows refresh with metadata or badge-mode changes, while custom and edited authored rows (including four-space or tab indented ones and duplicate badge blocks) survive upgrade and header refresh (no more readme-shrink on hand-written badges). Historical generated Markdown rows are recognized by exact format, order and palette. A CRLF generated row is recognized and refreshed, normalized to LF. HTML and Markdown image parsing supports the badge syntax documented in the README reference. Missing licenses are not invented. The card category is unchanged.

The Markdown/HTML image scanner (readmelint, shared parsing behaviour, reviewed as shared code) was hardened against GitHub's renderer through the review rounds: container fences and continuation, reference definitions (valid, invalid, balanced and unbalanced destinations, multiline labels, inert definition openers, list-continuation and tab-column handling), link titles (bounded by their paragraph, heading or list block), comment openers inside tags and orphan openers, backtick-bearing labels and destinations, shortcut-reference fallback and fake badges beside a real type image. The scanner stays non-recursive, with deterministic work-count regressions.

Updates specialist instructions, README reference and changelog. No sibling shared files changed. There are no task sub-issues for #7.

Prior work

Searched this repository's open and closed issues and PRs again (badge, variant J, readme lint markdown, reference definition). Issue #7 covers this defect and this is the only fix PR (#13). Related, not duplicated: issue #125 (content images and escaped backticks, tracked separately) and merged PRs #19, #20.

Tests and evidence (head e8a3e226164f409f1c57243af6c79e043b250232, base main 2243010d67725c17a163223d84f91a119f7262dd)

  • Exact-head VM (designated VM, run by the outer coordinator; receipt vm-e8a3e226...-result.json): package tests, package validator, full pytest and quality validator all passed: 2026 passed, 11 skipped, 37 subtests passed. The skips are absent external fixtures.
  • Root parser preflight on this exact head (parser-preflight113-e8a3e226...json): all 113 semantic cases match the GitHub renderer, with the digest, template-ownership and duplicate-block preservation controls and two deterministic indexed-work scaling probes. These are synthetic probes with GitHub's own rendering as the oracle, not a whole-parser complexity proof.
  • Native Windows host runs on this head (supplemental local evidence): an earlier run (i7-r5-full) was INTERRUPTED (its process was terminated; the log stopped early and no receipt was produced), which is NOT a pass; a serialized retry (i7c-pytest) then completed: 2019 passed, 18 skipped, 37 subtests, with the package tests (OK, 2 skipped), the package validator and the quality validator also passing. The two are reported separately and the retry is not presented as the VM result.
  • Changes since the previous reviewed head (fdb8b09): unescaped opening parentheses are rejected inside parenthesized link titles (escaped parentheses stay accepted), and only the ordered marker 1. interrupts a paragraph (0. and 2. do not), plus the integration of current main.
  • Hosted CI: read back from the checks tab before merge (not asserted here).
  • Reviews: final independent reviews of this exact head (two Opus and Sol) and the merge gate are outstanding; earlier heads and approvals are history. This description does not claim readiness to merge.
  • Not run: mmdc/Mermaid rendering (tool unavailable), private deny-list check (no private fixtures), pyright (no config).

Boundaries

Read-only GitHub behavior, activation keys, consent, private assets and approval gates are preserved. No release, merge, visibility or settings change is requested.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-11-01T09:31:23.081194Z
We couldn’t complete this review. Comment @codex review to try again.
26c4933 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

CompleteDotTech and others added 4 commits October 29, 2026 22:27
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c07796e7fb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/ctshowcase/readme.py Resolved
CompleteDotTech and others added 3 commits October 29, 2026 22:57
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1792e3fdfb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/ctshowcase/readmelint.py Resolved
CompleteDotTech and others added 2 commits October 29, 2026 23:18
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
CompleteDotTech and others added 9 commits November 1, 2026 03:22
…age, plain link-title reference, fake badge beside type image) (#7)

Commits the paragraph-split local image, plain link-title reference and
unsplit control in tests/test_readmelint.py; the fake-badge-beside-type-image
controls in tests/test_reference_badge_count.py were authored by Haiku.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ntrols (#7)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Evidence (untracked, left in place): C:/Users/timot/AppData/Local/showcase-orchestration/20261031/{probe_e0d_label_shortcut.py,gfm-e0d-label-shortcut.json,gfm-e0d-shortcut_fallback.html,gfm-e0d-unresolved.html,label-shortcut-e0d9745c-vm.json}. Old-SHA evidence. Source unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
body_sha strips whitespace, so an authored indented badge row hashed the
same as its unindented migrated row and was wrongly exempted from the
readme-shrink guard. badge_body now emits badge_sha in replaces= and
preservation() matches against badge_sha.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…nk openers

- Destination parsing rejects a paragraph boundary in the leading whitespace, the
  whitespace before the title or `)`, the title itself and the whitespace after it.
  The boundary check is one bisection per region over cached blank-line starts.
- The inline link span scan keeps a stack of link-text openers. Each `](` consumes
  one opener, so a completed link's opener cannot back an orphan destination.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ounded titles and consumed openers (#7)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

CompleteDotTech and others added 4 commits November 1, 2026 04:14
Add _search_comment, which returns the first unescaped HTML comment that is
either an HTML block opener (inside html_spans) or contains no paragraph
break. A mid-line comment crossing a blank line is invalid per CommonMark/GFM,
so `<!--` stays literal and the search resumes one character on. Replace the
three comment call sites in readmelint.py with it.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
GitHub GFM renders two badges for the completed-link plus orphan `](x "<!--")`
header (gfm-f774-orphan_comment_badge.html), and one local image for the
matching local-image case (gfm-f774-orphan_comment_local.html). The round-4
assertion expected a single badge and contradicted that oracle.

- Assert no "2-4 header badges required" failure for the completed-link and
  code-span header cases instead of asserting the one-badge expectation.
- Add the local-image counterpart: the missing file must still be reported.
- Add controls: a blank-line block comment and a single-paragraph inline
  comment still hide an image; an inline comment closed in its paragraph does
  not fail the badge count.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
CompleteDotTech and others added 2 commits November 1, 2026 04:16
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

CompleteDotTech and others added 4 commits November 1, 2026 04:42
…ultiline labels and tab columns

Regression tests for the #7 f774/26c4933 findings. Existing tests are unchanged.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ition labels, tab residual indentation (#7)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…residual columns (#7)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

1 similar comment
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

CompleteDotTech and others added 5 commits November 1, 2026 05:02
…uption regressions (#7)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…arkers other than 1. do not interrupt a paragraph (#7)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ption in README lint (#7)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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.

Variant J README: no badge generator, and hand-written badges trip the shrink guard

2 participants