Repository navigation
Conversation
project-bin/lint-gate.sh appends one row per rule per run to .claude/loop/lint-ledger.tsv (ts, verdict, rule, count, severity, blind, plus a _run row with the total). New project-bin/lint-trend.sh prints per rule: runs fired in, first/last count with dates, best/worst, blind runs, up/down/flat; --rule <id> for one series, --runs for the run rows. Why: lint-baseline.json records the count that was accepted, not what each run saw, so "did the rule we shipped catch anything, and did the count go down" had no answer. The lint rollout plan's "promote after two clean projects" step needs exactly that. Probe: the gate's own parser on a crafted lint result (3 findings, one blind rule) — ledger rows and trend output as expected, lint-last.json and the ratchet verdict unchanged. check-portability and check-scripts clean. Field run on a real model still owed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
5 tasks done
MendixMau
added a commit
that referenced
this pull request
Oct 8, 2026
Squash of integration/2026-10-08, which merges: - #225 perf(ui-loop): test-stack-up.sh recognises a live mxcli run --local - #231 fix(sync): sync-project.sh no longer exits 1 silently before its bin/ refresh - #242 fix(init): local by default, no Dev Container - #243 docs(lint): process/lint-backlog.md, the lint rollout plan - #247 new(lint): the lint gate keeps a ledger - #249 learn(test): skills/e2e-locators-that-lie.md - #250 learn(skills): unhappy-path-testing.md - #251 fix(testing-shape): mxcli test --local shares the deploy directory (#230) - #252 fix(obligations): LOOK staleness reads the newest VALID AT stamp (#155) - #253 docs(lint): quality-source review, Batch 4 backlog rows and skill additions - #254 fix(lint): CONV020 works out of the box, page navigation counts as feedback (#229, #245) - #255 fix(e2e): journey-runner rung 2 runs for a negative-only span claim (#150) - #256 fix(gates): Stage 6 Surface, source-sufficiency title, ${JOURNEY_DIR} manifest token (#233, #234, #235) Verified on the branch: tests/run-tests.sh 33/0, tests/test-lint-delivery.sh ALL GREEN, tests/wave2 73/75 (two environmental), render-routing --check, check-scripts, check-portability, leak guard, check-no-private-citations, check-pr-discipline all clean; scaffold smoke run without crashes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Owner
Author
|
Merged into master via integration PR #258 (squash 9dd9be4), on the maintainer's approval. Closing this PR; its branch is part of that squash. Generated by Claude Code |
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.
What changed and why
project-bin/lint-gate.shnow appends one row per rule per run to.claude/loop/lint-ledger.tsv(ts, verdict, rule, count, severity, blind, plus a_runrow carrying the total). Newproject-bin/lint-trend.shreads it back: per rule, runs it fired in, first/last count with dates, best/worst, blind runs, and up/down/flat.--rule <id>prints one rule's series,--runsthe run rows.Why:
lint-baseline.jsonrecords the count that was accepted, not what each run saw. So "did the rule we shipped catch anything, and did its count go down once people saw it" had no answer. The lint rollout plan (process/lint-backlog.md, #243) promotes a warning to error only after two clean projects — this is where that evidence comes from.lint-last.jsonand the ratchet verdict are unchanged. The ledger write is best-effort likelint-last.json: a write failure never turns a PASS/FAIL into a crash.Also:
lint-trend.shadded toMXTK_PROJECT_BIN; a paragraph inskills/lint-that-actually-runs.md; CHANGELOG line.Field evidence
Probe only, so far: the gate's own Python section run on a crafted lint result (3 findings across 2 rules, one of them blind via
_rule) —--update-baselinethen a check run. Ledger got two_runrows and two rows per rule, blind flagged on the blind rule;lint-trend.shreported the blind rule as2 BLINDand both asflat.check-portability.shandcheck-scripts.shclean.A run on a real model (laptop) is still owed before merge:
project-bin/lint-gate.shtwice, thenproject-bin/lint-trend.sh.Checklist
lint-trend.sh; both layouts resolve via the script's ownROOT; python resolved not assumed (samerequire_pyfallback as the gate)🤖 Generated with Claude Code
https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Generated by Claude Code