Session 2. Call a model through the adapter — Tue 15 Sep
Conclusion
You called a model through complete(system, user) -> str and never through a
vendor SDK.
What you did
- You read the seam: a Protocol, four clients, and one
get_clientthat turns four configuration fields into one of them. - You ran the same prompt on two lanes and watched the fake agree with itself twice while a real model did not.
- You wrote down what a lane change may move — wording, latency, cost, agreement — and what it may not: permissions, grading, redaction, retry budgets, failure behaviour.
- You wrote your reliability bar in three sentences, so week 2 has something to measure against.
- You made a missing credential fail closed at configuration time, with the fix in the message and the key nowhere in it.
- You made an unknown provider fail in your process, and saw why a model name can only be checked by asking the provider.
The failure you handled
A timeout. answer_with_timeout turns a provider that never answers into an
AgentResult flagged for review, citing nothing, with the cause kept in the
trace and out of the answer.
What to carry forward
From here, every client you write is passed in as an argument. Nothing in the capstone constructs its own model.
Into session 3
Session 3 assumes this seam and stops trusting the string that comes back
through it: ResearchAnswer, a strict parser, and a parse failure that is also a
refusal.