fix(lint): render wiki drift and missing priority in text output - #145
Merged
Paul-Kyle merged 2 commits intoAug 22, 2026
Merged
Conversation
…sespace-labs#113) `palinode lint` computed the wiki-contract and human-priority checks, but their findings only ever reached `--format json`. The default text report showed every line as ✓ even when a file drifted from its frontmatter `entities:` contract or a Decision/core memory was unranked — a wrong answer, not a missing warning line. Render both finding sets in the same bucket style as the other checks, add explicit clean-state lines, report the scanned-file total, and add a coverage guard that fails if any future `run_lint_pass()` result key has no text representation. Update the two stale docstrings to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sidsri14
marked this pull request as ready for review
August 21, 2026 10:31
Member
|
Thanks for this, and apologies for the silence — you opened it two days ago and should have had a Reviewing now. It's green and it's the right shape at a glance: both dropped checks rendered in the |
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.
Summary
Fixes the two checks that
palinode lint's default text output silentlydropped even though they run and are surfaced in
--format json:wiki_drift)missing_priority)The text report now renders both, including an explicit clean-state line for
each ("No wiki drift", "All core and Decision memories have priority"), and
additionally reports the scanned-file total. A coverage guard in
tests/test_lint.pyasserts that every key returned byrun_lint_pass()has atext representation, so a future check can never be silently dropped again.
Why
The issue's title ("silently drops") is literal: the deterministic checks run
every lint pass and appear in JSON output, but the human-readable report never
showed them. A user running
palinode lintwith no flags saw no sign that thechecks existed — no finding, and no reassurance when the corpus was clean.
Clean-state lines matter as much as findings here: a missing-but-clean check is
indistinguishable from a check that no longer runs.
Root cause
palinode/cli/lint.pyrenders each check into the text report, but thewiki_driftandmissing_prioritybuckets had no text branch at all. Theunderlying checks in
palinode/core/lint.pywere already producing the data.Behaviour change
palinode lint(text) now lists wiki-drift warnings and missing-priorityfiles when present, and prints a green clean-state line when not.
Files scanned: N.Tests
tests/test_lint.py: five new tests —run_lint_pass()result key has a text markerthat actually appears in the output
(TDD).
tests/test_changelog_structure.pypasses.ruff check palinode/ tests/ scripts/,bandit -r palinode/ -ll(no findings at or above medium),git diff --check, and therepository's custom CI linters (httpx-monopoly, write-choke-point) with their
test suites.
Limitations (baseline failures, reproduced on untouched upstream)
Running the full suite locally on this machine (Windows) yields 196 failures +
5 errors across the repo (2819 passed). These are pre-existing baseline
failures, not caused by this change:
main(eb4e0de) produces208 failures + 7 errors — i.e. the same or more. Every lint-relevant
failure (6 tests) reproduces identically on clean upstream.
paths (
daily/file.md,decisions/claim.md) whileos.path.relpathonWindows returns backslashes (
daily\file.md). This includes the twotests/test_lint.pybaseline failures(
test_lint_relative_dates_exempts_daily_logs,test_lint_missing_fields_numerator_matches_total_files_denominator), whichfail on clean upstream too.
that failed during the branch's full run pass in isolation (and pass on the
baseline run), so they are flaky rather than regressions.
vault demo harness and are excluded from CI's unit-test run
(
pytest tests/ --ignore=tests/integration).CI runs
pytest tests/ --ignore=tests/integrationon Linux; the lint-relevanttests in this PR pass.
Notes
## Unreleased > ### Fixedper the contributionrules.
test writing, and verification per the repository's AI-assistance disclosure
expectations.
Fixes #113