Lab 1 — Bare model call
Concept
This is the control group: a call that is stateless, has no tools, and has no memory. It exists to make the next lab’s improvement measurable, and to make one thing obvious — the model must act, not just describe what it thinks is happening.
The task (M1) asks the model to inspect and report on a small, broken online store. With no tools, it can only guess: it invents plausible-looking ports and env vars, misses real issues, and claims to have “fixed” things it never touched. A deterministic scorecard (accuracy against a known answer key, plus a fabrication check against the simulator’s write log) makes these failures explicit instead of impressionistic.
Key ideas
- A bare call has no way to find out anything — it can only pattern-match from training data onto a task it has never actually seen.
- The
StoreHealthReportenvelope is the contract the grader checks against; a malformed response is itself a scored failure. - The fabrication check cross-references every “fixed” claim against the simulator’s write log — claiming success is not the same as achieving it.
- This run’s scorecard becomes the baseline every later lab’s
harness evalis compared against.
This self-contained snapshot starts from Lab 0 and introduces a first-cut, offline-testable representation of its capability. It retains all earlier checks and can be installed independently.
Added in this lab
harness/bare.pyaddsrun_bare(): one stateless model request with no tools, establishing the control-group behavior.checks/test_bare.pychecks that the call returns a turn without tool calls.
Learner steps
- Create and activate a virtual environment, install the lab, and configure the same non-secret Foundry settings used in Lab 0:
python -m venv .venv
. .venv/bin/activate
pip install -e '.[dev]'
cp .env.example .env
az login
Fill in the endpoint and deployment values in .env; never put credentials
or API keys there.
-
Open the persistent prompt and ask several questions that need no repository access:
harness askAt
You>, tryWhat is the capital of Japan?and thenWhat is 17 multiplied by 23?. EachAssistant>response is printed above the reappearing prompt, along with provider-reported token counts. Enter/exitto return to your shell. Each turn is a fresh, stateless model call: the harness has no tools or memory, so it cannot inspect files or remember the previous question. To run a single turn without opening the prompt, useharness ask "What is the capital of Japan?". -
Ask about the practice app. Start from the app at tag
lab00-done:cd ../app harness ask "What does this project's README say? Which files are in it?"Observe: the model can’t see your files. It either says so or makes up a plausible answer. Record which one it did. This is the gap Lab 2A closes: the same question with tools gets an answer based on the files. Return to the lab folder (
cd ../lab01-bare-call) and tag the app withgit -C ../app tag lab01-done. - Run
pytest checks/test_bare.pyfor deterministic offline verification, thenpytest checks/for the full snapshot regression suite. - Inspect the snapshot’s declared capabilities with
harness lab-info.
External integrations
The following integration requires learner-provisioned credentials and resources; the commands above support direct questions, but this snapshot does not include an automated command for the scored evaluation:
- Foundry bare-call evaluation
All live paths must use Entra credentials and must not add API-key configuration.