Files
solution-erp/docs/governance/adap-reports/2026-07-13-Governance-presence-not-age-reinject.md
pqhuy1987 81b59f0389
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m23s
[CLAUDE] Workflow: adopt presence-not-age selector guardrail + rec-3 hmw.js STOP-HARD (S115)
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>
2026-07-13 12:25:24 +07:00

41 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).