Repository navigation
Lab Zero v1.19.0 — tracking density warnings + size-gate SIGPIPE fix
-
Your tracking files now warn you when an entry is growing into a document. Two advisory checks join the pre-commit hook. The first reads the rows a commit newly adds to
Log/TASKS.mdand names any over 200 bytes — TASKS is a dashboard, and a row that has become a paragraph belongs inSessions/,Log/plans/orDECISIONS.mdinstead. The second reads wholly-new## D-entries inLog/DECISIONS.mdand names any over 8 KB. Both are warn-only and never block: existing rows and existing entries are never flagged, so neither can turn your backlog into recurring noise, and editing a line inside an entry you already wrote stays silent. Thresholds areLAB_ROW_LEN_WARN(default 200) andLAB_ENTRY_SIZE_WARN_KB(default 8). Lengths are counted in bytes underLC_ALL=C, so an em-dash costs 3 — deliberate, because awk implementations disagree about what a "character" is, and a threshold that moves between machines is worse than one that is slightly strict. The whole block is wrapped so a failure inside it cannot stop your commit: the worst case is that the advisory silently does not run, and the shipped suite proves it by deliberately breaking the check and asserting the commit still succeeds. On an existing install:update.shdelivers both, no config change needed. Two limits worth knowing: the checks live inscripts/, so they reach every project that updates — but the one-line note inLog/TASKS.mdthat documents the row rule is part of your ownLog/, which no updater ever touches, so it reaches only projects you graduate from now on. And a Lab home that keeps noLog/TASKS.mdorLog/DECISIONS.md—~/.Labitself, by default — is never covered by either check, permanently. -
Bug fix: the 128 KB tracking-file block could silently skip on a large commit. v1.13.0 added a hard block for a tracking file staged over 128 KB, alongside its 64 KB warning tier. Both were fed by a shell pipe that exits at the first match — on a commit staging enough files, the writing side of that pipe was killed before it finished, and the failure was read as "no tracking file staged", so neither tier ran. The bigger the commit, the more likely it was to slip. Both tiers, and the new checks, now read their input without a pipe at all. No threshold and no message changed; the gate simply runs when it should. On an existing install:
update.shdelivers the fix.