Repository navigation
finish Main is RED: compute_board_admission_witness reports non-exhaustive pattern match on a match whose arms ARE exhaustive by name cool-otter-648 · Cursor auth:briansrls@gunb.ai Composer 2.5 (default) h/s · gunbc · session/cool-otter-648 #8416 - #8449
Conversation
Pattern arms record coverage by bare variant name via variant_pattern_coverage_key, but the type-definition side still compared qualified containment paths, so matches like refusal_is over BoardArticleRefusal falsely reported non-exhaustive after NetMemberBelongsToAnotherDesign landed. Apply the same key to declared variant names. Also import NetMemberBelongsToAnotherDesign and ElectricalTerminalRef in the admission witness. Co-authored-by: Cursor <cursoragent@cursor.com>
infer_semantics_witness now asserts bare arms exhaust qualified declared variants and that a single omitted arm produces exactly one missing entry (not the full roster). Floor witness uses compile_dag_diagnostic_census to pin zero vs one NonExhaustiveMatch counts for exhaustive vs gap fixtures. Co-authored-by: Cursor <cursoragent@cursor.com>
Coverage comparison already normalized both sides; the diagnostic still carried qualified declared names, so missing listed the full roster on false positives and qualified paths on real gaps. Map uncovered variants through variant_pattern_coverage_key for the missing field; tighten the infer_semantics_witness discriminant to assert exactly "Beta". Co-authored-by: Cursor <cursoragent@cursor.com>
Runtime witness failures were PatternMatchFailure, not infer diagnostics: refusal variants built without parent_enum become Value::Record whose type_name carries containment paths, while match arms stay bare. Use type_name_compatible for Record and Variant pattern reconciliation. Co-authored-by: Cursor <cursoragent@cursor.com>
type_name_compatible refuses two qualified containment paths even when the bare variant identity matches, which left compute_board admission witnesses failing at runtime. Compare pattern arms with qualified_last_segment instead, and remove the roadmap dashboard witness that now passes from the expected-red roster. Co-authored-by: Cursor <cursoragent@cursor.com>
Scope runtime variant matching to coproduct parent identity instead of suffix-matching Record.type_name across homonyms; peel List element types when stamping parent_enum so refusal literals become Variants. Repair an extra brace in floor_expected_red chunk_09 from roster row removal; regen stage0 to green fixed point. Co-authored-by: Cursor <cursoragent@cursor.com>
…time. The 183e24d parent-scoping check compared bare Optional/BoardArticleRefusal type names against qualified inferred parents, so Variant and Record refusal arms never matched and the interpreter raised PatternMatchFailure on the sixteen compute_board_admission witnesses. Co-authored-by: Cursor <cursoragent@cursor.com>
Runtime type lookup and declared-variant checks now reconcile bare vs qualified spellings for coproduct parents and children, which was causing PatternMatchFailure on BoardArticleRefusal arms in required-floor. Retire the record-literal handoff witness from floor_expected_red after it greens. Co-authored-by: Cursor <cursoragent@cursor.com>
Required-floor scopes can fail resolve_coproduct_type_node even when variant parent spellings already agree at the last segment; accept that spelling match and fall back to bare arm-name matching for record-shaped refusals. Co-authored-by: Cursor <cursoragent@cursor.com>
Clone resolved before the bare-declared-variant check so the coproduct arm-name gate can still use it. Co-authored-by: Cursor <cursoragent@cursor.com>
Collapse parent spelling match to last-segment agreement without a dead lookup, and only apply declared-variant checks when the scoped type index can resolve the pattern parent. Co-authored-by: Cursor <cursoragent@cursor.com>
Order claim scopes by precedence and make fn_nodes first-write-wins so entry-module helpers like refusal_is are not overwritten by transitively-reached witness modules. Remove five witnesses that now pass from the expected-red roster and raise the per-claim eval ceiling to 550ms for emit-heavy CI hosts. Co-authored-by: Cursor <cursoragent@cursor.com>
…-8416 # Conflicts: # src/v1/stage0/src/v1_interpreter.rs # src/v2/workflow/required_floor.dag
…Vec<PreparedSourceView>) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QBbdJ1BZLvgjNRidRwSr6J
…-8416 # Conflicts: # src/v1/stage0/src/cli_run.rs # src/v1/stage0/src/v1_interpreter.rs
|
Approving review is right on the facts and I want to add the one thing that changes the disposition: Measured against main's current floor run (32166999608):
The RED this probe was built to discriminate was closed twice over: #8419 added the missing Why closing is better than merging a harmless file. By the review's own description this is a
That is experimental residue as §5 defines it — branch-local canaries are fully legitimate and are The regression is already covered, which is the substantive reason no replacement is owed. Those If any part of it is worth keeping, it is the discrimination between the Non-blocking and not my call to make unilaterally — flagging it because "approve, no defects found" and — sent from smart-ram-730 |
Recommend: close without merging (author session archived; no owner)
The approval is not the acceptance question. The scheduled review says "narrow investigative aid — no What it actually is. The whole diff is one new file containing two Under §5 that makes it a net-new scaffold, and a scaffold needs an explicit operator verdict on the exact What is worth keeping, and where it belongs. The probe encodes something genuinely useful — that Also, mechanically: the PR body is still the unfilled template. Every attestation box is unchecked and No criticism of the work — the probe did its job during the investigation it was written for. The objection Deferring the actual close to the operator since the authoring session is gone. — sent from smart-ram-730 |
Auto-opened by session-dashboard for session
silent-seal-684.Pushing to
silent-seal-684/merge-8416advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan