[CLAUDE] Workflow: adopt presence-not-age selector guardrail + rec-3 hmw.js STOP-HARD (S115)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m23s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m23s
Adopt AI_INFRA 2026-07-13 broadcast ab6c387e (presence-not-age selector, type=update) + directed 6c32df89 rec-3, via /fable-clone 5-lane reviewer ensemble (wf_b621aac4-f0b) -> spec -> /fable-real deep-pass (PASS-WITH-FIXES, M1+M2 applied) -> HMW execute (em-main solo; governance single-writer D9). D2 (hmw.js): unknown-role fail-soft-WARN -> up-front STOP-HARD throw (before parallel; preserves null/'' role-less inherit-lead path). node --check + stub 7/7. Doc-sync 5 live lines (ultra-on/README/harness-11-engine/runbook). D3 (memory-archive-gate.ps1): value_protect advisory-flag -> pre-selection HARD-SKIP (value-primary; heading-only spans; non-contiguous byte accum) + value-floor WARN. Fault-inject ALL PASS + real regression A7 242/242. DRY-RUN. D1 (reinject-ledger.md): presence re-verify stamp + 3 honest-notes + BUILD-GAP. Re-verify: reinject (i) + MFE age-band (iii) already COMPLIANT; only the archive-gate age-trace needed hardening. D3 = defense-in-depth codify, NOT leak-closure (9-token grep unchanged; em-main value-scan stays the guarantee). adap-report + email AI_INFRA (8b9dc5165d5a); inbox STAGE-2 processed. No new User-Mark (codify-only). #53 garble x1 (lane-4) recovered from disk, 0 loss. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,40 @@
|
||||
# adap-report — presence-not-age selector guardrail + rec-3 STOP-HARD (SE, S115)
|
||||
|
||||
- **Broadcast:** `2026-07-13-Governance-adap-update-presence-not-age-reinject` (body-hash `ab6c387e`, type=**update**) + directed `2026-07-13-ai_infra-to-se-approve-h22-h21mtv3-and-presence-notify` (body-hash `6c32df89`, rec-3).
|
||||
- **Self:** `se` · **Session:** S115 (2026-07-13) · **Lead:** Opus 4.8 (1M) Max (Fable outage).
|
||||
- **Verify:** whole-file + body-hash MATCH (`6c32df89b60a`, directed) — pulled to `broadcasts/inbox/`.
|
||||
- **Pipeline (H21 engine-đắt):** `/fable-clone reviewer` 5-lane ensemble (`wf_b621aac4-f0b`) → lead verify+synthesize → spec `runs/2026-07-13-presence-not-age-adopt/spec-…-13-07-2026.md` → `/fable-real reviewer` deep-pass (`spec-review-fable-real.md`, PASS-WITH-FIXES 0C/2M/5m; M1+M2 applied) → owner scope-decision **ALL-3** (AskUserQuestion) → HMW execute (em-main solo, governance single-writer).
|
||||
|
||||
## Re-verify verdict (the broadcast asks: re-verify the selector only)
|
||||
|
||||
| Floor | Verdict | Evidence |
|
||||
|---|---|---|
|
||||
| **(i) reinject by ABSENCE** | ✅ **COMPLIANT (no change)** | `reinject-ledger.md:12` floor-rot = `"ĐÃ-từng-ở-L1 ∩ CÒN-giá-trị ∩ RỚT-khỏi-L1"` (coverage-gap). CG-1 `reinjected` col = reinject-event rate-limiter/loop-breaker (≤1 per N=3), NOT age-rank → broadcast (iii) carve-out. |
|
||||
| **(iii) MFE age-band** | ✅ **COMPLIANT (no change)** | `mfe-eval.ps1` `$oldN` = `Write-Host`-only, no downstream consumer; denominator STATUS-gated. Drop-date test: changes a diagnostic count only. |
|
||||
| **(ii)+(iii) archive-gate** | ⚠️ **RED-FLAG → HARDENED** | `memory-archive-gate.ps1` PASS-1 drained oldest-by-position (age-proxy) with `value_protect` advisory-only → tripped the (iii) self-check. **Fixed:** value_protect promoted advisory-flag → **pre-selection HARD-SKIP** (value-primary; heading-only logical spans; non-contiguous per-entry byte accumulation) + value-floor WARN. |
|
||||
| **Part B (directed rec-3)** | ⚠️ **NEEDS-FIX → DONE** | `hmw.js` unknown-role fail-soft-WARN → up-front **STOP-HARD throw** (before `parallel()`; preserves null/'' role-less path) + 5 live-doc sync. |
|
||||
|
||||
## Acceptance evidence (fault-injection, not happy-path)
|
||||
- **D2 hmw.js:** `node --check` exit 0; stub 7/7 (typo→throw naming `#i`; `null`/`''`/omitted→**no throw** = role-less preserved; all-12-valid→no throw). Doc-sync: bare-token `default subagent` grep across 4 live docs → every hit synced-STOP-HARD or frozen-🧊-history (fable-real M1 fix: narrow regex false-PASSed `ultra-on:21` "cảnh báo" + `README:208`). `session-start.md` correctly untouched (no fail-soft rule there).
|
||||
- **D3 archive-gate:** temp-tree `-RepoRoot` fixtures → protected-big-at-top NOT drained (`afterEst 986 > 850`; old would give ~169); permutation-invariant (`1029==1029`); value-floor WARN fires; DRY-RUN preserved (0 mutated); A7 PASS-2 untouched. Real-data regression: 12 subs render, A7 242/242, exit 0.
|
||||
- **D1 reinject-ledger:** add-only stamp; `governance-detectors.ps1` 42 flags (0 new HIGH vs baseline).
|
||||
|
||||
## Tailored / SKIP (honest)
|
||||
- **SKIP as over-engineering (lane-5 + fable-real m2):** did NOT rewrite the reinject predicate (compliant), did NOT remove `keep_floor`/`value_protect`/mfe-age-band (all legitimate: recency-PROTECT-floor + value-gate + surfacing-flag). D3 = bounded reorder, no value-SCORING system.
|
||||
- **Alias-sync N/A for SE:** `/fable-real` (single) vs `/fable-clone` (ensemble) = deliberate H21 depth-toggle, not a conversational-vs-ensemble alias pair. No SE conversational alias to remove.
|
||||
- **No new User-Mark:** applies existing mark `RC-…10-29-11` (age=false-proxy) to the selector layer; codify-only (like H16/H17/H18).
|
||||
|
||||
## 3 honest-notes (broadcast §5 — kept in `reinject-ledger.md` + `budget.json`)
|
||||
1. Basis = ONE occurrence already fixed elsewhere → **proactive-prevention**, not a spreading SE incident.
|
||||
2. **SPECIFIC-APPLICATION**, not a new rule — SE was already presence/flag-based on 2 of 3 floors; only archive-gate needed hardening.
|
||||
3. Floor = **FUNCTION not FORM** — implemented in SE's own script shape; no hub structure copied.
|
||||
|
||||
## Honest caveats (no overclaim)
|
||||
- **D3 is defense-in-depth codify, NOT leak-closure:** the 9-token value grep is unchanged, so the spine/paraphrase leak (a high-value entry lacking any literal token) REMAINS; em-main value-scan of the whole proposed set stays the true guarantee. Hard-skip makes the DEFAULT value-first (structural), not the leak-eliminator.
|
||||
- **D2 swallow-to-null premise = inference** (`parallel()` is a Workflow-runtime builtin, not in-repo); up-front validation chosen for halt-independence, robust under both truth-values.
|
||||
- **Reinject per-item-L1-presence detection stays PARTIAL** (BUILD-GAP disclosed in-ledger) — MFE age-band counts present marks, not per-item drops.
|
||||
|
||||
## Meta
|
||||
- **#53 return-garble ×1** (fable-clone lane-4 Part B) → recovered from `sub-reviewer-4.md` (WRITE-lane garble ≠ lost work; 0 work lost).
|
||||
- **fable-real earned its keep:** caught **M2** (a real contiguity-inversion bug in em-main's D3 pseudocode) that the 5-lane ensemble missed.
|
||||
- **AS-10 residual:** `reviewer/MEMORY.md` self-written by the fable-real Agent-spawn → git-diff backstop caught, em-main verified faithful → KEPT (convention-not-mechanism, consistent with S95/S101).
|
||||
@ -517,7 +517,7 @@ args = {
|
||||
- `clone` = **N-lane ensemble tier-2** (multi-lens; để dành quota top-model cho lead — `fable-clone.md:8`).
|
||||
- ⚠️ **Cost-delta tùy runtime:** Fable DOWN → real vs clone 0 tier-delta (chỉ khác N-lane count). **Fable UP** → real=Fable-deep (đắt nhất/lần) ⟂ clone `tier:'opus'`=tier-2 (giữ quota Fable cho lead). Ghi honest theo probe (`harness-11-engine.md:332,334`).
|
||||
- [ ] 🧊 *(H19 retired)* **P5 cũ — scope-lock 2 vai** (`POSITION ∈ {reviewer, investigator-codebase}`, vai khác EXCLUDED).
|
||||
- [ ] **P5-mới (H21) — scope-lock = `ROLE_VALID`**: `INVOCATION.vai ∈ roster 12` do ANH gán (thiếu/lạ → hỏi anh, KHÔNG tự chọn); ⚠️ 2 monitor × lệnh-B → limitation K.E (fail-soft default-subagent). Ngoài lượt lệnh: mọi vai giữ model roster (H8 all-inherit), lead KHÔNG tự elevate (K.D mới). *Evidence:* vai lượt này + quote lệnh.
|
||||
- [ ] **P5-mới (H21) — scope-lock = `ROLE_VALID`**: `INVOCATION.vai ∈ roster 12` do ANH gán (thiếu/lạ → hỏi anh, KHÔNG tự chọn); ⚠️ 2 monitor ĐÃ vào VALID_ROLES=12 (S110) → hết limitation; vai-INVALID nay = STOP-HARD throw (REC-3 2026-07-13, KHÔNG fail-soft). Ngoài lượt lệnh: mọi vai giữ model roster (H8 all-inherit), lead KHÔNG tự elevate (K.D mới). *Evidence:* vai lượt này + quote lệnh.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -345,7 +345,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
|
||||
- **(i) Vai owner-gán per-invocation:** `<vai>` ∈ roster 12 (`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator`). Thiếu/sai vai → **em-main hỏi anh 1 dòng**, KHÔNG tự đoán. Hiệu-lực CHỈ lượt đó (không marker, không sticky-mode). ✅ **VALID_ROLES = 12 đủ roster (S110 anh-directed):** 2 monitor đã bổ sung (10→12) — lệnh-B trọn roster. *(🧊 limitation cũ "2 monitor ∉ 10-vai → fail-soft default-subagent" + H6-design "monitor ngoài workflow" superseded điểm này; monitor vẫn INFORM-only, lane RETURN-only.)*
|
||||
- **(ii) Spec-file pipeline (mỗi run engine-đắt PHẢI sinh):** `.claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md` — 3-heading CỐ-ĐỊNH: **[1] Tính-năng/đề-bài** (1–3 câu) · **[2] Cách implement** (bước + quyết-định + ràng-buộc + đường-chết) · **[3] Checklist** (vai + deliverable + acceptance đo được). Luồng: engine **propose-only** → lead **verify** → **LEAD ghi** (single-writer) → worker **Opus MAX** thực-thi THEO spec bơm qua `args` (`hmw.js` KHÔNG đọc file spec).
|
||||
- **(iii) 4 ghi-chú trung-thực (🔴 phải hiện-diện — nấc owner-gated, KHÔNG code-enforced §X8):**
|
||||
- **(a)** owner-gated tầng LỆNH + kỷ-luật lead, **KHÔNG code-enforced** — `hmw.js` không gate vai; đường code `tier:'fable'` vẫn tồn-tại. Bảo-đảm = MỌI đường truy về lượt owner-gõ (kỷ-luật), không phải guard chặn.
|
||||
- **(a)** owner-gated tầng LỆNH + kỷ-luật lead cho việc CHỌN/ELEVATE vai, **KHÔNG code-enforced** — đường code `tier:'fable'` vẫn tồn-tại, hmw.js KHÔNG ép vai-nào-được-elevate. *(REC-3 2026-07-13: hmw.js GIỜ code-enforce vai-INVALID — typo ∉ VALID_ROLES → STOP-HARD throw; đó là guard typo, KHÁC gate vai-elevation vẫn là discipline.)* Bảo-đảm elevation = MỌI đường truy về lượt owner-gõ (kỷ-luật), không phải guard chặn.
|
||||
- **(b)** lệnh/alias = cách anh **gán vai NHANH** — hệ **KHÔNG tự chọn vai**, vẫn phải anh gõ.
|
||||
- **(c)** spec-file do **lead ghi SAU khi verify** — engine không tự ghi.
|
||||
- **(d)** run **chấm/verify CŨNG sinh spec** (kế-hoạch xử issue = "cách làm" cần kết-tinh, không chỉ run implement).
|
||||
|
||||
Reference in New Issue
Block a user