Skip to content

ask 6: persist a per run lint record as its own file, never as a BUILD-LOG row #66

Description

@MendixMau

What Studio needs

A per run record of what lint found, so Studio's third proof rung can read a fact instead of matching a phrase.

Today

project-bin/lint-gate.sh persists only .claude/lint-baseline.json under --update-baseline. The run output lives in $TMPDIR and the verdicts go to stdout. Nothing survives the run.

Studio therefore greps docs/BUILD-LOG.md for lint ... (ok|clean|0 findings). That is phrase matching, and it is one rewording away from silently going red.

Blast radius

Rating: safe additive as a new file. Needs care as a BUILD-LOG row.

Write a new file, for example .claude/loop/lint-last.json next to the baseline, or an append only docs/LINT-LOG.md. Declare it in bin/lib/artifact-manifest.tsv. Studio adds a reader.

Do not put it in the exec table in docs/BUILD-LOG.md. That table is parsed by three consumers with different rules:

  • Studio daemon/src/runtime/proof.ts parseExecRows: rungs 1 and 2 read the last row, so a trailing lint row becomes "the exec".
  • bin/status.sh treats column 3 as a script name and column 4 as a gate, so a lint row appears under "last gate FAILED for" or "pass but not done-renamed".
  • project-bin/done-drift-check.sh greps the last row per backticked filename.

No obligation change is needed: bin/lib/obligation-check.sh already lists lint-gate under NOROUTE as landing in the build gate rather than a per module review artifact.

Decision needed

None. Ready to implement, provided it never writes to the exec table.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions