fix(tools): seven checks that reported the wrong result - #1737
Open
elhoim wants to merge 8 commits into
Open
Conversation
…lled checkReplayCorpus shelled `bun test test/regression` with no existsSync guard, but the payload ships no test/ dir, so it exited non-zero with no (fail) lines and raised a BLOCKING finding: /ic was permanently red on every fresh public install. Matches sibling checkRetirementRegistry.
…edger The filter tested decision === "block", which WritingGate.hook.ts never writes — "block" is its response to the harness, not its telemetry vocabulary (it logs block-strong-no-run). Every writing-gate block was dropped from the ledger.
Number("x") is NaN, which is typeof "number", and NaN < 0 is false, so a
malformed --iteration passed validate and JSON.stringify wrote it as null into
the corpus this gate exists to protect.
appendFileSync with no mkdirSync, where every sibling appender in this release does the mkdir first. An unhandled ENOENT means the reflection is simply lost.
ASCENT_BRACKETS is a three-slot subset of the six run states, so indexOf returned -1 for verify/traverse/idle and Math.max(0, …) sent all three to index 0 — a `phase: verify` ISA rendered Marking in the bar while the badge on the same page said ANCHORING. Folds to the nearest earlier bracket by ASCENT order.
existsSync-then-write is not a lock: two sentinel files edited in the same instant both passed the check, both ran the suite and both notified. Uses the wx flag with stale reclaim and a lost-race fallback.
The error was swallowed into a JSONL line nobody tails, so a permanently broken suite looked exactly like a clean pass on every config edit. A suite that cannot run is the same operational fact as one that fails: the change went unverified.
main().catch(console.error) exited 0, and IntegrityMaintenance.ts checks only code === 0, so it booked a ledger entry for work that never happened.
elhoim
force-pushed
the
fix/lifeos-tools
branch
from
August 3, 2026 07:01
b7eb903 to
3f9a521
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
8 commits, one per fix, so each can be cherry-picked independently. Each was verified to apply cleanly onto
47df8eeby itself.8012f9c65ff8cc84d46b525ca9a231c1bfe8b6a303cd001683f9a521Seven defects under
LIFEOS/TOOLS/. The common shape is a check that reports the wrong result rather than one that fails.IntegrityCheck.ts:863—checkReplayCorpusshellsbun test <CLAUDE_DIR>/test/regressionwith noexistsSyncguard, but the payload ships notest/dir. It exits non-zero with no(fail)lines, so it raises a blocking finding:/icis permanently red on every fresh public install. Now skips with a note, exactly like its siblingcheckRetirementRegistry.RecurrenceLedger.ts:147— filteredr.decision === "block", a valuehooks/WritingGate.hook.tsnever writes. The hook logsblock-strong-no-run;"block"is its response to the harness, not its telemetry vocabulary. Every writing-gate block was dropped from the ledger and report. Prefix-matchesblock*so new reasons land without a third place to edit.Reflect.ts:200—Number("x")isNaN, which istypeof "number", andNaN < 0is false, so a malformed--iterationpassedvalidateandJSON.stringifywrote it asnullinto the corpus this gate exists to protect. AddsNumber.isFinite.Reflect.ts:224—appendFileSyncwith nomkdirSync, where every sibling appender in this release does the mkdir first.ISARender.ts:41—ASCENT_BRACKETSis a three-slot subset of the six run states, soindexOfreturns -1 forverify/traverse/idleandMath.max(0, …)sent all three to index 0. Aphase: verifyISA rendered "Marking" in the bar while the badge on the same page said ANCHORING. Folds to the nearest earlier bracket byASCENTorder.ConfigEvalOnChange.ts:65—existsSync-then-write is not a lock; two sentinel files edited in the same instant both ran the suite and both notified. Uses thewxflag with stale reclaim and a lost-race fallback. It also swallowed a suite error into a JSONL line, so a suite that cannot run looked exactly like a clean pass on every config edit; that now notifies, same as a regression does.CreateUpdate.ts:678—main().catch(console.error)exits 0 on failure, andIntegrityMaintenance.tschecks onlycode === 0, so it recorded a ledger entry for work that never happened.Testing. Commands and output are in the per-file notes above. I did not do a fresh-system install verification (contributing step 3) — these are targeted fixes verified per-file, not an install run.