mirror of
https://github.com/hanzoai/hips.git
synced 2026-10-30 15:04:16 +00:00
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 <[email protected]>