Skip to content

scope-reduce: airgenome β†’ mac-local-only resource manager#77

Open
dancinlife wants to merge 179 commits into
mainfrom
fix/roadmap-2-note
Open

scope-reduce: airgenome β†’ mac-local-only resource manager#77
dancinlife wants to merge 179 commits into
mainfrom
fix/roadmap-2-note

Conversation

@dancinlife
Copy link
Copy Markdown
Contributor

Summary

Reduces airgenome to mac-local resource management only. All cross-host execution (probe / dispatch / forecast / drill orchestration / multi-host roster / docker -H ssh paths) migrates to hive β€” receiving infrastructure already shipped (commits 26206bd16 + a3456e668 + 4c4848c19): `.resource` SSOT, `/resource` interactive menu, docker-exec channel, hexa-lang `tool/{resource_scorer,workload_router,load_balancer}.hexa`.

12 commits, 45 files changed (+347 / -4753 lines). Aggressive variant β€” drill workflows pause until hive lbDispatch CLI ships an equivalent automation entry point.

What changed

Removed (β†’ symlink stub printing redirect to hive):

  • 11 cross-host bin scripts: `host.sh`, `lb.sh`, `lb_monitor.sh`, `remote_load.sh`, `executor.sh`, `container-deploy`, `hexa_build_tick.sh`, `stress.sh`, `drill-status`, `drill_dispatch_smoke`, `drill_corpus_tick.sh`
  • 6 dispatcher/drill entry points: `cx-core`, `drill-live`, `drill-progress`, `drill-kill`, `drill-extract`, `oauth-bridge` (chflags uchg unlock ν›„ μ‚­μ œ)
  • 2 dead-after-removal bin: `compute_tick.sh`, `daemons_start.sh`
  • 4 modules: `dispatch.hexa`, `forecast.hexa`, `genome_merge.hexa`, `filters/transport/ssh.hexa`
  • 4 dead state files: `scripts/e2e_{sample,eval}.sh`, `forge/{drill_corpus,e2e_samples}.jsonl`
  • 11 cross-host launchd plists (영ꡬ git rm)

Edited:

  • `modules/probe.hexa` β†’ mac-only sample. infra_state.json scope=`mac-local`, `hosts.mac`만 기둝.
  • `modules/label.hexa` β†’ M11d host_filter 제거. Bulk-extract fast-path μœ μ§€.
  • `bin/airgenome` β†’ `cmd_offload` / `cmd_list` / `forge_pull_from_ubu1` 제거. Supervisor tick 5 module β†’ 3 (probe/harvest/label).
  • `bin/menubar_launcher.m` β†’ 4-bar (mac/ubu1/ubu2/htz) β†’ 1-bar (mac).
  • `.roadmap` β†’ M2/M3/M6/M7-M11/M14-M25 β†’ `dropped`. M26 active μΆ”κ°€. status 5β†’6 (dropped μΆ”κ°€).
  • `README.md` β†’ mac-local positioning + cross-host β†’ hive μ•ˆλ‚΄.
  • `.convergence` β†’ `event=airgenome_scope_reduction_done` ν•œ 쀄.

Added:

  • `bin/.scope-reduced-stub` β€” symlink target. `exit 64` + redirect message per no_silent_errors.

Pre-flight:

  • `wip(modules): forecast bulk_extract + label GExt + probe nvidia regex guard` β€” Session B in-flight stabilization 뢄리 commit.

Verification

```sh

cross-host runtime path 0 건 (residue: 주석 / graceful-degradation menubar UI 만)

grep -rEn "ssh |scp |rsync |docker -H|docker --host" bin/ modules/

CLI 정상

bin/airgenome --help # mac-only + hive redirect μ•ˆλ‚΄
hexa run modules/probe.hexa # β†’ infra_state.json {scope:"mac-local", hosts.mac}
hexa run modules/label.hexa self-test # βœ… PASS
hexa run modules/harvest.hexa # β†’ anomaly_total=N

stub λ™μž‘

bin/cx-core # β†’ ERR: cx-core moved to hive β€” ... exit 64
bin/lb.sh # β†’ ERR: lb.sh moved to hive β€” ... exit 64

launchctl: 4 mac-only jobs only (supervisor / harvest disabled / label disabled / predictive-throttle / menubar app)

launchctl list | grep airgenome

build

DEPLOY=skip bin/build_app.sh # βœ… test_menubar smoke PASS
```

Out-of-scope (follow-up)

  • AG6/AG7 governance rule cleanup (`rules/airgenome.json` + `modules/filters/process/compute.hexa` + `scripts/com.airgenome.compute-filter.plist` + `.claude/settings.local.json` L38)
  • mac-local forecast μž¬μ„€κ³„ (별도 milestone)
  • `config/roadmap/airgenome.json` mirror reconstruction (디렉토리 λΆ€μž¬ μƒνƒœ)
  • nexus μΈ‘ `label_rules.jsonl`의 host=remote rules 정리

Hive coordination

Hive μ„Έμ…˜μ΄ λ™μ‹œμ— cross-host smoke (ubu1/ubu2/hetzner/local docker exec round-trip) + lbDispatch CLI 와이어링 μ§„ν–‰ 쀑. PR merge μ „ hive smoke κ²°κ³Ό 첨뢀 μ˜ˆμ •.

πŸ€– Generated with Claude Code

dancinlife and others added 30 commits April 22, 2026 16:23
μ‚¬μš©μž μ„ ν˜Έ: ```md``` μ½”λ“œλΈ”λ‘ 제거 β†’ Telegram κΈ°λ³Έ font 둜 plain text.
ν…Œμ΄λΈ”μ€ column μ •λ ¬λ‘œ μ‹œκ° μœ μ§€ (비등폭 font 라 μ™„λ²½ μ •λ ¬ λΆˆκ°€ν•΄λ„
가독 μˆ˜μ€€). TG_PARSE_MODE 도 plist μ—μ„œ μ œκ±°ν•΄ markdown μ΄μŠ€μΌ€μ΄ν”„
μ§€λ’° (unbalanced *_`) νšŒν”Ό.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
μ‚¬μš©μž μš”κ΅¬: "μžλ™ 기동이 κΈ°λ³Έκ°’".

run.hexa:
  AGENT_LABELS + MAC_SAFE_AGENTS 에 com.airgenome.tg-bot μΆ”κ°€.
  이제 airgenome install / uninstall 이 tg-bot 도 관리.

tool/airgenome_init.hexa:
  ensure_all_agents_loaded() μ‹ κ·œ β€” ~/Library/LaunchAgents 의 λͺ¨λ“ 
  com.airgenome.*.plist λ₯Ό enable β†’ bootout β†’ bootstrap 둜 일괄 μž¬μ‘°μ •.
  κ°œλ³„ ensure_* (hook-watch/settings-guard/telegram) κ°€ νŠΉμ • plist 만
  κ΄€λ¦¬ν•˜λŠ” 것과 달리 이건 λ””μŠ€ν¬μ— 남은 그림자 plist κΉŒμ§€ 보증해
  "airgenome init 1 회 = λͺ¨λ“  μžλ™κΈ°λ™ 볡ꡬ" 의 SSOT.

  main() λ§ˆμ§€λ§‰ λ‹¨κ³„λ‘œ 호좜. μ‹€νŒ¨λŠ” warn 찍고 계속 (ν•œ plist IO error
  κ°€ λ‹€λ₯Έ μ—μ΄μ „νŠΈ 볡ꡬ 막지 μ•ŠμŒ).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…xa:// link

tg_cx_md dispatch wrapper 에 /run λͺ…λ Ή κ°€λ‘œμ±„κΈ° μΆ”κ°€. μž…λ ₯이
"/run <abs-path.hexa>" 둜 μ‹œμž‘ν•˜λ©΄ cx-core 둜 λ„˜κΈ°μ§€ μ•Šκ³  직접 hexa CLI
둜 슀크립트 μ‹€ν–‰, 응닡에 `hexa://run?file=<path>` 클릭 링크λ₯Ό 뢙인닀.

λ™μž‘:
  telegram msg  "/run /Users/ghost/demo.hexa"
  β†’ tg_cx_md κ°€ intercept β†’ hexa run /Users/ghost/demo.hexa μ‹€ν–‰
  β†’ stdout + "────── + πŸ”— hexa://run?file=/Users/ghost/demo.hexa" 응닡
  β†’ macOS λ°μŠ€ν¬ν†± ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 링크 νƒ­ β†’ HexaURL.app μž¬μ‹€ν–‰

λ³΄μ•ˆ guard (3 단):
  1) ^/ 둜 μ‹œμž‘ (μ ˆλŒ€κ²½λ‘œ) + *.hexa ν™•μž₯자
  2) 파일 μ‹€μž¬ (test -f)
  3) HEXA λ°”μ΄λ„ˆλ¦¬ μ‹€ν–‰ κΆŒν•œ (test -x)
  BASH_REMATCH 둜 νŒŒμ‹±ν•΄ shell expansion λΆˆκ°€ β€” injection μ—†μŒ.

tg_bot-core (L0 "μˆ˜μ • κΈˆμ§€") λŠ” κ±΄λ“œλ¦¬μ§€ μ•ŠλŠ”λ‹€. dispatch λ ˆμ΄μ–΄λ§Œ ν™•μž₯.
λΉ„-/run λ©”μ‹œμ§€λŠ” μ›λž˜ cx-core 경둜 100% μœ μ§€.

검증: /tmp/hexa_url_test.hexa 둜 3 경둜 λͺ¨λ‘ μ˜λ„λŒ€λ‘œ λ™μž‘
  - 정상: "hello from hexa:// URL dispatch" + 링크 좜λ ₯
  - 파일 μ—†μŒ: "❌ file not found: /tmp/nope.hexa"
  - ν™•μž₯자 뢈일치: "❌ /run <abs-path-ending-with-.hexa> ν˜•μ‹ ν•„μš”"

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PreToolUse gate mirrors hexa-lang/.raw raw#13 ai-automation-config-ban:
- raw:ai-automation-config-ban path matcher (CLAUDE.md + per-repo .claude/
  + .github/workflows/ + .husky/ + lefthook + cursor/continue/aider)
- user-global ~/.claude/ + ~/.cursor/ carved out via $HOME prefix check
  (mirrors native_gate.c::is_user_global_claude on macOS and Linux)
- Write = ai_block_json (decision=block, hard deny)
- Edit = ai_ask_json (hookSpecificOutput.permissionDecision=ask, routes
  to Claude Code user-approval prompt since OS EPERM cannot distinguish
  Write from Edit nor surface consent)

Return messages restructured per raw#32 llm-no-self-judgment + raw#33
ai-native-english-only: flat sentences replaced with JSON payload
{rule, tool, path, reason, next, ssot} so downstream LLM consumers can
cite and nudge paths become machine-parseable. Existing block verdicts
for rm -rf / force-push / .env also migrate to the new payload shape.

hook_main.hexa inline pre_tool_entry synced to match pre_tool.hexa
standalone-path so airgenome dispatcher and direct PreToolUse invocations
agree.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
init 의 ensure_telegram_bot() κ°€ launchctl bootstrap 을 돌린 직후
μ„œλΉ„μŠ€κ°€ μ‹€μ œλ‘œ μ‚΄μ•„μžˆλŠ”μ§€ 5초 λ‚΄ κ²€μ¦ν•˜λŠ” smoke ν…ŒμŠ€νŠΈ.

4 단계 단락:
  1) launchctl list 에 com.airgenome.tg-bot PID 쑴재
  2) kill -0 <pid> 둜 ν”„λ‘œμ„ΈμŠ€ alive 확인
  3) stderr λ§ˆμ§€λ§‰ 20쀄에 error/panic/fatal/traceback μ—†μŒ
  4) (opt) AIRGENOME_TG_SELF_TEST=1 μ‹œ /self-test 왕볡 5초 λ‚΄ echo

exit: 0 pass / 1 not-loaded / 2 dead / 3 stderr-signal / 4 self-test-timeout

Usage:
  $HEXA_LANG/build/hexa_stage0 tool/tg_bot_smoke.hexa
  AIRGENOME_TG_SELF_TEST=1 ... (self-test 포함)

prior aborted rebase 의 tool/tg_bot_smoke κ³„νš Step 3 λžœλ”©.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…metry)

Append-only rig-trend sampling log that changes on every run. File stays
on disk; removed from index so `git status` stops flagging session drift.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lib/audit.hexa: bash -c chain verifier β†’ native hexa loop
  (also fixes silent tab-escape bug in prior bash version)
- commands/_lifecycle.hexa: .hook-ui-title sh generator β†’ raw OSC-0
  byte emitter; consumer: cat > /dev/tty
- session_start.hexa, hook_entry.hexa: parts.push()+join() β€” clears
  O(n^2) PERF warning on PreToolUse/PostToolUse composite path
- mcp_server.hexa: ui-title tool description matches new artifact
- README: rewrite Install for launchd/build-hook watcher flow
  (per-project .claude/settings.json is policy-forbidden)
- rm settings.patch.json β€” obsolete, violated the no-project-hook policy

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ubu2 λ„μž… λŒ€λΉ„ κΈ°μ‘΄ 단일 ubu 호슀트λ₯Ό ubu1둜 λ„˜λ²„λ§.
호슀트 μ‹λ³„μž λ¬Έμžμ—΄(비ꡐ/파일λͺ…/alias/λ¬Έμ„œ)만 rename;
λ‚΄λΆ€ 토큰(MAX_UBU / ssh_gate_max_ubu / view_ubu / snap_ubu_*)은 보쑴.

core_test PASS: ring_path("genomes.ubu1.ring") 검증.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ode)

ssh alias 일관성 (ubu1/ubu2 νŽ˜μ–΄ 이름 κ·œμΉ™). airgenome offload λŠ” 이미
ubu1 alias λ₯Ό μˆ˜μš©ν•΄ λŸ°νƒ€μž„ ν˜Έν™˜, ssh config `Host ubu ubu1` permissive
라 legacy ν˜ΈμΆœμžλ„ 무쀑단.

λ²”μœ„: bin/ (airgenome CLI case/help, stress/remote_load/lb λ“± shell
wrappers + menubar.hexa jq label), modules/ (dispatch/probe/forecast/
label/genome_merge + filters/transport/process), config/hosts.json JSON
key + ssh_alias κ°’. λŸ°νƒ€μž„ state JSON (.hosts.ubu β†’ .hosts.ubu1)
scheme 도 동기화. archive/ λŠ” μ œμ™Έ.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
κΈ°μ‘΄ ghcr.io/need-singularity/airgenome:dev-sshd μ΄λ―Έμ§€μ˜ Dockerfile 은
repo 외뢀에 μžˆμ–΄ μ •ν•© 좔적 λΆˆκ°€. μƒˆ fat 이미지λ₯Ό 이 repo μ•ˆμœΌλ‘œ 흑수:

- docker/Dockerfile: 4-stage multi (base→node+claude→rust+hexa→final)
  Ubuntu 24.04 + build toolchain + node20 + claude CLI + rustup + cargo
  self-built hexa + airgenome/nexus full trees + sshd 2222
  ~6-8GB uncompressed. "docker size μ΅œλŒ€ν•œ" μ‚¬μš©μž μ§€μ‹œ 반영.
- docker/sshd_config: port 2222 pubkey only, ~/.airgenome/docker_authorized_keys.root
- docker/build: Mac μ—μ„œ μ‹€ν–‰, κΈ°λ³Έ ubu1 원격 build (Mac daemon λΆˆν•„μš”).
  --multiarch μ˜΅μ…˜μœΌλ‘œ arm64 μΆ”κ°€ build κ°€λŠ₯ (Mac 컀버 선택).
  build context = /Users/ghost/core (airgenome/hexa-lang/nexus 3 repo 병렬).
- docker/README.md: ꡬ성/μ‚¬μš©/배포 κ°€μ΄λ“œ.

Mac 은 dispatcher μœ μ§€ (μ‚¬μš©μž ν™•μ •: "mac μš©μ€ λ‚˜μ€‘μ— λ”°λ‘œ").
Push target: ghcr.io/need-singularity/airgenome:fat

Note: 파일λͺ… build.sh κ°€ macOS Gatekeeper 에 μ°¨λ‹¨λ˜μ–΄ ν™•μž₯자 제거.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
첫 μ‹€λΉŒλ“œμ—μ„œ 3건 μ‹€νŒ¨ β†’ μˆ˜μ •:

1. docker/build β€” rsync λŒ€μƒ parent dir λΆ€μž¬λ‘œ fail. μ•žμ— ssh mkdir -p
   $REMOTE_CORE/{airgenome,hexa-lang,nexus} μ‚½μž….
2. docker/Dockerfile β€” COPY docker/sshd_config β†’ airgenome/docker/sshd_config
   (build context κ°€ /Users/ghost/core 라 airgenome/ prefix ν•„μˆ˜).
3. docker/Dockerfile β€” `rustup-init --component rustfmt clippy` syntax 였λ₯˜
   (볡수 component λŠ” `-c X -c Y` ꡬ쑰). clippy/rustfmt λŠ” hexa build 에
   λΆˆν•„μš”ν•΄ 전체 제거.
4. docker/Dockerfile β€” hexa-lang 은 self-host (Cargo μ•„λ‹˜). `cargo build`
   μŠ€ν… μ œκ±°ν•˜κ³  사전 λΉŒλ“œλœ `hexa-lang/build/hexa_stage0.linux` λ₯Ό 직접
   COPY. 이미지 λ‚΄ μž¬λΉŒλ“œλŠ” `hexa build self/main.hexa` 둜 κ°€λŠ₯.

검증: ubu1 μ—μ„œ `./docker/build --no-push` 36s μ™„λ£Œ (caching),
      이미지 cab125043b29 (disk 4.75GB, compressed 1.01GB),
      smoke 4/4 PASS (hexa 7&5=5, node v20, claude, rust 1.95),
      ghcr push 성곡: sha256:cab125043b29ce...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two related fixes from the 2026-04-22 incident where .hook-commands/active.json
got scribbled with a hexa error dump, making every hook watch pass fail jq
parsing at 5s cadence (stderr grew to 81KB in minutes and launchd bootstrap
threw EIO on the plist).

- _lifecycle.hexa: lc_active_load validates via `jq -e .` before returning;
  corrupt contents get moved aside to active.json.corrupt-<utc> so the
  observer recovers with an empty stack instead of looping-failing forever.
  @convergence-start block ossifies the guarantee.

- hook_entry.hexa: the local `event_name` string var in main() shadowed
  lib/event.hexa::event_name(path: str); stage0 C codegen then emitted
  `hexa_fn_new((void*)event_name, 0)` for `resolve_phases(event_name)` and
  clang refused the HexaVal-to-pointer cast. Rename to `ev_name` removes
  the ambiguity. Unblocks `hexa build hooks/hook_main.hexa -o build/hook`
  so watch/seed/test modes can be rebuilt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
μ „λ‹¬μ²΄ν¬μ—μ„œ Mac β†’ ssh -p 2222 접속 μ‹œ rustc/cargo/hexa_real MISS κ΄€μ°°.
원인: sshd non-interactive session 은 ~/.bashrc / ~/.profile / /etc/profile
μ „λΆ€ μ•ˆ 읽음. Dockerfile 의 ENV PATH λŠ” PID1 ν•œμ •μ΄λΌ ssh μžμ‹μ—” 상속 X.

Fix: sshd_config.d/airgenome.conf 에 `SetEnv PATH=...` + HEXA/NEXUS/
AIRGENOME_ROOT/HEXA_LANG μ£Όμž…. fat image 의 μ „ 툴체인이 ssh κ²½λ‘œλ‘œλ„ λ³΄μž„.

3호슀트 runtime hotfix μ™„λ£Œ: `echo SetEnv ... >> sshd_config.d/airgenome.conf
&& pkill -HUP sshd`. μž¬λΉŒλ“œ 없이 μ¦‰μ‹œ 반영. λ‹€μŒ 이미지 build λΆ€ν„°λŠ” 이
sshd_config 에 baked.

검증: Macβ†’ssh:2222 root@{ubu1,ubu2,htz} β†’ 5/5 binary PATH 정상 확증.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Stage0 C codegen does not lower `str.byte_at(i)` β€” every watch tick that
reached `lc_ui_title_update` emitted "CODEGEN ERROR: unhandled method:
byte_at" to stderr and the LaunchAgent process exited 1. Build raw OSC 0
via `printf '\\033]0;%s\\007'` instead (shell handles the escapes), so
the hook never touches byte_at.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
rsync ν˜ΈμΆœμ—λ„ ControlMaster/ControlPath 우회 μ˜΅μ…˜μ„ 전달. offloadλŠ”
c14be1e μ—μ„œ 이미 같은 νŒ¨ν„΄μ„ μ μš©ν–ˆμ§€λ§Œ docker/build 의 rsync κ²½λ‘œλŠ”
λΉ μ Έμžˆμ–΄μ„œ, μƒŒλ“œλ°•μŠ€ harness μ—μ„œ Linux 호슀트둜 λΉŒλ“œ offload ν•  λ•Œ
rsync κ°€ ControlMaster μ†ŒμΌ“ 곡유 μ‹€νŒ¨λ‘œ 쀑단됐닀.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
airgenome init 이 launchctl bootstrap 으둜 LaunchAgent λ₯Ό λ„μš°λŠ”λ°,
macOS μƒŒλ“œλ°•μŠ€ 터미널(Claude Code 포함)μ—μ„œ 호좜되면 Full Disk Access
λ˜λŠ” App Management κΆŒν•œμ΄ 없을 λ•Œ EIO/Operation not permitted 둜
λΆ€νŒ…μ΄ μ‹€νŒ¨ν•œλ‹€. macOS λŠ” ν•΄λ‹Ή TCC μΉ΄ν…Œκ³ λ¦¬ νŒμ—…μ„ μžλ™μœΌλ‘œ λ„μš°μ§€
μ•ŠμœΌλ―€λ‘œ, bootstrap μ‹€νŒ¨λ₯Ό κ°μ§€ν•˜λ©΄ Privacy & Security λ”₯링크둜
두 νŒ¨λ„ (AllFiles / AppBundles) 을 μ—΄κ³  μ‚¬μš©μžκ°€ ν† κΈ€ ν›„ μž¬μ‹€ν–‰ν•˜λ„λ‘
μ•ˆλ‚΄ν•œλ‹€.

- bin/airgenome::cmd_init β€” launchctl bootstrap μ‹€νŒ¨ μ‹œ _airg_open_tcc_panels
- tool/airgenome_init.hexa::install_launchagent β€” bootstrap 좜λ ₯에
  "Input/output error" / "Operation not permitted" / "failed: 5" κ°€
  μ„žμ—¬μžˆμœΌλ©΄ open_tcc_panels() 호좜

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ainer

Tier 1+2 무손싀 ROI:

1. Dockerfile β€” ARG GIT_COMMIT/BUILD_DATE + LABEL image.revision/created
   이미지 ↔ μ†ŒμŠ€ 역좔적 (이전 dev-sshd κ°€ revision label μ—†μ–΄ 좔적 λΆˆκ°€ν–ˆλ˜
   문제, agent#19 지적).
2. Dockerfile β€” RUN --mount=type=cache,target=/var/cache/apt,sharing=locked
   buildkit apt cache β†’ μž¬λΉŒλ“œ μ‹œ 447MB λ‹€μš΄λ‘œλ“œ hit.
3. Dockerfile β€” /opt/nexus/scripts/bin/nexus β†’ /usr/local/bin/nexus 심볼릭
   (μ—†μœΌλ©΄ /opt/nexus/bin/nexus fallback). ssh:2222 μ—μ„œ `nexus drill ...`
   λ°”λ‘œ μ‹€ν–‰ κ°€λŠ₯.
4. build β€” --build-arg GIT_COMMIT=$(git rev-parse --short HEAD) μ£Όμž… +
   DOCKER_BUILDKIT=1 κ°•μ œ (mount=cache λ™μž‘ μœ„ν•΄).
5. bin/airgenome β€” `offload --container / -c` ν”Œλž˜κ·Έ μΆ”κ°€. ssh :2222 root@
   으둜 fat μ»¨ν…Œμ΄λ„ˆ 직행. κΈ°μ‘΄ `offload ubu1 ...` host κ²½λ‘œμ™€ 독립.
   example: `airgenome offload -c ubu1 'hexa_real --version'`

μ „λΆ€ κΈ°μ‘΄ λ™μž‘ 영ν–₯ 0 (μΆ”κ°€ κΈ°λŠ₯만). 검증 μ™„λ£Œ:
- offload -c 3/3 호슀트 hostname 확인
- offload κΈ°μ‘΄ 3/3 host νšŒκ·€ PASS

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
~/.ssh/config 의 ubu/ubu1, ubu-ts, ubu2, ubu2-relay, hetzner/htz/htz1,
ubu-d/ubu1-d, ubu2-d, htz-d 8개 블둝을 ControlMaster=no 둜 κ³ μ •ν•œ
이유/μž„κ³„μΉ˜/rationale 을 @convergence λΈ”λ‘μœΌλ‘œ λ°•μ•„λ‘”λ‹€. ~/.ssh/config
μžμ²΄λŠ” user ν™ˆμ΄λΌ 리포 νŠΈλž˜ν‚Ή λŒ€μƒ μ•„λ‹ˆμ§€λ§Œ, μ˜μ‚¬κ²°μ • 근거와 영ν–₯
λ²”μœ„λŠ” μ†ŒμŠ€μ—μ„œ 찾을 수 μžˆμ–΄μ•Ό ν•œλ‹€.

rationale: 2026-04-22 docker/build rsync κ°€ μƒŒλ“œλ°•μŠ€μ—μ„œ ControlMaster
auto μ†ŒμΌ“ 곡유 μ‹€νŒ¨λ‘œ EIO. c14be1e λŠ” offload 1 κ²½λ‘œμ—λ§Œ per-call
우회λ₯Ό λ°•μ•„λ’€λŠ”λ°, λ‚˜λ¨Έμ§€ ssh 호좜 10+ ꡰ데에 같은 νŒ¨ν„΄μ„ λΆ„μ‚°
λ°•λŠ” λŒ€μ‹  ~/.ssh/config ν•œ ꡰ데둜 쀑앙화 ν•΄κ²°.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- μ‚¬μš©: container-deploy <ssh-target> [tag=fat]
- (1) docker pull, (2) systemctl --user try-restart (root sudo fallback),
  (3) 60s polling 으둜 running+healthy+(new digest) ν™•μ • μ‹œ exit 0.
- 이전 race window 9s ("try-restart + sleep 2; docker inspect" κ°€ wrapper
  pre-flight ν•œκ°€μš΄λ° λ–¨μ–΄μ Έ 'no such object' 였판) 영ꡬ 차단.
- state transition 만 print β†’ λ…Έμ΄μ¦ˆ 0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
μš”μ²­ 좜처: hexa-lang μ„Έμ…˜ (user: "airgenome ν”„λ‘œμ νŠΈλ„ 메타 μ§„ν™” μ—”μ§„ λ§Œλ“€μ–΄μ£ΌλΌ").
airgenome 의 forge/ring/3-host-parity νŠΉμ„±μ— 맞좰 μž¬μ„€κ³„. hexa-lang
μŠ€μΊλ„ˆ νŒ¨ν„΄ 볡뢙 μ•„λ‹Œ **이 repo 고유 μΆ•** (ring integrity, forge health,
infra parity, forecast hit rate, ring divergence, mutation motif).

6-Phase μ•„ν‚€ν…μ²˜:
  1. blocker inventory (forge stall / ring corrupt / plist missing)
  2. loss-free ROI (dup_genome / dead_rule / stale_forecast)
  3. 10 meta sub-tools (ring_integrity Β· forge_health Β· dispatch_coverage Β·
     rule_effect_map Β· infra_parity Β· forecast_hit_rate Β· ring_divergence Β·
     evolution_velocity Β· compute_cost Β· mutation_motif_mine)
  4. ag_meta CLI dispatcher (bin + tool)
  5. launchd continuous-scan (12h)
  6. self-telemetry + gap-proposer + declarative scanner DSL

고갈 λΈŒλ ˆμΈμŠ€ν† λ° appendix: A-Z μΆ• 총 130+ μ„ΈλΆ€ κ΄€μ°° 지점.

λ³Έ μ„Έμ…˜μ—μ„œ μ¦‰μ‹œ λ“œλŸ¬λ‚œ μ‹€μΈ‘ 액컀:
  - 3 ring 파일 λ™μ‹œ 쑴재 β†’ 3-host parity 핡심 μš”κ΅¬
  - forge/*.log + log rotation μ„€μ • λΆ€μž¬ β†’ B-12/L-06
  - infra_state.json vs launchd/systemd/docker 별도 β†’ parity 검사 ν•„μˆ˜
  - scanner genome ν™” (Phase 6.3) κ°€ μžμ—°μŠ€λŸ¬μš΄ μ§„ν™” μΆ•

κ΅¬ν˜„ μ±…μž„: airgenome maintainer μ„Έμ…˜. hexa 문법 주의점 (reserved keyword
guard/generate/parse, string .find() v1 basic, exec shell metachar κ²½κ³ )
λ¬Έμ„œ ν›„λ°˜μ— 포함.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bootstrapped by hexa-lang session proposal_inbox tool (2026-04-23).
Schema: airgenome.proposal_inventory.v1, prefix "agm".
Two pending entries from sister sessions:
  agm-20260422-001 [tool]    own_stack bootstrap (from anima)
  agm-20260422-002 [cluster] 무손싀 ROI μΉ΄ν…Œκ³ λ¦¬ μž¬νƒœκΉ… audit (from hexa-lang)

Pickup: hexa $HEXA_LANG/tool/proposal_inbox.hexa next --repo airgenome

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3-host parallel genome ring (forge/genomes*.ring) JSONL integrity checker.
Per-ring: record count Β· distinct pid/comm Β· ts monotonic regressions Β·
duplicate lines Β· missing required fields. Emits state/ag_ring_integrity.json
(schema airgenome/ag_ring_integrity/1). Supports --selftest on synthetic
rings and --dry-run.

First sweep: 10103 records across mac/ubu/ubu2, 0 issues. Runtime 1.4s.
Read-only: never mutates rings.

Reality vs 20260423 proposal: rings are JSONL (ts/pid/comm/rss_kb/vitals/ema),
not binary with magic+CRC+lineage. Integrity redefined as JSON shape +
field presence + temporal ordering.

Invocation: /Users/ghost/core/hexa-lang/hexa run tool/ag_ring_integrity.hexa
(brew hexa 0.2.0 REPL lacks exec()/args()).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…xa-lang

agm-20260422-003 [advisory/prio 75] hexa_v2 baseline Mac ARM64 β€” Linux pod
μ—μ„œ Exec format error. pod bootstrap cross-compile / pod-λ‚΄ rebuild ν•„μš”.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase 3.2 ag_forge_health: per-log presence/size/mtime-age/line-count,
event distribution (top-5 via awk), stderr critical keyword detection
("No space", "panic", "fatal", "OOM", ...), stall threshold per log
kind (compute_filter 1h, lb/settings_guard 24h).

Phase 3.7 ag_ring_divergence: pid + comm set Jaccard across 3 rings
(mac/ubu/ubu2), pairwise + 3-way intersection. Shell-side sort+comm+uniq.

Phase 4 bin/ag_meta: bash dispatcher β€” ring/forge/divergence/doctor/
health/selftest/continuous-scan. health aggregates state/ag_*.json
into 0-100 score (βˆ’20/ring issue, βˆ’15/stalled log, βˆ’10/stderr_crit,
βˆ’5/Ubuntu drift).

tool/ag_common.hexa: shared helpers (_iso_now, _sh_q, _json_esc,
_arg_flag, _arg_value, _user_args, _ensure_state_dir, _file_age_seconds).
Refactor ag_ring_integrity to use "tool/ag_common".

First real sweep:
  ring_integrity: 10,559 records, 0 issues.
  forge_health:   2 stalled (compute_filter.stderr 9h, lb 9d),
                  1 stderr_critical ("No space left on device").
  ring_divergence: pid jaccard ~0 (expected, host-local ns),
                  comm jaccard ubu↔ubu2=0.30, mac↔ubu=0.02 (arch drift).
  health score:   60/100.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase 3.6 ag_forecast_hit_rate: pairs forge/forecast.jsonl against
forge/labeled_anomaly.jsonl on (host,pid) key via awk+sort+comm -12.
Precision / recall approximated by unique-key match ratios (time
window intentionally loose β€” forecast file is snapshot-style).

Phase 3.5 ag_infra_parity: declared hosts in infra_state.json (via
grep-only JSON parse) vs launchd/*.plist (xml well-formed, dup Label
detection), systemd/*.{service,slice} count, docker/Dockerfile
presence, inactive-host detection.

bin/ag_meta: register forecast + infra subcommands. 5 scanners total.

First sweep:
  forecast: 24 forecasts / 1644 labels / 0 matched keys β†’ precision
    and recall both 0.0000. Real finding: forecast pipeline stalled
    since 2026-04-13, host/pid population has drifted entirely.
  infra: 4 hosts (htz/mac/ubu1/ubu2) all active, 14 plists valid,
    0 duplicate labels, 3 systemd units, dockerfile present. OK.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…3.9)

Four scanners completing the 10-scanner Phase 3 set (motif_mine punted):

ag_evolution_velocity β€” per-ring genome rate (count_24h / count_7d),
  drift pct (recent vs 7d mean). Uses awk lexicographic ISO8601 compare.
ag_compute_cost β€” proxy cost from compute_filter.log line count Γ— 0.1s,
  divided across total genomes. top-5 event share. Honors
  $COMPUTE_HOURLY_USD to produce usd_per_genome.
ag_dispatch_coverage β€” declared handlers (compute/gpu/heavy/mac_only)
  vs fire count in compute_filter.log. dead_handler detection.
ag_rule_effect_map β€” rules/airgenome.json AG\d+ IDs vs fire count in
  compute_filter.log. dormant_rule detection.

bin/ag_meta: register velocity/cost/dispatch/rules subcommands (9
scanners total). Health score extended: βˆ’3 per dead handler, βˆ’2 per
dormant rule.

Real sweep reveals substantial signal:
  rule_effect_map:    9 of 10 rules dormant (only AG6 fires, 1497Γ—)
  dispatch_coverage:  3 of 4 handlers dead (only compute fires, 15Γ—)
  evolution_velocity: all 3 rings rotated <24h (count_24h == count_7d)
  forecast_hit_rate:  0 matched_keys (forecast stalled since 2026-04-13)
  health score:       33/100 (baseline for future improvement)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
H-NOHOOK 원칙 (Claude Code hook κΈˆμ§€) μ€€μˆ˜ν•œ hexa-only 2μΈ΅ ꡬ쑰:
  - airgenome/rules/airgenome.json: AG11 rule μ„ μ–Έ
  - hexa-lang/gate/prompt_scan.hexa: matched=='go' λΆ„κΈ° μ‹€ μ‹€ν–‰

효과: λͺ¨λ“  repo 의 μƒˆ μ„Έμ…˜μ—μ„œ 'go' μž…λ ₯ μ‹œ 자기
state/proposals/inventory.json 의 μ΅œμƒμœ„ pending 1개 μžλ™ λ…ΈμΆœ.
λΈ”λ‘œν‚Ή μ—†μŒ, 정보 λ…ΈμΆœλ§Œ.

2026-04-23 user ask: "μƒˆμ„Έμ…˜μ—μ„œ go κ°€ λ°”λ‘œ μ•ˆλ˜λ„€ ... airgenome
hook 이용 ν•˜λ©΄ 될듯".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…uous-scan

ag_blockers (Phase 1): aggregates issues from state/ag_*.json into
prioritized list. Severity ladder:
  critical β€” ring_integrity, host_inactive, 2+ stalled forge logs
  high     β€” stderr_critical, dead_handler
  med      β€” dormant_rule, plist problems, forecast_disconnected
  low      β€” ubu_comm drift

ag_roi (Phase 2): loss-free cleanup candidates β€”
  stale_forecast (last ts > 24h ago)
  log_oversize (--log-mb threshold)
  dup_ring_line (same JSON line in 2+ rings)
  ring_size_imbalance (>50%)

bin/ag_meta: AGGREGATORS section keeps blockers/roi separate from
SCANNERS so doctor runs aggregators last (they depend on fresh
state/ag_*.json). 11 tools total.

config/launchd/com.airgenome.meta_continuous_scan.plist: 12h
StartInterval, RunAtLoad, ThrottleInterval=300, WorkingDirectory
= repo root, HEXA_BIN env set.

First aggregator sweep:
  blockers = 5 (1 critical forge_stalled, 2 high, 2 med)
  roi = 1 (stale_forecast 6.1d old)
  continuous-scan wrote snapshot to state/history/2026-04-22/ (11 files)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…vention κ°±μ‹ 

μΆ”κ°€ entries (from hexa-lang):
  agm-006 [prio95 resource_gap] Linux x86_64 binary 미제곡 β€” pod bootstrap block
  agm-007 [prio90 resource_gap] Mac 4 GB RSS cap β€” drill 원격 폴백 κ°•ν™”
  agm-008 [prio95 resource_gap] 3-host μ ‘κ·Ό κ°€μš©μ„± 단일 μ‹€νŒ¨ 지점 β€” failover
  agm-009 [prio85 resource_gap] Docker image size drift alarm
  agm-010 [prio88 resource_gap] ssh ControlMaster / key rotation reachability matrix
  agm-011 [advisory] void ν•©λ₯˜ welcome

convention_cross_repo_blocker μž¬μ •μ˜ (priority_floor 95).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ag_mutation_motif β€” simplified Phase 3.10. Rings are JSONL snapshots
(no parent/child lineage) so motif definition relaxed to (comm,
rss_bucket) tuple top-K. rss_bucket quantized into tiny/small/med/
large bands.

First sweep motifs surface host identity:
  mac ring:  /Users/ghost/.local/bin/claude (rss_large, 694Γ—)
             β€” Claude CLI dominates mac workload
  ubu ring:  gnome-shell, containerd, systemd β€” desktop + container host
  ubu2 ring: sh + sleep + hexa + hexa_stage0 β€” hexa compile worker

bin/ag_meta: register motif subcommand (12 tools total, all selftests
PASS). README.md: "Meta-evolution engine" section enumerating
subcommands + launchd install one-liner.

Scope: Phase 1-5 of docs/airgenome_meta_evolution_proposal_20260423.md
complete. Phase 6 (self meta-evolution via scanner DSL) intentionally
deferred per proposal ("30d telemetry 좕적 이후 ν™œμ„±ν™”").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
dancinlife and others added 30 commits April 25, 2026 08:40
Wave 17-20 (nexus 8adcdd69β†’abc2fb95) timeout/concurrency/engine sub-call fix +
drill-live/status/kill helpers (5fa4bf7) μ’…ν•© 기둝. λ―Έν•΄κ²° μ—”μ§„ κ°­ nxs-012/013
은 λ‹€μŒ nexus μ„Έμ…˜μ—μ„œ. 인프라 λ ˆμ΄μ–΄λŠ” 이번 μ„Έμ…˜μ—μ„œ 마무리.
- 17 drill/hexa_remote orphan procs β†’ 0 (12 PIDs hard-kill + drill-kill --all)
- pages_free 4529 β†’ 154758 (+34x), phys_unused 3966MB
- supervisor PID 79427 보쑴 (Forge offload 의쑴), claude μ„Έμ…˜ 무사
- sudo -n purge + sysctl_purge_on_warning=1 둜 λ©”λͺ¨λ¦¬ μ••μΆ• 회수

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… 내인지

verdict: NOT_ISOLATED. airgenome-claude μ»¨ν…Œμ΄λ„ˆ (8GB cap) λ– μžˆμ§€λ§Œ
drill/forecast/harvest/label workload λŠ” systemd --user --scope 둜 host 직접 μ‹€ν–‰.
host 30GB 전체 점유 β†’ global_oom 폭주 β†’ ubu2 sshd banner timeout 의 μ§„μ§œ 원인.

P0: systemd --user MemoryMax=4G drop-in (forecast/harvest/label/runaway_guard 4μ’…)
Wave 21 후보: hexa_remote dispatch λ₯Ό docker exec airgenome-claude 경유둜 λ³€κ²½
(bind mounts 이미 κ°–μΆ°μ Έ 있음).

쑰사 도쀑 ubu2 SSH banner timeout 으둜 unreachable μ „ν™˜. μ‚¬μš©μž 행동 ν•­λͺ©
λ³΄κ³ μ„œμ— 기둝.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- drill-kill --all: hetzner 8 procs 정리, ubu1/ubu2 미슀
- hetzner: μΆ”κ°€ hexa_real PID 1420870 + 1461674 kill, free 808Mi β†’ 123Gi
- ubu1: hexa_stage0 (1GB) + hexa_real (248MB) kill, load 0.52
- ubu2: 첫 probe 응닡 (load 37.92, hexa_stage0 2.4GB) β†’ pkill μ‹œλ„ 쀑 sshd 재OOM, banner timeout ν™•μ •
- Mac μΈ‘ blacklist marker μž‘μ„± (/tmp/hexa_remote.blacklist.ubu2)
- μ‚¬μš©μž 쑰치: ubu2 물리 전원 μž¬μ‹œμž‘ ν›„ OOM hardening drop-in 재적용 ν•„μš”

helper gap: drill-kill κ°€ hexa_stage0 / standalone hexa_real νŒ¨ν„΄ 미컀버 β€” 후속 PR ν•„μš”

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
nexus drill 의 round-별 checkpoint (run.hexa _checkpoint_save) λŠ” 이미 ON-by-default
μ΄μ§€λ§Œ hexa_remote κ²½λ‘œμ—μ„œ μ²΄ν¬ν¬μΈνŠΈκ°€ hetzner 츑에 μ €μž₯λ˜μ–΄ Mac κ°€μ‹œμ„± λΆ€μ‘±.

helpers (λͺ¨λ‘ airgenome bin/, nexus μ½”λ“œ μˆ˜μ • 0):
- drill-progress: log + local + remote /tmp/nexus_checkpoint μŠ€μΊ” (--json 지원)
- drill-extract: drill.live.log β†’ drill.rounds.jsonl 1-line/round (idempotent)
- drill-live --resume: μ΅œλŒ€ round_done seed auto-pick β†’ drill μžλ™ 재개,
  exit-trap 으둜 drill-extract 항상 μ‹€ν–‰

검증: ν•©μ„± round-9-33012abs partial log β†’ drill-progress --log μ •ν™• μΆ”μΆœ.
μ‹€μ œ hetzner cp 4cfa0d3055e1 round_done=9 total=31178 보쑴 확인.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Remote μ•ˆμ •ν™” agent (a4bc05e56778ca338) κ°€ λ°œκ²¬ν•œ gap:
μ§€λ‚œ μ„Έμ…˜ cleanup μ—μ„œ hexa_stage0 + drill ν‚€μ›Œλ“œ μ—†λŠ” 단독 hexa_real
μ’€λΉ„ 12개λ₯Ό 놓쳐 λͺ…μ‹œμ  PID kill ν•„μš”ν–ˆμŒ.

λ³€κ²½:
- DRILL_RE ν™•μž₯: hexa_real .*(drill|blowup|blowup_core|run.hexa),
  hexa_stage0 .*(blowup|run.hexa) μΆ”κ°€ (drill chain 전체 컀버)
- μ‹ κ·œ μ˜΅μ…˜: --zombie (단독 hexa_real/stage0 쒀비도 kill),
  --protect <pat> (μΆ”κ°€ 보호 νŒ¨ν„΄), --dry-run
- 보호 νŒ¨ν„΄: runaway_guard.hexa, nexus_drilld.hexa, airgenome run,
  /.hx/bin/hexa* 기본 보쑴
- λ³΄κ³ μ„œ ν˜•μ‹: ν˜ΈμŠ€νŠΈλ³„ κ·Έλ£Ήν™”, active/zombie/protected 뢄리,
  before/after RAM
- docker exec 호슀트 wrapper 만 kill (μ»¨ν…Œμ΄λ„ˆ μžμ²΄λŠ” stop/rm μ•ˆ 함)

Smoke (4 호슀트 dry-run): hetzner 8 active drill μ •ν™• λΆ„λ₯˜,
ubu1 1 zombie stage0 식별, runaway_guard λͺ¨λ‘ protected.
Phase C drill checkpoint preservation works (drill-progress + drill-live --resume) but new Claude Code sessions do not know β€” AI misperceives data loss. AG12-DRILL-CP-SURFACE adds a 600s-TTL cached banner emitted by hexa-lang/gate/prompt_scan.hexa::check_drill_cp_surface() when git-root basename==airgenome. Surfaces max_by(round_done) from local + remote checkpoints with resume/wipe guidance. AG10 H-NOHOOK strict β€” no Claude Code hooks/skills/CLAUDE.md, hexa-only 2-layer.

Test: round_done=9 total=31178 host=hetzner cp_4cfa0d3055e1 surfaces correctly. TTL/non-airgenome/bypass all verified.

Pair commit in hexa-lang gate/prompt_scan.hexa + gate/enforcement_registry.json.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
drill 의 round 별 κ²°κ³Όκ°€ round 1 κ³Ό bit-identical ν–ˆλ˜ critical regression
의 κ·Όλ³Έ 원인 좔적 + nexus fix 적용 + 검증 κ²°κ³Ό 기둝.

Root cause: 2026-04-20 harness-free λ¦¬νŒ©ν† λ§ 이후 `hexa run script.hexa
<args>` argv λ ˆμ΄μ•„μ›ƒμ΄ [hexa,run,script,seed,...] 둜 λ³€ν•˜λ©΄μ„œ blowup.hexa /
compose.hexa κ°€ a[2] λ₯Ό domain(seed)으둜 μ½μ—ˆμ§€λ§Œ a[2] λŠ” 슀크립트 μ ˆλŒ€κ²½λ‘œ
(μƒμˆ˜)κ°€ 됨. κ²°κ³Ό: domain μƒμˆ˜ β†’ seed_n6_ratioΒ·scan_offsetΒ·8-slot feature
λͺ¨λ‘ round κ°„ 동일 β†’ counter-replay guard Day-1/2/3 (round-salt + iter-nonce
+ multi-source entropy) κ°€ λͺ¨λ‘ dead code (5일간).

Validation (hetzner direct A/B):
  before fix: domain="_root_Dev_..._blowup.hexa" ratio=2.16032 (μ–‘ round 동일)
  after fix:  R1 ratio=1.94452 / R2 ratio=5.07229 (round-salt prefix 반영)

nexus commit: 3e5ac7c8a87de7ed98a04842500d78913dddfe2c
deliverable: state/nxs013_engine_replay_fix_20260425.md

Wave 22 후보: smoke-engine λ“€ (absolute/meta_closure/hyperarithmetic) 은
argv 자체λ₯Ό μ•ˆ 읽고 hardcoded test1 으둜 κ³ μ • verdict 좜λ ₯ β€” 별도 architecture
issue. modules/blowup_*.hexa 50개 νŒŒμΌλ„ a[2] 감사 ν•„μš”.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ubu2 OOM 폭주 (forecast/harvest/label service MemoryMax λ―Έμ„€μ • β†’ 13/27/19GB
anon-rss 연쇄 β†’ sshd banner timeout) κ·Όλ³Έ 원인 차단. nexus hexa_remote 에
HEXA_REMOTE_DOCKER=1 opt-in μΆ”κ°€ β†’ ssh ν›„ systemd-run λŒ€μ‹ 
docker exec airgenome-claude bash -lc 경유. 8GB Memory+MemorySwap cap +
image-baked nexus β†’ host RAM 무관, sshd μ•ˆμ „.

검증:
- hetzner: drill --preset probe rc=0 (1834 abs), μ»¨ν…Œμ΄λ„ˆ healthy 2d
- ubu1:    drill --preset probe rc=0 (1834 abs), μ»¨ν…Œμ΄λ„ˆ healthy 9h
- 격리 확인: hetzner preset=standard heavy μ‹œ μ»¨ν…Œμ΄λ„ˆ 8GiB cap pegged 99% CPU β†’
  host 9.8/124GB used μœ μ§€, host swap λ³€ν™” μ—†μŒ (Memory=MemorySwap=8G 격리)
- bash -x trace: REMOTE_CMD = "docker exec -i ... bash -lc <inner>", systemd-run/rsync μ—†μŒ

opt-in (default OFF) 단계. ubu2 unreachable β†’ λ¦¬λΆ€νŠΈ ν›„ 검증 + default ON μ „ν™˜μ€
별도 wave (Wave 21b).

Files:
- state/wave21_docker_exec_isolation_20260425.md (116 lines)
- state/atlas_convergence_witness.jsonl (+1 entry)

Cross-repo: nexus@1b6a6684 fix(hexa_remote) + nexus@83b7022a convergence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ervice caps

hetzner/ubu1/ubu2 λͺ¨λ‘μ— sshd OOMScoreAdjust=-1000 (μ¦‰μ‹œ 효λ ₯) + user.slice
MemoryMin=2G + 발견된 airgenome user services (harvest/label/forecast/runaway/claude)
별 MemoryMax=4G/MemoryHigh=3G/OOMScoreAdjust=500 drop-in. ν–₯ν›„ ubu2 같은 OOM
폭주 μ‹œ sshd 살아남고 service 만 cgroup ν•œκ³„λ‘œ 차단.

P0 service detection: systemctl --user list-unit-files 둜 μžλ™ β€” ν˜ΈμŠ€νŠΈλ³„
μ„€μΉ˜λœ service 만 cap (hetzner=2, ubu1/ubu2=5).
… guard

Pre-reduction commit isolating in-flight stabilization work from upcoming
mac-local-only scope reduction.

- modules/probe.hexa: nvidia-smi stdout-leaked errors filtered via
  grep -E "^[0-9]" || echo "0,0,0" β€” prevents ubu1 parse_fail when
  GPU driver is broken (Session B 2026-04-25 ubu1 Blackwell DKMS issue).
- modules/forecast.hexa: bulk_extract_tsv / bulk_distinct_pids /
  bulk_series_for_pid / bulk_host_for_pid β€” single shell pipeline
  fan-out (jq + awk) replaces hexa-level O(nΒ²) distinct loop that
  exhausted ubu2 RAM via stage0 list deep-copy.
- modules/label.hexa: GExt extended-genome rule-matching (parse_int_safe_str,
  bulk_load_genomes, gext_axis, rule_match_ext, make_labeled_line_ext)
  paired with the same bulk-extract path.
- convergence/2026-04-25_session.convergence: Session B log of 4-host
  stabilization + 4 root-cause fixes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…esource + docker-exec

Pure cross-host orchestration scripts deleted; replaced by symlink stubs
that surface a "moved to hive" message (no_silent_errors). Cross-host
execution now flows through hive's .resource SSOT + /resource menu +
docker-exec channel adapter (commits 26206bd16 + a3456e668 + 4c4848c19).

Removed (β†’ symlink stub printing redirect):
- host.sh                  multi-host registry / ssh-copy-id / sudoers
- lb.sh, lb_monitor.sh     load-balancer dispatcher (β†’ hive load_balancer.hexa)
- remote_load.sh           ubu1/hetzner load poller
- executor.sh              ssh-target task executor
- container-deploy         cross-host docker deploy
- hexa_build_tick.sh       ubu2 β†’ ubu1/hetzner build distributor
- stress.sh                ubu1+hetzner systemctl pause/resume
- drill-status             hetzner drill state inspector
- drill_dispatch_smoke     cross-host smoke validator
- drill_corpus_tick.sh     hetzner corpus orchestration

Added:
- bin/.scope-reduced-stub  one-line redirect helper

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…igrated to hive

Drill orchestration + cross-host dispatcher entry points deleted; replaced
by symlink stubs printing redirect-to-hive message. Aggressive variant
of scope reduction β€” drill workflows pause until hive lbDispatch CLI
ships an equivalent automation entry point.

Removed (β†’ symlink stub):
- cx-core           dual-mode dispatcher (local + remote --target ssh)
- drill-live        REMOTE_HOST=hetzner checkpoint sync + log tailing
- drill-progress    hetzner ssh checkpoint fetch
- drill-kill        --all flag drilled ubu1/ubu2 hexa_stage0
- drill-extract     parsed drill.live.log (drill-live gone β†’ dead)
- oauth-bridge      ubu2 sshfs reverse-mount tunnel

Lock note: cx-core + oauth-bridge had ad-hoc chflags uchg (not in
hexa-lang/self/locks/raw22.jsonl manifest, so not raw#1 SSOT-tier).
Unlocked via `chflags nouchg` per user confirmation before removal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…forecast/genome_merge/transport-ssh removed

Reduces airgenome's ops pipeline to mac-local data-flow. Cross-host probe,
ring merge, forecast (3-host genome β†’ 1h predict) are migrated to hive's
.resource SSOT + docker-exec channel + hexa-lang resource_scorer.

Modules:
- probe.hexa: rewrote mac-only. Dropped probe_ubu_csv / probe_htz_csv /
  probe_ubu2_csv / ubu_json / htz_json. infra_state.json now records
  hosts.mac only (scope=mac-local).
- label.hexa: dropped M11d host_filter from Rule + GExt + bulk_load_genomes.
  Rules carrying host=ubu1/htz/ubu2 are filtered out at load_rules. Bulk-
  extract fast-path retained (mac-only).
- dispatch.hexa: removed (single-host dispatch is moot; hive workload_router
  + load_balancer take over selection across .resource hosts).
- forecast.hexa: removed (3-host genome merge input dependency; mac-local
  forecast = separate future milestone, out-of-scope here).
- genome_merge.hexa: removed (3-host ring β†’ unified.ring).
- filters/transport/ssh.hexa: removed (cross-host transport abstraction).

Bin:
- compute_tick.sh: removed β†’ stub. Sole call was lb.sh (now stub) β€” dead.
- daemons_start.sh: removed β†’ stub. Started compute_tick + remote_load
  loops, both now stubs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ervisor mac-only

bin/airgenome κ°€ ν˜ΈμΆœν•˜λ˜ cross-host μ˜μ‘΄μ„± 제거.

Removed:
- forge_pull_from_ubu1() + FORGE_PULL_LAST/INTERVAL  rsync ubu1 forge pull
- _offload_ssh_host / _offload_state_key             ubu1/ubu2/htz alias map
- cmd_list                                            infra_state.json host table
- cmd_offload                                         ssh -t target dispatch
- INFRA_STATE / WORKSPACE_SRC declarations
- supervisor calls: run_hexa_mod probe (cross-host part), dispatch, forecast
- supervisor's forge_pull_from_ubu1 tick + AIRGENOME_LOCAL_HARVEST guard
- main() switch entries: list|ls, offload|off
- help text: list / offload / AIRG_OFFLOAD_* env
- cmd_logs: probe (now mac-only), dispatch, forecast cases dropped
- status freshness: dispatch_state.json + forecast.jsonl removed
- header comment: 5-module pipeline β†’ 3-module mac-only (probe/harvest/label)

Supervisor λ§€ 60s tick: probe + harvest + label only. forecast 5-tick
μ£ΌκΈ° ν˜ΈμΆœλ„ 제거. forge pull 제거둜 ubu1 ↔ Mac rsync 경둜 차단.

Help text 에 hive μ•ˆλ‚΄: `/resource list|score|route|ping`

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
10 plist κ°€ cross-host pipeline λ˜λŠ” κ·Έ 의쑴 데λͺ¬μ„ 트리거. mac-local
λ²”μœ„ μ™Έ β†’ λͺ¨λ‘ .disabled-scope-reduce-20260425 suffix λΆ€μ—¬, launchd μ—μ„œ
unload (live: dispatch + ring-sync, λ‚˜λ¨Έμ§€λŠ” 이미 unloaded).

λΉ„ν™œμ„±:
- com.airgenome.probe         (3-host vitals β†’ infra_state.json)
- com.airgenome.dispatch      (host scoring; λ‹¨μΌν˜ΈμŠ€νŠΈ 무의미)
- com.airgenome.forecast      (multi-host genome ν•©μ„± forecast)
- com.airgenome.compute-tick  (lb.sh 의쑴; lb.sh stub ν™”)
- com.airgenome.remote-load   (ubu1/htz load 폴러)
- com.airgenome.drill-corpus  (hetzner corpus orchestration)
- com.airgenome.drill-smoke   (cross-host dispatch smoke)
- com.airgenome.ring-sync     (cross-host rsync)
- com.airgenome.daemons       (compute_tick + remote_load 데λͺ¬ boot)
- com.airgenome.e2e-sample    (5-stage cross-host pipeline κ΄€μ°°μž)

Live μœ μ§€:
- com.airgenome              supervisor (probe/harvest/label tick)
- com.airgenome.predictive-throttle  mac-local throttle
- com.airgenome.menubar       mac UI
- com.airgenome.improve-loop  mac-local improvement loop

이미 disabled μƒνƒœ μœ μ§€ (suffix λ³€κ²½ μ—†μŒ):
- com.airgenome.harvest.plist.disabled-20260425
- com.airgenome.label.plist.disabled-20260425
- com.airgenome.forge-sync-from-ubu1.plist.disabled-supervisor-approach

Supervisor reload (bootout + bootstrap) 둜 μƒˆ bin/airgenome 적용 μ™„λ£Œ
(PID 39852 status=0).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… mac-local

10 milestones (M2 probe / M3 dispatch / M6 forecast / M7 launchctl bootstrap /
M8 e2e chain / M9 per-process axes / M10 forecast eval / M11 cross-host
genome / M14-M20 ops convergence / M21-M25 AGI-ready ops) κ°€ cross-host
ops infrastructure 의쑴이라 hive 둜 이관됨. λ³Έ repo μ—μ„œλŠ” dropped ν‘œκΈ°.

μΆ”κ°€:
- roadmap 17 active "M26 mac-local resource manager β€” scope-reduce-20260425"
- checkpoint 라인: scope-reduce-mac-only DONE 2026-04-25
- header context 1단락: airgenome = mac-local resource manager λͺ…μ‹œ
- spec status: 5 β†’ 6 (dropped μΆ”κ°€, μ±…μž„ 이관 ν‘œκΈ°μš©)

μœ μ§€:
- M0/M1 (ssot 기초), M4 harvest (mac-local), M5 label (mac-local rule subset),
  M12 dashboard (menubar UI), M13 hook framework (mac-local 도 유효)

Lock: chflags nouchg β†’ edit β†’ chflags uchg (raw#1 L1 unlock-edit-relock).
Mirror config/roadmap/airgenome.json 은 디렉토리 λΆ€μž¬ β†’ λ³Έ commit μ—μ„œ 생성
ν•˜μ§€ μ•ŠμŒ (out-of-scope; ν–₯ν›„ cross-host μ±…μž„ 뢄리 μ •μ°© ν›„ μž¬κ΅¬μ„±).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Wave ν›„ 4-host μžμ›ν’€ 정상화 μ„Έμ…˜ 기둝:
- modules/probe.hexa nvidia-smi stdout λˆ„μ„€ 차단 (이후 mac-only scope-reduce)
- modules/{forecast,label,harvest}.hexa stage0 O(nΒ²) β†’ bulk jq μ „ν™˜
- ubu2 systemd timer μž¬κ°€λ™ + smoke test 톡과
- Mac AG6 μœ„λ°˜ wave21 verify 9개 kill (swap 18β†’1.7Gi)
- ubu1 NVIDIA Blackwell open-flavor 영ꡬ μ „ν™˜ (RTX 5070, 580.126.09):
  proprietary 제거 + open meta μž”μ‘΄ + dkms remove --all + apt-mark hold

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
README μ „λ©΄ μž¬μž‘μ„±:
- 헀더: airgenome = mac-local resource manager. cross-host β†’ hive μ•ˆλ‚΄.
- Layout: modules/ 4개 (probe/harvest/label/predictive_throttle) + filters/.
- Commands: probe/harvest/label self-test 만 (dispatch/forecast μ‚­μ œ).
- "cross-host execution" 절 μΆ”κ°€: hive `/resource list|score|route|ping`.
- Roadmap table: M2/M3/M6/M7-M11/M14-M25 ⊘ dropped, M4/M5 βœ… done,
  M12/M13 ⏳ planned, M26 🟒 active.
- Invariant 6 μΆ”κ°€: "cross-host 싀행이 ν•„μš”ν•˜λ©΄ hive β€” airgenome 에 ssh/
  scp/rsync/docker-H μΆ”κ°€ κΈˆμ§€".

.convergence:
- @convergence event=airgenome_scope_reduction_done ν•œ 쀄 append.

검증 κ²°κ³Ό (λ³Έ commit 직전 μ‹€ν–‰):
- bin/airgenome --help: mac-only + hive redirect 라인 βœ…
- 6 stub λͺ¨λ‘ redirect λ©”μ‹œμ§€ + exit 64 βœ…
- launchctl: predictive-throttle + supervisor + menubar app 만 live βœ…
- modules: probe (mac-only) / harvest / label / predictive_throttle 만 μž”μ‘΄ βœ…
- filters/transport/: ssh.hexa 제거, base+client+anomaly μž”μ‘΄ βœ…
- probe live: scope=mac-local, hosts.mac 만 기둝 βœ…
- label self-test PASS, harvest live: anomaly_total=3 βœ…

Residue (μ˜λ„μ  μž”μ‘΄):
- bin/ag_meta + bin/open-on-mac: 주석 λ‚΄ ssh/host μ–ΈκΈ‰ (μ‹€ runtime path μ•„λ‹˜)
- bin/menubar_launcher.m: ObjC UI κ°€ hosts[@"ubu1"|@"ubu2"] 읽음 β†’ 이제 nil
  λ°˜ν™˜ β†’ 0 ν‘œμ‹œ (graceful degradation, 좩돌 μ—†μŒ). hive μΈ‘ menubar 톡합 μ‹œμ μ—
  별도 commit 으둜 정리 μ˜ˆμ •.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…pe-reduce

infra_state.json κ°€ mac-only κ°€ λ˜μ–΄ (probe.hexa scope-reduce 2026-04-25)
ObjC menubar κ°€ hosts[@"ubu1"|@"ubu2"|@"htz"] λ₯Ό nil λ°˜ν™˜λ°›μ•„ 빈 0 bar λ₯Ό
ν‘œμ‹œν•˜λ˜ silent residue 정리.

λ³€κ²½:
- snapshot: hosts[ubu1|ubu2|htz] 읽기 블둝 제거; mac-only 만 μž”μ‘΄
- composeTitle: 4-bar (mac/ubu1/ubu2/htz) β†’ 1-bar (mac) 둜 μ••μΆ•
- buildMenu: u1Line/u2Line/htzLine 제거, "cross-host: hive `/resource list`"
  μ•ˆλ‚΄ 주석 1쀄

검증:
- bin/build_menubar.sh OK (clang link β†’ airgenome-menubar 266624 bytes)
- DEPLOY=skip bin/build_app.sh OK (bundle + adhoc codesign 톡과)
- test_menubar smoke gate PASS (heartbeat refresh 검증)

Deploy λŠ” μ‚¬μš©μž κ²°μ • β€” `bin/build_app.sh` (DEPLOY=do default) 둜
/Applications/Airgenome.app ꡐ체 + launchd rebootstrap.

Build infra side note: build/artifacts/native/exec_argv_sha256.c κ°€
hexa-lang/self/native/ 보닀 stale ν–ˆμŒ (transpile fail 원인) β€” 별도 μˆ˜λ™
sync ν•„μš”. build/ μžμ²΄λŠ” gitignored.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…oss-host runtime logs

Tracked (git rm):
- scripts/e2e_sample.sh         M8 e2e soak sampler (5-stage 의쑴)
- scripts/e2e_eval.sh           M8 e2e soak evaluator
- forge/drill_corpus.jsonl      drill orchestration result (drill workflow gone)
- forge/e2e_samples.jsonl       M8 e2e accumulator

Untracked (rm; not in git, runtime residue):
- ~/.airgenome/ 21개 cross-host pipeline 둜그
  (compute_tick* / remote_load* / dispatch.std* / drill_corpus* / drill_smoke*
   / e2e_sample* / forecast.std* / forge_pull* / ring_sync*)
- forge/forecast.jsonl          forecast.hexa 좜λ ₯ (λͺ¨λ“ˆ μ‚­μ œλ¨)
- forge/genomes.ubu.ring        cross-host harvest ring (ubu1)
- forge/genomes.ubu2.ring       cross-host harvest ring (ubu2)
- forge/load_balancer.log       lb dispatcher (슀크립트 μ‚­μ œλ¨)

forge/ μž”μ‘΄ (mac-local SSOT):
- genomes.ring / labeled_anomaly.jsonl / predictive_throttle_state.json
- throttle_history.jsonl / settings_guard.* / compute_filter.*

Out-of-scope (별도 governance commit ν•„μš”):
- scripts/com.airgenome.compute-filter.plist + modules/filters/process/compute.hexa
  β†’ AG6 governance rule (rules/airgenome.json L0 paths) κ°±μ‹ κ³Ό ν•¨κ»˜ 처리
- .claude/settings.local.json L38 의 compute.hexa 호좜 κΆŒν•œ line

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Scope-reduction batch 5 μ—μ„œ .disabled-scope-reduce-20260425 suffix 둜
λ³΄μ‘΄ν–ˆλ˜ 10 plist + 사전 disable 된 forge-sync-from-ubu1.disabled-supervisor-
approach 영ꡬ μ‚­μ œ. git history κ°€ archive μ—­ν• .

λŒ€μƒ:
- compute-tick / daemons / dispatch / forecast / probe / remote-load
- drill-corpus / drill-smoke / e2e-sample / ring-sync
- forge-sync-from-ubu1 (.disabled-supervisor-approach)

μž”μ‘΄ disabled (별도 μ˜λ„, λ―Έtouch):
- harvest.plist.disabled-20260425
- label.plist.disabled-20260425

launchd/ ν™œμ„± plist (4):
- com.airgenome.plist (supervisor)
- com.airgenome.menubar.plist
- com.airgenome.improve-loop.plist
- com.airgenome.predictive-throttle.plist

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…alancer μ±…μž„ hive 이관

PR #77 follow-up. AG6 (Mac Compute ZERO when remote alive) + AG7 (load
balancer dispatch) 의 enforcement SSOT κ°€ hive .resource SSOT + workload_
router + load_balancer 둜 이관됨. λ³Έ repo 의 enforcement 경둜 dead.

Rules (rules/airgenome.json):
- AG6: status="superseded", l0_paths=[], ssot=[migrated]
  enforcement: "[SUPERSEDED 2026-04-25] compute.hexa + plist 제거; hive
  resource_scorer + workload_router κ°€ 흑수"
- AG7: status="superseded", l0_paths=[], ssot=[migrated]
  enforcement: "[SUPERSEDED 2026-04-25] modules/load_balancer.hexa dead;
  ~/core/hexa-lang/tool/load_balancer.hexa + hive lb-dispatch.ts 흑수"

Removed:
- modules/filters/process/compute.hexa  (AG6 enforcer; cross-host alive-check)
- scripts/com.airgenome.compute-filter.plist  (30s μ£ΌκΈ° launchd; λ―Έload μƒνƒœ)
- forge/compute_filter.{log,stderr,stdout}  (untracked, runtime residue)
- .claude/settings.local.json L29+L38  (compute-filter Bash κΆŒν•œ; gitignored,
  local-only edit)

AG2/AG3/AG4/AG8/AG9 도 missing module μ°Έμ‘° (ubu_bridge / load_balancer /
ssh_gate / resource_ceiling λ“±) β€” 별도 governance commit ꢌμž₯.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t enforcement μ±…μž„ hive 이관

cdd8f87 follow-up. AG6/AG7 supersede νŒ¨ν„΄μ„ cross-host μ •μ±… 5κ°œμ—
일괄 적용. enforcement λͺ¨λ“ˆμ΄ λͺ¨λ‘ dead μƒνƒœμ΄λ©° 동등 μ±…μž„μ€ hive
.resource SSOT + workload_router + load_balancer + docker-exec channel
둜 이관됨.

Rules β†’ status="superseded" + l0_paths=[] + ssot=[migrated]:

- AG2 Mac CPU μ ˆμ•½ (Ubuntu μ˜€ν”„λ‘œλ“œ)
  by: hive workload_router + resource_scorer
  evidence: modules/dispatch.hexa + ubu_bridge 호좜자 제거 (commits
            e0c644e / 692bfbb / 18370b6 / 8acdb23)

- AG3 Ubuntu-First heavy compute
  by: hive workload_router + .resource SSOT
  evidence: modules/{dispatch,forecast,genome_merge}.hexa + filters/
            transport/ssh.hexa 제거 (commit 18370b6)

- AG4 Hetzner 원격 launcher μΊ‘
  by: hive lb-dispatch.ts (concurrency cap + protected-PID 검증)
  evidence: bin/cx-core + drill-* + hexa_build_tick.sh 제거 (commit
            692bfbb)

- AG8 SSH 게이트
  by: hive docker-exec channel + lb-dispatch
  evidence: modules/filters/transport/ssh.hexa 제거 (18370b6),
            bin/{host,executor,remote_load,lb,lb_monitor}.sh 제거
            (e0c644e)

- AG9 λͺ¨λ‹ˆν„°λ§ 데이터 μ •ν™•μ„±
  by: hive .resource SSOT + resource_scorer
  evidence: cross-host probe 제거, modules/probe.hexa mac-only μΆ•μ•½
            (commit 18370b6). resource_ceiling/coordinator/
            infra_probe/monitor_test/load_balancer λͺ¨λ“ˆ dead.

filter_taxonomy λ™μ‹œ 정리:
- A_process_gate impl 이름 ν˜„ν–‰ν™”: safari_gateβ†’modules/filters/process/
  safari.hexa λ“± (6개 λͺ¨λ‘ _gate μ ‘λ―Έ 제거된 ν˜„μž¬ 경둜)
- B_host_balancing β†’ status="superseded" (impl=[]), hive 흑수
- C_transport β†’ status="superseded" (impl=[]), hive 흑수
- D_genome β†’ status="historical" (archive/v1/forge/ 만 μž”μ‘΄)
- E_data_reinterpret β†’ 변동 μ—†μŒ (active in modules/filters/data/)

_meta.updated 2026-04-23 β†’ 2026-04-25.

active rules (5): AG1, AG5, AG10, AG11, AG12-DRILL-CP-SURFACE
superseded (7): AG2, AG3, AG4, AG6, AG7, AG8, AG9

λ³Έ commit으둜 airgenome μΈ‘ governance scope-reduce μ™„λ£Œ. hive μΈ‘
drill-helper λ§ˆμ΄κ·Έλ ˆμ΄μ…˜(drill-progress/extract/resume/kill/live 5
도ꡬ) + /resource dispatch wiring κ°€ λ³Έ μ‹ ν˜Έλ₯Ό 트리거둜 μ§„ν–‰ κ°€λŠ₯.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
μ‚¬μš©μž directive 2026-04-25: 'airgenome 은 λ―Έλ‹ˆλ©€λ‘œ, 게이트 ν•„ν„°λ§Œ 놔두고'.

KEEP (26 files outside archive):
- modules/filters/process/  (6) β€” process gates (safari/claude/finder/memo/mail/calendar)
- modules/filters/data/     (9) β€” byte-reinterpret filters (claude_*/safari_*/sqlite_vacuum/quantum/vacuum_watcher)
- rules/                    (2) β€” governance SSOT
- archive/v1/               β€” frozen, untouched
- repo basics: .github/, .gitignore, LICENSE, README.md, .mcp.json
- governance markers: .own, .raw-ref, .metadata_never_index

DROP (223 files):
- bin/            (32) β€” supervisor, drill helpers, build scripts, init
- core/           (2)  β€” core.hexa engine
- modules/{harvest,label,probe,predictive_throttle}.hexa  (4)
- modules/filters/transport/  (3) β€” cross-host transport (post-scope-reduce dead)
- tool/ag_*.hexa  (29) β€” governance scanners
- scanners/       (8)  β€” meta scanners
- launchd/        (6)  β€” mac-local plists (LaunchAgents λ™μ‹œ unload + symlink rm)
- systemd/ docker/ hooks/ nexus/ state/ config/ convergence/ docs/ .playwright-mcp/
- install.hexa run.hexa project.hexa
- .roadmap .loop .hexa-init .convergence .prev_margin

Governance updated:
- AG1 (6μΆ• probe): superseded β€” probe.hexa 제거, hive resource_scorer 흑수
- AG12-DRILL-CP-SURFACE: superseded β€” bin/drill-* 제거, hive λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ˜ˆμ •
- _meta.scope = "minimal β€” gates/filters only"

Active rules (3): AG5 (filter taxonomy), AG10 (no hooks/skills), AG11 (proposal_inbox preflight)
Superseded (9): AG1/AG2/AG3/AG4/AG6/AG7/AG8/AG9/AG12

Runtime side-effects:
- launchctl bootout: com.airgenome.* 17 jobs unloaded
- ~/Library/LaunchAgents/com.airgenome.* symlinks: removed (52 files)
- airgenome supervisor + label.hexa background processes: terminated
- airgenome MCP server: disconnected (drill_release/drill_status/drill_touch/hooks_list/roadmap_*/rollback_to_last_green tools no longer available)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
build/mcp λ°”μ΄λ„ˆλ¦¬λŠ” minimal reduction μ—μ„œ 제거됨 (commit 01e6161).
.mcp.json 의 airgenome server μ—”νŠΈλ¦¬λŠ” dead pointer.

minimal scope ν›„ active rules (AG5/AG10/AG11) κ°€ λ―Έμ€€μˆ˜ν•˜λŠ” hook/skill/
MCP μžλ™μ—°κ²°λ„ λΆ€μž¬ β€” MCP server μžμ²΄κ°€ λΆˆν•„μš”. ν•­λͺ© 전체 폐기.

tracked outside archive: 26 β†’ 25.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
μ‚¬μš©μž directive 2026-04-25: 'ν•„ν„°λŠ” μƒμ‹œ, no kill, μ˜€λ‘œμ§€ 데이터 μž¬ν•΄μ„'.

Removed:
- modules/filters/process/{safari,claude,finder,memo,mail,calendar}.hexa  (6)
  process gate λŠ” kill/recall μ•‘μ…˜ β€” 'no kill' μœ„λ°˜.

Rules β†’ status="superseded":
- AG11 (inbox preflight): state/proposals/inventory.json λΆ€μž¬. λ³Έ repo μ™ΈλΆ€
  μž‘μ—… μˆ˜μ‹  μ±…μž„ μ—†μŒ (data filter μžμ²΄μ™„κ²°).
- filter_taxonomy.types.A_process_gate: implementations=[], 'no kill'
  directive 둜 μ±…μž„ 폐기.

_meta.scope = "minimal β€” data filters only post 2026-04-25 reduction.
process gates 제거 ('no kill' directive). cross-host execution β†’ hive."

active rules (2): AG5 (filter taxonomy), AG10 (no hooks/skills)
superseded (10): AG1/AG2/AG3/AG4/AG6/AG7/AG8/AG9/AG11/AG12-DRILL-CP-SURFACE

KNOWN BLOCKER (별건):
- modules/filters/data/*.hexa 9개 λͺ¨λ‘ try/catch expression μ‚¬μš©
  (예: `try { exec(x) } catch e { fallback }`).
- ν˜„ hexa 0.1.0-stage1 νŒŒμ„œ 미지원 β†’ 9/9 parse error.
- 이전 hexa 버전 의쑴. μ˜΅μ…˜:
  (a) 9 파일 try-less refactor
  (b) hexa-lang try/catch lang_gap proposal
- μ‚¬μš©μž κ²°μ • λŒ€κΈ° β€” λ³Έ commit scope μ™Έ.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…age1

Blocker resolved (commit bc38600 λ©”μ‹œμ§€μ—μ„œ 식별):
- 9개 filter 파일 λͺ¨λ‘ `try { exec(x) } catch e { fb }` ν‘œν˜„μ‹ μ‚¬μš©
- hexa 0.1.0-stage1 νŒŒμ„œλŠ” try/catch expression 미지원 β†’ 9/9 parse fail
- 'no kill, μƒμ‹œ' directive μΆ©μ‘± λͺ»ν•¨

Refactor:
- Pattern A: `try { exec(...) } catch e { fb }` β†’ `exec(...)`
  hexa exec() λŠ” throw μ•ˆ 함 (μ‹€νŒ¨ μ‹œ 빈 λ¬Έμžμ—΄ λ°˜ν™˜). catch λΆ„κΈ° dead.
- Pattern B: `try { s.to_int() } catch e { 0 }` β†’ `safe_int(s, 0)`
  to_int 은 non-int μž…λ ₯에 fatal-error. μƒˆ 헬퍼 safe_int(s, default) μΆ”κ°€
  (digit/`-` 검증 ν›„ to_int 호좜). vacuum_watcher.hexa μ—λ§Œ helper μΆ”κ°€.
- Pattern C: 닀쀑라인 `try { ... } catch e { ... }` β†’ 본체만
- Pattern D: `to_int(try { exec(...).trim() } catch e { "0" })` β†’ unwrap

Files changed (9):
  modules/filters/data/{claude_bytes, claude_compress, claude_quantum,
                        claude_runtime, quantum_bench, safari_bench,
                        safari_mmap, sqlite_vacuum, vacuum_watcher}.hexa

Verification:
  hexa parse modules/filters/data/*.hexa  β†’ 9/9 OK
  hexa run modules/filters/data/*.hexa    β†’ 9/9 startup OK (no parse/codegen errors)

active rules unchanged: AG5 (filter taxonomy), AG10 (no hooks/skills)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant