Skip to content
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
ccedd00
test(judge): close accepted-type and ownership gaps
Aug 11, 2026
0721e55
feat: add cumulative threshold judge mode
Aug 11, 2026
79a8e83
fix: harden llm judge category bounds
Aug 11, 2026
8d89295
fix: normalize judge method validation
Aug 11, 2026
5c0dcd3
docs: distinguish proposed binding registry
Aug 11, 2026
11291fd
fix: harden judge result boundaries
seonghobae Aug 11, 2026
50f3a3d
test(docs): pin integrated maturity states
seonghobae Aug 12, 2026
c54706c
docs: align maturity with protected main
seonghobae Aug 12, 2026
9ebc322
docs: record inconclusive Strix evidence
seonghobae Aug 12, 2026
6c42d4a
fix: reject unhashable criterion identifiers
seonghobae Aug 12, 2026
d938704
docs: record current Strix evidence boundary
seonghobae Aug 12, 2026
d1d262b
docs: bind Strix evidence and usage contract
seonghobae Aug 12, 2026
54baec2
docs: use canonical maturity vocabulary
seonghobae Aug 12, 2026
8741eb1
test(judge): reject criterion description subclasses
seonghobae Aug 12, 2026
5697479
fix(judge): reject criterion description subclasses
seonghobae Aug 12, 2026
f04903e
test(judge): reject trace container subclasses
seonghobae Aug 12, 2026
3eecfaf
docs: record central workflow evidence boundary
seonghobae Aug 12, 2026
e41afa4
Merge remote-tracking branch 'origin/codex/fast-judge-accepted-type-r…
seonghobae Aug 12, 2026
630946c
fix(judge): isolate trace metadata hooks
seonghobae Aug 12, 2026
4f8c052
docs: record workflow contract reachability finding
seonghobae Aug 12, 2026
67d3cee
docs: record live gateway judge method sensitivity
seonghobae Aug 12, 2026
22f9b02
docs(adr): record local judge queue saturation
seonghobae Aug 12, 2026
2c4113a
docs(adr): record network transport boundary
seonghobae Aug 12, 2026
35f6aab
fix(jmle): recognize objective convergence and add recovery evidence …
seonghobae Aug 12, 2026
e7ce079
docs(adr): record trusted coverage transport blocker
seonghobae Aug 12, 2026
4e72fef
Merge remote-tracking branch 'origin/main' into codex/fast-judge-acce…
seonghobae Aug 12, 2026
e612550
test(jmle): exercise objective convergence guard
seonghobae Aug 12, 2026
0fb9e46
Merge branch 'main' into codex/fast-judge-accepted-type-regression
opencode-agent[bot] Aug 12, 2026
392e68f
docs(adr): record trusted Strix outage evidence
seonghobae Aug 12, 2026
e6e9221
Merge branch 'main' into codex/fast-judge-accepted-type-regression
opencode-agent[bot] Aug 12, 2026
98849d4
docs(adr): preserve trusted Strix outage evidence
seonghobae Aug 12, 2026
503f6b5
docs(research): preserve permissive OA judge-bias papers
seonghobae Aug 12, 2026
1918cb1
merge main into judge and Rust-ownership correction line after #800
seonghobae Aug 12, 2026
eeaef39
merge main into judge correction line after #802
seonghobae Aug 12, 2026
1a30f0e
Merge branch 'main' into codex/fast-judge-accepted-type-regression
opencode-agent[bot] Aug 12, 2026
24e4f11
Merge branch 'main' into codex/fast-judge-accepted-type-regression
opencode-agent[bot] Aug 12, 2026
e2ea229
merge: sync with main
seonghobae Aug 13, 2026
b7b519d
Merge branch 'main' into codex/fast-judge-accepted-type-regression
seonghobae Aug 13, 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
17 changes: 10 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,17 @@ print(fixed_item_calibration.best)
strict structured parsing. A judge result becomes an IRT row only through
LLMJudgeResult.to_irt_row() with at least two criteria, followed by
validate_irt_response_matrix() for a multi-item dichotomous or explicitly
categorized polytomous matrix. Equal-width score projection is experimental;
category-count and prompt-perturbation calibration are required. See
[ADR 0005](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/89bd5bf73319dd21f2be1f094eb2639bb8ead8f3/docs/planning/adrs/0005-irt-response-matrix-contract.md) and
[ADR 0006](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/89bd5bf73319dd21f2be1f094eb2639bb8ead8f3/docs/planning/adrs/0006-polytomous-llm-judge-bias-calibration.md) and
[ADR 0008](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/2b65d5c0f3d6bd64a9e05818f1f9286e98c334c1/docs/planning/adrs/0008-fast-judge-review-hardening.md).
categorized polytomous matrix. Equal-width direct K-way projection is
experimental; opt-in `category_method="cumulative_threshold"` evaluates each
ordered boundary with a strict Boolean vector and derives the category in the
adapter. Category-count and prompt-perturbation calibration remain required
for both methods. See
[ADR 0005](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/1b7dbd2a46533f41072def1fb94283147134cab5/docs/planning/adrs/0005-irt-response-matrix-contract.md),
[ADR 0006](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/1b7dbd2a46533f41072def1fb94283147134cab5/docs/planning/adrs/0006-polytomous-llm-judge-bias-calibration.md), and
[ADR 0008](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/1b7dbd2a46533f41072def1fb94283147134cab5/docs/planning/adrs/0008-fast-judge-review-hardening.md).
Cross-repository exact-head review, structured Strix evidence, and merge
policy are recorded in [contextual-orchestrator ADR 0004](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/befa094784e37947841948fb42016de7e6b965ab/docs/planning/adrs/0004-pr-review-merge-loop.md) and
[ADR 0009 dependency cooldown](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/befa094784e37947841948fb42016de7e6b965ab/docs/planning/adrs/0009-supply-chain-dependency-cooldown.md).
policy are recorded in [contextual-orchestrator ADR 0004](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/1b7dbd2a46533f41072def1fb94283147134cab5/docs/planning/adrs/0004-pr-review-merge-loop.md) and
[ADR 0009 dependency cooldown](https://github.com/ContextualWisdomLab/contextual-orchestrator/blob/1b7dbd2a46533f41072def1fb94283147134cab5/docs/planning/adrs/0009-supply-chain-dependency-cooldown.md).
- Standalone HTML reports for saved fit or dimensionality diagnostics.
- Automated benchmark evidence reports from release-acceptance timing.
- Release evidence index reports that tie dist artifact hashes, acceptance,
Expand Down
32 changes: 30 additions & 2 deletions crates/mlsirm-core/src/jmle_opt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,16 @@ where
break;
}

// L-BFGS needs a function-reduction stopping rule as well as a gradient
// rule. Near a well-resolved optimum, gradients can remain above a
// strict tolerance while the accepted objective improvement is already
// negligible at the problem's scale; continuing until the next Armijo
// search cannot find a representable decrease misclassifies numerical
// convergence as a line-search failure. This relative reduction mirrors
// the conventional L-BFGS-B `ftol` criterion.
let objective_scale = obj.abs().max(next_obj.abs()).max(1.0);
let relative_reduction = (obj - next_obj) / objective_scale;

let mut s = vec![0.0; n];
let mut y_delta = vec![0.0; n];
for i in 0..n {
Expand All @@ -194,6 +204,10 @@ where
loglik = next_loglik;
trace.push(obj);
loglik_trace.push(loglik);
if relative_reduction <= tolerance {
status = "converged".into();
break;
}
}
Ok((x, trace, loglik_trace, status))
}
Expand Down Expand Up @@ -344,6 +358,20 @@ mod tests {
assert!((x[1] + 1.0).abs() < 1e-4);
}

#[test]
fn lbfgs_accepts_relative_objective_convergence() {
let mut obj = |x: &[f64]| {
let d = x[0] - 1.0;
let value = 1_000_000.0 + 0.5 * d * d;
Ok((value, vec![d], -value))
};
let (x, trace, _, status) =
lbfgs(&[0.0], &mut obj, 10, 1e-6, 5).expect("lbfgs");
assert_eq!(status, "converged");
assert_eq!(trace.len(), 2);
assert!((x[0] - 1.0).abs() < 1e-12);
}

#[test]
fn adam_lbfgs_sequence_runs() {
let mut obj = quadratic();
Expand All @@ -352,7 +380,7 @@ mod tests {
.expect("seq");
assert!(n_iter >= 1);
assert!(!t.is_empty());
assert!(status == "converged" || status == "max_iter_reached" || status == "line_search_failed");
assert!(status == "converged" || status == "max_iter_reached");
assert!((x[0] - 1.0).abs() < 0.1);
}

Expand All @@ -362,4 +390,4 @@ mod tests {
let err = run_optimizer(&[0.0, 0.0], &mut obj, "sgd", 2, 0.01, 1e-6, 5).unwrap_err();
assert!(err.contains("unsupported"));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ A substantive contract change is documentation-complete only when every applicab

Documentation does not replace implementation. Conversely, unresolved architecture ambiguity is a product defect and may be selected as the next executable work item when product branches are blocked.

## Current review finding and remediation

An active review found that the documentation matrix called the Proposed
canonical PyO3/public-export registry the native-entrypoint source of truth
while protected main still used separate initializers and package export
paths. The matrix must state target architecture and protected-main behavior
separately until ADR-0011 is implemented; the active PR applies that wording
correction.

## Consequences

### Positive
Expand Down
Loading
Loading