Repository navigation
Commit b0ff6ec
Two endpoints, one event shape, three quiet divergences
All three found by the website building against both routes, and the first
cost a reader-visible failure.
**The success states differ and nothing said so.** `/api/answer` says
`answered` and `nothing_found`; this one says `summarised` and `not_found`.
The event shapes are otherwise nearly identical, so a consumer built one
state list from both contracts, and `summarised` fell through to their
unrecognised-state fallback of `failed` -- rendering a complete, correct
summary as a truncated failure, with the failure text above and below the
summary itself. Each contract now warns about the other by name.
**`release` was a string here and a number there.** Same field, same event,
different type: `/api/answer` parses it from the bundle directory and sends
an int, while this one passes through the Analysis Service's text body. A
consumer that required a number got null and did not notice, because null is
a legitimate value for this field. Parsed to a number now, null when
unparseable, with the raw string kept as the storage key where only
stability matters. **This changes what the field carries on the wire** --
`97` rather than `"97"`.
**The human-presence asymmetry was undocumented.** A caller token with no
presence claim gets a full answer from `/api/answer` and `no_human` from
here. That is deliberate and load-bearing -- it is why the stricter gate
applies to one route and not the other -- and the website discovered it by
measuring rather than reading. Both contracts now say it and why: one
returns public pathway text, the other returns a reader's own uploaded
analysis.
The shape of all three is the same. Each endpoint's contract was correct
about itself, and the divergence only exists when the two are held together
-- which is what a consumer does and neither document did.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 7eacb1c commit b0ff6ec
4 files changed
Lines changed: 94 additions & 3 deletions
File tree
- specs
- 010-search-page-answers/contracts
- 011-summarise-analysis-results/contracts
- src/api
- tests/api
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
67 | 78 | | |
68 | 79 | | |
69 | 80 | | |
| |||
Lines changed: 29 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
30 | 45 | | |
31 | 46 | | |
32 | 47 | | |
| |||
95 | 110 | | |
96 | 111 | | |
97 | 112 | | |
98 | | - | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
99 | 127 | | |
100 | 128 | | |
101 | 129 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
94 | 110 | | |
95 | 111 | | |
96 | 112 | | |
| |||
206 | 222 | | |
207 | 223 | | |
208 | 224 | | |
209 | | - | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
210 | 233 | | |
211 | 234 | | |
212 | 235 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
167 | 167 | | |
168 | 168 | | |
169 | 169 | | |
170 | | - | |
| 170 | + | |
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
| |||
790 | 790 | | |
791 | 791 | | |
792 | 792 | | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
0 commit comments