Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
260 commits
Select commit Hold shift + click to select a range
02898f8
Merge pull request #65 from aayush3011/users/akataria/pydataUpdates
aayush3011 Jun 5, 2026
31302f4
Phase 0: establish unified base (v2 + analytics design + ADR-0006)
markjbrown Jul 8, 2026
20c3457
feat(analytics): re-wire Cosmos Debug capture into v2 completion path
markjbrown Jul 8, 2026
f2e9b9b
feat(data-gen): add --start-persona resume flag
markjbrown Jul 8, 2026
0603b54
fix(itinerary): persist trips under the real user, single-call create
markjbrown Jul 8, 2026
4e35564
fix(windows): force UTF-8 stdout/stderr so emoji logs don't crash
markjbrown Jul 8, 2026
b137e78
test(eval): add v2 supervisor-delegation routing evaluation
markjbrown Jul 9, 2026
5181dc2
fix(memory): recall_memories tool was invoking a list, always failed
markjbrown Jul 9, 2026
948e557
docs(module-02): teach trip-tool identity injection (match reference …
markjbrown Jul 9, 2026
0cb3c26
docs(analytics): rename "Open Analytics Schema" to "Open Agent Analyt…
markjbrown Jul 9, 2026
eaf426c
docs(analytics): add optimization-scenarios catalog + SCEN-001
markjbrown Jul 9, 2026
c9c7d8f
docs(analytics): map scenarios to the 5-level maturity model + vision…
markjbrown Jul 9, 2026
e827262
Merge remote-tracking branch 'upstream/main' into mjbrown/unify-v2
markjbrown Jul 9, 2026
92cd672
docs(analytics): data-validate optimization scenarios + promote SCEN-…
markjbrown Jul 9, 2026
d771aeb
feat(analytics): add reproducible optimization_mining.py + reference it
markjbrown Jul 9, 2026
9630fec
docs(analytics): clarify model selection is single-model today (oppor…
markjbrown Jul 9, 2026
a2fb8a9
docs(analytics): promote SCEN-003 (cost/outcome KPI) + SCEN-008 (tool…
markjbrown Jul 9, 2026
6ecad96
docs(analytics): promote SCEN-005 (agent-path cost) + SCEN-002 (memor…
markjbrown Jul 9, 2026
b717dba
feat(analytics): SCEN-007 apply-loop - policy-driven capability-tiere…
markjbrown Jul 9, 2026
418e4dd
docs(adr): ADR-0008 optimization apply-loop (policy-driven model sele…
markjbrown Jul 9, 2026
6d9b929
docs(analytics): workshop-integration plan for the apply-loop
markjbrown Jul 9, 2026
0fdf500
docs(analytics): lock workshop module plan (Module 07 Analytics & Opt…
markjbrown Jul 9, 2026
ae89e8b
docs(workshop): add Module 07 Analytics & Optimization; renumber Less…
markjbrown Jul 9, 2026
db47e3d
feat(workshop): additive optimization layer for 01_exercises (Module 07)
markjbrown Jul 9, 2026
8964be6
docs(analytics): full two-module Analytics & Optimization lab scope
markjbrown Jul 9, 2026
6939520
docs(workshop): split into Module 07 Analytics + Module 08 Optimizati…
markjbrown Jul 9, 2026
57c756a
docs(workshop): deepen Modules 07-08 (insight-reading talking points,…
markjbrown Jul 9, 2026
19842c5
feat(workshop): Optimization Console (didactic dashboard) + /metrics …
markjbrown Jul 9, 2026
409eee3
feat(workshop): Scenario B (SCEN-001) - human-governed L3 staged-chan…
markjbrown Jul 9, 2026
a8bbec1
feat(analytics): traffic simulator + Fabric reverse-ETL notebook (WIP…
markjbrown Jul 9, 2026
da1410a
docs(fabric): automation runbook + findings (mirror, RBAC, WorkspaceI…
markjbrown Jul 9, 2026
055d3ef
docs(fabric): Direct Lake semantic model created + validated (real-ti…
markjbrown Jul 9, 2026
9c1a6cb
infra(bicep): make Cosmos account Fabric-mirroring-ready (provisioned…
markjbrown Jul 9, 2026
8863f05
fix(fabric): reverse-ETL notebook working (JDBC SQL-endpoint read) + …
markjbrown Jul 9, 2026
2a1051c
infra(bicep): dedicated per-container autoscale (not shared) - ground…
markjbrown Jul 9, 2026
6402c5a
infra(bicep): 7-day TTL on Checkpoints (bounds LangGraph checkpoint b…
markjbrown Jul 9, 2026
335b64c
docs(powerbi): V2 build guide (DirectQuery over mirror, real-time) + …
markjbrown Jul 9, 2026
04463f5
analytics: de-V2 docs/tooling; add Power BI optimization build guide …
markjbrown Jul 10, 2026
fdac972
Modernize models to gpt-5.1 (reasoning) on Azure AI Foundry (AIServices)
markjbrown Jul 10, 2026
f5ba0fc
fix(telemetry): enable stream_options usage under streaming (incorpor…
markjbrown Jul 10, 2026
abf99c2
fix(telemetry): enable stream_options include_usage in _build_chat_model
markjbrown Jul 10, 2026
0e71748
fix(resilience): raise chat model max_retries 1->4; add Marvel user s…
markjbrown Jul 11, 2026
3033b7a
infra: add optional deployAnalytics flag (default true) gating optimi…
markjbrown Jul 11, 2026
4da6727
docs: document deployment/run model + deployAnalytics flag in both RE…
markjbrown Jul 11, 2026
167ec20
feat(hosting): optional hosted Container Apps deploy (deployHostedApp…
markjbrown Jul 11, 2026
bac1c15
fix(hosting): make hosted Container Apps deploy succeed end-to-end (v…
markjbrown Jul 11, 2026
e1afb51
fix(resilience): MCP tool-load timeout + autoscale throughput on poli…
markjbrown Jul 11, 2026
f0e3b60
01_exercises: model modernization + optional hosted-app parity with 0…
markjbrown Jul 11, 2026
bf1f007
docs: document deployHostedApp flag in both READMEs
markjbrown Jul 11, 2026
0d7a4b6
docs(fabric): retarget runbook to the new westus account; note steps …
markjbrown Jul 11, 2026
b5e4c34
feat(fabric): parameterize reverse-ETL notebook endpoints + modernize…
markjbrown Jul 11, 2026
ca10b7e
feat(fabric): parameterize model list + pricing in reverse-ETL notebook
markjbrown Jul 11, 2026
639d246
Add Fabric capacity (F2) to infra, gated by deployAnalytics
markjbrown Jul 11, 2026
f7feaad
Add Fabric capacity pause/resume + mirror-sync control to Optimizatio…
markjbrown Jul 11, 2026
43b9597
Widen Fabric capacity propagation wait to 40 min
markjbrown Jul 11, 2026
138c838
Disable Fabric Pause until the mirror has caught up
markjbrown Jul 11, 2026
f34cf12
Add pre-baked 'golden' demo dataset (conversations + analytics signal…
markjbrown Jul 11, 2026
bea8c13
Clarify: pre-baked seed populates Cosmos only; Fabric still needs mir…
markjbrown Jul 11, 2026
6015920
Orchestrator: wait for workspace-identity SP to propagate to AAD befo…
markjbrown Jul 11, 2026
5b6a414
Prompt for Fabric capacity region during azd up when deployAnalytics=…
markjbrown Jul 11, 2026
72c8792
Fabric README: region requirement + validated Phase 1 IDs/automation
markjbrown Jul 11, 2026
ac19243
Reframe Fabric region as flexibility (not an MSIT restriction); renam…
markjbrown Jul 11, 2026
2cd95d9
Orchestrator: wait for mirror to initialize before startMirroring
markjbrown Jul 11, 2026
8801e81
Orchestrator: only set Cosmos networkAclBypass for restricted (non-pu…
markjbrown Jul 11, 2026
ab0b98a
Fabric mirroring: grant readAnalytics to the OAuth2 connection identi…
markjbrown Jul 11, 2026
4f2e9b0
Grant FabricMirroringRole to user + app managed identity + workspace …
markjbrown Jul 11, 2026
eeb93d9
Park the automated Fabric connection spike + add a parking-lot doc
markjbrown Jul 11, 2026
6e8ebe3
Tighten parked-fix wording; remove future dates
markjbrown Jul 11, 2026
3a4e4b3
Seed an active model-selection OptimizationPolicy into the golden dat…
markjbrown Jul 11, 2026
5515ef7
Consistent trivial classification + time axis; richer trivial pattern…
markjbrown Jul 12, 2026
92a04bb
PowerBI guide: use turn_epoch/updated_epoch for time axis; real trivi…
markjbrown Jul 12, 2026
65163de
Refresh optimization scenario/baseline docs to gpt-5.1 + model_tier t…
markjbrown Jul 12, 2026
26cca62
Tighten PowerBI guide to concise first-timer instructions; move build…
markjbrown Jul 12, 2026
cd1e7ca
Parameterize model pricing from one config file (no hardcoding, no ne…
markjbrown Jul 12, 2026
eba5522
Store model pricing in Cosmos Configuration container, seeded from azd
markjbrown Jul 12, 2026
977af2f
Auto-add missing tables (Configuration) to an existing Fabric mirror
markjbrown Jul 12, 2026
405435d
Add before/after A/B demo dataset, live-turn helper, and demo script
markjbrown Jul 13, 2026
b55d555
Reconcile stale gpt-4.1-mini -> gpt-5-mini in optimization modules
markjbrown Jul 13, 2026
d764694
Fix stale gpt-4.1 completions deployment example in Modules 05/06
markjbrown Jul 13, 2026
228c413
Port SCEN-001 city-context (staged prompt) card into 02_completed
markjbrown Jul 13, 2026
e1c9d93
Add SCEN-008 (staged) + SCEN-003/005 (diagnostic) optimization cards …
markjbrown Jul 13, 2026
3fbf607
Capture agent_path in exercise base app + mirror SCEN-001/003/005/008…
markjbrown Jul 13, 2026
c65adfa
Add SCEN-004 memory-retention as a reversible apply-able policy (both…
markjbrown Jul 13, 2026
3e8a0b4
Render diagnostic + all scenario cards in the Optimization Console (b…
markjbrown Jul 13, 2026
f094b64
Teach the expanded scenario set by action-type in Modules 07/08
markjbrown Jul 13, 2026
b025ffe
Uplevel SCEN-003 to a conversion funnel: where sessions leak and why
markjbrown Jul 13, 2026
941930f
Document the conversion funnel (business-impact) across modules + dem…
markjbrown Jul 13, 2026
d4c5100
Add reverse-ETL insight schema + reference; mirror Messages + Optimiz…
markjbrown Jul 13, 2026
1add006
Add the learner reverse-ETL Spark notebook (conversion funnel)
markjbrown Jul 13, 2026
3ae1ca1
Add Business Impact (conversion funnel) report page reading reverse-E…
markjbrown Jul 13, 2026
30144c1
Add Module 09 (Fabric Analytics & Reverse-ETL); renumber lessons to M…
markjbrown Jul 13, 2026
7a659fe
Add compute_insights step to demo script so the Business Impact page …
markjbrown Jul 13, 2026
df9e30a
Inject the Module 09 notebook during Fabric provisioning (per-tree va…
markjbrown Jul 13, 2026
606c729
Module 09 + fabric README: notebook is provisioned (not hand-imported…
markjbrown Jul 13, 2026
5b57629
Retire the old TravelAssistantOptimizationInsights notebook
markjbrown Jul 13, 2026
b1fb3c3
Update fabric README for the retired old notebook / funnel notebook
markjbrown Jul 13, 2026
5f98efe
Fix PBI guide: drop non-existent semantic-model refs, dedupe Step 5->6
markjbrown Jul 13, 2026
b1d011d
Port /optimizations/{tenant}/metrics into 02_completed (console KPI p…
markjbrown Jul 26, 2026
84cf70a
Ship the Agent Optimization Power BI template referenced by Modules 0…
markjbrown Jul 26, 2026
e69c85b
Fix Est Cost USD DAX: price gpt-5-mini (retire stale gpt-4.1-mini)
markjbrown Jul 26, 2026
854c876
Drop EnableFabricNetworkAclBypass from Cosmos bicep (public accounts …
markjbrown Jul 26, 2026
db33efc
docs(fabric): remove network-ACL-bypass references (not needed for pu…
markjbrown Jul 26, 2026
a73da67
Add optional GSI/provisioned-throughput deploy mode to 01_exercises (…
markjbrown Jul 26, 2026
04ff30c
fix(seed): force UTF-8 stdout in 01_exercises seed_data.py (Windows c…
markjbrown Jul 26, 2026
29e0dc6
fix(seed): add UTF-8 stdout guard to seed_gsi_trips.py (both trees)
markjbrown Jul 26, 2026
cdc1437
docs(workshop): link each module in Home.md learning path
markjbrown Jul 26, 2026
da5b9c3
docs(readme): mention optional analytics & optimization modules in Ov…
markjbrown Jul 26, 2026
802d190
docs(readme): update deployAnalytics module refs (07-09 + Fabric capa…
markjbrown Jul 26, 2026
71f19b6
docs(module-00): move deployment flags into Module 00; README points …
markjbrown Jul 26, 2026
13507aa
docs: streamline READMEs; move local-run detail out of root; delete r…
markjbrown Jul 26, 2026
5d5c625
docs: compartmentalize deployment into 02_completed/README; keep root…
markjbrown Jul 26, 2026
a28b273
chore: gitignore .pbix working files; mark Modules 8 & 9 optional in …
markjbrown Jul 26, 2026
ed5091c
docs: add Python/Node install links to Module 00 prereqs; mark Module…
markjbrown Jul 26, 2026
f74aba1
docs(module-00): add Azure CLI to prerequisites (required; azd does n…
markjbrown Jul 26, 2026
d42d3af
docs(module-00): fix scrambled auth steps; unify azd + az login acros…
markjbrown Jul 26, 2026
0f6bfd3
fix(infra): correct Checkpoints partition key to /partition_key
markjbrown Jul 27, 2026
f2fbefa
fix(mcp): version-robust recall_memories + UTF-8 guard + append_turn …
markjbrown Jul 27, 2026
7bf4970
docs(workshop): fix Module 1-5 bugs found in review pass
markjbrown Jul 27, 2026
7b30e11
chore(frontend): bump Angular to 19.2.25 and update login footer
markjbrown Jul 27, 2026
3a638d0
chore(config/docs): remove COSMOSDB_KEY (keyless) and standardize Azu…
markjbrown Jul 27, 2026
bc591a1
docs(workshop): fix Module 4 Activity 5 step numbering and agent_memo…
markjbrown Jul 27, 2026
85d0b28
fix(module5): correct .env var names + add tool-wrapper tracing to re…
markjbrown Jul 27, 2026
8dcb3de
fix(module6): add UTF-8 stdout guard to evaluation scripts
markjbrown Jul 27, 2026
acc05a2
fix(analytics): read token counts from usage_metadata (01 scaffold)
markjbrown Jul 27, 2026
b202277
docs(modules 7-9): make code-placement instructions specific (file+an…
markjbrown Jul 28, 2026
16e20e9
docs(module9): name the actual pbit file + Business Impact page in Ac…
markjbrown Jul 28, 2026
641f379
Fix Power BI report: parameterize SQL connection, remove cached Unapp…
markjbrown Jul 30, 2026
3e173aa
Module 07: clarify optimization console + Power BI setup
markjbrown Jul 30, 2026
64bd84a
Module 09: PowerShell Fabric provisioning + accurate notebook/seed flow
markjbrown Jul 30, 2026
d3b152f
Traffic simulator: env-resolved Cosmos + PowerShell wrapper
markjbrown Jul 30, 2026
2c08364
Phase B: close the reverse-ETL loop for optimization recommendations
markjbrown Jul 30, 2026
881dbf0
Phase C: make the traffic simulator policy-aware
markjbrown Jul 30, 2026
292428d
Phase F1: measure real before/after saving via counterfactual scoring
markjbrown Jul 30, 2026
426f039
Phase G (spike): Fabric UDF for translytical apply/revert of optimiza…
markjbrown Jul 30, 2026
62f8651
Keep UDF artifacts customer-facing: state requirements, not debugging…
markjbrown Jul 30, 2026
9cfa35f
UDF runbook: confirmed REST invocation details + neutral alternative-…
markjbrown Jul 30, 2026
10e8451
Phase E: env-resolve Cosmos endpoint in remaining analytics scripts
markjbrown Jul 30, 2026
3daa1f3
Automate UDF deployment in Fabric provisioning; UDF reads tiers from …
markjbrown Jul 30, 2026
3a71923
Power BI guide: measured-saving page, translytical Apply/Revert butto…
markjbrown Jul 30, 2026
7e53767
Module 07/09 docs: Fabric-computed cards + translytical Apply/Revert …
markjbrown Jul 30, 2026
a0d418e
Module 09 notebook: compute + reverse-ETL the measured saving (counte…
markjbrown Jul 30, 2026
ecccda5
Rewrite 02_completed USER_GUIDE as a lean run & demo guide
markjbrown Jul 30, 2026
b7318ad
Measure optimizations by scenario, not tenant
markjbrown Jul 30, 2026
03b623a
Translytical: UDF returns string; correct the Power BI button wiring …
markjbrown Jul 30, 2026
8b0d598
Translytical: all UDF functions return strings; wire the button in th…
markjbrown Jul 30, 2026
1f0229a
Build guide: correct funnel sort (Sort by column stage_order, then so…
markjbrown Jul 30, 2026
5a4c666
Build guide: refinements from the live PBIT build
markjbrown Jul 30, 2026
30bd5ea
Power BI report: add reverse-ETL pages + OptimizationInsights/Configu…
markjbrown Jul 30, 2026
fe0fa3d
docs: translytical Power BI button is optional and tenant-gated; Cons…
markjbrown Jul 30, 2026
db8f5de
feat(fabric): auto-import the Power BI report in provisioning (drops …
markjbrown Jul 31, 2026
0409d18
docs: report is auto-deployed to Fabric; drop the .pbit (pbix-only)
markjbrown Jul 31, 2026
d522caf
feat(analytics): revive memory intelligence - mirror memories + repor…
markjbrown Jul 31, 2026
a3eec92
docs(Module-00): note the funnel_demo seed inflates OptimizationTurns…
markjbrown Jul 31, 2026
f8b76de
feat(02): serve the Optimization Console from the deployed frontend +…
markjbrown Jul 31, 2026
8c8eb10
feat(02/infra): output CONSOLE_URI alongside FRONTEND_URI
markjbrown Jul 31, 2026
ea04a57
docs(fabric): connection type is 'Azure Cosmos DB v2' + resource-grou…
markjbrown Jul 31, 2026
bb6fb95
feat(analytics): compute memory intelligence in the notebook (Section…
markjbrown Jul 31, 2026
a55ac60
fix(notebook): restore Section 0 (cosmos.oltp connector) + 4b in the …
markjbrown Jul 31, 2026
e9e3ec3
feat(analytics): make memory salience tiers config-driven (Configurat…
markjbrown Jul 31, 2026
7a74b17
fix(analytics): treat unscored (procedural) memories as their own bucket
markjbrown Jul 31, 2026
5ce64ba
feat(analytics): add Memory Intelligence report page + consolidate bu…
markjbrown Jul 31, 2026
79ca23a
chore(analytics): retire legacy Lakehouse analytics cluster
markjbrown Jul 31, 2026
0b4a5ee
fix(analytics): emit all optimization scenarios from the notebook (no…
markjbrown Jul 31, 2026
61f30c2
docs(analytics): add Result Note measure + card to build guide Page 5
markjbrown Jul 31, 2026
4fd735e
feat(console): add 'Freshen demo times' button + endpoint to re-stamp…
markjbrown Jul 31, 2026
de7692e
fix(demo): back off + retry on Cosmos 429 in refresh_turn_times
markjbrown Jul 31, 2026
db34f5e
fix(analytics): DirectQuery-safe TurnMinute/TurnTime calc columns
markjbrown Jul 31, 2026
993b983
docs(analytics): space-named calc columns + robust Policy Updated
markjbrown Jul 31, 2026
a5f1d03
docs(analytics): add report screenshots across build guide, modules, …
markjbrown Jul 31, 2026
6fc0232
feat(analytics): finalized Power BI report (.pbix) with Memory Intell…
markjbrown Jul 31, 2026
ce556ba
docs(user-guide): honest teardown section, reserved-partition note, m…
markjbrown Jul 31, 2026
54ee55e
docs(user-guide): lead with the hosted (deployed) apps, not local
markjbrown Jul 31, 2026
74f3c18
docs(modules): move the traffic simulator to Module 09, out of Module 07
markjbrown Jul 31, 2026
e28e720
docs(user-guide): clarify Console vs report + Apply button + model-se…
markjbrown Jul 31, 2026
b175daa
docs(adr): ADR-0009 — align product with the general optimization fra…
markjbrown Jul 31, 2026
2f86dcc
docs: Phase 1 clarity renames — Model Selection Baseline/Opportunity …
markjbrown Jul 31, 2026
d1e6213
docs(adr): ADR-0010 — agent-centric, data-driven analysis engine (pro…
markjbrown Jul 31, 2026
ada922d
docs(adr-0010): correct P0 to per-agent-execution grain (grounded in …
markjbrown Jul 31, 2026
10ad217
docs(adr-0010): add cost & data-generation strategy (attendee path ~\…
markjbrown Jul 31, 2026
3bccf47
docs(adr-0010): optimization seams + complexity resolution + provenan…
markjbrown Aug 1, 2026
cca6dc5
docs(adr-0010): add Projected Impact / What-If view + projection gene…
markjbrown Aug 1, 2026
ae52e77
docs(adr-0010): quality signal = reuse eval harness; unify Module 06 …
markjbrown Aug 1, 2026
928ff77
docs(adr-0010): detector taxonomy (3 kinds) + per-dimension set; arch…
markjbrown Aug 1, 2026
9a7805a
docs(adr-0010): LLM-analyst guardrails + rediscovery-as-regression-su…
markjbrown Aug 1, 2026
0c5bc51
docs(adr-0010): sequencing decision - close #73, redesign lands in a …
markjbrown Aug 1, 2026
52eb0ae
docs(analytics): author Solution Architecture Guide (ADR-0010 open item)
markjbrown Aug 1, 2026
1e33283
docs(analytics): correct guide §2 — base app is single-model; router …
markjbrown Aug 1, 2026
619c364
docs(analytics): rewrite Solution Architecture Guide as a clean green…
markjbrown Aug 1, 2026
e0187db
docs(analytics): add the optimization lifecycle state machine (§7.1)
markjbrown Aug 1, 2026
e734f30
docs(analytics): capture operating model, feedback loop, and analyst-…
markjbrown Aug 1, 2026
e1f0eca
docs(analytics): clarify quality signal - judge vs runner; LangSmith …
markjbrown Aug 1, 2026
e8f16a3
docs(analytics): detail the Open Agent Analytics Schema, source adapt…
markjbrown Aug 1, 2026
0c4a959
docs(analytics): make the discovery-engine validation model rigorous …
markjbrown Aug 1, 2026
4d09480
docs(analytics): make 5.2/9 validation model green-field (describe, d…
markjbrown Aug 1, 2026
9630477
docs(adr): add ADR-0011 (migration) - config seam as taught step + va…
markjbrown Aug 1, 2026
f61a26c
docs(analytics): add the foundational 'build the policy store' seam m…
markjbrown Aug 1, 2026
f1b55d7
docs(analytics): define the policy store (canonical envelope + domain…
markjbrown Aug 1, 2026
83204b0
docs(analytics): make the params contract rigorous (not an opaque blob)
markjbrown Aug 1, 2026
50f9f7e
docs(analytics): fix envelope comment - params is validated against t…
markjbrown Aug 1, 2026
b1629ae
docs(analytics): add forward pointer from 7's autonomy ceiling to the…
markjbrown Aug 1, 2026
bdd69b9
docs(analytics): explain how the platform knows seams and how deeper …
markjbrown Aug 1, 2026
728d4db
docs(analytics): cut the coding-agent runner over-reach; restore 'pla…
markjbrown Aug 1, 2026
d1d6c13
docs(adr): add ADR-0012 - validation-driven delivery loop + honest va…
markjbrown Aug 1, 2026
f1ff9f5
docs(analytics): soften partition-key claim + clarify client reuse (§…
markjbrown Aug 1, 2026
c6a1ba3
docs(adr): nail down Power BI Option-A surface (card gallery + select…
markjbrown Aug 1, 2026
c668569
docs: correct translytical blocker - transient product bug, not a ten…
markjbrown Aug 1, 2026
b19b80d
docs(analytics): add the Outcome adapter / outcome-linkage contract (…
markjbrown Aug 1, 2026
1ae496e
docs(analytics): split §11/§12 — solution-wide 'Cost and operations' …
markjbrown Aug 1, 2026
989719e
docs(analytics): decide engine-LLM execution (in-notebook) + configur…
markjbrown Aug 1, 2026
447d2d1
docs(analytics): record verified F2/AI-functions facts + engine-model…
markjbrown Aug 1, 2026
72b5ab1
docs(analytics): verify Fabric built-in model catalog from MS Learn -…
markjbrown Aug 1, 2026
8c90dae
docs(analytics): capture Entra-only engine-LLM auth + F2 throttling/4…
markjbrown Aug 1, 2026
7f06904
spike(B13): detector-fixture harness passes - detectors validated wit…
markjbrown Aug 1, 2026
e46d6fc
spike(B7,B1): deterministic halves pass - analyst guardrails + node-g…
markjbrown Aug 1, 2026
b2fd045
spike(B10,B16,B19): binding SDK + autonomy guard + outcome linkage pass
markjbrown Aug 1, 2026
7da3b21
spike(B15,B17,B8): feedback loop + node-grain simulator + generalized…
markjbrown Aug 1, 2026
18a38a4
feat(engine): reference implementation of the agent-centric analysis …
markjbrown Aug 1, 2026
1822b33
feat(engine): analysis pipeline (detect -> project -> propose -> guar…
markjbrown Aug 1, 2026
63eba57
feat(B19): stamp session correlation key on trip creation (outcome li…
markjbrown Aug 1, 2026
dffcbed
feat(B1): capture node-grain telemetry in the streaming path
markjbrown Aug 1, 2026
ff6fc93
feat(engine): runnable analysis entrypoint (reverse-ETL producer)
markjbrown Aug 1, 2026
1daa3ce
docs(adr): ledger B1/B19 -> Built (wired into app; live verify pending)
markjbrown Aug 1, 2026
f1bb0a5
test(live): verify engine wiring against deployed Cosmos (keyless/Ent…
markjbrown Aug 1, 2026
99ea3a9
test(live): B7 quality half - real LLM analyst through guardrails, AL…
markjbrown Aug 1, 2026
aa3c0af
B1/B19: verify node-grain + outcome linkage live end-to-end; fix sema…
markjbrown Aug 1, 2026
56f6a09
B2: agent scorecard (agent x dimension rollup) + CLI; verified live
markjbrown Aug 1, 2026
443373e
B3: fixture-prove structural repeated_node detector; document deferre…
markjbrown Aug 1, 2026
0f8b34b
B6: realized-complexity signal beats the keyword tier (measured node-…
markjbrown Aug 1, 2026
b9d8bde
B11: seam registry (declared surface + recipe rendering)
markjbrown Aug 1, 2026
6edcc5d
B12: read-only code-context provider (analyst drafts a diff, cannot w…
markjbrown Aug 1, 2026
1e74837
B9: reference-free quality judge + per-agent rubrics + calibration; v…
markjbrown Aug 1, 2026
4c57536
B5 + B14: statistical detector (derived/min-sample/not-noisy) + SCEN …
markjbrown Aug 1, 2026
a132c13
Console backend: agent-centric optimization API + governance store (C…
markjbrown Aug 1, 2026
9e3ac36
Console frontend: agent-centric surface (scorecard + opportunities + …
markjbrown Aug 1, 2026
fad964e
B20/B21/B22: verify engine LLM paths live on Fabric F2
markjbrown Aug 1, 2026
6401d4b
B18: mark externally blocked (Desktop + transient product bug); Conso…
markjbrown Aug 1, 2026
b6897c7
mcp: tolerate a non-integer PORT env var instead of crashing at startup
markjbrown Aug 2, 2026
b232021
Web Analytics Portal + portal-first workshop, analytics engine, and f…
markjbrown Aug 7, 2026
91aeacb
Retire stale generators/docs; policy-aware demo-script; optimization …
markjbrown Aug 7, 2026
52567c6
Organize analytics/ into subfolders (root now holds only README)
markjbrown Aug 8, 2026
20771dc
docs: add front-end and Analytics Portal screenshots to the main README
markjbrown Aug 8, 2026
b330ebb
feat(analytics): in-app insights recompute + state reset; discreet po…
markjbrown Aug 8, 2026
a962256
fix(frontend): track staged analytics-portal/index.html so remote bui…
markjbrown Aug 8, 2026
ba73ede
fix(analytics): Freshen times also re-stamps the Debug container so t…
markjbrown Aug 8, 2026
da4d243
feat(analytics): reset-to-baseline + in-app policy-aware traffic gene…
markjbrown Aug 8, 2026
ee24cbd
feat(memory-retention): in-query pruned-memory exclusion via reserved…
markjbrown Aug 13, 2026
366eec1
feat(workshop): bring tag-based pruned-memory filtering into 01_exerc…
markjbrown Aug 13, 2026
d201cab
docs(adr): ADR-0013 — context-window optimization is out of scope
markjbrown Aug 13, 2026
7b4944f
Harden analytics workshop telemetry and Fabric flow
Aug 21, 2026
322d6c7
Deploy data-driven Power BI analytics workshop
markjbrown Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file removed .DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Copilot Instructions — Travel Multi-Agent Workshop

A workshop that builds a multi-agent travel assistant with **Python + LangGraph + Azure OpenAI + Azure Cosmos DB**, an **Angular** frontend, and a **FastMCP** tool server.
A workshop that builds a multi-agent travel assistant with **Python + LangGraph + Azure AI Foundry + Azure Cosmos DB**, an **Angular** frontend, and a **FastMCP** tool server.

## Repository layout

Expand Down
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Power BI working files — ignore ad-hoc .pbix saves...
*.pbix
# ...but DO track the report artifact the provisioning script auto-imports (this is what
# removes the Power BI Desktop prerequisite — Provision-Fabric.ps1 imports it and points
# it at each deployment's mirror).
!analytics/powerbi/TravelAssistantAnalyticsReport.pbix

# Provision-Fabric.ps1 remembered settings (workspace name / connection id)
analytics/fabric/.provision-fabric.local.json

# Python bytecode caches
__pycache__/
*.pyc

# OS junk
.DS_Store
Thumbs.db
24 changes: 24 additions & 0 deletions 01_exercises/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Virtualenvs (hundreds of MB — not needed in image build context)
.venv-travel/
venv/
.venv/
**/__pycache__/
**/*.pyc

# Node / Angular build artifacts (rebuilt inside the frontend image)
frontend/node_modules/
frontend/dist/
frontend/.angular/
**/node_modules/

# Git + IDE + local env
.git/
.vscode/
.idea/
*.log
.env
**/.env

# Misc
*.md
.dockerignore
2 changes: 2 additions & 0 deletions 01_exercises/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ celerybeat.pid
# Environments
.env
.venv
.venv-travel
env/
venv/
ENV/
Expand Down Expand Up @@ -326,6 +327,7 @@ yarn-error.log*
!**/abbreviations.json
!**/*template*.json
!**/package*.json
!python/data/*.json
!**/angular.json
!**/tsconfig*.json
!**/proxy.conf.json
Expand Down
23 changes: 23 additions & 0 deletions 01_exercises/Dockerfile.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM python:3.12-slim

WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
&& rm -rf /var/lib/apt/lists/*

# Copy and install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
COPY python/ ./python/

ENV PORT=8000
ENV PYTHONPATH=/app/python

EXPOSE 8000

CMD ["python", "-m", "uvicorn", "src.app.travel_agents_api:app", "--host", "0.0.0.0", "--port", "8000"]

25 changes: 25 additions & 0 deletions 01_exercises/Dockerfile.frontend
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
FROM node:20-alpine AS build

WORKDIR /app

COPY frontend/package.json frontend/package-lock.json* ./
RUN npm install

COPY frontend/ ./
RUN npm run build -- --configuration production

FROM nginx:alpine

# Copy the built Angular app (output path: dist/cosmos-voyager/browser)
COPY --from=build /app/dist/cosmos-voyager/browser /usr/share/nginx/html

# Copy nginx config template and entrypoint
COPY frontend/nginx.conf.template /etc/nginx/nginx.conf.template
COPY frontend/docker-entrypoint.sh /docker-entrypoint-custom.sh
RUN chmod +x /docker-entrypoint-custom.sh

EXPOSE 80

ENTRYPOINT ["/docker-entrypoint-custom.sh"]
CMD ["nginx", "-g", "daemon off;"]

26 changes: 26 additions & 0 deletions 01_exercises/Dockerfile.mcp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM python:3.12-slim

WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
&& rm -rf /var/lib/apt/lists/*

# Copy and install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
# MCP server imports from src.app.services (python/src/) and reads prompts from python/src/app/prompts
# Preserve original directory structure so relative path ../python/src/app/prompts works from mcp_server/
COPY python/ ./python/
COPY mcp_server/ ./mcp_server/

ENV PORT=8080
ENV PYTHONPATH=/app:/app/python

EXPOSE 8080

CMD ["python", "-m", "mcp_server.mcp_http_server"]

22 changes: 0 additions & 22 deletions 01_exercises/README.md

This file was deleted.

Loading