NEUTRAL, the same way formatGuardrailReport is: it reports what each
hook blocks without deciding whether that was the hook's job. A repo's config
never says which of its hooks is meant to be a bash-safety guard, so a verdict
here would be invented rather than read.
🔴 A HOOK THE BATTERY NEVER REACHED IS NEVER GIVEN A NUMBER. A measured hook
prints blocks n/7; a not-applicable or unresolved one prints its REASON
under a ⊘ heading and no count at all, because a rendered 0/7 is the same
false confidence the discriminated union exists to prevent, reintroduced one
layer up where the type system can no longer see it. For the same reason the
report's notes are printed FIRST and in full: a sweep that measured nothing
has to say so in words, since an output with no rows reads as a clean bill of
health.
MANY HOOKS STAY READABLE by grouping the unmeasured half BY REASON — a repo
with thirty hooks usually has two or three distinct reasons — and naming at
most HOOKS_PER_REASON hooks per reason before counting the rest. The
measured half is never collapsed: those are the hooks you came for.
It renders PluginGuardReport, whose SHAPE is the part
most likely to move (see experimental_verifyPluginGuards), so a stable
name here would promise a stability its only input does not have. The prefix
comes off with the same change that takes it off the report.
Render a PluginGuardReport as terminal text.
NEUTRAL, the same way formatGuardrailReport is: it reports what each hook blocks without deciding whether that was the hook's job. A repo's config never says which of its hooks is meant to be a bash-safety guard, so a verdict here would be invented rather than read.
🔴 A HOOK THE BATTERY NEVER REACHED IS NEVER GIVEN A NUMBER. A
measuredhook printsblocks n/7; anot-applicableorunresolvedone prints its REASON under a⊘heading and no count at all, because a rendered0/7is the same false confidence the discriminated union exists to prevent, reintroduced one layer up where the type system can no longer see it. For the same reason the report'snotesare printed FIRST and in full: a sweep that measured nothing has to say so in words, since an output with no rows reads as a clean bill of health.MANY HOOKS STAY READABLE by grouping the unmeasured half BY REASON — a repo with thirty hooks usually has two or three distinct reasons — and naming at most HOOKS_PER_REASON hooks per reason before counting the rest. The measured half is never collapsed: those are the hooks you came for.
It renders PluginGuardReport, whose SHAPE is the part most likely to move (see experimental_verifyPluginGuards), so a stable name here would promise a stability its only input does not have. The prefix comes off with the same change that takes it off the report.