shard(tick): 2026-05-16T03:22Z — PR #3690 markdownlint MD038 unblock + sweep#3707
Merged
Conversation
…+ sweep PR #3690 had been "armed, awaiting CI" since tick 6 (~70 min ago) — turned out to be a REQUIRED check FAILURE on lint (markdownlint), not "still running". MD038/no-space-in-code triggered on `git ` (trailing space inside backticks) at 0240Z.md:20. Fixup 81b2f1a: rewrite "prepend `git ` to" → "prepend the `git` prefix to". Same semantic, no trailing space in code span. markdownlint-cli2 local exit 0. Sweep of all 2026-05-16 shards on main: 0 other MD038 violations. Lesson: required-check failures are a distinct merge-block class from unresolved-threads + non-required-check warnings. poll-pr-gate.ts's nextAction field disambiguates. PR #3701 also merged 03:16:50Z (carry-over). Co-Authored-By: Claude <noreply@anthropic.com>
Same MD038 class I described in this very shard. Line 44 used a literal backtick-git-space-backtick to illustrate the bug pattern, which IS the bug. Inside fenced code blocks (lines 41, 51) the pattern is safe. Rewrite line 44 to describe the pattern in prose without using the literal trailing-space-in-backticks form. markdownlint-cli2 → exit 0. Lesson: pre-commit MD038 self-check would have caught this before push. Adding to the discipline list. Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR adds a tick-history shard documenting the PR #3690 markdownlint MD038 investigation, fix, and follow-up operational lessons.
Changes:
- Adds the 2026-05-16T03:22Z hygiene-history tick shard.
- Records the required-check failure diagnosis for PR #3690.
- Captures MD038 lessons and next-tick follow-up candidates.
The sweep description on L58 duplicated "main" ("on origin/main main").
Tightening to "on \`origin/main\`" preserves the intent (sweep target =
the main branch) and clarifies it's a ref-name, not free text.
The other two Copilot threads on this PR are addressed in the reply:
- L44 MD038 alarm is a false positive (the literal `` `git ` `` instances
live inside ` ```text ` fenced blocks; MD038 only fires on inline code
spans; markdownlint exits 0 locally).
- L33 cross-reference to 0240Z.md is no longer stale — PR #3690 has
merged and the file is present on main.
Co-Authored-By: Claude <noreply@anthropic.com>
AceHack
added a commit
that referenced
this pull request
May 16, 2026
…3710) (#3711) Tick 15: promoted the audit-lifecycle pattern to a canonical doc at tools/hygiene/AUDIT-LIFECYCLE.md. 7-step pattern + 2 worked examples (§33 audit ~4 weeks; tick-shard relative-path audit ~80 min single session). Pre-emptive scanner-author findings documented to shorten the quality iteration loop for future audit work. All 3 prior-tick PRs (#3707/#3708/#3709) still armed + awaiting CI. Co-authored-by: Claude <noreply@anthropic.com>
AceHack
added a commit
that referenced
this pull request
May 16, 2026
…stale/FP) (#3715) PR #3707 + #3708 merged. 6 new Copilot threads investigated: - PR #3710 (AUDIT-LIFECYCLE.md): 2 real — name attribution (Codex/Riven → role-refs) + §33 PR-attribution factual error (PR #3552 baseline cleanup + PR #3555 CI enforce, not both #3552). Fixup cd7ba81. - PR #3709 (0328Z shard): 4 threads — 2 stale (0322Z merged via #3707), 1 minor prose-drift, 1 false-positive (4th time on table-pipes). All resolved no-op. The Copilot table-pipe || hallucination is now a 4-time pattern (#3685, #3690, #3699-era, #3709) — verify-first-resolve-no-op discipline. Co-authored-by: Claude <noreply@anthropic.com>
AceHack
added a commit
that referenced
this pull request
May 16, 2026
) * feat(hygiene): bundled pre-push self-check helper for tick shards Bundles the three self-checks I've been running per-tick this session into one command: MD032 paragraph-before-bullet awk-style scan + markdownlint-cli2 (the broad markdown surface including MD038) + audit-tick-shard-relative-paths (the dedicated relative-path audit). Motivation: today's self-bite tick 13 saw an MD038 violation ship to PR #3707 because I didn't run markdownlint before push; the required CI check failed and blocked merge for 70+ min. A bundled helper shortens the local-feedback loop from "push + wait for CI" to "single command + immediate output." DX helper, not a CI gate. CI gates remain authoritative. Usage: bun tools/hygiene/check-shard-before-push.ts <shard-path>... Exit codes: 0 all checks passed 1 one or more checks failed 64 argument error (missing files, non-files, no args) Local verify: - Clean shard (0334Z.md): exit 0; all 3 checks ok - Bad shard (synthetic MD032 + MD038): exit 1; specific findings printed - Missing file: exit 64 with structured "input not found" - No args: exit 64 with usage - bun --bun tsc --noEmit: exit 0 - markdownlint-cli2 on this file: exit 0 Composes with: audit-tick-shard-relative-paths.ts (the audit it wraps), AUDIT-LIFECYCLE.md (the lifecycle template that motivates pre-push catches), the §33 audit's same pattern. Co-Authored-By: Claude <noreply@anthropic.com> * fix(pr-3716): 3 Copilot findings — substring fragility, fenced-code MD032, parseArgs exit Three real findings on PR #3716, fixed: L114 (substring fragility): runRelativePathAudit relied on out.includes( "0 broken relative-path links") as the success signal. Fragile to future wording tweaks AND ignored r.status entirely. Replace with: 1. r.status !== 0 → unambiguous failure (echo stdout+stderr+status) 2. Parse the "N broken relative-path links" count via regex; "0" = ok 3. Unrecognized output format → fail loud, echo, don't silent-pass L69 + L74/L75 + (3 duplicate threads on fenced-code MD032): the checkMd032 scan didn't track fence state, so a `- ` line inside ```...``` was flagged as a false-positive MD032 violation. Add buildCodeFenceFlags (same pattern as audit-tick-shard-relative-paths.ts) and skip lines inside fences. Verified with a synthetic shard containing a bullet inside a code block — was reported FAIL pre-fix, now reports OK. L124 (parseArgs process.exit): parseArgs called process.exit(64) directly on no-args, blocking unit-test of the no-args branch even though main is exported for testability. Replace with a typed ParseResult discriminated union ({ok:true,args} | {ok:false,exitCode:64,message}); main inspects the result and exits itself. Skipped (P2 optional, scope creep): multi-file batching of spawn calls. Markdownlint-cli2 + audit script accept multiple files natively; could reduce wall-clock for N>1 invocations. Filing for future iteration if multi-shard usage materializes. Local verify (5 tests): - Clean shard (0334Z.md): exit 0 - Bad shard (MD032 + MD038): exit 1, both findings printed - Fence-shard (- bullet inside ```text```): exit 0 ← fix verified - No args: exit 64 via main (was via process.exit inside parseArgs) - tsc --noEmit: exit 0 Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR #3690 had been 'armed, awaiting CI' since tick 6 (~70 min ago) — diagnosed today as a REQUIRED check FAILURE on lint (markdownlint). MD038/no-space-in-code triggered on backslash-quote-git-space-backslash-quote (trailing space in code span) at 0240Z.md:20. Fixed via commit 81b2f1a.
Sweep of all 2026-05-16 shards on main: 0 other MD038 violations.
Lesson: required-check failures are distinct merge-block class from unresolved-threads + non-required warnings. poll-pr-gate.ts's nextAction field disambiguates ('fix-failed-checks' vs 'resolve-threads' vs 'wait-ci' vs 'none').
Co-Authored-By: Claude noreply@anthropic.com