Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: jasonhnd/life_OS

v1.9.3 — Start Session speed-up (write-time INDEX, focus-first) + briefing structure fix

03 Jun 00:33
@jasonhnd jasonhnd

Choose a tag to compare

Maintenance release — 上朝/retrospective speed-up + two briefing bug fixes. Pure spec/agent behavior; no vault-data migration. SOUL/DREAM full display retained (v1.7.2.3 principle).

Speed-up (上朝)

  • Write-time Session INDEX: meta/sessions/INDEX.md was rebuilt from scratch every boot (Glob + Read + parse every session file → O(N-sessions), the dominant Start Session cost on mature vaults). Moved to write-timeknowledge-extractor appends each session's line at adjourn; Start Session now reads + an O(1) drift check (Δ=0 read, Δ≠0 repair). Start Session no longer slows down linearly with session count.
  • Focus-first lead line (⚡ 今日焦点速览) at the top of the briefing — immediate orientation without scrolling past full SOUL + DREAM.
  • AUDITOR patrol made explicitly non-blocking — briefing render is the user-unblock point; patrol runs after, async.

Bug fixes

  • Briefing dual-representation: the Output Format banner template (🔮/💤/🗺️/⚡, no ## N) conflicted with the ## 0## 5 Completeness Contract that AUDITOR Mode 3 greps for (and writes its pass line into ## 5). A banner-only briefing would be flagged Class C every Start Session. Added a structure-authority note + explicit banner→## N mapping.
  • INDEX drift tolerance tightened |Δ|≤1Δ=0 (write-time keeps files:lines 1:1; self-healing repair).

Not changed

SOUL/DREAM full display is retained — the speed comes from the INDEX/structure changes, not from trimming reference content (user chose option K; v1.6.2/v1.7.2.3 principle).

Full notes: CHANGELOG.md

Assets 2
Loading

v1.9.2 — spec-drift cleanup (agent-spec / hippocampus / v1.9 RFC) (+ fix1: auditor Mode 7/8 order) (+ fix2: portable awk date-diff)

02 Jun 04:28
@jasonhnd jasonhnd

Choose a tag to compare

Maintenance release — promotes the post-1.9.1.2 spec-drift cleanup to a tagged release. Pure spec/docs correctness; no vault-data migration, no runtime behavior change.

Fixes

  • agent-spec.md (EN/zh/ja): dropped the deleted narrator-validator from the per-agent table + the false "retained as template" claim; added the missing live memory-keeper row so the body matches the frontmatter and on-disk reality.
  • Cortex hippocampus (agent + spec + i18n): FTS5/SQLite Wave-1 helper → plain Grep over meta/sessions/INDEX.md; deleted tools/migrate.py/rebuild-session-index prompt.
  • v1.9 RFC: converged to a single GitHub backend (Google Drive + Notion removed in v1.9.1); voided the Stage-2 hooks-audit feature end-to-end (bash hook layer retired v1.8.5; repo has 0 .sh files).
  • Smaller alignments: /run-eval → markdown scenario format; adapter-github → navigation stub; AUDITOR 6→8 modes; RETROSPECTIVE / knowledge-extractor / install-agents / migrate-wiki-v2 / verify-release-and-watch / version-check corrections; GEMINI "all backends" → git pull; 3 hardcoded agent-count drifts removed.

Verification

0 active broken paths · 0 active count drift · 0 false retired-file claims · 0 .py/.sh files · trilingual parity.

Full notes: CHANGELOG.md

Loading

v1.9.1.2 — eval-docs /run-eval migration + dead Makefile removal

02 Jun 00:18
@jasonhnd jasonhnd

Choose a tag to compare

Maintenance release. Promotes the post-1.9.1.1 fixes to a tagged release at user request (a discrete 1.9.1.2 rather than a within-release 1.9.1.1 fix9). Pure docs + dead-infra correctness — no vault-data migration, no runtime behavior change.

Fixes

  • docs/evals → /run-eval: the running-evals.md / overview.md / writing-new-scenarios.md trio still documented the retired evals/run-eval.sh (chmod, ./evals/run-eval.sh, a GitHub-Actions snippet) — contradicting evals/README.md, which migrated to the /run-eval slash command in v1.9.1. All three rewritten; the .sh survives only as a "replaces the retired ..." lineage note.
  • eval scenarios: adjourn-compliance.md + start-session-compliance.md ## Notes for run-eval.sh retargeted to /run-eval; the retired lifeos-compliance-check.sh TODO reframed as retired (compliance via /check-spec-drift + AUDITOR Mode 3).
  • Removed the dead Makefile: every target referenced resources deleted in the md-only pivot — tools/, tests/, tools/cli.py, ruff/pytest, the retired eval .sh, and a non-existent .github/workflows/test.yml. Verification is via slash commands (/check-spec-drift, /run-eval, /verify-release), which make cannot invoke.

Migration

No user action required. If you relied on make targets: an md-only repo has no build/test toolchain — run the slash commands in Claude Code instead.

Full notes: CHANGELOG.md · trilingual 中文 · 日本語

Loading

v1.9.1.1

31 May 11:14
@jasonhnd jasonhnd

Choose a tag to compare

Maintenance release for repository structure cleanup and final audit.

Changes:

  • Bumped Life OS version metadata and README badges to 1.9.1.1.
  • Removed the legacy Pro source tree from active structure: host contracts moved to hosts/, shared agents to agents/, compliance records to compliance/.
  • Added the natural-language Doctor workflow prompt for repository self-check and cleanup.
  • Slimmed the trilingual READMEs and moved old release narrative into changelog/history references.
  • Archived retired legacy specs under docs/history/specs/ with thin compatibility stubs at the old reference paths.
  • Cleaned Markdown quality issues across active and mirrored docs.

Validation:

  • stale primary 1.9.1 version refs: 0
  • legacy Pro path refs in Markdown: 0
  • filtered local Markdown link errors: 0
  • UTF-8 mojibake hits: 0
  • unclosed frontmatter: 0
  • odd code fences: 0
  • trilingual section parity errors: 0 across 71 mirrored file pairs
  • forbidden diff extensions: 0
  • ignored files left: 0
Loading

v1.9.1 — Migration-debt cleanup (+ fix1..fix8)

28 May 08:00
@jasonhnd jasonhnd

Choose a tag to compare

Patch release. Finishes three migrations that v1.9.0 and earlier applied only to canonical files, not to their mirror layers.

What this fixes

  • v1.8.6 audit-trail format (R12→R13): ~60 leftover meta/runtime/<sid>/*.json references across all 16 agents' allowed_scope, SKILL.md, pro/CLAUDE.md, 8 maintenance prompts, the /notion-sync command, and eval fixtures — all corrected to .md. Each would have made an agent write a forbidden file (F4 SCOPE_FAILURE).
  • meta/queue/manifest.jsonmanifest.md (inbox-process system manifest).
  • /regression-from-violation was still generating forbidden rc-*.yml fixtures → now rc-*.md.
  • v1.8.5 hook retirement: remaining references to retired bash hooks (pre-notion-write.sh, session-start-inbox.sh, pre-prompt-guard.sh) reframed to inline LLM procedures; hooks-spec.md / compliance-spec.md / system-overview.md / roadmap.md / obsidian-spec.md marked LEGACY.

Upgrade

No action required — spec-correctness patch, no vault-data migration. v1.9.0 vaults are unaffected.

Root cause of the lingering bugs: mirror desync (3-platform CLAUDE/AGENTS/GEMINI, references↔i18n, spec↔prompt↔command↔agent). Verified: zero active forbidden-extension data paths under meta/ in any behavioral layer. Platform files (.claude/settings.json, .obsidian/*.json) untouched.

fix1 (2026年05月29日) — v1.9.0-origin drift, round 1

Post-publish corrections folded into the v1.9.1 tag:

  • Shipped the v1.9 RFC_meta/rfc/v1.9-second-brain-structure-optimization.md, cited as spec authority by ~20 tracked files, was untracked under the .gitignore _meta/ rule. Force-added (v1.8.7 RFC precedent).
  • Fixed impossible CHANGELOG dates — v1.8.5/v1.8.6 were dated 2026年07月15日/16 → corrected to 2026年05月23日 (authoritative tag/release date), across CHANGELOG + changelog-spec, EN/zh/ja.
  • Finished references↔i18n mirror syncdata-model.md (missing the entire Cortex Data Types section + v1.9 archive semantics, 177-line gap), concept-spec.md (Wikilink Convention), dream-spec.md (DREAM ×ばつ Cortex) zh/ja restored to ## section-count parity.

fix2 (2026年05月29日) — line-by-line deep audit, round 2

A 5-agent parallel audit of every behavioral file fixed cross-file contradictions (most pre-v1.9):

  • SOUL snapshot writer/reader path split — snapshots were written to meta/soul-snapshots/<sid>.md but every reader uses meta/snapshots/soul/{YYYY-MM-DD-HHMM}.md → SOUL trend arrows silently broke. Fixed.
  • archiver Adjourn Report Phase 5 omission — H2 enumeration said "6 core H2", omitting Phase 5 (contract is 7) → AUDITOR would flag every adjourn. Fixed.
  • AUDITOR ↔ retrospective briefing-heading mismatch — AUDITOR's expected headings no longer matched retrospective's actual output → false-flag on every compliant briefing. Realigned.
  • pro/AGENTS.md + pro/GEMINI.md resynced to pro/CLAUDE.md — Step 10a config-driven (was hardcoded 4-page Notion), host-agnostic inline enforcement (was prompt-level-only), narrator-validator row removed.
  • Retired-token / stale-path cleanup across archiver, auditor, monitor, data-model, dream-spec, lifecycle-gates, changelog-spec, install-agents, migrate-to-wikilinks, and active getting-started docs. references↔i18n parity preserved.

fix3 (2026年05月29日) — deep-audit cleanup, round 3 (remaining LOW items)

  • De-hardcoded subagent countsagent-spec.md (23) and status-line-spec.md (22) disagreed (actual 24) and violated the no-hardcode-count rule; replaced with non-numeric phrasing (EN/zh/ja). The agent-spec subagent list also dropped the deleted narrator-validator and added memory-keeper.
  • Fixed broken RFC scan-source pathsmemory-keeper.md, gotchas-spec.md, pro/gotchas.md, and the memory-keeper eval listed non-existent meta/rfc/v1.8.4-*.md / v1.8.6-*.md at the wrong path → existing _meta/rfc/ RFCs (v1.8.5 / v1.8.7 / v1.9).
  • Miscretrospective.md mojibake + "audit trail JSON" → .md; run-tool-eval.md /run-regression marked planned; migrate-wiki-v2.md /audit --mode 5 given an inline fallback.

fix4 (2026年05月29日) — perfect-state closure

The 3 items fix3 had judged acceptable-to-leave, closed per a zero-drift request:

  • _meta/rfc/v1.8.7 seed-source plan → existing _meta/rfc/ RFCs (was non-existent v1.8.4/v1.8.6).
  • changelog-spec.md (EN/zh/ja) worked example → dropped hardcoded "21 agent frontmatter".
  • /exit-monitor + /audit → reframed from bare slash syntax (no backing files) to the natural-language / inline triggers they actually are; leftover "cron activity" dashboard line → "recent maintenance runs".

Genuinely-frozen legacy files (status: legacy) left as-is by design.

fix5 (2026年05月29日) — consolidate legacy docs into docs/history/

Decluttered the active tree: genuinely-frozen v1.7-era docs moved (via git mv, history preserved) into docs/history/ (+ i18n/{zh,ja}/docs/history/ mirrors) — docs/architecture/ (13 snapshots), docs/user-guide/cortex/ (6 guides), v1.7-migration, v1.7-shipping-report. All inbound links in active docs/specs re-pointed; docs/index + user-guide/index rewritten to name pro/CLAUDE.md + pro/agents/ as the current authority. Frozen records (CHANGELOG/compliance/RFC) keep their original path refs (historical accuracy); load-bearing current feature specs (snapshot/concept/hippocampus/...) stay in references/. Added docs/history/README.md.

fix6 (2026年05月29日) — correct fix5's over-broad path substitution

fix5's link-update sed over-matched: it also rewrote devdocs/architecture/devdocs/history/architecture/ (gitignored internal dir, never moved) and redirected historical mentions of the deleted docs/architecture/hermes-local.md / prompt-cache-strategy.md. Both reverted. Also aligned narrator-spec.md status (draft → legacy) with its mirrors. Caught pre-ship by a full-repo broken-path + frontmatter + version sweep — now clean.

fix7 (2026年05月29日) — repo-wide link + count hygiene sweep

Full re-scan of all tracked .md (EN + zh/ja mirrors). Fixed:

  • README meta/rfc/_meta/rfc/ links (3 langs; the repo's own /check-spec-drift regex never catches meta/ so it had gone undetected)
  • zh/ja README bare relative links (pro/CLAUDE.md, outbound-pii-patterns.md, v1.7-migration.md) → ../../
  • docs/reference faq.md + version-history.md leading-slash ](/...) links → relative
  • cortex breadcrumb regression from fix5: ../index.md../README.md (18 docs); created i18n/{zh,ja}/docs/history/README.md; repointed zh/ja Quickstart links
  • de-hardcoded stale agent counts (WHEN-NOT-TO-ADD ×ばつ3, install-agents, auditor ×ばつ3, e9/e10 scenarios); ja README "16エージェント" → "multiple agents" (EN/zh parity)
  • version-history.md added to /check-spec-drift exclusions (version log)

Post-fix scan: 0 real broken links, 0 unclosed frontmatter, 0 odd fences, 0 active-file count drift, full trilingual section parity.


fix8 (2026年05月31日) — remove Notion + Google Drive backends (GitHub-only storage)

Storage simplified to a single git backend (local working copy + GitHub remote; sync = git pull / git push at ARCHIVER Phase 4). Removed: GDrive + Notion adapters (+i18n/docs), the Notion outbound-PII gate, the /notion-sync(+watch) commands, and the multi-backend sync layer (12 files deleted). Rewrote data-model/data-layer, pro/{CLAUDE,AGENTS,GEMINI}, agents, SKILL, README x3, all docs + i18n. No version bump. Verified: 0 residual Notion/GDrive in active files, 0 broken links, 0 frontmatter/fence issues, trilingual parity.

Loading

v1.9.0 — Second-brain structure optimization

27 May 12:23
@jasonhnd jasonhnd

Choose a tag to compare

v1.9.0 — Second-brain structure optimization + transparency

Type: minor (breaking vault layout)
RFC: _meta/rfc/v1.9-second-brain-structure-optimization.md
Decisions locked: 24 across 29 DRs (DR-1.9.1 to DR-1.9.29)

8 optimizations

  • Opt #1 _meta/meta/ + transparency (no .system/ hidden layer; all audit/runtime visible) — DR-1.9.1
  • Opt #2 meta/inbox/meta/queue/ rename (avoid clash with vault-root inbox/)
  • Opt #3 decisions consolidate to meta/decisions/<YYYY-MM>/<id>.md (was 3 sources: _meta/decisions/, projects/*/decisions/, _meta/incidents/*.yml)
  • Opt #4 archive/lifecycle_stage: archived frontmatter (no physical move; preserves wikilinks) — DR-1.9.4
  • Opt #5 journal time-axis canonical at meta/journal/<date>.md (drop dual-write projects/*/journal/)
  • Opt #6 areas softened to "recommended seeds" (FIRST-RUN no longer pre-creates 10 dirs)
  • Opt #7 user-patterns.mdmeta/user-patterns.md (compiled artifact alignment)
  • Opt #8 methods/decisions/journal frontmatter cross-references (applied_methods list, born_from_decisions, referenced_decisions, referenced_methods; reverse via Dataview)

Migration

Run /migrate-v1.9 on v1.8.x vaults. Pre-flight refuses if:

  • git working dir not clean (DR-1.9.7, no escape hatch)
  • vault < v1.8.0 (run prior migrations first; no auto-chain — DR-1.9.14)
  • archive/ contains non-project content (clean manually first — DR-1.9.22)

Then run /verify-v1.9 for 8-check acceptance.

For v1.6/v1.7 vaults: see docs/guides/cross-version-migration.md.

Schema changes

  • decision.applied_method (string) → applied_methods (list) — DR-1.9.19
  • decision.domains closed enum: [governance|execution|finance|infra|people|growth] — DR-1.9.25
  • lifecycle_stage 5 → 4 values (drop dormant, add paused_until field) — DR-1.9.20
  • archived_at_source enum: git-log | migrated-unknown | manual | auto — DR-1.9.26
  • method.applied_in_decisions REMOVED (use Dataview reverse query) — DR-1.9.24
  • decision ID format: dec-<YYYY-MM-DD>-<NNN> per-day seq — DR-1.9.17
  • decisions monthly subdir <YYYY-MM>/ — DR-1.9.18

Acceptance

4 eval scenarios written:

  • evals/scenarios/v1.9-migration-correctness.md (6 test cases)
  • evals/scenarios/v1.9-wikilink-preservation.md (4 test cases)
  • evals/scenarios/v1.9-decision-consolidation.md (5 test cases)
  • evals/scenarios/v1.9-cross-reference-fields.md (5 test cases)

Cleanup (Phase J)

v1.8.5 retired the bash hook layer (scripts/hooks/*.sh deleted), but normative docs still referenced setup-hooks.sh / verify-release.sh / lifeos-pre-prompt-guard.sh. v1.9.0 cleaned all current-use references to slash commands (/install-agents, /uninstall-agents, /verify-release); historical "What's New" sections in README/i18n marked with v1.8.5+ obsolete notes; hook-compliance evals marked DEPRECATED.

Trilingual sync

  • README.md / i18n/zh/README.md / i18n/ja/README.md version badge → 1.9.0
  • CHANGELOG.md ×ばつ3 langs with full v1.9.0 entry
  • docs/second-brain.md ×ばつ3 langs full rewrite (v1.9 directory tree + 5-class mental model + Recommended seed)
  • SKILL.md::version → 1.9.0

Breaking changes summary

All v1.8.x vault paths break. Run /migrate-v1.9 once. No automatic chain for older vaults.

See _meta/rfc/v1.9-release-handoff.md for full execution audit.

Loading

v1.8.7 · OpenHuman-inspired hardening + md-only ontological constraint

25 May 14:38
@jasonhnd jasonhnd

Choose a tag to compare

v1.8.7 · OpenHuman-inspired hardening + md-only ontological constraint

Released: 2026年05月25日 · Type: patch · Breaking changes: none

Summary

7 borrowed patterns from tinyhumansai/openhuman absorbed into lifeos, every one expressed in md-only. DR-10 elevates md-only from "policy" to lifeos's ontological constraint — the definitional property of being lifeos. 3 cargo-cult borrows cut per DR-08 to keep the product simple.

Product upgrades

Capability-changing (new things lifeos can do)

  • 🧠 gotchas + memory-keeper (C6)pro/gotchas.md is a single flat file of project-level technical gotchas, written exclusively by the new memory-keeper agent. archiver wrap-up now has a Phase 5 that auto-extracts new gotchas at every adjourn. ROUTER can short-circuit known issues before major tasks. Adjourn report contract expanded from 6-H2 to 7-H2.

  • 🔄 Self-driven loops (B4)/verify-release-and-watch and /notion-sync-and-watch use Claude Code's ScheduleWakeup to poll every 270s (cache-window-optimized interval) for up to 12 ticks (60-minute hard cap) until terminal state. Auto-fixes missing GitHub Release publish. Spec at references/self-driven-loops-spec.md. Claude Code only; other hosts gracefully degrade to manual reruns.

  • 📋 verify-release expanded to 11 checks

    • Check 8 expanded to 9 forbidden extensions (added .bash / .yml / .yaml / .json / .sql / .db / .sqlite)
    • Check 9 NEW: i18n diff parity (WARN level v1.8.7, BLOCK target v1.8.8) — catches EN/zh/ja drift class
    • Check 10 NEW: diff-scoped forbidden extensions — catches files introduced since last tag
    • Check 11 (was check 9): All regression fixtures FAIL — renumbered
  • 🛡️ AUDITOR Mode 7 added — 7 sub-checks (M7-1 through M7-7) verify v1.8.7 artifacts stay present + md-only constraint not bypassed even at design-proposal level. M7-7 scans for "introduce a JSON config" / "add a Python script" / "create a SQLite database" patterns in new specs.

Hardening (existing behavior made explicit/enforced)

  • 📚 evals_scenarios required in planning docs (B5)pro/agents/planner.md template now requires evals_scenarios: frontmatter field; pro/agents/dispatcher.md rejects planning docs without it. lifeos's eval-first philosophy elevated from "should" to "must". Spec at references/feature-workflow-spec.md.

  • 🔢 concept-spec hotness thresholds explicit (A3) — promotion thresholds (≥3 sessions → confirmed, ≥10 sessions → canonical, 90-day dormancy → retirement candidate) were previously implicit in code; now documented in references/concept-spec.md with rationale. Behavior unchanged.

  • 🚧 Five WHEN-NOT-TO-ADD.md boundaries (F12)pro/agents/ / references/ / _meta/ / themes/ / scripts/ each get a "what does NOT belong here" doc plus three-language mirrors. 15 anti-pattern docs total. Inspired by OpenHuman .claude/rules/README.md "This directory is intentionally near-empty."

Spec-only proposal (frozen for v1.9/v2.0)

  • 🌳 Memory tree cascade seal (A1, proposal)references/memory-tree-spec.md defines L0 → L1 → L2 → L3 cascade seal architecture (status: proposal). archiver behavior UNCHANGED in v1.8.7. Implementation deferred to v1.9/v2.0 pending real-data validation in Jason's second-brain. Cost calibration TBD (300ドル-800ドル/year of LLM bills for sealing depending on activity).

Ontological constraint (DR-10)

SKILL.md HARD RULE upgraded from "No .py/.sh/.yml/.json" to "md-only is lifeos's ontological constraint, no escape hatch, permanent". Forbidden extensions: .py / .sh / .bash / .yml / .yaml / .json / .sql / .db / .sqlite. Audit gates: verify-release check 8 (full-repo) + check 10 (diff-scoped) + AUDITOR Mode 7 M7-7 (proposal-level).

md-only is the definitional property of lifeos. A "lifeos" that introduces SQL / JSON / sh / py is no longer lifeos — it's a different project. No escape hatch. Borrowing patterns from external projects = borrow the pattern, never the tech stack.

Cuts (cargo-cult avoidance, DR-08)

3 borrowed patterns from OpenHuman that would have added product complexity without solving real lifeos pain were cut:

Cut Why
A2 content_hash frontmatter No documented dedup pain in violations.md or sessions history. Adding "just in case" is product rot starter
D8 three-layer compression rules lifeos is single-user; three independent rule sources don't exist. Borrowing OpenHuman's JSON merge architecture would add abstraction for a non-existent need
C7 workpad directory No user-layer purpose distinguishing workpad from sessions; would force "where to put this note" decision without value
Stage 7 aggressive/hash-only migration modes A2/A1 cut eliminated need for these modes — zero-friction upgrade sufficient

Decision standard (DR-09)

v1.8.7 audit trail records the decision standard shift: from "save working days" to "product quality". Every cut and every kept feature judged by "does this make lifeos better or just more complex?" Time was not a factor — "I don't fear taking time, I want to make the product good" (user, 2026年05月25日).

Upgrade path (v1.8.6 → v1.8.7, zero-friction)

1. cd <lifeos repo> && git pull origin main
2. /version-check
3. /install-agents --refresh
4. /verify-release v1.8.7

No migration command. archiver first wrap-up after upgrade auto-creates pro/gotchas.md and runs memory-keeper in seed mode to populate ≥10 seed entries from v1.8.4-1.8.6 RFC + violations history.

File changes summary

  • Created: 35 new md files (specs trilingual, agent, commands, fixtures, WHEN-NOT-TO-ADD ×ばつ15, RFC, release-notes)
  • Modified: 30 existing md files (SKILL/README/CHANGELOG/MIGRATION trilingual, 9 themes, archiver/planner/dispatcher/auditor agents, concept/wiki/session-index specs trilingual, verify-release command, hard-rules-index)
  • Cut: 0 (no removals — additions only)
  • Cut at proposal stage: 3 (A2/D8/C7 never reached implementation)

References

  • Full RFC: _meta/rfc/v1.8.7-openhuman-borrowed-patterns.md
  • 10 Decision Records: DR-01 through DR-10
  • Pattern source: tinyhumansai/openhuman @ b7b8ba6
  • Companion specs: references/{gotchas,self-driven-loops,i18n-diff-parity,feature-workflow,memory-tree}-spec.md
  • AUDITOR Mode 7: pro/agents/auditor.md
Loading

v1.8.6 — md-only enforcement

23 May 12:19
@jasonhnd jasonhnd

Choose a tag to compare

v1.8.6 — md-only enforcement

Ship date: 2026年07月16日
Type: patch (extends v1.8.5 "No .py/.sh" HARD RULE)
Trigger: User instruction "lifeos 不需要 md 之外的任何形式的文件"


What changed

v1.8.6 extends the "No .py/.sh" HARD RULE established in v1.8.5 Stage 2 to also forbid .yml, .yaml, and .json files in the lifeos repo. All structured data formats migrate to .md with YAML frontmatter (the frontmatter is YAML syntax, but the file is .md — passes the rule).

File-format migrations

Before (v1.8.5) After (v1.8.6) Notes
evals/regression-fixtures/rc-*.yml ×ばつ 14 rc-*.md ×ばつ 14 Original yaml preserved as yaml code block inside md
_meta/runtime/<sid>/<subagent>-<step>.json .md (R12 → R13) YAML frontmatter holds machine-parseable fields; markdown body human-readable
_meta/incidents/<id>.no-change.yml .md Same 7-field schema as frontmatter
~/.claude/lifeos-memory/<key>.json <key>.md Key + value structure as frontmatter
.github/workflows/test.yml DELETED CI moves to user-side /run-eval

Exception kept

  • .claude/settings.json and .claude/settings.local.json — Claude Code platform requirement, gitignored (not in repo)
  • .gitignore / .gitattributes — git infrastructure (not data format)

Verification

find . -type f \( -name '*.py' -o -name '*.sh' -o -name '*.yml' -o -name '*.yaml' -o -name '*.json' \) \
 -not -path './.git/*' -not -path './backup/*' -not -path './.venv/*'

Expected output: empty (or only ./.claude/settings*.json which are gitignored platform-required exceptions).

/verify-release check #8 expanded to enforce.


Spec changes

audit-trail-spec.md R12 → R13

R13 trail file format:

  • Path: _meta/runtime/<sid>/<subagent>-<step>.md (was .json)
  • Structure: YAML frontmatter (all R12 fields preserved) + markdown body (narrative + tool calls + reasoning + value_invocations expanded)
  • AUDITOR Mode 3 parses frontmatter same way; reads body for human review context
  • Legacy R12 .json files remain readable; lazy migration via /migrate-trail-r13 slash command

violations.md (no change)

Already .md format. F-Code mapping extended to include F4-forbidden-extension-trail for .json/.yml files in runtime dir.

Other specs

  • SKILL.md: HARD RULE "No .py/.sh" upgraded to "No .py/.sh/.yml/.json" with platform-exception clause
  • 3 CHANGELOG (EN/ZH/JA): v1.8.6 entry added per changelog-spec v1 schema

Migration

For users on v1.8.5:

  1. Audit trails: existing _meta/runtime/<sid>/*.json remain readable. New session trails written from v1.8.6+ install onwards will be .md. No action needed.

  2. Regression fixtures: already converted at the source repo. After updating lifeos plugin, your local clone has .md fixtures.

  3. GitHub Actions: if you forked the repo and used CI, you'll need to run /run-eval locally before each release. CI was lightweight (single test.yml file calling claude CLI), so this is minor.

  4. Decision records: if you've written any _meta/incidents/<id>.no-change.yml manually, rename to .md and wrap content in --- frontmatter delimiters. Optional — old yml still works if your AUDITOR reads it.

  5. Memory KV: same — old .json files in ~/.claude/lifeos-memory/ still work; new memory writes from v1.8.6+ go to .md.


Statistics

  • Files converted: 14 (regression fixtures)
  • Files deleted: 1 (.github/workflows/test.yml)
  • Specs updated: 2 (audit-trail-spec.md R12→R13, SKILL.md HARD RULE)
  • CHANGELOG entries added: 3 (EN/ZH/JA)
  • Lines added: ~150 (specs + CHANGELOG entries + release notes)
  • Lines deleted: ~50 (workflow yml + brief cleanup)
  • Net delta: +100 lines (mostly documentation)
Loading

v1.8.5 — Hook Retirement + EOU-Hardening

23 May 11:11
@jasonhnd jasonhnd

Choose a tag to compare

v1.8.5 — Hook Retirement + EOU-Hardening

Ship date: 2026年07月15日
Type: patch (contains breaking schema changes; legacy 12-month coexistence per D3)
RFC: _meta/rfc/v1.8.5-cleanup-and-hardening.md
Branch: v1.8.5-cleanup-hardeningmain
Tag baseline: v1.8.4-pre-1.8.5 (a46fdac)


The largest single release in life_OS history

v1.8.5 ships in one shot what would normally be 5-7 minor versions. Two parallel tracks merged:

Track A · Hook Layer Retirement (Stage 2)

  • 11 bash hooks deleted (scripts/hooks/*.sh)
  • 38 .sh files removed (~8328 lines) — operations scripts, eval runners, wiki bootstrap, CI
  • 9 new slash commands (.claude/commands/*.md) — verify-release, check-spec-drift, notion-sync, migrate-soul-v2, migrate-wiki-v2, install-agents, uninstall-agents, run-eval, run-tool-eval, setup-secondbrain, version-check, regression-from-violation
  • GitHub Actions yml rewritten — single-line claude --execute "/cmd" only; no inline bash
  • 5-layer defense → 4-layer — runtime hook layer (Layer 1) integrally retired per D1 ("accept any pass rate")
  • 0 .py + 0 .sh achieved in lifeos repo (excluding backup/, .git/, .venv/)

Track B · 30 EOU-Hardening Borrowed Designs (Stages 3-9)

From xiaolai/eou-foundry @ e4b12ce — 6 agents ×ばつ 121K lines of source code reviewed; 30 design ideas borrowed with attribution.

Foundation reference docs (Stage 3, three-language)

  • references/failure-taxonomy.md — F1-F17 architecture failure taxonomy
  • references/refactoring-patterns.md — 8+2 canonical refactor patterns + minimality rule
  • references/risk-domains.md — 8 high-risk domains ×ばつ 5 escalation requirements
  • references/lifecycle-gates.md — 8 promotion transitions with evidence checklists

SOUL v2 schema (Stage 4)

Borrowed from eou-foundry dev-docs/06-values-over-rules.md + schemas/captured-workflow.schema.yml:

  • Priority {1..N} total order — no ties, no gaps, higher wins conflict
  • X-over-Y formulation — Y must NOT be strawman
  • Inclusion test 6Q gate — Speed/elegance/output volume NOT valid constitutional values
  • 3-8 dimension count cap
  • Mandatory outlier role slot — anti-confirmation-bias defense
  • /migrate-soul-v2 interactive slash command + AUDITOR Mode 4 + 3 regression fixtures

wiki v2 schema (Stage 5)

Borrowed from eou-foundry schemas/eou.schema.yml + engine/eou-contract.md:

  • 6 facets classification (function / target_object / automation_mode / authority_level / risk_level / lifecycle_stage)
  • operating_hypothesis (Given/can/within form, ≥30 chars)
  • context_manifest 3-layer (source_of_truth / supporting / forbidden)
  • reference_set 5 role slots — outlier mandatory for active+
  • failure_modes 三件套 (known / warning_signs / repair_actions)
  • arguments_against — non-trivial, specific failure mode + observable counter-signal
  • /migrate-wiki-v2 + AUDITOR Mode 5 + 2 fixtures

Agent v2 frontmatter for all 23 subagents (Stage 6)

  • New references/agent-spec.md v2 (三语)
  • All 23 pro/agents/*.md files gain: id, version, classification, operating_hypothesis, context_manifest, blast_radius, failure_modes
  • AUDITOR Mode 6 enforces compliance + 2 fixtures
  • per-agent authority_level mapping (router: suggest_only | archiver: publish | reviewer: approve | etc.)

Process layer (Stage 7)

  • Decision Records HARD RULE — REVIEWER no_change_record 7-field schema ("missing record = uninvestigated incident")
  • Minimality Rule HARD RULE — 6Q gate before creating new agent/spec/skill
  • Risk Domains HARD RULE — 8 domains ×ばつ 5 escalation requirements (R1 finance / R2 health / R3 legal / etc.)
  • R12 audit trail upgradevalue_invocations[] 5-field array on contested-case decisions
  • AUDITOR Mode 3 F14-F17 scenarios — silent judgment / value hierarchy / value drift / value hallucination detection

Schema infrastructure (Stage 8)

  • references/changelog-spec.md v1 — CHANGELOG YAML frontmatter schema for v1.8.5+ (7 required fields incl. alternatives_considered + ordering_dependency + regression_cases_added)
  • pro/compliance/violations.md — new format with F-Code column for v1.8.5+ rows + A-F → F-Code mapping reference
  • SKILL.md +3 new HARD RULES (No .py/.sh, F-Code required, CHANGELOG schema required)

Regression fixtures (Stage 9)

  • 7 new fixtures: rc-f14 / rc-f15 / rc-f16 / rc-f17 / rc-forbidden-extension-sh / rc-court-start-001 / rc-confabulated-path
  • Combined with Stages 4/5/6 fixtures = 14 regression fixtures protecting v1.8.5 surface
  • /regression-from-violation slash command for lazy conversion of remaining historical rows

Migration Guide

For existing users (v1.8.4 → v1.8.5)

Step 1 · Update plugin

# In Claude Code
/install-skill https://github.com/jasonhnd/life_OS

Step 2 · Clear old hook configuration (one-time)

# In Claude Code (or Codex/Gemini)
/uninstall-agents # removes old lifeos-* wrappers
/install-agents # registers v2 agents

After this, ~/.claude/settings.json will have empty hooks: {} block — the bash hook layer is gone. Cleanup is automatic; no manual edit needed.

Step 3 · SOUL.md migration (optional, 12-month grace)

/migrate-soul-v2

Interactive — asks you per-dim to reformulate as "X over Y", assign priority, answer inclusion test. Skip-able dims marked legacy. Auto-deprecate 2027年05月23日.

Step 4 · wiki/ migration (optional, 12-month grace)

/migrate-wiki-v2

Interactive — asks per-entry for 6 facets, operating_hypothesis, outlier reference, arguments_against. Skip-able entries marked legacy. Auto-deprecate 2027年05月23日.

What changed in your daily workflow

  • "上朝" / Start Session: same behavior; ROUTER launches retrospective subagent. Hook reminder no longer auto-injected — relies on SKILL.md HARD RULE + retrospective Subagent Self-Check.
  • "退朝" / Adjourn: same 4-phase flow (archive → knowledge-extractor → DREAM → Notion sync). Phase 2 candidate gates now stricter (v2 schema). archiver Phase 4 auto-launches AUDITOR Mode 3-6 patrol.
  • REVIEWER veto: now MUST populate value_invocations[] in R12 trail with SOUL dim_id + rule_conflict + chosen_path + rejected_alternative. Empty array on contested case = F14 violation.
  • High-risk domain decisions (finance / health / legal / etc.): ROUTER auto-escalates to full deliberation; REVIEWER cannot give "approved" without 5 escalation requirements met.
  • Notion sync: /notion-sync slash command replaces notion-sync.sh audit trail writing. ROUTER still calls Notion MCP directly at Step 10a.
  • Release process: /verify-release replaces verify-release.sh — same 8 checks (6 git/gh + new no-py-sh + new regression-fixtures-fail).

What didn't change

  • All 6 domains (people/finance/growth/execution/governance/infra) — same dispatch, same reports, just v2 frontmatter
  • Theme system — 9 themes ×ばつ 3 languages unchanged
  • DREAM cycle — same 3 stages (organize / consolidate / creative connections)
  • Strategic Map — unchanged
  • Workflow state machine — same legal transitions

Risk Posture Post-v1.8.5

Risk v1.8.4 v1.8.5 Mitigation
COURT-START class violation (skip retrospective subagent) Layer 1 hook injects reminder No hook — SKILL.md HARD RULE only AUDITOR Mode 3 detects post-hoc; rc-court-start-001 regression fixture
Confabulated path / fabricated evidence Layer 1 hook scans Read/Write No hook — Cortex narrator citation discipline only AUDITOR Mode 3 F17 + rc-confabulated-path
Outbound PII to Notion Layer 1 pre-notion-write.sh scans content No hook/notion-sync slash command relies on LLM prompt-level check AUDITOR Mode 5 + outbound-pii-patterns.md still consulted
Silent judgment (REVIEWER veto without SOUL citation) No defense (v1.8.4 didn't have R12 value_invocations) AUDITOR Mode 3 F14 + rc-f14-silent-judgment Required field in R12 trail
SOUL dim hallucination (cite non-existent dim) No defense AUDITOR Mode 3 F17 + rc-f17-value-hallucination grep check against SOUL.md
Value drift over multiple sessions No defense AUDITOR Mode 3 F16 + rc-f16-value-drift 30-day window aggregation

D1 decision context: Day 21 hook-retired stress test was projected to validate the 5→4 layer trade. User accepted any pass rate ("接受") — no rollback even if regression rate increases. The bet is that v2 schema enforcement + AUDITOR Mode 3-6 + 14 regression fixtures compensate for runtime hook absence.


Acknowledgments

Original inspiration: xiaolai/eou-foundry @ e4b12ce (https://github.com/xiaolai/eou-foundry). The "EOU" (Executable Operating Unit) framework provided 30 design ideas borrowed across Stages 3-9. Every borrowed concept carries attribution in the relevant references/*.md spec.

Two systems independently converged to 5 governance attractors:

  1. Audit trail as filesystem evidence (life_OS R11/R12 ↔ eou runs/)
  2. Evidence-bound assertion (life_OS REVIEWER citations ↔ eou activated_by)
  3. Honest downgrade ("don't fake maturity") (life_OS lifecycle gates ↔ eou L0-L6)
  4. Generating ≠ Operating separation (life_OS authority_level ↔ eou function:generate forbidden_outputs)
  5. Self-approval paradox explicit (life_OS Rule of Conduct #7 ↔ eou ECP-0011 CI auto-merge exception)

That two independent agentic-governance systems reach the same 5 invariants is a strong signal these are real attractors of the design space — not coincidental.


Verify Release

After ship:

/verify-release v1.8.5

Must pass all 8 checks:

  1. HEAD == origin/main
  2. Tag v1.8.5 points to HEAD
  3. Tag on remote
  4. GitHub Release exists (not Draft)
  5. Marked as Latest
  6. No .py / .sh in repo (excluding backup/git/venv)
  7. All regression fixtures FAIL when run through validators
  8. CHANGELOG v1.8.5 entry conforms to schema (7 YAML fields)

Sta...

Read more
Loading

v1.8.4 — Anti-confabulation: DREAM + maintenance overdue

16 May 13:25
@jasonhnd jasonhnd

Choose a tag to compare

v1.8.4 — Anti-confabulation: DREAM stale-task validation + maintenance overdue source-of-truth

Two surgical fixes for briefing free-form-generation holes detected on 2026年05月16日. Both bugs are class B (LLM fabrication of evidence) — the subagent invented numeric/state claims instead of reading primary source. v1.8.4 lifts each source-of-truth into something the subagent must call and forces ROUTER to re-verify before showing the briefing.

Bug R-DREAM-STALE-TASK · DREAM trigger validity re-check

DREAM journals are async overnight snapshots. A HARD trigger written at N-1's adjourn can already be resolved by the user before N's session boot — but retrospective Step 16 promoted it to today's P0 anyway. The 2026年05月16日 briefing surfaced 8938 revenue-uplift task closure as a P0 follow-up even though that task had status: closed-superseded written the day before.

Fix:

  • pro/agents/retrospective.md Step 16 gains TRIGGER VALIDITY RE-CHECK HARD RULE. Subagent MUST Read referenced task frontmatter and inspect status: BEFORE promotion. Closed/done/superseded → render as ✅ auto-resolved, do NOT promote.
  • R11 audit trail gains dream_triggers_validated field (one entry per HARD trigger).
  • references/dream-spec.md triggered_actions schema gains optional task_ref: { task_path, task_slug, project } field (three-language lockstep).
  • 4-tier resolution: task_path direct read → task_slug + project fuzzy match → LLM-parse detection.hard_signalsstill-actionable fallback. Behavioral triggers (decision-fatigue, dormant-soul) skip validation entirely.

Bug R-MAINT-OVERDUE-HALLUCINATION · maintenance overdue single source of truth

The 2026年05月16日 briefing reported archiver-recovery 13d overdue while the same session's session-start-inbox.sh hook had emitted 3d. The subagent free-form-estimated instead of running the script.

Fix · two-layer defense:

  1. Subagent layer · Step 0.5 marker list gains [Maintenance overdue: ...] literal marker. New HARD RULE forces subagent to run session-start-inbox.sh itself, strip <system-reminder> wrapper, paste verbatim. No copying transcript stale values, no re-estimating day count.
  2. ROUTER layer · SKILL.md fact-check rule 8 re-runs the same script and byte-equal compares. Mismatch → strike marker. Marker missing → refuse to show briefing.
  3. Mode 2 (Review) inherits same contract · Data Sources step 7 added. Mode 2 reviews span longer time windows = more drift exposure, so the marker is mandatory there too.
  4. <system-reminder> wrapper handling explicitly documented on both subagent and ROUTER sides.

Zero new infrastructure

v1.8.0 Zero-Python / Zero-new-script invariant preserved. No new SH/PY files. Reuses existing scripts/hooks/session-start-inbox.sh and scripts/verify-release.sh.

Files changed (11)

  • pro/agents/retrospective.md (Step 16 + Step 0.5 + Mode 2 step 7)
  • SKILL.md (version + rule 8 + wrapper-strip note)
  • references/dream-spec.md + i18n/zh/references/dream-spec.md + i18n/ja/references/dream-spec.md (task_ref schema)
  • README.md + i18n/zh/README.md + i18n/ja/README.md (badge)
  • CHANGELOG.md + i18n/zh/CHANGELOG.md + i18n/ja/CHANGELOG.md (entry)

See CHANGELOG.md for full details.

Loading
Previous 1
Previous

AltStyle によって変換されたページ (->オリジナル) /