Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
173 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
fdc0285
fix: enforce multi-item IRT fit boundaries
seonghobae Aug 13, 2026
ccf8249
Merge remote-tracking branch 'origin/main' into codex/fast-judge-acce…
seonghobae Aug 13, 2026
f7834a2
docs: record protected review gate
seonghobae Aug 13, 2026
085fdd8
fix: gate production IRT fits on experiment readiness
seonghobae Aug 13, 2026
c63e6de
Merge remote-tracking branch 'origin/main' into codex/fast-judge-acce…
seonghobae Aug 13, 2026
e2480e7
fix: gate dimensionality diagnostics folds
seonghobae Aug 13, 2026
4f0e7e0
fix(irt): require polytomous category occupancy
seonghobae Aug 13, 2026
ca09cb0
docs(irt): document category occupancy gate
seonghobae Aug 13, 2026
00250de
docs(irt): record current K sensitivity evidence
seonghobae Aug 13, 2026
68141d1
Merge remote-tracking branch 'origin/main' into codex/fast-judge-acce…
seonghobae Aug 13, 2026
d14d05a
docs(adr): record stale native extension test hazard
seonghobae Aug 13, 2026
24d6312
Merge remote-tracking branch 'origin/main' into codex/fast-judge-acce…
seonghobae Aug 13, 2026
c16a914
docs(adr): record baseline rustfmt drift
seonghobae Aug 13, 2026
d98b264
docs(adr): record inconclusive Strix provider evidence
seonghobae Aug 13, 2026
7fa995a
fix(irt): align readiness and MH-RM contracts
seonghobae Aug 13, 2026
c92ec43
fix(irt): resolve validation lint contracts
seonghobae Aug 13, 2026
fdbf62d
docs(papers): record OA PDF acquisition boundary
seonghobae Aug 13, 2026
5b35852
docs(adr): record latest Strix fallback evidence
seonghobae Aug 13, 2026
2642d8e
docs(adr): record semantic judge miss
seonghobae Aug 13, 2026
b3bbeb0
Merge remote-tracking branch 'origin/main' into HEAD
seonghobae Aug 13, 2026
1d7b490
docs(adr): record exact merge verification
seonghobae Aug 13, 2026
5319034
feat(judge): add bounded binary threshold calibration
seonghobae Aug 13, 2026
61e6be9
perf(judge): reuse gateway concurrency for binary thresholds
seonghobae Aug 13, 2026
f33751f
docs(adr): record integrated judge concurrency
seonghobae Aug 13, 2026
608cfbd
fix(judge): default polytomous scoring to binary thresholds
seonghobae Aug 13, 2026
9d18f53
docs(adr): record current merge gate evidence
seonghobae Aug 13, 2026
086306b
docs(adr): record integrated judge smoke
seonghobae Aug 13, 2026
d1eca0c
fix(judge): retain binary failure evidence
seonghobae Aug 13, 2026
dd44a95
feat(judge): bind polytomous category anchors
seonghobae Aug 13, 2026
bb1a285
Merge remote-tracking branch 'origin/main' into HEAD
seonghobae Aug 13, 2026
26b9ccc
docs(adr): record protected-base sync evidence
seonghobae Aug 13, 2026
7605c15
docs(adr): record MLX readiness and semantic failure
seonghobae Aug 13, 2026
17e19ec
fix: clarify ordinal threshold judge semantics
seonghobae Aug 13, 2026
2cd1209
docs: record pull ref synchronization drift
seonghobae Aug 13, 2026
ebd76b4
fix: retain parsed threshold evidence on failure
seonghobae Aug 13, 2026
46c405a
docs: record protected review gate repair
seonghobae Aug 13, 2026
f9f18e9
docs: record hosted runner queue evidence
seonghobae Aug 13, 2026
65051b5
docs: link judge concurrency sweep
seonghobae Aug 13, 2026
e407d81
docs: record multi-item judge smoke
seonghobae Aug 13, 2026
fc9fde5
docs: record latest exact-head review audit
seonghobae Aug 13, 2026
bbf5d0e
Merge remote-tracking branch 'origin/main' into codex/fast-judge-main…
seonghobae Aug 13, 2026
1ed1364
docs: record protected-main synchronization
seonghobae Aug 13, 2026
c5727de
docs: bind synchronized fast review head
seonghobae Aug 13, 2026
a057418
docs: record post-main judge smoke
seonghobae Aug 13, 2026
3c3ce1b
docs: add option-only bias literature
seonghobae Aug 13, 2026
97b14a6
docs: record corrected exact-head review evidence
seonghobae Aug 13, 2026
aff16e6
docs: record full-sha review evidence correction
seonghobae Aug 13, 2026
e4a18f1
feat: add contextual paired judge calibration controls
seonghobae Aug 13, 2026
a57ef50
docs: pin calibration evidence to implementation head
seonghobae Aug 13, 2026
0d6dc45
fix: retain bounded judge failure evidence
seonghobae Aug 13, 2026
19b46fb
docs: record model calibration and failure evidence
seonghobae Aug 13, 2026
a49f08e
fix: preserve nested judge usage evidence
seonghobae Aug 13, 2026
5a07270
docs: record final judge evidence head
seonghobae Aug 13, 2026
ac72dac
perf: bound paired judge calibration concurrency
seonghobae Aug 13, 2026
f707d3d
docs: bind calibration optimization to exact head
seonghobae Aug 13, 2026
2f68747
fix: satisfy calibration lint boundary
seonghobae Aug 13, 2026
6fc2259
docs: record lint-clean judge head
seonghobae Aug 13, 2026
5ea106f
docs: record current CI capacity gate
seonghobae Aug 13, 2026
9793ff7
docs: record binary judge calibration evidence
seonghobae Aug 13, 2026
99983ef
docs: record judge concurrency plateau
seonghobae Aug 13, 2026
e6c457d
docs: reconcile Zotero OA paper evidence
seonghobae Aug 13, 2026
d91d01c
docs: record protection policy drift
seonghobae Aug 13, 2026
73200c0
docs: record protection remediation
seonghobae Aug 13, 2026
830d3c0
fix: require gateway provenance for LLM judges
seonghobae Aug 13, 2026
186a98a
feat: expose polytomous category occupancy
seonghobae Aug 13, 2026
4264f0f
Merge remote-tracking branch 'origin/main' into codex/fast-pr-sync-20…
seonghobae Aug 13, 2026
c723d19
docs: record protected base synchronization
seonghobae Aug 13, 2026
21d3dbf
docs: record verifier model calibration evidence
seonghobae Aug 14, 2026
3a48371
chore(irt): keep public exports deterministically sorted
seonghobae Aug 14, 2026
dbbd41d
docs: record OA PDF rights conflict
seonghobae Aug 14, 2026
2fcc19c
docs: record held-out calibration limits
seonghobae Aug 14, 2026
3c2fecf
docs: refresh exact-head merge evidence
seonghobae Aug 14, 2026
57795b1
docs: record non-ceiling calibration evidence
seonghobae Aug 14, 2026
d8fa734
docs: record 3B calibration boundary
seonghobae Aug 14, 2026
129c796
docs: bind latest fast PR evidence
seonghobae Aug 14, 2026
2daddd6
docs: record Strix provenance dependency
seonghobae Aug 14, 2026
50db853
docs: bind central Strix workflow dependency
seonghobae Aug 14, 2026
22596ab
feat(judge): expose option-count calibration strata
seonghobae Aug 14, 2026
ead9dea
docs(adr): record K-stratified live calibration
seonghobae Aug 14, 2026
c94eb29
docs: record unbound Strix evidence
seonghobae Aug 14, 2026
9795de4
docs: record review evidence transport fix
seonghobae Aug 14, 2026
d20f2b8
docs: record organization ruleset governance gap
seonghobae Aug 14, 2026
a533607
docs: record repaired organization policy
seonghobae Aug 14, 2026
fd356c1
docs: record review identity correction
seonghobae Aug 14, 2026
03004b8
docs: record provider execution contract failure
seonghobae Aug 14, 2026
6474ad2
docs: record exact-head identity correction
seonghobae Aug 14, 2026
573b15d
docs: record current unbound strix evidence
seonghobae Aug 14, 2026
7964b62
fix: validate calibration report boundaries
seonghobae Aug 14, 2026
5fb0a37
fix: export contextual judge contract
seonghobae Aug 14, 2026
27b59a3
Merge remote-tracking branch 'origin/codex/fast-judge-accepted-type-r…
seonghobae Aug 14, 2026
9070644
Merge remote-tracking branch 'origin/codex/fast-judge-accepted-type-r…
seonghobae Aug 14, 2026
3d42c0b
fix: keep contract export unique
seonghobae Aug 14, 2026
a536292
fix: redact failed judge evidence
seonghobae Aug 14, 2026
e04e109
docs: record exact-head calibration evidence
seonghobae Aug 14, 2026
8349af6
docs: record current actions queue evidence
seonghobae Aug 14, 2026
37d1d24
docs: record review identity correction
seonghobae Aug 14, 2026
47c5fbd
docs: distinguish actions queue from outage
seonghobae Aug 14, 2026
5db4b47
docs: record current MLX judge recheck
seonghobae Aug 14, 2026
8f5d85a
docs: clarify contextual judge runtime
seonghobae Aug 14, 2026
3eb9f24
fix: redact calibration exception evidence
seonghobae Aug 14, 2026
c9f2c28
fix: hide judge provider failures
seonghobae Aug 14, 2026
2d456b1
docs: record unbound strix evidence
seonghobae Aug 14, 2026
d1114e5
docs: record cross-repository Strix binding gate
seonghobae Aug 14, 2026
68caebc
docs: record current MLX IRT smoke
seonghobae Aug 14, 2026
a199379
docs: record minimal Strix dependency gate
seonghobae Aug 14, 2026
3c0895b
docs: record PR snapshot consistency guard
seonghobae Aug 14, 2026
b5c7818
docs: record central suite validation
seonghobae Aug 14, 2026
a991003
docs: record quoted check audit paths
seonghobae Aug 14, 2026
b35865b
docs: harden shell audit argument handling
seonghobae Aug 14, 2026
ad3600d
docs: record current Actions queue evidence
seonghobae Aug 14, 2026
e9dd8f8
docs: record superseded central PR closure
seonghobae Aug 14, 2026
67eee5b
docs: record gateway throughput evidence
seonghobae Aug 14, 2026
ed62e1d
fix(judge): require explicit ordinal evidence
seonghobae Aug 14, 2026
d0e77d8
docs: record exact-head review queue
seonghobae Aug 14, 2026
112b195
fix(judge): harden cumulative ordinal contract
seonghobae Aug 14, 2026
e55a6c3
docs: audit official OA PDF retrieval
seonghobae Aug 14, 2026
b4121d2
docs: record Zotero write boundary
seonghobae Aug 14, 2026
26e5404
docs: record current judge gate state
seonghobae Aug 14, 2026
6f539a7
docs: record check materialization re-poll
seonghobae Aug 14, 2026
f3249f6
docs: record unbound strix evidence
seonghobae Aug 14, 2026
c309451
fix: request strict judge response schemas
seonghobae Aug 14, 2026
355f93b
docs: record unbound hosted security evidence
seonghobae Aug 14, 2026
c9b6d69
docs: record Strix tool contract failure
seonghobae Aug 14, 2026
808189e
fix: retain structured judge failure evidence
seonghobae Aug 14, 2026
8195434
fix: reject symlinked input artifacts
seonghobae Aug 14, 2026
1d05d78
docs: record symlink regression evidence
seonghobae Aug 14, 2026
f682e33
docs: record unbound strix evidence
seonghobae Aug 14, 2026
2d76d85
fix: confine CLI paths to caller workspace
seonghobae Aug 14, 2026
2a69f8f
docs: record CLI path-boundary finding
seonghobae Aug 14, 2026
da8dea5
fix: publish diagnostics reports atomically
seonghobae Aug 14, 2026
a9af5f9
docs: record current strix evidence boundary
seonghobae Aug 14, 2026
431bab8
docs(adr): bind coverage review evidence
seonghobae Aug 15, 2026
693d78f
docs(adr): record review dependency gate
seonghobae Aug 15, 2026
82d20e5
docs(adr): record unbound Strix evidence
seonghobae Aug 15, 2026
a8182f6
docs: record current bound-free Strix result
seonghobae Aug 15, 2026
d661b97
docs: record Strix tool contract failure
seonghobae Aug 15, 2026
e51f0cc
test: reproduce simulation allocation exhaustion bounds
seonghobae Aug 15, 2026
2ef29e7
fix: bound simulation allocation dimensions
seonghobae Aug 15, 2026
e750a44
test: isolate simulation resource-limit boundary
seonghobae Aug 15, 2026
7b2b4b8
Merge branch 'main' into codex/fast-judge-accepted-type-regression-adr2
seonghobae Aug 16, 2026
78ae6aa
Merge branch 'main' into codex/fast-judge-accepted-type-regression-adr2
opencode-agent[bot] Aug 16, 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
53 changes: 48 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,57 @@ 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 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
categorized polytomous matrix. When `category_count` is supplied without an
explicit method, the adapter defaults to `category_method="binary_threshold"`:
each ordered boundary is a bounded Boolean call, and malformed or
non-monotone evidence fails closed. Equal-width direct K-way projection is
calibration-only and requires explicit `category_method="direct"`;
`category_method="cumulative_threshold"` remains an explicit alternative
that asks for one strict Boolean vector. Binary threshold judging has a
maximum of 64 calls per result.
When the injected contextual-orchestrator exposes its bounded
`client.local_concurrency`, those independent boundary calls reuse that limit;
generic injected orchestrators remain sequential by default.
`ContextualOrchestratorJudge` accepts only an adapter declaring
`contextual_orchestrator_contract == "contextual-orchestrator-contract-v1"`;
an arbitrary direct provider transport fails at construction. This is an
architectural provenance marker, not a security credential; production
adapters must still route, trace, and validate through contextual-orchestrator.
A failed binary boundary raises `JudgeFormatError` with bounded `.evidence`
containing call/parse status, partial trace-step counts, usage, and ordered
boundary records; callers must retain that failure in calibration results.
For semantically interpretable polytomous calibration, callers may provide a
`category_anchors` tuple of exactly K definitions on every `JudgeCriterion`;
those definitions are carried as rubric data to each binary boundary. Mixed,
incomplete, or mismatched anchor sets are rejected. Omitted anchors remain a
backwards-compatible exploratory mode and must not be treated as gold
calibration evidence. Each binary prompt asks whether the answer meets at
least the requested boundary (not exactly that category), requires
criterion/task relevance, and rejects generic intent, unrelated detail,
missing-control admissions, or rubric repetition as evidence.
Category-count and prompt-perturbation calibration remain required for all
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).
Production and benchmark IRT readiness additionally requires every declared
polytomous category to be observed at least once for every item; low-level
diagnostic fitters remain available for partial-occupancy fixtures.
`build_multiple_choice_calibration_cases()` and
`evaluate_paired_calibration()` provide bounded paired controls for
baseline, option-only/no-question, shuffled-option, and
distractor-replacement variants. They accept an existing
`ContextualOrchestratorJudge`, so every calibration call uses the
contextual-orchestrator route; provider, parse, semantic, and IRT failures
remain in the denominator, with no retry, repair, keyword matching, or
positional category inference. Gold categories and contamination status are
caller-supplied, and every successful result must project to multiple
criterion columns before it can be used as a polytomous row. Paired score
deltas are diagnostic sensitivity evidence, not a causal positive-option-
count law or a claim of judge debiasing. When a binary judge raises a
`JudgeFormatError`, the report retains its bounded `.evidence` (boundary
statuses, parse state, trace counts, and usage) while excluding source text
and raw model output.
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/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).
Expand Down
36 changes: 35 additions & 1 deletion docs/adr/0010-llm-orchestration-and-credentials.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,42 @@ Some `fast-mlsirm` features and validation studies may use LLMs for item generat
### Product/model calls

- Prefer provider-neutral interfaces.
- Use `contextual-orchestrator` when a reusable orchestration boundary is appropriate, but do not create a reverse source dependency or write there while its owner loop controls that repository. Every cross-repository call MUST bind a versioned request/result schema (for example, `contextual-orchestrator-contract-v1`) or an immutable artifact digest, and the compatibility policy for that contract must be recorded with the caller.
- Every LLM-as-a-Judge call MUST use a contextual-orchestrator-backed adapter. The adapter must declare the versioned `contextual-orchestrator-contract-v1` boundary; `ContextualOrchestratorJudge` rejects an unmarked or direct-provider transport at construction. Do not create a reverse source dependency or write there while its owner loop controls that repository. Every cross-repository call MUST bind the versioned request/result schema or an immutable artifact digest, and the compatibility policy for that contract must be recorded with the caller.
- Treat all model output as untrusted; schema/provenance/semantic validation remains inside the calling workflow.
- Deterministic tests/gates that do not require a model call shall remain executable without model credentials.

### Cross-repository judge contract

The versioned boundary is also a public package contract: fast-mlsirm exports
`CONTEXTUAL_ORCHESTRATOR_CONTRACT_V1` from both `fast_mlsirm.llm_judge` and the
package root with the value `contextual-orchestrator-contract-v1`. The
contextual-orchestrator same-interpreter preflight is authoritative for live
judge readiness; a working injected judge with a missing public contract symbol
is an integration failure, not an available integration. A regression test must
cover the package-root export before a live MLX judge result is treated as
cross-repository evidence.

The two repositories remain separately installable and do not acquire a reverse
source dependency. That boundary is easy to misconfigure: isolated project
virtual environments cannot import the other checkout. A live source checkout
therefore MUST use one interpreter with both packages installed (prefer editable
installs), or explicitly expose both source roots with `PYTHONPATH`, and MUST
run `python -m contextual_orchestrator check-fast-mlsirm` with that interpreter
before judging. A missing cross-import is a fail-closed integration error; it
must not be hidden by a second interpreter, keyword/positional repair, or direct
provider fallback.

### Failure-evidence boundary

Failed binary-threshold calls may expose bounded operational evidence, but they
must not retain raw provider output or exception text: either can contain task,
answer, reference, rubric, or provider diagnostics. Evidence is therefore an
allowlisted record of criterion/threshold identity, call/parse status, stable
failure code, exception type, validated Boolean values, trace count, and usage.
This redaction boundary applies before callers persist or publish
`JudgeFormatError.evidence`; it is not a keyword, positional, or silent-repair
mechanism.

### Credentials

- Model-backed GitHub tests/agents use the existing GitHub Secret `NVIDIA_NIM_API_KEY` when the model call requires NVIDIA NIM.
Expand Down Expand Up @@ -55,6 +87,8 @@ Costs:
- live-model validation requires explicit external service availability;
- orchestration evidence can be expensive;
- some end-to-end tests remain bounded/scheduled rather than always-on PR gates.
- test doubles must explicitly declare the same contract marker; an unmarked
fake is not evidence of a valid production transport path.

## Alternatives considered

Expand Down
12 changes: 12 additions & 0 deletions docs/adr/0013-continuous-execution-and-documentation-governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,18 @@ paths. The matrix must state target architecture and protected-main behavior
separately until ADR-0011 is implemented; the active PR applies that wording
correction.

The cross-repository Strix security dependency exposed an additional evidence
boundary: a successful status and a named artifact are not enough to establish
that the report belongs to the exact workflow run being used by this PR. The
central workflow must bind the target repository, the exact `strix-reports`
artifact name, the outer GitHub Actions run ID, the full PR head, the report
path, and the report digest. Consumers must require exactly one non-expired
artifact of that name before download and reject provider-internal run IDs,
missing fields, duplicates, expiry, or mismatches. Until that structured
binding exists on protected `main` and the current fast-mlsirm head is
rechecked, Strix output remains provider/content evidence only; it cannot
authorize Judge, IRT, or Merge acceptance.

## Consequences

### Positive
Expand Down
Loading
Loading