LIFEOS/DOCUMENTATION/Testing/TestingDoctrine.md (v1.0.24) defines bun test as "the canonical probe behind every ISC claim" and describes a shared harness at ~/.claude/test/harness.ts in the present tense, including its size and export count. Neither the harness nor any test file is present in the public release.
Reproduced against a clean clone of main at 4e33cc8.
Reproduce
git clone --depth 1 https://github.com/danielmiessler/LifeOS /tmp/lifeos-check
cd /tmp/lifeos-check
find . -name 'harness.ts' -not -path '*/.git/*' | wc -l # → 0
find . -name '*.test.ts' -not -path '*/.git/*' | wc -l # → 0
find . -type d -name test -not -path '*/.git/*' | wc -l # → 0
# the doctrine that references them
grep -n 'harness.ts' LifeOS/install/LIFEOS/DOCUMENTATION/Testing/TestingDoctrine.md
What the doctrine states
- Line 14: "The shared harness lives at
~/.claude/test/harness.ts and exports zero-external-dep helpers (paiTestEnv, tempDir, claudeFixture, platform predicates, custom matchers). Tests live in a parallel ~/.claude/test/ tree… Coverage is corpus-based: every documented hook, skill workflow, and tool surface gets at least one test file."
- Line 32 describes it concretely: "
test/harness.ts (1985 lines, 98 exports, header comment forbids external deps)".
- Line 24: "What's been missing is the invocable probe behind each ISC. This doctrine closes that gap by making
bun test path/to/foo.test.ts the canonical answer."
The document contains no hedging language — grep -cE "aspiration|planned|not yet|TODO|future|will be" returns 0 — so it reads as describing shipped state, not a roadmap.
The consequence
IsaFormat.md makes ## Test Strategy name a tool: per ISC, and the doctrine makes bun test path/to/foo.test.ts the canonical value for that field. On a fresh public install, any ISC written to that contract names a probe that cannot run: there is no harness to import and no test tree to put the file in. The ISC still gets checked off — just not by an executable probe.
The related executor gap is acknowledged in the spec itself, so I'm flagging it as context rather than as part of this report: IsaFormat.md:7 and ALGORITHM/changelog.md:37 both say "The harness executor (isa run, reads ## Test Strategy) is the paired build, tracked separately." That one is documented as pending. The test/harness.ts reference is not.
Why this matters for the project
The verification story is the most-cited thing about this system — ISCs closing on real tool evidence is the core claim. A new user who follows the doctrine as written will look for test/harness.ts, not find it, and have no way to tell whether they broke their install or whether it was never shipped. That ambiguity is corrosive precisely because the surrounding docs are otherwise specific and confident.
Suggested fix (one concrete action, either direction)
Pick one and make the doc match reality:
- Ship it — include
test/harness.ts and the test/ tree in the install payload, so tool: bun test … resolves on a fresh install; or
- Mark it — add a status line to
TestingDoctrine.md in the same style already used in IsaFormat.md:7 for isa run (e.g. "the shared harness is the paired build, tracked separately — not yet in the public release"), and point ## Test Strategy at probe types that do work today (bash, curl, screenshot, eval).
Option 2 is a few lines and removes the ambiguity immediately. I'm happy to open that PR if the wording direction is agreeable.
Not a duplicate of #1539 / #1541 / #1543 — different subsystem, different fix.
LIFEOS/DOCUMENTATION/Testing/TestingDoctrine.md(v1.0.24) definesbun testas "the canonical probe behind every ISC claim" and describes a shared harness at~/.claude/test/harness.tsin the present tense, including its size and export count. Neither the harness nor any test file is present in the public release.Reproduced against a clean clone of
mainat4e33cc8.Reproduce
What the doctrine states
~/.claude/test/harness.tsand exports zero-external-dep helpers (paiTestEnv,tempDir,claudeFixture, platform predicates, custom matchers). Tests live in a parallel~/.claude/test/tree… Coverage is corpus-based: every documented hook, skill workflow, and tool surface gets at least one test file."test/harness.ts(1985 lines, 98 exports, header comment forbids external deps)".bun test path/to/foo.test.tsthe canonical answer."The document contains no hedging language —
grep -cE "aspiration|planned|not yet|TODO|future|will be"returns 0 — so it reads as describing shipped state, not a roadmap.The consequence
IsaFormat.mdmakes## Test Strategyname atool:per ISC, and the doctrine makesbun test path/to/foo.test.tsthe canonical value for that field. On a fresh public install, any ISC written to that contract names a probe that cannot run: there is no harness to import and no test tree to put the file in. The ISC still gets checked off — just not by an executable probe.The related executor gap is acknowledged in the spec itself, so I'm flagging it as context rather than as part of this report:
IsaFormat.md:7andALGORITHM/changelog.md:37both say "The harness executor (isa run, reads## Test Strategy) is the paired build, tracked separately." That one is documented as pending. Thetest/harness.tsreference is not.Why this matters for the project
The verification story is the most-cited thing about this system — ISCs closing on real tool evidence is the core claim. A new user who follows the doctrine as written will look for
test/harness.ts, not find it, and have no way to tell whether they broke their install or whether it was never shipped. That ambiguity is corrosive precisely because the surrounding docs are otherwise specific and confident.Suggested fix (one concrete action, either direction)
Pick one and make the doc match reality:
test/harness.tsand thetest/tree in the install payload, sotool: bun test …resolves on a fresh install; orTestingDoctrine.mdin the same style already used inIsaFormat.md:7forisa run(e.g. "the shared harness is the paired build, tracked separately — not yet in the public release"), and point## Test Strategyat probe types that do work today (bash,curl,screenshot,eval).Option 2 is a few lines and removes the ambiguity immediately. I'm happy to open that PR if the wording direction is agreeable.
Not a duplicate of #1539 / #1541 / #1543 — different subsystem, different fix.