Files
hanzo-dev a51490dd08 hips: one lint, proven to fail, and the template it enforces
scripts/lint-hips.py replaces the heredoc that lived inside ci.yml. Two copies
of one rule meant the gate existed only on the forge and a contributor could not
reproduce a failure without pushing. Now both run the same file.

22 checks: FM* front matter, ST* structure, IX* index, PL* policy. Every one
fired on a defect that was really there.

scripts/test-lint-hips.py is why this is trustworthy. It copies the corpus,
breaks it 22 ways — one per check — and requires the matching error code each
time, then asserts every declared check has a test so adding a check without one
fails. The workflow this lineage replaced printed every missing field and exited
0; a check seen only to pass is indistinguishable from one that cannot fail.

Both policy checks were wrong first time and were narrowed against their own
output rather than against intent:

  PL001 fired on the comparative phrase alone and reported 15 lines, 12 of them
  ordinary English — 'only as good as the source behind it', 'a competitor
  cannot rebuild this', 'golden-parity with the reference'. 20% precision. It
  now requires a NAMED third-party product within 80 characters, and does not
  fire on weighing two candidate upstream dependencies, which is engineering
  rationale rather than a claim about us.

  ST004 fired on any repeated section number and reported four documents that
  simply number 1..3 under one heading and 1..3 under the next. It now scopes to
  siblings under one parent, keyed by the parent's identity rather than its
  number — keying by number made every unnumbered '##' the same parent.

docs/templates/hip-template.md did not exist, though LLM.md has told every
author to copy it for months. That is the simplest explanation for a corpus with
four H1 styles and eight status words: there was never anything to conform to.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>
2026-08-04 01:49:45 -07:00
..