Move the consolidated labs to the Caldova scenario - #243
Merged
Conversation
The labs were set at Tailwind Traders, an outdoor-gear retailer. They now run at Caldova, a pharmaceutical manufacturer facing a 7% capacity gap across three sites ahead of an accelerated launch, deciding whether to close the gap internally or engage a pre-qualified contract manufacturer. The teaching mechanics are untouched. Every function tool keeps its arity and its arithmetic, so the JSON tool schemas, the hand-written tool-calling loop and the Agent Framework contrast still demonstrate exactly what they did before: next_available_trip(region) -> next_available_slot(site) calculate_rental_cost(tier, days, service) -> calculate_transfer_cost(tier, weeks, priority) generate_booking_report(...) -> generate_capacity_report(...) Rates and multipliers keep their values, so the worked examples in the instructions stay arithmetically correct: 5 x 300 x 1.25 is still 1,875. Where the retail labs had the agent commit an action, the Caldova equivalent drafts a request for a person to approve. An agent that books plant capacity on its own is a change-control problem, and saying so makes the lab more credible in a regulated setting. Six knowledge articles are rewritten rather than renamed, and Lab D's evaluation set is rewritten against them so every ground truth is checkable. The red-team objectives stay in the same three risk categories but move to a manufacturing setting; the self-harm objective is anchored in workplace distress, deliberately avoiding medication content. Anton is untouched. He is the Ask Anton learning guide, not a character in the scenario. Instructions/Exercises is untouched: the published Learn labs never referenced the scenario. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc4690cc-57d6-48a7-abc8-bc8570113ab1
Verification beyond the CI checks found four classes of problem that structural checks cannot see. Instructions had drifted from code. D1 still showed the old span names and agent name, and C4's expected output still listed the retail sample ticket, so a learner following the page would not have matched what the code produced. A4's Agent Framework example still passed 'region'. Lab D's evaluation set had an ungroundable row. The question about slot lead time was answerable only from Lab A's policy file, which Lab D's agent is not grounded on, so a correctly behaving agent would have scored badly on groundedness for reasons that had nothing to do with the agent. The slot request rules now live in the capacity policy article, and all ten rows are answerable from the knowledge base. The triage categories still described refunds and receipts, which no longer fit an internal support desk. A few 'store policy' references survived because the earlier replacement matched a string that the company rename had already changed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc4690cc-57d6-48a7-abc8-bc8570113ab1
A second consistency pass over the scenario swap. Task A1 teaches grounding, and its first test question asked about a 'capacity request with a complete brief' - wording that appears in the knowledge base but not in the policy file that task actually grounds on. The question now uses the policy's own wording, so the first thing a learner sees in the grounding task is an answer drawn straight from the document. The portal instructions in B1 still told the agent it specialized in our products, and the block had been left awkwardly wrapped by the rename. Scenario paragraphs are reflowed. The replacement text was longer than what it replaced, so several paragraphs had one line running well past the width the rest of the file uses. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc4690cc-57d6-48a7-abc8-bc8570113ab1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the consolidated labs (A–D) from Tailwind Traders to Caldova, the pharmaceutical scenario from the case study draft.
Caldova faces a 7% capacity gap across three manufacturing sites ahead of an accelerated launch, and needs to decide whether it can close the gap internally or engage a pre-qualified contract manufacturer.
The teaching mechanics don't change
Every function tool keeps its arity and its arithmetic, so the JSON tool schemas, the hand-written tool-calling loop, and the Agent Framework contrast all still demonstrate exactly what they did before:
next_available_trip(region)next_available_slot(site)calculate_rental_cost(gear_tier, days, service_level)calculate_transfer_cost(cmo_tier, weeks, priority)generate_booking_report(...)generate_capacity_report(...)get_weekly_sales()get_weekly_consumption()Rates and multipliers keep their values, so the worked examples in the instructions stay arithmetically correct — 5 × 300 × 1.25 is still 1,875.
Actions draft rather than commit
The case study lists change control over production systems and supplier portals as a customer concern. Where the retail labs had the agent commit an action (take a booking), the Caldova equivalent drafts a request for a person to approve. No code shape changes, and it makes the lab more credible in a regulated setting.
Content rewritten, not renamed
ground_truthis checkable against real source text.Scope
Instructions/Exercisesis untouched — the published Learn labs never referenced the scenario.Naming
Invented names (three sites, three CMOs, the
CAL-204program code) aren't supplied by the case study and may change. They're recorded together so a future rename is a single pass. All fictional domains use.example, which is reserved and can't resolve.The five azd environments are renamed (
tailwind-traders-lab→caldova-lab, and so on), so anyone mid-deployment gets a fresh environment.Verification
All Tier 0 checks pass, plus
generate_lab_blocks --checkandsync --check. Every Python file parses, all JSON/JSONL/YAML validates, both function trees were executed and return correct values including error paths, and every file referenced by the instructions resolves. A vocabulary sweep for retail terms across instructions and Labfiles returns zero.Not yet done: nothing here has been run against a live Foundry project.