A payroll software company runs a service that summarises support tickets into a fixed JSON layout for its reporting pipeline. On Monday the downstream parser began rejecting 14 percent of summaries because a field arrived under a different name. The service loads its prompt only from files in the repository, and those files have the same content hash as last month. The parser's dependency lockfile is unchanged, and replaying last month's tickets, which all parsed cleanly at the time, now reproduces the failures. The architecture document records the model only as "the current Sonnet model". What is the most likely cause?
- AThe configuration names a model alias that now resolves to a newer model, and nobody recorded the change Correct
- BAn unrecorded edit to the summary prompt, made outside the repository and missed by the content hash
- CA change in the mix of incoming tickets, with more long multi-issue threads that the summariser mishandles
- DA parser library upgrade that tightened field-name matching and now rejects summaries it once accepted
Why A is correct: Correct. Identical inputs, an identical prompt and an unchanged parser now give different output, which leaves the model as the variable, and documentation that names only a model family rather than a pinned version lets that switch happen without a record.
Why B is wrong: Tempting because unversioned prompt edits are a common source of silent regressions. It is wrong because the service loads its prompt only from the repository files, and their content hash is unchanged.
Why C is wrong: Tempting because input drift often explains a rise in failures. It is wrong because replaying last month's tickets, which parsed cleanly at the time, now fails too, so the inputs are held constant and still break.
Why D is wrong: Tempting because dependency upgrades do change validation behaviour. It is wrong because the parser's lockfile is unchanged, and the rejections are caused by a field arriving under a different name, which is a change in the output itself.