C8d(3): bridge V2a joint feasible-across-all-samples re-solve (joint-in-core, generic) - #406
Merged
Merged
Conversation
…in-core) Wire the generic V2a joint selection (joint.rs) into a full-support re-solve that returns exactly ONE candidate hard-feasible across the whole ObservedScenarioSet — every backdrop sample admitted as its own case — or a typed Indeterminate when no jointly-feasible tuple exists. A set-breaching candidate is never returned as feasible: classify demands every case pass, so the worst / least-margin sample is only a post-hoc diagnostic witness, never a solve input (Pointwise every-case law; DAG mandate V2a + F2 -> C8d). Anti-drift: joint.rs stays fully generic and unchanged. The readability semantics live entirely in DisplayReadabilityCurveV1 (constraints/readability.rs); the bridge only instantiates the existing generic PointwiseJointPointProgramV1<E> with E = DisplayReadabilityCurveV1, reached through the same sealed Evaluator + HardClassifier seam ExactSrgb8IdentityV1 uses. No readability enum or import crosses into joint.rs. RED->GREEN in recheck_tests.rs: - joint_recheck_flags_sample_broken_by_resolve (N1): full-support re-solve over the whole set returns a typed Indeterminate whose breaching cell carries the broken sample's provenance, even when a different sample was the solve target. - resolve_is_jointly_reverified (N2): the joint selection yields a candidate passing every sample (freshly re-verified) or a typed Indeterminate; the set-breaching candidate is never returned as feasible. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LzZyjuo5ahzmW6V8pPJqSJ
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
WalkthroughДобавлен мост joint recheck для readability: он оценивает кандидатов по всем наблюдаемым samples, выбирает feasible-кандидата с tie-break и выполняет повторную верификацию. Тесты покрывают indeterminate-результат, provenance нарушившего sample и recheck полного набора. ChangesСовместная проверка readability
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant Caller
participant resolve_across_all_samples
participant ReadabilityJointProgramV1
participant PointwiseSelectedRecheck
Caller->>resolve_across_all_samples: передаёт candidates, observation и order
resolve_across_all_samples->>ReadabilityJointProgramV1: оценивает кандидатов по samples
ReadabilityJointProgramV1-->>resolve_across_all_samples: возвращает classification/report
resolve_across_all_samples->>PointwiseSelectedRecheck: select(policy).recheck()
PointwiseSelectedRecheck-->>resolve_across_all_samples: verified selection или ошибка
resolve_across_all_samples-->>Caller: Feasible или Indeterminate
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Слайс C8d, шаг 3 (core-only)
Стек на влитых шагах 1 (#404, packed-u32) и 2 (#405, recheck-bridge + readability-classifier). Реализует мандат F4 = Joint-in-core (DAG строка 2639 «V2a + F2 → C8d»). Diff = 2 core-файла (
recheck.rs,recheck_tests.rs). Контроллер-STOPGAP не понадобился — настоящий V2a-мост встал чисто.Что сделано
resolve_across_all_samples+ типизированныйJointReadabilityResolutionV1 { Feasible(verified) | Indeterminate(report) }вrecheck.rs:PointwiseJointPointProgramV1<E>сE = DisplayReadabilityCurveV1(замороженный F5-классификатор из шага 2).ObservedScenarioSet(каждый backdrop-сэмпл = отдельный admitted case), оставляет только кандидатов, проходящих каждый case черезclassify(), тай-брейк по declared total order, затем свежая ре-верификация победителя по всем сэмплам перед возвратом — либо типизированныйIndeterminate, сохраняющий полный hard-report (провенанс ломающего сэмпла читается post-hoc).Feasible(Pointwise every-case law, §16 строки 3082-3093: worst — post-hoc witness, не вход солва).Анти-дрейф (V2a exit criterion) — ВЫПОЛНЕН
joint.rsбайт-в-байт не изменён (git diffпуст; проверено независимо, main==HEAD). В joint.rs не добавлено ни enum-варианта, ни импорта WCAG/readability. Кривая читаемости достигает joint-движка ИСКЛЮЧИТЕЛЬНО через уже существующий sealedEvaluator<…> + HardClassifierblanket-implJointPointEvaluatorV1— тот же генерик-seam, что используетExactSrgb8IdentityV1. Продакшн-joint не импортирует WCAG payload.Тесты (RED→GREEN, non-vacuous)
joint_recheck_flags_sample_broken_by_resolve: кандидат, проходящий таргет-сэмпл A, но ломающий B, возвращает типизированныйIndeterminateс провенансом B (second-solve-breaks-first на уровне ядра).resolve_is_jointly_reverified: feasibility-фильтр бьёт тай-брейк (ordinal 0 предпочтён порядком, но исключён как set-breaking → возвращается ordinal 1 и свежо ре-верифицируется; если предложить только ломающий кандидат →Indeterminate).WCAG-разбиения проверены численно с запасом от порога 4.5 (напр. N2:
#555555проходит белый 7.46, но ломает#7676761.64; чёрный проходит оба — белый 21,#7676764.62).Гейты (локально перепроверены, зелёные)
cargo test -p labcolors-core(606 lib + все integration-бинари),cargo fmt --all --check,cargo clippy -p labcolors-core --all-targets -D warnings,RUSTDOCFLAGS=-D warnings cargo doc -p labcolors-core --no-deps --locked.Ревью (adversarial, read-only, 3 линзы)
correctness / joint-genericity-V2a / boundary-tests — ноль находок. Синтез-вердикт READY. Публичный boundary и
bench/wasm.jsonне тронуты (провод на границу — шаг 4).🤖 Generated with Claude Code
Generated by Claude Code
Summary by CodeRabbit
Новые возможности
Тесты