You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for the full pre–Code Club walkthrough on branch v2-testing-aug14.
Goal: verify every lab end-to-end along two self-contained paths — a UI (portal-first) walkthrough and a CLI (azd/Copilot-first) walkthrough — hardening Fundamentals + Core first, then Capstone, then More Labs.
How to use: pick a path, then work top-to-bottom. Each path is ordered so it runs end-to-end in a single sitting with no forward references. Path A is listed first because it needs no local toolchain; Path B reuses the same subscription but a fresh azd env name.
Legend: ✅ = verified working as written · edits needed get a linked commit/PR.
🔗 Related issues
This walkthrough is the verification vehicle for the open issues below. Each is anchored to the checklist item that proves it out — close the issue when that item is checked and the fix has landed.
0.4 Subscription has quota/region availability for gpt-5.4-mini + gpt-5.4-judge
0.5 specs/course.yaml matches the actual lab set on disk — all 18 IDs resolve both ways, no orphans
0.5a Fix azd up → azd provision / azd deploy in the course.yaml titles for 01-provision-azd and 05-deploy-hosted-agent; reconcile the lone azd up at 01-provision-azd.md:100
A5b Mixed-path linker — run ./scripts/link-portal-rg.sh before Lab 05 Step 1; confirm it discovers the RG + Foundry account + project, seeds the azd env, and azd provision reuses the existing RG (no second RG created) — ref Using UI Path can cause duplicate RG creation after Step 5 #2
A6 fundamentals/06-verify.md — Fundamentals checkpoint passes from the portal
A7 core/00-overview.md — map table + prerequisites match what A1–A6 produced
A8 core/01-observe-portal.md — invoke the agent, first traces appear in the portal
A9 core/02-evaluate-portal.md — sample dataset created + quality evaluator runs
A10 core/03-optimize-skills.md — optimizer produces a new prompt; review results in portal — ref Remove Web Search Tool from Prompt Agent #1 (this is where web search gets removed or scoped by instruction)
A11 core/04-monitor-portal.md — post-change evidence shows the improvement
A12 core/05-capstone-hosted.md — capstone loop completes, verified in the portal
B1a scripts/link-portal-rg.sh runs cleanly against a portal-created RG (idempotent, no destructive side effects) and correctly sets AZURE_RESOURCE_GROUP, AZURE_AI_ACCOUNT_NAME, USE_EXISTING_AI_PROJECT=true, AI_PROJECT_DEPLOYMENTS="[]" — ref Using UI Path can cause duplicate RG creation after Step 5 #2
B3a Gotcha: invalid character 'n' after object key:value pair — the four *Json params in infra/main.parameters.json; workaround azd env set AI_PROJECT_DEPLOYMENTS "[]"
R8 Decide: add a mermaid-syntax guardrail to the test suite (30 diagrams, currently zero coverage — a broken one is invisible to pytest and shows as a red error box on GitHub). Validated manually this pass via mermaid@11parse(); a permanent check needs a Node dep in a Python repo, or a lightweight regex-based structural test.
📸 Screenshots to capture
One item per lab; count in () = number of <!-- TODO(nitya): screenshot --> markers currently in that file. Tick when all placeholders in the file have been replaced with real images under labs/<phase>/images/.
T7 labs/more/trace-driven-datasets.md (line 43) — paste the canonical KQL query
🎨 Visual navigation spot-checks
For each Fundamentals lab, confirm the compact "📍 You are here" mermaid banner renders on GitHub and that the highlighted (teal) node matches the lab file.
Tracking issue for the full pre–Code Club walkthrough on branch
v2-testing-aug14.Goal: verify every lab end-to-end along two self-contained paths — a UI (portal-first) walkthrough and a CLI (azd/Copilot-first) walkthrough — hardening Fundamentals + Core first, then Capstone, then More Labs.
How to use: pick a path, then work top-to-bottom. Each path is ordered so it runs end-to-end in a single sitting with no forward references. Path A is listed first because it needs no local toolchain; Path B reuses the same subscription but a fresh
azd envname.Legend: ✅ = verified working as written · edits needed get a linked commit/PR.
🔗 Related issues
This walkthrough is the verification vehicle for the open issues below. Each is anchored to the checklist item that proves it out — close the issue when that item is checked and the fix has landed.
azd deploy0️⃣ Pre-flight (do once, before either path)
v2-testing-aug14and cleanpip install -r requirements-dev.txt&&pytest -qpasses on a clean tree — 14 passed in 0.67s in Codespaceaz login+azd auth loginagainst the target tenant (both, independently cached) — ref Deploying hosted agent in Microsoft Internal tenant issue #3gpt-5.4-mini+gpt-5.4-judgespecs/course.yamlmatches the actual lab set on disk — all 18 IDs resolve both ways, no orphansazd up→azd provision/azd deployin thecourse.yamltitles for01-provision-azdand05-deploy-hosted-agent; reconcile the loneazd upat01-provision-azd.md:100🖥️ Path A — UI walkthrough (Foundry portal first)
Run in this order.
fundamentals/00-overview.md— orientation; mermaid renders, all links resolvefundamentals/02-provision-portal.md— provision Foundry project in the portal; record the RG name for reuse in A5fundamentals/03-deploy-models.md— deploy both models via the portalfundamentals/04-create-prompt-agent.md— create the Prompt Agent in the portal — ref Remove Web Search Tool from Prompt Agent #1data/*.csv, answers are a mix of web + grounded — confirm the lab shows thisfundamentals/05-deploy-hosted-agent.md— confirm the "portal cannot create hosted agents" callout is accurate; portal is view/manage only./scripts/link-portal-rg.shbefore Lab 05 Step 1; confirm it discovers the RG + Foundry account + project, seeds the azd env, andazd provisionreuses the existing RG (no second RG created) — ref Using UI Path can cause duplicate RG creation after Step 5 #2fundamentals/06-verify.md— Fundamentals checkpoint passes from the portalcore/00-overview.md— map table + prerequisites match what A1–A6 producedcore/01-observe-portal.md— invoke the agent, first traces appear in the portalcore/02-evaluate-portal.md— sample dataset created + quality evaluator runscore/03-optimize-skills.md— optimizer produces a new prompt; review results in portal — ref Remove Web Search Tool from Prompt Agent #1 (this is where web search gets removed or scoped by instruction)core/04-monitor-portal.md— post-change evidence shows the improvementcore/05-capstone-hosted.md— capstone loop completes, verified in the portalazd down --purge --force(or portal delete); confirm no orphaned RG is left behind — ref Using UI Path can cause duplicate RG creation after Step 5 #2⌨️ Path B — CLI walkthrough (azd + Copilot CLI)
Run in this order. Use a new
azd envname rather than reusing Path A's.azd env new <fresh-name>— avoids stale server-side state; lab should also explain how to point an env at an existing portal-created RG for the mixed UI→CLI case — ref Using UI Path can cause duplicate RG creation after Step 5 #2scripts/link-portal-rg.shruns cleanly against a portal-created RG (idempotent, no destructive side effects) and correctly setsAZURE_RESOURCE_GROUP,AZURE_AI_ACCOUNT_NAME,USE_EXISTING_AI_PROJECT=true,AI_PROJECT_DEPLOYMENTS="[]"— ref Using UI Path can cause duplicate RG creation after Step 5 #2fundamentals/00-overview.md— orientation (CLI framing)fundamentals/01-provision-azd.md—azd provisionsucceedsinvalid character 'n' after object key:value pair— the four*Jsonparams ininfra/main.parameters.json; workaroundazd env set AI_PROJECT_DEPLOYMENTS "[]"fundamentals/03-deploy-models.md— bicep defaults deployed (gpt-5.4-mini,gpt-5.4-judge)fundamentals/04-create-prompt-agent.md— prompt agent via CLI /agent.yaml— ref Remove Web Search Tool from Prompt Agent #1 (tool config matches the portal path)fundamentals/05-deploy-hosted-agent.md—azd deploycreates the hosted agentmodified concurrently→azd down --purge --force→azd env new→ re-provision → re-deploySubdomain does not map to a resourceandrefresh token has expired due to inactivity; re-auth bothazandazd— ref Deploying hosted agent in Microsoft Internal tenant issue #3fundamentals/06-verify.md— Fundamentals checkpoint passes from the CLIcore/01-observe-portal.md— drive invocations from the CLI to generate tracescore/02-evaluate-portal.md— batch eval run from the CLIcore/03-optimize-skills.md— Copilot +microsoft-foundryskill prompt optimization — ref Remove Web Search Tool from Prompt Agent #1core/04-monitor-portal.md— CLI re-eval + before/after comparisoncore/05-capstone-hosted.md— capstone loop end-to-end from the CLIscripts/reset.shrestoressrc/fromsrc.original/after the optimize labsazd down --purge --force🧪 More Labs (explore after both paths land)
more/README.md— index is accurate and links resolvemore/continuous-eval.mdmore/trace-driven-datasets.mdmore/red-teaming.mdmore/troubleshooting.md— every gotcha hit in Path A/B is captured here (incl. Using UI Path can cause duplicate RG creation after Step 5 #2 duplicate-RG and Deploying hosted agent in Microsoft Internal tenant issue #3 auth/RBAC)🔧 Repo-level checks (after walkthroughs, before Code Club)
labs/_template/lab-template.md(H1Lab NN — …, 🎯 🧭 📋 ✅ 🧠 ➡️ sections)reference/artifact underartifacts/AGENTS.mdknown-gotchasprogress-trackerTODO(nitya)items either resolved or converted to real tickets)pytest -qstill passes after all walkthrough editspytestand shows as a red error box on GitHub). Validated manually this pass viamermaid@11parse(); a permanent check needs a Node dep in a Python repo, or a lightweight regex-based structural test.📸 Screenshots to capture
One item per lab; count in
()= number of<!-- TODO(nitya): screenshot -->markers currently in that file. Tick when all placeholders in the file have been replaced with real images underlabs/<phase>/images/.fundamentals/00-overview.md(1) — architecture diagram (Concierge → specialists → CSVs)fundamentals/01-provision-azd.md(2) — device-code prompt, RG in Azure portalfundamentals/02-provision-portal.md(3) — Foundry landing, Create-project form, Project-endpoint fieldfundamentals/03-deploy-models.md(3) — Deploy button, Succeeded state, Models listfundamentals/05-deploy-hosted-agent.md(2) —azd deploysuccess,azd ai agent invokeoutputfundamentals/06-verify.md(2) — Prompt-agent playground, Hosted-agent playground with trace panelcore/01-observe-portal.md(4) — playground + logs, metrics dialog, response with AI Quality, polite-refusal + scope scorecore/02-evaluate-portal.md(3) — New-evaluation flow, evaluator-selection panel, low-scoring row with rationalecore/03-optimize-skills.md(3) — Copilot Chat + MCP setup, streaming observe workflow, redeploy before/aftercore/04-monitor-portal.md(2) — Monitor tab (all charts), Tokens chart + AI-generated analysismore/red-teaming.md(1) — safety-evaluator selection panel🧹 Non-screenshot
TODO(nitya)itemsConfirm each of these is resolved (or deliberately deferred with an updated marker) before Code Club.
infra/main.bicep— structural fix for the four*Jsonparams (change toarray/object, dropjson(), un-quote inmain.parameters.json)infra/README.md— confirm region + SKU choices for the standardized modelsscripts/provision-portal.md— fill in the portal screenshots + step-by-step instructions (or link to Lab 02 and delete)src/README.md— confirm the exactazd ai agent runincantationlabs/more/continuous-eval.md(line 47) — swap in real command once the eval runner is finalizedlabs/more/continuous-eval.md(line 89) — confirm runner + secrets story (prefer OIDC)labs/more/trace-driven-datasets.md(line 43) — paste the canonical KQL query🎨 Visual navigation spot-checks
For each Fundamentals lab, confirm the compact "📍 You are here" mermaid banner renders on GitHub and that the highlighted (teal) node matches the lab file.
fundamentals/00-overview.mdbanner highlights 00fundamentals/01-provision-azd.mdbanner highlights 01fundamentals/02-provision-portal.mdbanner highlights 02fundamentals/03-deploy-models.mdbanner highlights 03fundamentals/04-create-prompt-agent.mdbanner highlights 04fundamentals/05-deploy-hosted-agent.mdbanner highlights 05fundamentals/06-verify.mdbanner highlights 0600-overview.md(➡️ Nextsection) still renders and itsscripts/link-portal-rg.shThis issue is kept up to date as the walkthrough progresses — items are added, split, or checked off as they're verified.