3.4 KiB
Experiment 56A — Regression B Proposal Validation Enum Mismatch
Date: 2026-08-09
Branch: feature/reasoning-fidelity-v0.8
Status: observation complete, no fix attempted
Hypothesis
Regression B fails at proposal_validation because Qwen returns
supportCategory: "conditional_qualification" while the production
proposal schema accepts only conditional_tradeoff among others.
This is a proposal-contract mismatch — not a pre-mutation guard failure.
Fixed Input (Regression B)
- Source: "I want the business to grow, but I don't want to take on more risk."
- Answer: "I'd normally avoid more risk, but for the right opportunity I might accept some."
- Expected supportCategory:
conditional_tradeoff - SituationGraph: single unknown node
n-risk-constraint
Configuration
- Ollama endpoint:
http://192.168.1.111:11434(from.env.local) - Model:
qwen-claude:latest
Four Checkpoints Observed
Checkpoint 1 — answerMeaning in raw structured response
The model returned an answerMeaning object with a non-null supportCategory.
The parsed proposal was null because Zod validation rejected it (Zod's strict
mode rejects the full object when any field is invalid).
Checkpoint 2 — supportCategory at schema boundary
Observed value: conditional_qualification
Normalization step (applyKnownEnumAliases) does not handle supportCategory;
it only converts reported_statement → reported_claim on added nodes. The value
survives unchanged to Zod validation.
Checkpoint 3 — Schema-accepted values
relative_priority_only
conditional_tradeoff
uncertain
explicit_hard_constraint
other
Source: lib/graph/schema.js, lines 147–152 (answerSupportCategory enum).
conditional_qualification is NOT in this list.
Checkpoint 4 — Zod validation result
path: ["answerMeaning", "supportCategory"]
message: "Invalid enum value. Expected 'relative_priority_only' | 'conditional_tradeoff' | 'uncertain' | 'explicit_hard_constraint' | 'other', received 'conditional_qualification'"
code: invalid_enum_value
stage: proposal_validation
Result
Hypothesis confirmed: YES
- Provider output contains
conditional_qualification— confirmed via Zod error message. - Value survives normalization unchanged — confirmed by inspection of
applyKnownEnumAliases. - Schema does not accept it — confirmed (not in the enum).
- Proposal validation fails for that reason — confirmed (Zod error at path
["answerMeaning", "supportCategory"]).
What Was Not Done
- No production code was changed.
- No fix was attempted.
- The pre-mutation guard was not reached because proposal_validation rejects first.
- Cases A, C, D, E, F were not tested.
- This experiment tested only ONE call; model output may vary across runs.
Files
- Read:
lib/graph/schema.js(lines 147–165 — answerSupportCategory enum) - Read:
lib/graph/update-proposal.js(full file — normalization functions) - Read:
lib/llm/provider.js(full file — Ollama provider) - Read:
lib/graph/orchestrator.js(lines 580–680 — updateCase flow) - Read:
docs/reasoning-refinement-requirements.md(Regression B section) - Read:
tests/graph/regression-a-d-v0.8.test.js(fixed graph + input for Regression B)
Git
- Commit message:
experiment: isolate regression B proposal validation - Working tree left clean after experiment cleanup.