Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8155d50
test(noema): reproduce malformed verdict failure classification
seonghobae Sep 1, 2026
35a0f4b
chore(noema): stage exact #1617 source repair
seonghobae Sep 1, 2026
145cc5f
chore(noema): run and retire #1617 source repair
seonghobae Sep 1, 2026
adcf7da
chore(noema): use explicit 24.04 repair runner
seonghobae Sep 1, 2026
161f06e
test(noema): align repair timeout fixture with new contract
seonghobae Sep 1, 2026
b4ec3b0
test(noema): execute repair-timeout fixture update
seonghobae Sep 1, 2026
7a06865
fix(noema): preserve no-timeout repair contract
seonghobae Sep 1, 2026
859491e
test(noema): add true wall-clock repair deadline regression
seonghobae Sep 1, 2026
d7a78c7
fix(ci): make Noema repair workflow fail-closed and self-cleaning
seonghobae Sep 1, 2026
59e3151
test(noema): close repair deadline coverage gaps
seonghobae Sep 1, 2026
f380904
fix(ci): verify all Noema repair deadline branches
seonghobae Sep 1, 2026
fbe6024
fix(noema): close reviewed model-output repair gaps
seonghobae Sep 1, 2026
8721ccf
fix(ci): bind Noema repair to exact head and reviewed scope
seonghobae Sep 1, 2026
d8bb1ff
fix(ci): harden Noema 1617 repair writer boundary
seonghobae Sep 1, 2026
ed2a5fe
fix(noema): align stable repair diagnostics
seonghobae Sep 1, 2026
4a7005d
fix(noema): preserve actionable safe repair diagnostics
seonghobae Sep 1, 2026
312df94
fix(noema): repair changelog transform drift
seonghobae Sep 1, 2026
11b6b4e
fix(noema): make repair trace updates drift-safe
seonghobae Sep 1, 2026
b7fc695
fix(noema): preserve request-changes structural diagnostic
seonghobae Sep 1, 2026
aa4ec46
fix(noema): document repair deadline callback
seonghobae Sep 1, 2026
0b33b0b
fix(ci): grant one-shot Noema repair writer token
seonghobae Sep 1, 2026
17c28a8
chore(ci): retrigger verified Noema repair writer
seonghobae Sep 1, 2026
430a007
fix(noema): bound and classify malformed-verdict repair
github-actions[bot] Sep 1, 2026
ae75b1d
test(noema): preserve existing process alarm authority
seonghobae Sep 1, 2026
5bc790d
Merge current main into Noema model-output repair
seonghobae Sep 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions docs/doctoring/noema-model-output-repair-boundary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Noema model-output repair boundary

## Incident

On 2026-09-01 the required Noema review for `ContextualWisdomLab/naruon#1505` reached deterministic verdict validation, rejected an adversarial-probe `outcome` outside the closed `falsified|confirmed` domain, then spent the repair path on a long second model call that ultimately surfaced only `HTTP 502 Bad Gateway`. That final transport symptom erased the more informative first trusted-validator failure from the top-level diagnostic.

## Decision

1. Model-produced JSON/envelope/schema/semantic-contract failures are `NoemaModelOutputError`; they remain fail-closed and are not consumer-source findings.
2. The primary review keeps the accepted contextual-orchestrator no-fixed-inference-timeout contract. The *single corrective attempt* is different: it repairs an already-completed verdict and therefore has one 900-second process-level wall-clock deadline across open/read/decode/validation. It deliberately does not use `urllib`'s renewable socket-operation timeout.
3. A corrective transport failure is `NoemaTransportError` and carries the sanitized first validator diagnostic plus the later transport exception class/status. Raw model output is never copied into public Actions diagnostics.
4. Exact-head validation before retry and before publication remains mandatory. All model traffic remains on contextual-orchestrator `orchestrator/free`.

## Verification

The #1617 regression first proved RED because `NoemaModelOutputError` did not exist. The repair adds focused cases for malformed-verdict typing, malformed-then-502 evidence preservation with the 900-second repair-only timeout, and repeated malformed output remaining typed and non-passing. The repository full coverage/docstring gate is run before the one-shot repair workflow commits the result.

## References

Fielding, R., Nottingham, M., & Reschke, J. (2022). *HTTP semantics* (RFC 9110). Internet Engineering Task Force.

Python Software Foundation. (2026). *urllib.request — Extensible library for opening URLs*. Python 3 documentation.


## Actionable diagnostic boundary

Corrective prompts need the deterministic *class* of a malformed verdict to repair it,
but do not need arbitrary model-produced values. Trusted structural validator messages
(such as a missing required field or an invalid adversarial-probe outcome class) remain
available after secret scrubbing. Unsupported decision values and unknown model-output
text are redacted to stable diagnostics, and a repeated invalid-model exception is raised
without retaining the raw model exception as an explicit cause. Tests use a sentinel value
to prove it reaches neither the retry prompt nor the final diagnostic.
Loading
Loading