Skip to content

[THROWAWAY - do not merge] Validate the #1712 docs fast path - #1714

Closed
erikdarlingdata wants to merge 1 commit into
devfrom
throwaway/docs-fastpath-check
Closed

[THROWAWAY - do not merge] Validate the #1712 docs fast path#1714
erikdarlingdata wants to merge 1 commit into
devfrom
throwaway/docs-fastpath-check

Conversation

@erikdarlingdata

Copy link
Copy Markdown
Owner

Single root .gitignore comment - on the #1712 documentation allowlist but NOT markdown, so before #1712 this exact diff hit the '**' catch-all and paid the full six-project restore. Expected: build check ~1m45s with restore/setup skipped and a DOCS FAST PATH ENGAGED notice naming .gitignore; darling-pg reports its skip decision. This PR exists only to capture that evidence for the CI-intelligence PR and will be closed unmerged.

🤖 Generated with Claude Code

…d classifier

Expected: DOCS FAST PATH ENGAGED (all_count == docs_count == 1, no area
lit), setup/restore/versioning skipped, build check well under a minute.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@erikdarlingdata
erikdarlingdata force-pushed the throwaway/docs-fastpath-check branch from 6ea4637 to 167002f Compare July 26, 2026 21:03
@erikdarlingdata

Copy link
Copy Markdown
Owner Author

Throwaway validation complete: stage 1 proved the regression (run 30219202642), stage 2 proved the fixed filters per file (run 30219765613), stage 3 measured the working fast path end to end (run 30220291489, 13s). Evidence recorded in #1715.

@erikdarlingdata
erikdarlingdata deleted the throwaway/docs-fastpath-check branch July 26, 2026 21:06
pull Bot pushed a commit to ehtick/PerformanceMonitor that referenced this pull request Jul 29, 2026
The 2026-07-26 08:02 action-pin bump moved dorny/paths-filter v3 to v4.
v4 evaluates every filter pattern as an INDEPENDENT predicate under the
default predicate-quantifier 'some' (a filter is true when any changed
file matches at least one rule), so a bare '!**/*.md' line stopped
being a subtraction and became its own rule: 'any file that is not
markdown'. Every area filter ending in that line went true for ANY
non-markdown change anywhere in the repo, and the code: filter ('**'
plus exclusions) could never be false again.

Measured consequences, straight from run logs:
- darling-pg ran the full TimescaleDB suite on every PR since the bump,
  including md-only ones. Run 30218459544 (PR erikdarlingdata#1709, two .md files):
  'Filter darling = true, Matching files: CHANGELOG.md' - CHANGELOG.md
  matched '!Darling/**/*.md' by virtue of not being a Darling markdown.
- A single root .gitignore edit built and tested every product: run
  30219202642 (throwaway PR erikdarlingdata#1714) lit lite, dashboard, AND darling,
  each reporting 'Matching files: .gitignore' via its '!**/*.md' rule.
- The erikdarlingdata#1712 docs fast path shipped unable to engage: every changed file
  matches '**', so code: was always true and setup/restore always ran.
  Its measured 1m43s md-only runs were real but came from the area
  filters (markdown matches no include), not from the fast path.

The fix keeps v4 (v3 is on the deprecated-runtime track) and removes
every bare negation instead:
- Area filters state the markdown carve-out INSIDE each include as an
  extglob - 'Darling/**/!(*.md)' - where quantifier semantics cannot
  detach it. The positive-only docs allowlist needed no change.
- The uninvertible code: filter becomes an all: counter. The classify
  step decides docs-only by all_count == docs_count, and additionally
  refuses to engage while any area filter is lit, because an area build
  step with restore skipped would run dotnet build --no-restore against
  nothing. Counts and areas derive from the same allowlist today; the
  veto exists for the day someone edits one and not the other.
- check-version-bump.yml had the identical '**'-plus-exclusions shape,
  so its md-only skip had also silently stopped working. Same counter
  fix, same allowlist, and its gate now says why.

Validation: probe commit on throwaway PR erikdarlingdata#1714 (this build.yml plus a
Darling .txt probe and a Darling .md probe) makes the filter log a
per-file truth table; results recorded in the CI-intelligence PR body.

Co-Authored-By: Claude Fable 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.

1 participant