ELPH OS - Essential Loop Portable Harness: a thin, agent-agnostic control plane for development loops (LoopSpec/journal/decide, zero dependencies)
Project description
ELPH OS — Essential Loop Portable Harness
A thin, portable harness for every development loop.
機械識別子は elphos(PyPI 公開済み 0.2.0、2026-07-07。npm / crates は意図的に未登録 — kernel は stdlib-only Python が不変条件であり、実体なき名前確保は squatting)。ブランド・愛称は ELPH。
世界観 KB の ELPH(elph-vault、/lore スキル)とは無関係。
これは何か
AI agent の進化速度に適応するための thin control plane。 agent(Claude Code / codex 等)を差し替え可能な実行器として扱い、 自分側に残すべきもの — ループ運用・実行台帳・証跡・予算・採否記録 — を file-first で所有するための最小カーネル。
Model (交代前提 — Claude / codex / 将来の agent)
Harness (Claude Code / codex CLI — 揮発層、wrap しない)
LoopOS (LoopSpec / LoopRun / scheduler 接続 / 成熟度) ← this repo
Meta (HarnessRun / trace / budget / adapter) ← this repo
名前 = 設計契約
- Essential — kernel への機能追加は、消費ループの evidence がある場合のみ(admission 規律)
- Loop — 対象は development loop の運用(turn/goal/time/proactive)
- Portable — agent 非依存。仕様は TOML、台帳は JSONL、依存ゼロの Python stdlib
- Harness — ハーネスの上の薄い層。ハーネス自体を再実装しない
機能追加の PR は「それは Essential か? Portable を壊さないか?」に答えること。
Status
正本は docs/spec-v0.md。
到達ゴール(完成の定義 G1-G6 とフェーズ O1-O3)は
docs/end-state-goal-2026-07-04.md。
Step 3 受け入れ済み(2026-07-04): L2 = worktree + agent + gate + 採否分離
(decide → decision_record、実装 agent と採否の分離)。実 slice B001 を
codex2 で完走(tokens_est 51,368 自動記録、adopt)。adopt / revert /
二重判定ガードは local-shell スモークで検証済み。
Step 4(upstream-watch)稼働中: loop spec + journal は ~/.claude(claude-harness)
ホスト(owner decision 2026-07-04 — kernel repo は実行時状態を持たないため)、
oracle は本 repo 同梱(--state-path 必須)、weekly systemd user timer
(Mon 09:30、Persistent + linger)。v0 ロードマップ(Step 1-4)完了。
Usability 改定 v0.2.0(2026-07-07、初回 4 日運転の journal evidence 駆動):
E019 = L1/empty の oracle 報告を stdout に直接表示。E020 = budget は agent 起動
run のみカウント(L1 報告は無料 — cap 一時解除の儀式を廃止)。E021 =
elphos finish が adopt 後の機械的後処理(merge / gate 再実行 / 掃除)を実行
(採否分離は不変 — decide の adopt 記録が前提条件)。
uv tool install /path/to/elphos
elphos validate examples/c4-intake.toml # => OK
elphos run c4-intake # L1: oracle 報告を表示 + journal 追記
elphos decide <run_id> adopt|revert # L2: 採否を decision_record に記録
elphos finish <run_id> # L2: adopt 後の merge/gate/掃除(E021)
elphos report # (UTC date, loop) 日次集計
python3 -m unittest discover -s tests # all tests
consumer registry: ~/.claude/loops.toml(ELPHOS_REGISTRY で上書き可)。
Harness skills(新しい端末での導入)
汎用 skill テンプレートは integrations/(Claude Code / Codex)。導入は 1 コマンド:
bash integrations/install-skills.sh # checkout パスを埋め込んで各 harness へ配置
既定は非破壊(配置先に差分があれば保持、--force で上書き)。手順の正本は
docs/operating.md — skill はそこへの pointer + harness 固有メモのみ。
Non-goals(恒久)
デーモン / UI / セッション管理 / 権限エンジン / メモリストア(dev-vault が正本)/ 汎用 agent runtime / Omnigent・LangGraph 代替。
Trust boundary
Consumer .loops/*.toml specs are trusted input: oracle, gate, and
agent_command execute as you. Never run loops from untrusted repos. Keeping
secrets out of oracle/agent/gate output is the producing side's responsibility;
artifacts are stored verbatim.
Development note: run scripts/install-git-hooks.sh once to install the local
pre-push gate (python3 -m unittest discover -s tests).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elphos-0.3.0.tar.gz.
File metadata
- Download URL: elphos-0.3.0.tar.gz
- Upload date:
- Size: 67.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac6e31b6fc97cda70a3bc3a5645d64661c3c70baec27aa494a2146c9279ea1ff
|
|
| MD5 |
3f4757146bc07cd3920f551d43d24e54
|
|
| BLAKE2b-256 |
303352039d3e76b1bf8a20903e6e3e40e1842f220bd4a9b733c9ef09bc73ad22
|
File details
Details for the file elphos-0.3.0-py3-none-any.whl.
File metadata
- Download URL: elphos-0.3.0-py3-none-any.whl
- Upload date:
- Size: 38.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32a2fa90a8b32549fef689215b518bff4cefb2dcd16105af5aff5f85e514f164
|
|
| MD5 |
191903398344493690c8927eecef9817
|
|
| BLAKE2b-256 |
c82e7b968d4583b5c4a504ba971175c08b7fce097460fe17b9b3007fe82c0768
|