-
Notifications
You must be signed in to change notification settings - Fork 0
fix(noema): remove caller repair deadline and duplicate model call #1672
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
92 commits
Select commit
Hold shift + click to select a range
1907259
fix(noema): add repair-attempt telemetry, structured output, local JS…
seonghobae 4ed1334
fix(noema): match response_format probe-count floor to validate_subst…
seonghobae f4a8b0e
chore(noema): reconcile repair telemetry with protected main
seonghobae 58052ab
fix(noema): repair live review findings
seonghobae 4c84a4c
ci(pr1672): verify exact Noema remediation
seonghobae f3e2bed
fix(noema): harden temporary repair replacement semantics
seonghobae 749bdae
fix(noema): normalize generated regression EOF
seonghobae b26ec64
fix(noema): add exact-head follow-up remediation
seonghobae 8d28205
fix(noema): wire exact-head follow-up repair
seonghobae f975738
fix(pr1672): add current-head Noema review remediation
seonghobae 3bf448b
ci(pr1672): verify current-head Noema remediation
seonghobae b648b2d
ci(pr1672): target existing focused Noema tests
seonghobae d5db588
fix(noema): remove competing branch writer
seonghobae 54103ec
test(pr1672): align fixtures with reviewed timeout contract
seonghobae 5649e4f
fix(noema): add missing-value JSON repair remediation
seonghobae 57e33a0
ci(pr1672): verify fixture reconciliation
seonghobae abe260e
fix(noema): serialize current-head remediation
seonghobae b66c47d
ci: materialize PR1672 fixed-timeout repair
seonghobae fbc0361
ci: retire failed PR1672 deadline repair driver
seonghobae ce9df6e
ci: retry PR1672 fixed-timeout repair with locked deps
seonghobae 6661049
test(noema): reject heuristic probe allocation
seonghobae db8329e
fix(noema): stage exhaustive probe allocation repair
seonghobae 97e26bd
ci: execute PR1672 no-heuristic probe repair
seonghobae 1e029a3
ci: trigger PR1672 no-heuristic probe repair
seonghobae bf547a2
fix(ci): parse PR1672 no-heuristic source fix
seonghobae 40ddb90
ci: retrigger PR1672 current-head owner repair
seonghobae 0d611b7
ci: retrigger PR1672 exhaustive probe repair
seonghobae e15bba4
chore(noema): reconcile PR1672 with protected main
seonghobae 9bd1496
ci: retrigger PR1672 exhaustive probe repair after restack
seonghobae 6f2c936
chore(noema): retire completed PR1672 repair machinery
seonghobae 6330611
ci: materialize PR 1672 reviewer fixes
seonghobae 62d71a5
ci: repair PR 1672 one-shot writer syntax
seonghobae d9dc75e
test(noema): prove heuristic review policy fails closed
seonghobae 99a079c
chore(noema): add exact no-heuristics repair driver
seonghobae e106e82
ci: retire superseded PR 1672 repair workflow
seonghobae d3ab72c
ci(noema): add no-heuristics source repair
seonghobae fd3bd51
chore(noema): trigger no-heuristics source repair
seonghobae b39d4ce
fix(noema): drop unbounded exhaustive repair materializer
seonghobae a76853b
test(noema): remove impossible exhaustive-evidence RED
seonghobae f14b0e6
test(noema): require fail-closed evidence policy without quotas
seonghobae 556a179
ci: retire incompatible PR 1672 source-fix workflow
seonghobae 0f10a22
ci: remove incompatible PR 1672 source-fix trigger
seonghobae b578986
chore(noema): restore fail-closed no-heuristics repair driver
seonghobae f6468bc
ci(noema): restore fail-closed source repair
seonghobae afdb8aa
chore(noema): retrigger fail-closed no-heuristics repair
seonghobae dc9dea6
chore(noema): retire invalid PR1672 repair machinery
seonghobae 608e636
merge(main): reconcile PR #1672 with protected main
seonghobae ed457ad
test(noema): reject caller-owned fixed model timeout
seonghobae 6f1b4ce
ci(pr1672): materialize no-fixed-timeout owner repair
seonghobae 451a900
test(noema): forbid caller retry and sampling heuristics
seonghobae a1511e3
fix(noema): expand source-fix to remove caller model heuristics
seonghobae b5842f3
fix(noema): repair retry-specific source-fix fallout
seonghobae 97d993a
ci(noema): retire unsafe self-modifying repair workflow
seonghobae f42a9d4
repair(noema): stage single-request causal-owner materializer
seonghobae ea048c3
repair(noema): run exact-head single-request materializer
seonghobae 3e524d3
fix(ci): preserve successor checks for PR1672 repair
seonghobae efb7576
merge(main): reconcile PR #1672 Noema repair lane onto current protec…
seonghobae 428b94d
fix(noema): make PR1672 materializer match exact head
seonghobae 63cc6d3
fix(noema): make PR1672 one-shot retirement valid
seonghobae b606ecc
fix(noema): repair PR1672 exact-head materializer transform
seonghobae 5757529
fix(noema): anchor PR1672 materializer by unique labels
seonghobae df4fe8e
fix(noema): retire stale repair-retry exception in PR1672
seonghobae 13f7f7d
fix(noema): make PR1672 materializer literal and idempotent
seonghobae 5ea2048
fix(noema): retire stale repair exception in materializer
seonghobae 6c39974
fix(noema): remove stale retry doc token in materializer
seonghobae 6bb1d52
fix(noema): restore valid source-fix workflow indentation
seonghobae e9f77f0
fix(noema): remove decorated retry tests atomically
seonghobae e153a21
test(noema): align legacy failures with single-request owner
seonghobae da83599
fix(noema): materialize single-request stale-test contract
seonghobae 3c3ae6c
ci(noema): run parseable single-request repair
seonghobae 0df1116
fix(noema): normalize single-request repair output
seonghobae 7695037
ci(noema): verify normalized single-request repair
seonghobae a29cf4c
fix(noema): require workflow-starting credential for source repair
seonghobae a837cf1
ci(noema): retrigger exact-head owner repair
seonghobae e3b07f2
merge(main): reconcile Noema single-request repair lane
seonghobae 75dffb7
fix(actions): require workflow-capable token for PR 1672 publisher
seonghobae 96daa27
docs(noema): repair markdownlint findings
seonghobae 97bc3d5
fix(actions): narrow PR 1672 publisher permissions
seonghobae 87a05b7
fix(noema): normalize generated repair outputs
seonghobae bc2f164
chore(noema): retrigger exact-head owner repair
seonghobae 390173e
fix(noema): retire completed timeout source-fix debris
seonghobae d389e82
ci(noema): surface exact coverage gaps after owner repair
seonghobae be22a5e
test(noema): cover lossless repair and invalid model metadata edges
seonghobae 43ae025
ci(noema): validate permanent model-output edge regressions
seonghobae bf3ddd2
fix(ci): keep PR1672 publish credentials out of git URLs
seonghobae 9a2895b
fix(ci): publish verified PR1672 source without workflow-token depend…
seonghobae d4199e3
ci(noema): retrigger verified PR1672 materialization
seonghobae 097d652
fix(ci): isolate verified PR1672 source publication from workflow cle…
seonghobae e5ca5e3
ci(noema): retrigger isolated PR1672 source publication
seonghobae 73ab4a1
fix(ci): route PR1672 publisher through registered source-fix workflow
seonghobae a7fac6b
fix(noema): delegate repair ownership to orchestrator
github-actions[bot] db13a2d
merge(main): reconcile verified Noema repair and retire publishers
seonghobae File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| # Noema single-request review incident and telemetry contract | ||
|
|
||
| ## Incident | ||
|
|
||
| On 2026-09-02, a required Noema review reported only a caller-owned 900-second repair deadline after a malformed structured response. The bound had no owner-specified or measured basis and conflicted with ADR-0003: model inference and repair verdict calls do not carry repository-authored fixed wall-clock deadlines. | ||
|
|
||
| ```text | ||
| initial malformed structured response -> repository repair request -> fixed 900-second abort | ||
| ``` | ||
|
|
||
| The later review established a second ownership error: `contextual-orchestrator` already owns structured-output validation and its governed repair/failover. Issuing another repository-side model request duplicated that policy and could turn one gateway failure into two expensive calls. | ||
|
|
||
| ## Final executable contract | ||
|
|
||
| Noema now sends exactly one structured-output request to the configured gateway. GitHub Actions fixes the model alias to `orchestrator/free`; the caller declares no provider, paid fallback, sampling temperature, or fixed inference timeout. `contextual-orchestrator` owns provider discovery, capability routing, structured-output repair, failover, and upstream completion. The repository remains responsible for deterministic local validation and exact-head publication. | ||
|
|
||
| Every gateway call emits exactly one passive Actions annotation. Success and failure annotations include caller attempt count, elapsed duration, active phase (`connecting`, `reading`, `decoding`, or `validating`), and a best-effort serving-model identifier. Serving-model text is secret-scrubbed, control-character-normalized, UTF-8 printable, and bounded before it can reach an annotation. Raw model output is never logged. | ||
|
|
||
| The local trailing-comma parser remains a deterministic syntax transform only. It may remove a genuine trailing comma after a complete JSON value, but missing-value forms such as `[,]`, `{,}`, `[1,,]`, and `{"a":,}` remain invalid. The transform emits no second attempt-level annotation and never bypasses semantic verdict validation. | ||
|
|
||
| Exact changed-line diagnostics include the rejected path/line/side, an unambiguous array position, and a bounded nearest-line hint. This keeps a failed verdict repairable at the gateway without expanding the output contract to one record per changed line. | ||
|
|
||
| ## Ownership and failure scenes | ||
|
|
||
| ```text | ||
| Noema workflow -> local contextual-orchestrator sidecar -> orchestrator/free -> routed free candidate | ||
| -> one returned envelope -> local deterministic validation -> exact-head publication | ||
| ``` | ||
|
|
||
| If the gateway cannot produce a valid structured verdict, Noema fails closed after that one caller request. If the PR head moves during model work, the post-call exact-head check discards the stale verdict. If telemetry carries hostile model identifiers, annotation sanitization prevents CR/LF or surrogate data from becoming workflow commands or crashing the runner. | ||
|
|
||
| ## Verification | ||
|
|
||
| The permanent contract test forbids `NOEMA_REPAIR_DEADLINE_SECONDS`, `_repair_wall_clock_deadline`, `NoemaRepairDeadlineExceeded`, `signal.setitimer`, retry-only parameters/recursion, and caller-specified `temperature`. Focused regressions prove one request on success and failure, one annotation per attempt, safe serving-model telemetry, strict missing-value rejection, accepted genuine trailing commas, and preserved exact changed-line diagnostics. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.