Hi — first, thank you for putting this out in the open; it's a lot of generous work, and I saw the recent move toward the agentic installer (#922), which is a great direction.
I've been running PAI v5 (on a VM) for a while and just set up a fresh LifeOS install to migrate over — so this is coming from a somewhat familiar starting point, not a first-day stumble. While getting oriented, I noticed a cluster of places where the shipped code, hooks, and docs point at skills or files that don't seem to be in the public payload — mostly private-looking ones (_LIFEOS, _COMMUNICATION, _HARVEST, etc.) and an Assistant Pulse module. They look like they might share a single root cause: references to private/maintenance infrastructure surviving into the public release. I'm raising it as one consolidated issue rather than a pile of separate ones, since it seems systemic and probably better handled as a release-time check than piecemeal — but happy to split it into per-item issues if you'd prefer that for triage. Nothing here is meant as a knock — just a map, in case it's useful.
Install context (so you can reproduce / rule out my setup): fresh LifeOS v7.1.1, fresh Claude Code instance, macOS. Only .claude/PAI/MEMORY and /USER were ported from an existing PAI v5 install (previously on a VM) into the new .claude/ before running /lifeos setup. No competing infrastructure — no prior skills, hooks, or settings files; just the PAI MEMORY/USER content for the installer to fold in. Most of the items below I also confirmed against the vanilla install payload (skills/LifeOS/install/), so they don't appear specific to my port.
Each item lists what I saw and where; I've tried to verify rather than assume.
Appears to affect a fresh/vanilla install too
SystemFileGuard deny-list scan reads nothing. hooks/lib/system-file-guard-core.ts loads its deny-list + salted-hash files from skills/_LIFEOS/DENY_LIST.txt / DENY_HASHES.json; both are absent, and the loader returns [] on !existsSync. So the PII/privacy scan seems to pass everything silently — the guard looks active but may be inert. Flagging gently because it's privacy-adjacent.
CommunicationSkillGuard blocks email sends with no shipped path forward. The hook (exit 2) blocks gmail.ts send / aws ses send-email unless carrying LIFEOS_SKILL=_COMMUNICATION, and directs the model to Skill("_COMMUNICATION") → skills/_COMMUNICATION/Workflows/SendEmail.md, which isn't in the release.
- Harvest's mandatory final step is unrunnable.
skills/Harvest/SKILL.md documents bun ~/.claude/skills/_HARVEST/Tools/harvest.ts … as the always-run closing step; _HARVEST isn't shipped. (HarvestExecutor.ts also points here when ARBOL_HARVEST_API_BASE is unset, which it is by default.)
derivedsync launchd job errors every run. It writes skills/_LIFEOS/DENY_HASHES.json; the dir doesn't exist, so it exits 1 with ENOENT (visible in its stderr log).
- Pulse
/assistant/* routes 404. ObservabilitySystem.md / PulseSystem.md document ~8 DA endpoints sourced to Assistant/module.ts; that module isn't present, yet PULSE.toml has [da] enabled = true. (pulse.ts even comments that Assistant is "stripped from the public release payload" — so the code knows, but the config still expects it and the docs still list the routes as live.)
- Spinner tips advertise commands that don't ship.
settings.enhancements.json spinnerTipsOverride lists ~89 /commands (e.g. /broadcast, /newsletter, /osint); only 3 command files exist in commands/ (context-search, cs, pu). New users see tips for tools they can't invoke.
- Unrendered placeholders in live prompts. Telegram/iMessage system prompts and chat logs contain literal
{{DA_NAME}} / {{PRINCIPAL_NAME}}.
- Retired skill still in routing docs.
DelegationSystem.md routes "custom agents" to Skill("Agents"), but AgentSystem.md says that skill was retired; skills/Agents/ isn't present.
Small path drifts — happy to send PRs for these (fix is unambiguous)
skills/CreateSkill/Workflows/CanonicalizeSkill.md reads ~/.claude/LIFEOS/SkillSystem.md; real file is LIFEOS/DOCUMENTATION/Skills/SkillSystem.md.
LIFEOS/USER_TEMPLATES/README.md copies from LIFEOS/USER/_TEMPLATES/; real dir is LIFEOS/USER_TEMPLATES/.
LIFEOS/PULSE/setup.ts reads LIFEOS/USER/DA_IDENTITY.md; real path is LIFEOS/USER/DIGITAL_ASSISTANT/DA_IDENTITY.md.
skills/Remotion/Tools/package.json main/scripts point at index.ts; the actual entrypoint is Render.ts (which has its own import.meta.main CLI). bun run render fails as written.
I'm happy to open PRs for the last group if that's helpful, and to help reproduce any of the others. Thanks again for the project.
Checked and deliberately left out as non-bugs: LocalIntelligence Crime is an explicitly-labeled "not yet implemented" TODO stub, not a silent break; observability tool-failures.jsonl volume turned out to be ordinary agent exit-codes, not a subsystem failure.
Hi — first, thank you for putting this out in the open; it's a lot of generous work, and I saw the recent move toward the agentic installer (#922), which is a great direction.
I've been running PAI v5 (on a VM) for a while and just set up a fresh LifeOS install to migrate over — so this is coming from a somewhat familiar starting point, not a first-day stumble. While getting oriented, I noticed a cluster of places where the shipped code, hooks, and docs point at skills or files that don't seem to be in the public payload — mostly private-looking ones (
_LIFEOS,_COMMUNICATION,_HARVEST, etc.) and anAssistantPulse module. They look like they might share a single root cause: references to private/maintenance infrastructure surviving into the public release. I'm raising it as one consolidated issue rather than a pile of separate ones, since it seems systemic and probably better handled as a release-time check than piecemeal — but happy to split it into per-item issues if you'd prefer that for triage. Nothing here is meant as a knock — just a map, in case it's useful.Install context (so you can reproduce / rule out my setup): fresh LifeOS v7.1.1, fresh Claude Code instance, macOS. Only
.claude/PAI/MEMORYand/USERwere ported from an existing PAI v5 install (previously on a VM) into the new.claude/before running/lifeossetup. No competing infrastructure — no prior skills, hooks, or settings files; just the PAIMEMORY/USERcontent for the installer to fold in. Most of the items below I also confirmed against the vanilla install payload (skills/LifeOS/install/), so they don't appear specific to my port.Each item lists what I saw and where; I've tried to verify rather than assume.
Appears to affect a fresh/vanilla install too
SystemFileGuarddeny-list scan reads nothing.hooks/lib/system-file-guard-core.tsloads its deny-list + salted-hash files fromskills/_LIFEOS/DENY_LIST.txt/DENY_HASHES.json; both are absent, and the loader returns[]on!existsSync. So the PII/privacy scan seems to pass everything silently — the guard looks active but may be inert. Flagging gently because it's privacy-adjacent.CommunicationSkillGuardblocks email sends with no shipped path forward. The hook (exit 2) blocksgmail.ts send/aws ses send-emailunless carryingLIFEOS_SKILL=_COMMUNICATION, and directs the model toSkill("_COMMUNICATION")→skills/_COMMUNICATION/Workflows/SendEmail.md, which isn't in the release.skills/Harvest/SKILL.mddocumentsbun ~/.claude/skills/_HARVEST/Tools/harvest.ts …as the always-run closing step;_HARVESTisn't shipped. (HarvestExecutor.tsalso points here whenARBOL_HARVEST_API_BASEis unset, which it is by default.)derivedsynclaunchd job errors every run. It writesskills/_LIFEOS/DENY_HASHES.json; the dir doesn't exist, so it exits 1 withENOENT(visible in its stderr log)./assistant/*routes 404.ObservabilitySystem.md/PulseSystem.mddocument ~8 DA endpoints sourced toAssistant/module.ts; that module isn't present, yetPULSE.tomlhas[da] enabled = true. (pulse.tseven comments that Assistant is "stripped from the public release payload" — so the code knows, but the config still expects it and the docs still list the routes as live.)settings.enhancements.jsonspinnerTipsOverridelists ~89/commands(e.g./broadcast,/newsletter,/osint); only 3 command files exist incommands/(context-search,cs,pu). New users see tips for tools they can't invoke.{{DA_NAME}}/{{PRINCIPAL_NAME}}.DelegationSystem.mdroutes "custom agents" toSkill("Agents"), butAgentSystem.mdsays that skill was retired;skills/Agents/isn't present.Small path drifts — happy to send PRs for these (fix is unambiguous)
skills/CreateSkill/Workflows/CanonicalizeSkill.mdreads~/.claude/LIFEOS/SkillSystem.md; real file isLIFEOS/DOCUMENTATION/Skills/SkillSystem.md.LIFEOS/USER_TEMPLATES/README.mdcopies fromLIFEOS/USER/_TEMPLATES/; real dir isLIFEOS/USER_TEMPLATES/.LIFEOS/PULSE/setup.tsreadsLIFEOS/USER/DA_IDENTITY.md; real path isLIFEOS/USER/DIGITAL_ASSISTANT/DA_IDENTITY.md.skills/Remotion/Tools/package.jsonmain/scripts point atindex.ts; the actual entrypoint isRender.ts(which has its ownimport.meta.mainCLI).bun run renderfails as written.I'm happy to open PRs for the last group if that's helpful, and to help reproduce any of the others. Thanks again for the project.
Checked and deliberately left out as non-bugs:
LocalIntelligenceCrime is an explicitly-labeled "not yet implemented" TODO stub, not a silent break; observabilitytool-failures.jsonlvolume turned out to be ordinary agent exit-codes, not a subsystem failure.