Skip to content

Commit 3728f11

Browse files
committed
docs(handoff): refresh — C1 fix + RUST_LOG reset + redirector manifest, correct 3 stale points
This session (verification-first start): corrected 3 stale handoff points (HEAD position, fallthrough now in chart, ADR-145/146 already Accepted) and recorded the 4 work items completed: - C1 pre-reject live-inert bug fixed (bbcae7c) - RUST_LOG override reset to default - redirector v4.2-09 / ADR-153 manifest + image written (4f9782b) - handoff/memory refresh (this commit) Open items reframed: redirector go-live (human 4c: build+deploy+E2E+iptables backend check+D3 decision), C1 live reactivation (human image rebuild+deploy), uncommitted ADR-153 Status edit (human's). memory: +project_c1_prereject_inert_prod, +project_v4_2_09_redirector; updated project_v4_2_07_continuation (145/146 Accepted). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 4f9782b commit 3728f11

1 file changed

Lines changed: 27 additions & 25 deletions

File tree

docs/SESSION-HANDOFF.md

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
1-
# Athena 2.0 — Session Handoff (2026-06-11)
1+
# Athena 2.0 — Session Handoff (2026-06-11, refreshed)
22

33
> 貼到下個 session 作起手 context。本檔**不是** live 權威 —— **ROADMAP.yaml 才是**(ADR-144)。memory 亦已更新(見文末)。
4+
> 本次 refresh 修正了前一版 3 處 stale(HEAD 位置、fallthrough 入 chart、ADR-145/146 已 Accepted)。
45
56
## 現狀快照
6-
- **branch**: `athena-2.0`(orphan,與 main 隔離)。HEAD ≈ `d246f8c2`(本機已 commit;push 由人類)。
7+
- **branch**: `athena-2.0`(orphan,與 main 隔離)。HEAD = `4f9782b1`(本機已 commit;push 由人類)。本 session 新增 2 commit:`bbcae7ce`(C1 fix)、`4f9782b1`(redirector)。
8+
- ⚠️ `docs/adr/ADR-153-*.md`**未 commit** 變更 = 人類 flip 的 Status→Accepted(由人類 commit;Claude 不碰 ADR 狀態)。其 Deciders 行與「狀態說明」段仍寫 Draft 字樣 → stale,待人類順手清。
9+
- **測試**`cargo test --workspace` = **397 passed / 0 failed**(基準 395 + C1 fix 的 2 條新 regression);`clippy --workspace --all-targets -D warnings` exit 0;`helm lint` 0 failed。
710
- **部署中**(k3s `athena-system`,kubeconfig `~/.kube/k3s-athena.yaml`):
8-
- `athena:v4.4.2`,env: `ATHENA_COMPLIANCE__FALLTHROUGH_EXPLOITS=true`(fall-through **ON**)、`ATHENA_ORIENT_TIMEOUT_SECS=300``RUST_LOG=info,athena_act=debug`(診斷用,可 reset)。**注意**:fallthrough/RUST_LOG 是 `kubectl set env` override,**未進 chart**→helm redeploy 會掉(ORIENT timeout 已入 chart;fallthrough 刻意沒入,因預設應 OFF=dark ship)。
9-
- `athena-msf-mcp:v2.0.7`(v2.0.8 含 vsftpd payload-gate **從未部署**——非必要,見 v4.2-15)。
10-
- **LLM**: gemma-3-12B-it-Q8_0 @ `192.168.0.18:8080`(llama.cpp,OpenAI-compat),athena 經 `OLLAMA_BASE_URL`。ORIENT schema 生成 ~172s→需 timeout 300s 才走 LLM(預設 60s 會 fallback)。
11-
- ****: Metasploitable-2 `192.168.0.28`;reverse callback host `192.168.0.11`。op 2dec6685 的 **session 1 可能仍活**(reverse shell,會自然死)。
12-
- **測試**:`cargo test --workspace` = **395 passed / 0 failed**;`clippy --workspace --all-targets -D warnings` exit 0。
11+
- `athena:v4.4.2`(pod `athena-7fc778d6bc-*`,本 session reset RUST_LOG 後 rolled)。env: `ATHENA_COMPLIANCE__FALLTHROUGH_EXPLOITS=true``ATHENA_ORIENT_TIMEOUT_SECS=300`**RUST_LOG override 已移除**(reset 回 default → binary `info` fallback,減噪音)。
12+
- **fallthrough 現已入 chart**([values.yaml](deploy/helm/athena/values.yaml) `mcp`… 不,在 `config.compliance.fallthroughExploits: false`,預設 OFF=dark-ship)→ helm redeploy **不再「掉光」**,而是 revert 成 default OFF;要保持 ON 設 helm value `config.compliance.fallthroughExploits=true`(非再靠 kubectl set env)。ORIENT timeout 亦入 chart。
13+
- `athena-msf-mcp:v2.0.7`(已入 chart values.yaml;live-validated op 2dec6685)。v2.0.8(vsftpd payload-gate)**從未部署**——非必要(見 v4.2-15)。
14+
- ⚠️ **本 session 的 C1 fix 與 redirector 都尚未 live**:兩者都只落 code/manifest,要生效需人類 build image + deploy(見未完成)。
15+
- **LLM**: gemma-3-12B-it-Q8_0 @ `192.168.0.18:8080`(llama.cpp,OpenAI-compat),athena 經 `OLLAMA_BASE_URL`。ORIENT schema 生成 ~172s→需 timeout 300s 才走 LLM。
16+
- ****: Metasploitable-2 `192.168.0.28`;reverse callback host `192.168.0.11`
1317

14-
## 🎯 本 session 達成(勿重做)— headline: fall-through 端到端 live
15-
- **v4.2-16 ACT multi-exploit fall-through**(ADR-151)+ **v4.2-17 C3 AthenaError**(ADR-152)— **live 驗到**(op `2dec6685`):gemma pin vsftpd→fall-through 接管→samba reverse shell(session 1)。**拿 shell 從賭運氣變設計保證。** flag 預設 OFF、live ON。
16-
- **2 個設計缺口只在 live op 現形**(單元測試+code review 都沒抓到):D5 carve-out(gemma 必 pin valid module→原「pinned 就跳過」使 fall-through 變 no-op)、aux 候選污染(RiskScorer 壓 reverse exploit 到 aux 登入模組之下、占滿 cap)。皆已修(commits `432adc4d`/`f586933f`)。
17-
- **v4.2-11 provenance facts****live 驗到**(同 op):`/facts` 自證 reverse(module/payload/tunnel)。ADR-146 provenance gap 收。
18-
- **v4.2-05 C2 fence 跨輪****live 驗到**(chain-proof,op `2dec6685` iter `6a0e8e5e`):真 session_exec→`exec.output` provenance=ShellOutput→fence 觸發條件成立;中和邏輯單元已證。
19-
- **v4.2-15****標 superseded**:headline(vsftpd 失敗→無 shell)已被 fall-through 取代;防禦修復(`_normalize_options` payload-gated)已 commit `e5dcdcdf`
20-
- **ORIENT timeout 入 chart**(`dd1aaf2a`)、**redirector ADR-153 + SPEC-v4.2-09 草稿**(Draft,gated)。
18+
## 🎯 本 session(refresh)達成 — 4 項全完成(headline 全在前幾 session 已達成,本次為收尾+硬化)
19+
1. **C1 pre-reject live-inert bug 修復**(commit `bbcae7ce`):發現「completed」的 JSON-Schema pre-reject(ADR-148/v4.2-03)在 live **其實 OFF** —— [http.rs](crates/athena-mcp-client/src/http.rs) `list_tools()` 對單一未部署工具(9104=privesc-check,athena 經 `default_tool_urls` seed 全部 DEFAULT_TOOL_PORTS 但 lab 只部署 nmap+msf)`?`-propagate → 全域 fail-open + 永不快取 → 每輪重試。修法=per-container skip-and-merge;2 條新測試;397 pass。詳見 memory [[project_c1_prereject_inert_prod]]
20+
2. **RUST_LOG reset**:移除 `kubectl set env``info,athena_act=debug` override → binary `info` fallback。pod 已 rolled,Running。
21+
3. **redirector v4.2-09 / ADR-153 manifest + image**(commit `4f9782b1`):ADR-153 **Accepted**(人類拍板 P1 NET_ADMIN+D5 / P2 LPORT 4444-4544 / P3 node IP)。寫了 values `mcp.redirector` 區塊 + tools.yaml hostNetwork 耦合 `not redirector.enabled` + `redirector.yaml`(Deployment NET_ADMIN+D5 / egress NetworkPolicy / headless Service) + `mcp-containers/athena-redirector/`(alpine+iptables image + entrypoint + README)。`helm template`(on/off 皆正確)+`lint` 過。詳見 memory [[project_v4_2_09_redirector]]
22+
4. **handoff/memory 3 處 stale 修正**(本檔 + memory)。
2123

22-
## 🔴 未完成 — 帶去新 session(都卡人類決策/外部,非 Claude 能單推)
23-
1. **v4.2-09 redirector**(ADR-153 Draft):真安全強化(msf-mcp hostNetwork 繞 CNI、deny NetworkPolicy 無效)。lab v1 封堵(automountSAToken:false+allowed_cidrs)已在→**低急迫****要你決策**:(a) 接受 NET_ADMIN privileged redirector? (b) LPORT 範圍(建議 4444-4544)? → 你 Accept ADR-153 後 Claude 寫 manifest(純 Helm,~120-180 LOC)。**唯一有實質價值的 gated 項。**
24-
2. **v4.2-15 vsftpd-direct**(superseded 殘留,optional/低價值):若**真要**驗 vsftpd 本身落地→build/deploy msf-mcp v2.0.8 + 跑 op(runbook `docs/v4.2-15-live-decision-runbook.md`)。fall-through 已覆蓋拿-shell→**建議不做**
25-
3. **v4.2-04 winrm/cred + B5**(pending):**Windows/AD 靶**(lab 沒有)→零進度。B5 容器 logging 你已 deferral
26-
4. **Tier-4 endpoint prune**(非正式 id):低價值(ADR-150 政策=無 in-repo caller≠死、預設保留)。**建議不做**,除非你要刻意瘦 API 且能逐 endpoint 確認外部 client
27-
5. **觀測 follow-up**(非阻斷):fenced `ctx.obs_summary` 不被 log、`GET /observe/summary` 是 raw 路徑不 fence(僅供 human、非 LLM 輸入故非安全問題)→日後可加 engine OBSERVE debug log 使 C2 fence 可審計
24+
## 🔴 未完成 — 帶去新 session(都卡人類 build/deploy/決策,非 Claude 能單推)
25+
1. **redirector v4.2-09 上線(4c,人類)**:manifest 已就緒,剩 (a) build `athena-redirector:v0.1.0` import 到 node `.11`(pullPolicy:Never);(b) `helm upgrade --set mcp.redirector.enabled=true` + msf-mcp `scale 0→1`(避 hostNetwork port deadlock);(c) 跑授權 reverse op 驗 session 經 redirector DNAT 落地 + overlay msf-mcp→postgres/k8s-API **被 block**(收 ADR-140 line 127)**部署時必查**:alpine iptables-nft vs node legacy backend → 不一致則 DNAT 靜默 no-op(改 Dockerfile 用 iptables-legacy)。**決策**:要不要做 D3 server.py LPORT clamp(目前靠 msf 預設 4444∈range;clamp 是 server.py 邏輯改動,本 session 刻意未做)?
26+
2. **C1 pre-reject live 復活(人類)**:fix 是 code-only(`bbcae7ce`),跑中的 image 還沒這修 → 需人類 rebuild athena image(`./scripts/build-push.sh <tag>`)+ deploy 才在 live 復活。低急迫(pre-reject 是硬化,非阻斷)
27+
3. **v4.2-04 winrm/cred + B5**(pending)**Windows/AD 靶**(lab 沒有)→零進度。
28+
4. **(次要)port 表不一致**[http.rs:115](crates/athena-mcp-client/src/http.rs#L115) `osint=9103` vs [registry.rs:65](crates/athena-mcp-client/src/registry.rs#L65) `9104` 對不上 → 需以 docker-compose.mcp.yml 為準 reconcile,本 session 未動(不盲改)
29+
5. **Tier-4 endpoint prune / 觀測 follow-up**:低價值,同前版,建議不做或等外部觸發
2830

2931
## 關鍵 context & 鐵則
3032
- **Claude scope**:程式碼 + 文件 + **cluster app-ops**(kubectl set-image/set-env/scale/rollout/logs,經 `~/.kube/k3s-athena.yaml`)+ 判讀 + 補 Evidence。**不 build/import image、不跑 live op(開火 token 是人類)、不 push、不改 ADR 狀態(Draft→Accepted 只人類)、不 node ssh。**
31-
- **Live 分工**:人類 build/import image(`./scripts/build-push.sh <tag>`→node `.11`,pullPolicy:Never)+ 開火 op(curl POST `http://192.168.0.11:30580/api/operations`,Bearer = `athena-secrets``ATHENA_API_TOKEN`)。換 msf-mcp(hostNetwork)用 **`scale 0→1`** 避 port deadlock。
32-
- **Live debug 旋鈕(本 session 學到,重要)**:`RUST_LOG=info,athena_act=debug` 才看得到 fall-through log(athena_act INFO 預設被濾)。**直查 postgres facts 表免 token**:`kubectl exec deploy/postgres -- psql -U athena -d athena`(欄位 `operation_id`/`trait_name`/`fact_value`/`provenance`)。
33-
- **`/iterate` 是 SYNC**(curl block 整輪 ~3min);支援 `mode=operator_override`+`operator_techniques`(T-code)強制 technique、bypass LLM ORIENT
33+
- **Live 分工**:人類 build/import image + 開火 op(curl POST `http://192.168.0.11:30580/api/operations`,Bearer = `athena-secrets``ATHENA_API_TOKEN`)。換 msf-mcp(hostNetwork)用 **`scale 0→1`** 避 port deadlock。
34+
- **Live debug 旋鈕**:`RUST_LOG=info,athena_act=debug` 才看得到 fall-through log(現已 reset 回 default;要 debug 再 set 回)。**直查 postgres facts 表免 token**:`kubectl exec deploy/postgres -- psql -U athena -d athena`(欄位 `operation_id`/`trait_name`/`fact_value`/`provenance`)。
35+
- **`/iterate` 是 SYNC**(curl block 整輪 ~3min);支援 `mode=operator_override`+`operator_techniques`(T-code)。
3436
- **Governance(鐵則)**:ADR 狀態只人類可改;Draft ADR 禁寫對應生產碼;push/helm/docker push/node ssh 是人類動作。
35-
- **memory** 新增:`project_v4_2_16_fallthrough_live`(fall-through live + 2 個 live-found 缺口的教訓:自主迴圈功能只有對真模型 live op 才測得出 + debug 旋鈕)。其餘既有 memory 仍有效。
37+
- **memory** 新增:[[project_c1_prereject_inert_prod]][[project_v4_2_09_redirector]];更新:[[project_v4_2_07_continuation]](ADR-145/146 已 Accepted)。其餘既有 memory 仍有效。
3638

3739
## 下次 session 建議起手
38-
**headline 全達成,無急事** 若要推進:唯一有實質價值的是 **redirector(v4.2-09)**——你給 NET_ADMIN + LPORT 決策,Claude Accept-後寫 manifest。其餘(v4.2-04 Windows 靶 / Tier-4 低價值 / v4.2-15-direct optional)建議不做或等外部觸發。也可考慮把 `RUST_LOG` reset 回 default 減 log 噪音(瑣事)
40+
**4 項收尾全完成,Claude 端無待辦** 球在人類:(1) redirector 上線 E2E(唯一有實質價值的下一步,需 build+deploy+跑 op);(2) 順手 commit ADR-153 Status 變更 + 清其 Draft 殘留字樣;(3) 想的話 rebuild athena image 讓 C1 fix live 復活。其餘(v4.2-04 Windows 靶 / port 表 reconcile / Tier-4)建議不做或等外部觸發。

0 commit comments

Comments
 (0)