Skip to content

fix: an unmodeled diff path degrades to every journey; verify's UNKNOWN NONE is not a pass (#117, #113) - #141

Merged
inth3shadows merged 2 commits into
mainfrom
fix/117-113-unindexed-diff-and-none-line
Oct 30, 2026
Merged

inth3shadows merged 2 commits into
mainfrom
fix/117-113-unindexed-diff-and-none-line

Conversation

@inth3shadows

Copy link
Copy Markdown
Owner

Fixes #117 and #113.

  • select accounts for every path in the diff (diff_files). Product paths are seeded as before. Tests (under a test directory), docs (.md/.rst/.adoc, top-level docs//doc/, exact LICENSE/COPYING/CHANGELOG/NOTICE/AUTHORS) and .d.ts files are exempt with a reason (exempt_files). Every other path (unmodeled_files) triggers the Changed product file with zero index nodes still yields a confident NONE #29 all-journeys fallback, and select and the hook name each one.
  • git diff pins --submodule=short --ignore-submodules=none, so git config can't hide a submodule bump.
  • verify: an UNKNOWN NONE puts UNKNOWN in its headline (verify render: NONE line may read as clean when select's unknown_because is set #113) and exits 3. Entries no parser covers are left out of the exit decision, because they never clear.
  • Noise measured over the last ~40 commits: 22/40 (testgraph), 16/36 (honeyslate) and 21/36 (signedintake) now hit the fallback.

Reviewed by /code-review and a code-reviewer agent. The high-severity findings are fixed in 935bc0c; the rest are filed as #136–#140.

…WN NONE is not a pass (#117, #113)

#117: the diff parser dropped every path outside PRODUCT_EXT before impact
analysis, so a migration-, Dockerfile-, CI- or CSS-only diff answered
"0 changed files, NONE" with no warning. Every path is now accounted for
(diff_files) and classified: product (seeded as before), exempt with a
reason (test, docs, type declaration), or unmodeled, which joins the #29
unmapped fallback: warning, recall_degraded, every journey listed
verify_manually. select names each unmodeled path; the hook gives them a
capped NOTE line of their own.

#113: verify's NONE headline read "nothing to verify" with the UNKNOWN
reasons indented below it. It now uses select's two-sentence headline, and
an UNKNOWN empty selection exits 3 instead of 0.
- H1: --submodule=short --ignore-submodules=none, so diff.ignoreSubmodules,
  a .gitmodules ignore or diff.submodule=log cannot hide a submodule bump.
- H2: doc basenames match exactly (optionally with a prose extension); the
  prefix match exempted db/authors.sql and config/licenses.json.
- H3: only a test directory exempts a non-code file; _is_test's name rules
  exempted test_and_deploy.yml and openapi.spec.yaml.
- H4: verify's exit decision ignores entries_unchecked, which never clears;
  the headline still shows it.
- H5: docs/ and doc/ exempt only at the top level.
- verify --help epilog and a misplaced comment updated.
@inth3shadows
inth3shadows merged commit 437c5e6 into main Oct 30, 2026
5 checks passed
@inth3shadows
inth3shadows deleted the fix/117-113-unindexed-diff-and-none-line branch October 30, 2026 11:48
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.

P1: Unindexed behavior-changing diffs must return UNKNOWN or select all journeys

1 participant