Exercise Jev's two untested question types (score, noul) against the real TypeSafe API with our key, and add the missing escape option to the pipeline's mode question, so JEV_STRATEGIES.md's three-band strategy stops being an assumption.
Context a stranger needs
jev.goClassify (jev.go:82) currently parses only answer.Choice + answer.Confidence (jev.go:99-102). The API docs describe score (returns score value) and noul (returns a yes probability, no confidence). Response shape for those is unverified — this task verifies it. A probe_test.go live test must t.Skip() when TYPESAFE_API_KEY is empty.
Acceptance criteria — falsifiable tests
TestProbeScoreAndNoulAgainstLiveAPI (jev_test.go) — Given TYPESAFE_API_KEY set, when POSTing one call with a score question (2–10 levels) and a noul question, then the test asserts answers.score exposes a numeric score field and answers.noul exposes a yes probability; if the reply lacks either, the test fails with the raw body. Red now (test doesn't exist), green after.
TestModeChoiceHasEscapeOption (jev_test.go) — Given jevQuestions["mode"].criteria, then it contains an other key (JEV_STRATEGIES.md strategy 2). Red now (only solo/split/murder exist, jev.go:64-67), green after.
Unit test TestParseScoreAndNoulAnswers against the fake-server pattern (TestClassifyAgainstFakeServer, jev.go parsing): a canned response with score+noul answers decodes without error. Red now (parser ignores those fields), green after.
Test command
go test -race -run 'TestProbeScoreAndNoul|TestModeChoiceHasEscape|TestParseScoreAndNoul' ./...
Blockers / unknowns
If score/noul fail on our key (400s), record the raw error in JEV_STRATEGIES.md — that flips which tag/route designs are viable.
Epic: #1. Depends on: none
## Goal
Exercise Jev's two untested question types (`score`, `noul`) against the real TypeSafe API with our key, and add the missing escape option to the pipeline's `mode` question, so `JEV_STRATEGIES.md`'s three-band strategy stops being an assumption.
## Context a stranger needs
`jev.go` `Classify` (`jev.go:82`) currently parses only `answer.Choice` + `answer.Confidence` (`jev.go:99-102`). The API docs describe `score` (returns `score` value) and `noul` (returns a yes probability, no confidence). Response shape for those is unverified — this task verifies it. A `probe_test.go` live test must `t.Skip()` when `TYPESAFE_API_KEY` is empty.
## Acceptance criteria — falsifiable tests
1. `TestProbeScoreAndNoulAgainstLiveAPI` (`jev_test.go`) — Given `TYPESAFE_API_KEY` set, when POSTing one call with a `score` question (2–10 levels) and a `noul` question, then the test asserts `answers.score` exposes a numeric score field and `answers.noul` exposes a yes probability; if the reply lacks either, the test fails with the raw body. Red now (test doesn't exist), green after.
2. `TestModeChoiceHasEscapeOption` (`jev_test.go`) — Given `jevQuestions["mode"].criteria`, then it contains an `other` key (`JEV_STRATEGIES.md` strategy 2). Red now (only solo/split/murder exist, `jev.go:64-67`), green after.
3. Unit test `TestParseScoreAndNoulAnswers` against the fake-server pattern (`TestClassifyAgainstFakeServer`, `jev.go` parsing): a canned response with score+noul answers decodes without error. Red now (parser ignores those fields), green after.
## Test command
`go test -race -run 'TestProbeScoreAndNoul|TestModeChoiceHasEscape|TestParseScoreAndNoul' ./...`
## Blockers / unknowns
If `score`/`noul` fail on our key (400s), record the raw error in `JEV_STRATEGIES.md` — that flips which tag/route designs are viable.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Epic: #1. Depends on: none
Goal
Exercise Jev's two untested question types (
score,noul) against the real TypeSafe API with our key, and add the missing escape option to the pipeline'smodequestion, soJEV_STRATEGIES.md's three-band strategy stops being an assumption.Context a stranger needs
jev.goClassify(jev.go:82) currently parses onlyanswer.Choice+answer.Confidence(jev.go:99-102). The API docs describescore(returnsscorevalue) andnoul(returns a yes probability, no confidence). Response shape for those is unverified — this task verifies it. Aprobe_test.golive test mustt.Skip()whenTYPESAFE_API_KEYis empty.Acceptance criteria — falsifiable tests
TestProbeScoreAndNoulAgainstLiveAPI(jev_test.go) — GivenTYPESAFE_API_KEYset, when POSTing one call with ascorequestion (2–10 levels) and anoulquestion, then the test assertsanswers.scoreexposes a numeric score field andanswers.noulexposes a yes probability; if the reply lacks either, the test fails with the raw body. Red now (test doesn't exist), green after.TestModeChoiceHasEscapeOption(jev_test.go) — GivenjevQuestions["mode"].criteria, then it contains anotherkey (JEV_STRATEGIES.mdstrategy 2). Red now (only solo/split/murder exist,jev.go:64-67), green after.TestParseScoreAndNoulAnswersagainst the fake-server pattern (TestClassifyAgainstFakeServer,jev.goparsing): a canned response with score+noul answers decodes without error. Red now (parser ignores those fields), green after.Test command
go test -race -run 'TestProbeScoreAndNoul|TestModeChoiceHasEscape|TestParseScoreAndNoul' ./...Blockers / unknowns
If
score/noulfail on our key (400s), record the raw error inJEV_STRATEGIES.md— that flips which tag/route designs are viable.