kushi-agents 6.1.2 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/package.json +1 -1
  2. package/plugin/instructions/agentskills-compliance.instructions.md +144 -0
  3. package/plugin/instructions/dashboard-artifact.instructions.md +132 -0
  4. package/plugin/instructions/guided-tour.instructions.md +100 -0
  5. package/plugin/instructions/karpathy-state-layout.instructions.md +124 -0
  6. package/plugin/instructions/schema-evolve.instructions.md +73 -0
  7. package/plugin/instructions/skill-authoring.instructions.md +147 -0
  8. package/plugin/instructions/skill-evals.instructions.md +130 -0
  9. package/plugin/runners/bootstrap.mjs +55 -22
  10. package/plugin/runners/lib/runlog.mjs +153 -6
  11. package/plugin/runners/migrate-to-v550.mjs +192 -0
  12. package/plugin/runners/pull-email.mjs +194 -3
  13. package/plugin/runners/pull-meetings.mjs +207 -4
  14. package/plugin/runners/pull-onenote.mjs +239 -3
  15. package/plugin/runners/pull-sharepoint.mjs +284 -3
  16. package/plugin/runners/pull-state.mjs +297 -0
  17. package/plugin/runners/pull-teams.mjs +170 -3
  18. package/plugin/runners/refresh.mjs +9 -1
  19. package/plugin/runners/test/fixtures/email-abn-amro.json +13 -0
  20. package/plugin/runners/test/fixtures/email-novel-error.json +9 -0
  21. package/plugin/runners/test/fixtures/meetings-abn-amro.json +10 -0
  22. package/plugin/runners/test/fixtures/meetings-body-unavailable.json +10 -0
  23. package/plugin/runners/test/fixtures/onenote-abn-amro.json +30 -0
  24. package/plugin/runners/test/fixtures/onenote-partial.json +21 -0
  25. package/plugin/runners/test/fixtures/refresh-dir/email.json +7 -4
  26. package/plugin/runners/test/fixtures/refresh-dir/teams.json +6 -4
  27. package/plugin/runners/test/fixtures/sharepoint-abn-amro.json +12 -0
  28. package/plugin/runners/test/fixtures/teams-abn-amro.json +11 -0
  29. package/plugin/runners/test/integration/migrate-to-v550.integration.test.mjs +138 -0
  30. package/plugin/runners/test/integration/pull-email.integration.test.mjs +149 -0
  31. package/plugin/runners/test/integration/pull-meetings.integration.test.mjs +92 -0
  32. package/plugin/runners/test/integration/pull-onenote.integration.test.mjs +86 -0
  33. package/plugin/runners/test/integration/pull-sharepoint.integration.test.mjs +93 -0
  34. package/plugin/runners/test/integration/pull-teams.integration.test.mjs +91 -0
  35. package/plugin/runners/test/unit/runlog.test.mjs +1 -1
  36. package/plugin/skills/build-state/SKILL.md +195 -0
  37. package/plugin/skills/build-state/evals/evals.json +31 -0
  38. package/plugin/skills/dashboard/SKILL.md +132 -0
  39. package/plugin/skills/dashboard/evals/evals.json +33 -0
  40. package/plugin/skills/lint-state/.created-by-skill-creator +0 -0
  41. package/plugin/skills/lint-state/SKILL.md +98 -0
  42. package/plugin/skills/lint-state/evals/evals.json +34 -0
  43. package/plugin/skills/lint-state/lint.ps1 +218 -0
  44. package/plugin/skills/promote/.created-by-skill-creator +1 -0
  45. package/plugin/skills/promote/SKILL.md +125 -0
  46. package/plugin/skills/promote/evals/evals.json +35 -0
  47. package/plugin/skills/schema-evolve/.created-by-skill-creator +0 -0
  48. package/plugin/skills/schema-evolve/SKILL.md +106 -0
  49. package/plugin/skills/schema-evolve/evals/evals.json +37 -0
  50. package/plugin/skills/skill-checker/SKILL.md +136 -0
  51. package/plugin/skills/skill-checker/check-skill.ps1 +416 -0
  52. package/plugin/skills/skill-checker/evals/evals.json +41 -0
  53. package/plugin/skills/skill-creator/SKILL.md +134 -0
  54. package/plugin/skills/skill-creator/evals/evals.json +40 -0
  55. package/plugin/skills/skill-creator/generate-eval-review.ps1 +101 -0
  56. package/plugin/skills/skill-creator/optimize-description.ps1 +87 -0
  57. package/plugin/skills/skill-creator/scaffold.ps1 +180 -0
  58. package/plugin/skills/skill-creator/templates/evals-starter.template.json +27 -0
  59. package/plugin/skills/skill-creator/templates/gotchas-stub.template.md +9 -0
  60. package/plugin/skills/skill-creator/templates/skill-skeleton.template.md +28 -0
  61. package/plugin/skills/teach/.created-by-skill-creator +0 -0
  62. package/plugin/skills/teach/SKILL.md +79 -0
  63. package/plugin/skills/teach/evals/evals.json +59 -0
  64. package/plugin/skills/tour/SKILL.md +85 -0
  65. package/plugin/skills/tour/build-tour.ps1 +185 -0
  66. package/plugin/skills/tour/evals/evals.json +33 -0
  67. package/plugin/templates/state/00_overview.template.md +44 -0
  68. package/plugin/templates/state/01_decisions.template.md +41 -0
  69. package/plugin/templates/state/02_stakeholders.template.md +48 -0
  70. package/plugin/templates/state/03_architecture-and-solution.template.md +56 -0
  71. package/plugin/templates/state/04_workshops-and-key-meetings.template.md +43 -0
  72. package/plugin/templates/state/05_action-items.template.md +29 -0
  73. package/plugin/templates/state/06_risks-and-issues.template.md +43 -0
  74. package/plugin/templates/state/07_timeline-and-milestones.template.md +45 -0
  75. package/plugin/templates/state/08_artifacts-and-deliverables.template.md +55 -0
  76. package/plugin/templates/state/09_open-questions.template.md +62 -0
  77. package/plugin/templates/state/AGENTS.template.md +33 -0
  78. package/plugin/templates/state/CLAUDE.template.md +33 -0
  79. package/plugin/templates/state/README.md +41 -0
  80. package/plugin/templates/state/answers.README.md +7 -0
  81. package/plugin/templates/state/hot.template.md +12 -0
  82. package/plugin/templates/state/index.template.md +41 -0
  83. package/plugin/templates/state/log.template.md +14 -0
  84. package/plugin/templates/state/page.template.md +22 -0
  85. package/plugin/templates/state/review-queue.template.md +10 -0
  86. package/plugin/runners/test/integration/csc-pull.integration.test.mjs +0 -160
@@ -0,0 +1,185 @@
1
+ <#
2
+ .SYNOPSIS
3
+ Kushi tour — build <project>/State/tour.md from Evidence/_graph/project-graph.json.
4
+
5
+ .DESCRIPTION
6
+ Scores nodes by recency_weight × cross_ref_count (14-day half-life × degree),
7
+ then DFS-walks edges in priority order (decides → action-item-tracks →
8
+ discusses → references → others). Emits per-stop ordinal heading + one-line
9
+ why-this-matters + citation + related-state wikilinks.
10
+
11
+ .PARAMETER ProjectRoot
12
+ Absolute path to <engagement-root>/<project>/.
13
+
14
+ .PARAMETER TopN
15
+ Number of stops (default 10; configurable via m365Mutable.tour.topN).
16
+
17
+ .PARAMETER Json
18
+ Emit structured success/error envelope on stdout.
19
+ #>
20
+ [CmdletBinding()]
21
+ param(
22
+ [Parameter(Mandatory=$true)][string]$ProjectRoot,
23
+ [int]$TopN = 10,
24
+ [switch]$Json
25
+ )
26
+
27
+ $ErrorActionPreference = 'Stop'
28
+
29
+ function Write-Envelope {
30
+ param([bool]$Ok, [hashtable]$Payload)
31
+ if ($Json) {
32
+ $p2 = @{ ok = $Ok }
33
+ foreach ($k in $Payload.Keys) { $p2[$k] = $Payload[$k] }
34
+ [PSCustomObject]$p2 | ConvertTo-Json -Depth 5 -Compress
35
+ } else {
36
+ if ($Ok) { Write-Host "ok: tour=$($Payload.tour_path) stops=$($Payload.stops)" }
37
+ else { Write-Host "error: $($Payload.error)" }
38
+ }
39
+ }
40
+
41
+ try {
42
+ $graphPath = Join-Path $ProjectRoot 'Evidence\_graph\project-graph.json'
43
+ if (-not (Test-Path $graphPath)) {
44
+ Write-Envelope -Ok $false -Payload @{ error = "no graph at $graphPath" }
45
+ exit 1
46
+ }
47
+ $graph = Get-Content -Raw $graphPath -Encoding UTF8 | ConvertFrom-Json
48
+ $stateDir = Join-Path $ProjectRoot 'State'
49
+ New-Item -ItemType Directory -Path $stateDir -Force | Out-Null
50
+ $outPath = Join-Path $stateDir 'tour.md'
51
+
52
+ $nodes = @($graph.nodes)
53
+ if ($nodes.Count -eq 0) {
54
+ Set-Content -Path $outPath -Encoding UTF8 -Value "_No graph nodes — run @Kushi refresh first._"
55
+ Write-Envelope -Ok $true -Payload @{ tour_path = $outPath; stops = 0 }
56
+ exit 0
57
+ }
58
+ $edges = @($graph.edges)
59
+
60
+ # --- Score nodes ---
61
+ $today = (Get-Date).ToUniversalTime().Date
62
+ $degree = @{}
63
+ foreach ($e in $edges) {
64
+ if (-not $degree.ContainsKey($e.from)) { $degree[$e.from] = 0 }
65
+ if (-not $degree.ContainsKey($e.to)) { $degree[$e.to] = 0 }
66
+ $degree[$e.from]++
67
+ $degree[$e.to]++
68
+ }
69
+
70
+ $scored = New-Object System.Collections.Generic.List[object]
71
+ foreach ($n in $nodes) {
72
+ $days = 9999
73
+ if ($n.last_touched_iso) {
74
+ try {
75
+ $lt = [datetime]::Parse($n.last_touched_iso).ToUniversalTime().Date
76
+ $days = [Math]::Max(0, ($today - $lt).Days)
77
+ } catch {}
78
+ }
79
+ $rw = [Math]::Exp(- $days / 14.0)
80
+ $deg = if ($degree.ContainsKey($n.id)) { $degree[$n.id] } else { 0 }
81
+ $score = $rw * [Math]::Max(1, $deg) # treat degree 0 as 1 so isolated nodes still rank by recency
82
+ $scored.Add([PSCustomObject]@{ node = $n; score = $score; degree = $deg; days = $days })
83
+ }
84
+ $scoredSorted = $scored | Sort-Object -Property score -Descending
85
+
86
+ # --- DFS walk ---
87
+ $kindPriority = @{ 'decides' = 0; 'action-item-tracks' = 1; 'discusses' = 2; 'references' = 3 }
88
+ function Get-EdgePriority { param($k) if ($kindPriority.ContainsKey($k)) { $kindPriority[$k] } else { 4 } }
89
+
90
+ $byId = @{}
91
+ foreach ($s in $scored) { $byId[$s.node.id] = $s }
92
+
93
+ $outEdgesByFrom = @{}
94
+ foreach ($e in $edges) {
95
+ if (-not $outEdgesByFrom.ContainsKey($e.from)) { $outEdgesByFrom[$e.from] = New-Object System.Collections.Generic.List[object] }
96
+ $outEdgesByFrom[$e.from].Add($e) | Out-Null
97
+ }
98
+
99
+ $visited = @{}
100
+ $stops = New-Object System.Collections.Generic.List[object]
101
+ $cursor = 0
102
+
103
+ while ($stops.Count -lt $TopN -and $cursor -lt $scoredSorted.Count) {
104
+ # Pick next root: highest-score unvisited.
105
+ $root = $null
106
+ while ($cursor -lt $scoredSorted.Count) {
107
+ $cand = $scoredSorted[$cursor]
108
+ $cursor++
109
+ if (-not $visited.ContainsKey($cand.node.id)) { $root = $cand; break }
110
+ }
111
+ if (-not $root) { break }
112
+
113
+ # DFS from root
114
+ $stack = New-Object System.Collections.Stack
115
+ $stack.Push($root)
116
+ while ($stack.Count -gt 0 -and $stops.Count -lt $TopN) {
117
+ $cur = $stack.Pop()
118
+ if ($visited.ContainsKey($cur.node.id)) { continue }
119
+ $visited[$cur.node.id] = $true
120
+ $stops.Add($cur) | Out-Null
121
+
122
+ $outE = if ($outEdgesByFrom.ContainsKey($cur.node.id)) { @($outEdgesByFrom[$cur.node.id]) } else { @() }
123
+ $children = New-Object System.Collections.Generic.List[object]
124
+ foreach ($e in $outE) {
125
+ if ($visited.ContainsKey($e.to)) { continue }
126
+ if (-not $byId.ContainsKey($e.to)) { continue }
127
+ $children.Add([PSCustomObject]@{ edge = $e; target = $byId[$e.to] }) | Out-Null
128
+ }
129
+ $children = $children | Sort-Object @{ Expression={ Get-EdgePriority $_.edge.kind } }, @{ Expression={ -1 * $_.target.score } }
130
+ # Push in reverse so highest priority is popped first
131
+ [array]::Reverse($children)
132
+ foreach ($c in $children) { $stack.Push($c.target) }
133
+ }
134
+ }
135
+
136
+ # --- Render ---
137
+ $alias = $env:USERNAME
138
+ $nowIso = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
139
+ $project = if ($graph.project) { $graph.project } else { (Split-Path $ProjectRoot -Leaf) }
140
+
141
+ $sb = New-Object System.Text.StringBuilder
142
+ [void]$sb.AppendLine('---')
143
+ [void]$sb.AppendLine('kushi_tour: true')
144
+ [void]$sb.AppendLine("generated_at: `"$nowIso`"")
145
+ [void]$sb.AppendLine("generated_by_alias: `"$alias`"")
146
+ [void]$sb.AppendLine("top_n: $TopN")
147
+ [void]$sb.AppendLine('score_basis: "recency_weight × cross_ref_count (14-day half-life)"')
148
+ [void]$sb.AppendLine('---')
149
+ [void]$sb.AppendLine('')
150
+ [void]$sb.AppendLine("# Guided Tour — $project")
151
+ [void]$sb.AppendLine('')
152
+ [void]$sb.AppendLine("> _Auto-generated week-in-review. $($stops.Count) top entities by recency × cross-reference count._")
153
+ [void]$sb.AppendLine('')
154
+
155
+ $ord = 0
156
+ foreach ($s in $stops) {
157
+ $ord++
158
+ $n = $s.node
159
+ $title = if ($n.title) { $n.title } else { $n.id }
160
+ $cite = if ($n.weekly_refs -and $n.weekly_refs.Count -gt 0) { $n.weekly_refs[0] } else { $null }
161
+ $whyBits = New-Object System.Collections.Generic.List[string]
162
+ if ($s.days -lt 9999) { [void]$whyBits.Add("Touched $($s.days)d ago") }
163
+ if ($s.degree -gt 0) { [void]$whyBits.Add("$($s.degree) graph connection$(if ($s.degree -ne 1) { 's' })") }
164
+ $why = if ($whyBits.Count -gt 0) { ($whyBits -join '; ') + '.' } else { "Score $([math]::Round($s.score,3))." }
165
+
166
+ [void]$sb.AppendLine("## $ord. $title")
167
+ [void]$sb.AppendLine('')
168
+ [void]$sb.AppendLine("> _Why this matters: $why_")
169
+ [void]$sb.AppendLine('')
170
+ [void]$sb.AppendLine("- **Source:** ``$($n.source)`` · last touched ``$($n.last_touched_iso)``")
171
+ if ($cite) {
172
+ [void]$sb.AppendLine("- **Cite:** [``$cite``]($cite)")
173
+ } else {
174
+ [void]$sb.AppendLine("- **Cite:** _(no weekly_refs in graph; node id ``$($n.id)``)_")
175
+ }
176
+ [void]$sb.AppendLine('')
177
+ }
178
+
179
+ Set-Content -Path $outPath -Value $sb.ToString() -Encoding UTF8
180
+ Write-Envelope -Ok $true -Payload @{ tour_path = $outPath; stops = $stops.Count }
181
+ exit 0
182
+ } catch {
183
+ Write-Envelope -Ok $false -Payload @{ error = $_.Exception.Message }
184
+ exit 1
185
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "skill": "tour",
3
+ "version": "1.0.0",
4
+ "description": "Auto-seeded evals for tour. Replace with real cases as the skill matures.",
5
+ "cases": [
6
+ {
7
+ "id": "tour-smoke-1",
8
+ "name": "tour produces a non-empty response",
9
+ "input": "synthetic tour probe — canary smoke",
10
+ "canary": false,
11
+ "grader_type": "script",
12
+ "expected_assertions": [
13
+ {
14
+ "type": "regex-match",
15
+ "pattern": ".+"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "id": "tour-smoke-2",
21
+ "name": "tour echoes case id",
22
+ "input": "case-id tour-smoke-2",
23
+ "canary": false,
24
+ "grader_type": "script",
25
+ "expected_assertions": [
26
+ {
27
+ "type": "regex-match",
28
+ "pattern": "tour-smoke-2"
29
+ }
30
+ ]
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,44 @@
1
+ # Contoso — Project Overview (Current State)
2
+
3
+ **As of:** 2026-05-06 · **Phase:** Pre-engagement / fit-assessment
4
+
5
+ ---
6
+
7
+ ## One-line
8
+
9
+ Microsoft ISE is evaluating a non-billable FDE (Front-Door Engineer) engagement with **Contoso**, anchored on the **MPXe Policy Comments** use case, while the customer is still settling on which use case to pursue.
10
+
11
+ ## Engagement type
12
+
13
+ - **Non-billable FDE — approved** `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
14
+
15
+ ## Customer profile (working assumptions, unconfirmed)
16
+
17
+ - Open question: **Is Contoso a regional operator?** `[asked 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
18
+ - Existing AWS solution **not scaling** — likely the catalyst for considering Microsoft. `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
19
+ - **CMS interest** noted as part of context. `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
20
+
21
+ ## Where it stands right now
22
+
23
+ - Apr 13 client-prep + client-facing meeting **completed**; recording exists.
24
+ - Customer is **bouncing between use cases** after being exposed to broader FDE engagement context. `[as of 2026-04-20, source: ushak/Teams-Chats/2026-04-20_teams-summary.md]`
25
+ - Microsoft side had a **"slight miss" on follow-up material** (week of Apr 27); customer awaiting that material before choosing an approach. `[as of 2026-05-01, source: ushak/Teams-Chats/2026-04-27_teams-summary.md]`
26
+ - **Re-ping planned for early week of May 4** by Alesha. `[as of 2026-05-01, source: ushak/Teams-Chats/2026-04-27_teams-summary.md]`
27
+
28
+ ## Sponsorship
29
+
30
+ - **Executive sponsorship: confirmed** `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
31
+
32
+ ## Headline risks
33
+
34
+ - Use-case ambiguity (customer indecision on direction).
35
+ - Momentum: ~3 weeks since last client touchpoint with no customer decision; aggravated by delayed follow-up material.
36
+ - Engineering "catcher" readiness — whoever delivers (Contoso internal, third party, or partner-at-arms-length) must be set up for success.
37
+
38
+ ## Headline next steps
39
+
40
+ 1. Send Contoso the overdue follow-up material.
41
+ 2. Re-ping customer (Alesha, wk of May 4).
42
+ 3. Internal alignment on engineering staffing model — who delivers if this proceeds.
43
+
44
+ See sibling state files for detail.
@@ -0,0 +1,41 @@
1
+ # Contoso — Decisions Log (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+ **Convention:** Decisions are listed newest-first. Superseded decisions remain in place with `~~strikethrough~~` and a `Supersedes:` pointer on the new entry. Each decision carries `[as of DATE, source: …]`.
5
+
6
+ ---
7
+
8
+ ## Active Decisions
9
+
10
+ ### D-002 — Engagement model: Non-billable FDE
11
+ - **Decided:** 2026-04-13
12
+ - **Decided by:** Acct team (per OneNote "4/13 - Acct team")
13
+ - **Status:** Approved
14
+ - **Detail:** Microsoft will pursue Contoso via a non-billable Front-Door Engineer engagement.
15
+ - `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
16
+
17
+ ### D-001 — Executive sponsorship secured
18
+ - **Decided:** ≤ 2026-04-13 (logged in 4/13 acct team page)
19
+ - **Status:** Confirmed
20
+ - **Detail:** Executive sponsor in place for the Contoso engagement.
21
+ - `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
22
+
23
+ ---
24
+
25
+ ## Pending / Not-Yet Decided
26
+
27
+ - **PD-001 — Use case to anchor the engagement.** MPXe Policy Comments was the originating asset; customer is currently bouncing between options. `[as of 2026-04-20, source: ushak/Teams-Chats/2026-04-20_teams-summary.md]`
28
+ - **PD-002 — Engineering staffing model.** Co-engineering with a third party vs. Contoso internal team — unresolved. `[as of 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
29
+ - **PD-003 — Customer's chosen approach.** Awaiting Contoso's response on follow-up material. `[as of 2026-05-01, source: ushak/Teams-Chats/2026-04-27_teams-summary.md]`
30
+
31
+ ---
32
+
33
+ ## Superseded / Reversed
34
+
35
+ _None yet._
36
+
37
+ ---
38
+
39
+ ## Conflicts
40
+
41
+ _None._
@@ -0,0 +1,48 @@
1
+ # Contoso — Stakeholders & Roles (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+
5
+ ---
6
+
7
+ ## Microsoft — Account / Delivery Team
8
+
9
+ | Person | Role (as last evidenced) | Most recent activity | Source |
10
+ |--------|--------------------------|----------------------|--------|
11
+ | Todd Morris | Acct team — engagement lead-side voice | Posted post-meeting status update Apr 20; targeted internal sync wk of Apr 20 | `ushak/Teams-Chats/2026-04-20_teams-summary.md` |
12
+ | Alesha Baerenwald | Acct team — primary customer-facing follow-up owner | Acknowledged delayed follow-up material; will re-ping customer wk of May 4 | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
13
+ | Kim Swafford | Acct team — chat owner, included in follow-up loop | Implied via tag in chat | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
14
+
15
+ ## Microsoft — ISE Team
16
+
17
+ | Person | Role | Most recent activity | Source |
18
+ |--------|------|----------------------|--------|
19
+ | Bhargav Nookala | ISE — driving fit-assessment, follow-up nudges | 2 follow-up pings to acct team wk of Apr 27 | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
20
+ | Sara Spalding | ISE — surfaced MPXe deck; chases status | Asked Alesha for next steps on Apr 17 | `ushak/Teams-Chats/2026-04-13_teams-summary.md` |
21
+ | Kavitha Govindarajulu | ISE — surfaced engineering staffing question; tagged Bret | Asked engineering staffing question Apr 13; tagged Bret Stateham Apr 21 | `ushak/Teams-Chats/2026-04-13_teams-summary.md`, `…/2026-04-20_teams-summary.md` |
22
+ | Bret Stateham | ISE — engineering perspective (tagged in) | Tagged into thread Apr 21 | `ushak/Teams-Chats/2026-04-20_teams-summary.md` |
23
+ | Usha Krishnan | ISE — attended Apr 13 prep | Apr 13 attendee | `ushak/Meetings/2026-04-13_meetings-summary.md` |
24
+ | Shiney Koshy | ISE — chat owner | Apr 13 attendee | `ushak/Meetings/2026-04-13_meetings-summary.md` |
25
+ | Chris Mullins | ISE | Apr 13 attendee | `ushak/Meetings/2026-04-13_meetings-summary.md` |
26
+ | Chad Dotzenrod | ISE | Apr 13 attendee | `ushak/Meetings/2026-04-13_meetings-summary.md` |
27
+
28
+ ## Executive
29
+
30
+ - **Executive sponsor:** Confirmed; specific name not yet captured in evidence. `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
31
+
32
+ ## Customer — Contoso
33
+
34
+ - **Specific customer contacts not yet captured in available evidence.** Pending action: identify Contoso counterparts and add them here.
35
+
36
+ ## Partners / Third Parties
37
+
38
+ - **Possible co-engineering partner** — undecided. (See PD-002 in `01_decisions.md`.)
39
+
40
+ ---
41
+
42
+ ## Role Changes / Supersedes
43
+
44
+ _None yet recorded._
45
+
46
+ ## Conflicts
47
+
48
+ _None._
@@ -0,0 +1,56 @@
1
+ # Contoso — Architecture & Solution (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+ **Maturity:** Pre-design — only use-case framing exists; no solution architecture committed.
5
+
6
+ ---
7
+
8
+ ## Anchor Use Case
9
+
10
+ ### MPXe — Policy Comments
11
+ - Originating asset: `Noridian_2026Feb26_MPXe-Microsoft_PolicyCommentsUseCase.pptx` (in project SharePoint folder; last modified 2026-05-05)
12
+ - Surfaced as the working use-case in Apr 13 prep.
13
+ - `[as of 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
14
+
15
+ ### Status of use-case selection
16
+ - **Open.** Customer is "bouncing between use cases" after seeing broader FDE engagement context. `[as of 2026-04-20, source: ushak/Teams-Chats/2026-04-20_teams-summary.md]`
17
+
18
+ ---
19
+
20
+ ## Existing Customer Landscape
21
+
22
+ - **Current state:** Contoso operates an **AWS-based solution** that is **not scaling**. This is the trigger for considering Microsoft. `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
23
+ - **Adjacent context:** **CMS** is a relevant party / interest area. `[as of 2026-04-13, source: ushak/OneNote/2026-04-13_onenote-summary.md]`
24
+
25
+ ---
26
+
27
+ ## Proposed Microsoft Solution
28
+
29
+ - **No solution architecture has been authored yet.** Reference framing material:
30
+ - "Microsoft Agent Factory — FDE Customer Presentation" (slides 6 and 21 used as **fit-assessment lens**). `[as of 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
31
+
32
+ ---
33
+
34
+ ## Components, Integrations, Data
35
+
36
+ - **TBD.** No component diagram, data flow, or integration list captured to date.
37
+
38
+ ---
39
+
40
+ ## Open Architectural Questions
41
+
42
+ - **Engineering delivery model** — co-engineering with a third party vs. Contoso internal team. (PD-002.)
43
+ - **Catcher readiness** — whichever party catches the implementation needs operational readiness. `[as of 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
44
+ - **Scalability target** — what specifically about AWS isn't scaling? Throughput? Cost? Operations? Not yet captured.
45
+
46
+ ---
47
+
48
+ ## Conflicts
49
+
50
+ _None._
51
+
52
+ ---
53
+
54
+ ## Supersedes / History
55
+
56
+ _No prior architecture has been replaced — this is the first capture._
@@ -0,0 +1,43 @@
1
+ # Contoso — Workshops & Key Meetings (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+
5
+ ---
6
+
7
+ ## Past — Significant Sessions
8
+
9
+ ### 2026-04-13 — Contoso | FDE Request prep before client meeting
10
+ - **Type:** Internal prep + client-facing call (combined session per chat trail)
11
+ - **Why it matters:** First substantive engagement with Contoso; surfaced anchor use case (MPXe Policy Comments), executive sponsorship confirmation, non-billable FDE approval, and key open questions on staffing and customer profile.
12
+ - **Attendees (Microsoft):** Bhargav Nookala, Sara Spalding, Kavitha Govindarajulu, Alesha Baerenwald, Todd Morris, Kim Swafford, Shiney Koshy, Chris Mullins, Chad Dotzenrod, Bret Stateham, Usha Krishnan
13
+ - **Outputs:** Two reference decks circulated; decisions D-001 & D-002 logged; PD-001/PD-002 raised.
14
+ - **Recording:** Yes — `Contoso FDE Request prep before client meeting-20260413_170623-Meeting Recording.mp4` (SharePoint approval seen 2026-05-04).
15
+ - **Transcript:** Not yet pulled. (Action: pull via `m365_get_transcript` for richer content extraction.)
16
+ - `[source: ushak/Meetings/2026-04-13_meetings-summary.md]`
17
+
18
+ ---
19
+
20
+ ## In-Flight / Unconfirmed
21
+
22
+ ### Internal alignment sync (planned wk of Apr 20)
23
+ - Todd Morris flagged he would schedule one. **No calendar evidence found** — either it happened off-calendar, was deferred, or the calendar wasn't scanned wide enough.
24
+ - `[as of 2026-04-20, source: ushak/Teams-Chats/2026-04-20_teams-summary.md]`
25
+
26
+ ---
27
+
28
+ ## Planned / Upcoming
29
+
30
+ - **Re-engagement ping with Contoso** — early wk of May 4 (Alesha). Not a meeting, but the next customer touchpoint. `[as of 2026-05-01, source: ushak/Teams-Chats/2026-04-27_teams-summary.md]`
31
+ - **Workshop(s):** None scheduled yet. A scoping/use-case workshop is the natural next step once the customer commits to a use case.
32
+
33
+ ---
34
+
35
+ ## Recurring Cadences
36
+
37
+ - **None established for Contoso specifically.** (Several recurring "FDE Intake — Triage Stand-up" meetings exist on the broader FDE calendar but are not Contoso-specific.)
38
+
39
+ ---
40
+
41
+ ## Conflicts
42
+
43
+ _None._
@@ -0,0 +1,29 @@
1
+ # Contoso — Open Action Items (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+ **Scope:** Open / in-progress only. Closed items move to `_archive` section at the bottom.
5
+
6
+ ---
7
+
8
+ ## Open
9
+
10
+ | ID | Action | Owner | Due | Opened | Latest evidence | Source |
11
+ |----|--------|-------|-----|--------|-----------------|--------|
12
+ | AI-001 | Send Contoso the overdue follow-up material (the asset that prompted Alesha's "slight miss" comment) | Alesha Baerenwald | wk of May 4 | 2026-04-13 (implied) | "still waiting to hear what approach they want to take" | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
13
+ | AI-002 | Re-ping Contoso on chosen approach | Alesha Baerenwald | early wk of May 4 | 2026-05-01 | Committed in chat 2026-05-01 | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
14
+ | AI-003 | Hold internal sync to align on next steps (engineering staffing in particular) | Todd Morris | wk of Apr 20 (overdue / status unknown) | 2026-04-20 | Bhargav's follow-up pings on Apr 28/30 suggest internal sync hasn't yielded next steps yet | `ushak/Teams-Chats/2026-04-20_teams-summary.md`, `…/2026-04-27_teams-summary.md` |
15
+ | AI-004 | Confirm Contoso's organizational profile (regional operator?) | Acct team | — | 2026-04-13 | Open | `ushak/Teams-Chats/2026-04-13_teams-summary.md` |
16
+ | AI-005 | Pull Apr 13 meeting transcript for richer detail | ushak | — | 2026-05-06 | Run-log gap | `Evidence/run-log.md` |
17
+ | AI-006 | Identify Contoso customer counterparts and capture in stakeholders state | Acct team | — | 2026-05-06 | No customer contacts captured yet | derived |
18
+
19
+ ---
20
+
21
+ ## Recently Closed
22
+
23
+ _None yet._
24
+
25
+ ---
26
+
27
+ ## Conflicts
28
+
29
+ _None._
@@ -0,0 +1,43 @@
1
+ # Contoso — Risks & Issues (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+ **Severity scale:** LOW / MED / HIGH
5
+
6
+ ---
7
+
8
+ ## Active
9
+
10
+ ### R-001 — Customer indecision on use case (MED, trending up)
11
+ - **Description:** Customer is "bouncing between use cases" after broader FDE context was presented; no committed direction.
12
+ - **Impact:** Blocks scoping, sizing, architecture, and timeline.
13
+ - **Mitigation:** Send focused follow-up material; re-ping wk of May 4 (AI-001, AI-002).
14
+ - `[as of 2026-04-20, source: ushak/Teams-Chats/2026-04-20_teams-summary.md]`
15
+
16
+ ### R-002 — Momentum loss / Microsoft-side slip (MED, active)
17
+ - **Description:** Acknowledged "slight miss" on getting follow-up material to Contoso; ~3 weeks since the Apr 13 touchpoint with no customer-side decision.
18
+ - **Impact:** Risks customer disengagement or pursuit of alternative paths.
19
+ - **Mitigation:** Close AI-001 immediately; deliberate re-ping (AI-002).
20
+ - `[as of 2026-05-01, source: ushak/Teams-Chats/2026-04-27_teams-summary.md]`
21
+
22
+ ### R-003 — Engineering catcher readiness (MED, latent)
23
+ - **Description:** Whichever party catches delivery (Contoso internal, a third party, or a partner-at-arms-length) needs to be set up for operational success.
24
+ - **Impact:** Implementation quality and post-engagement sustainability.
25
+ - **Mitigation:** Resolve PD-002 (staffing model) before commit; gate decision on catcher readiness check. Owner: Bhargav Nookala / Todd Morris.
26
+ - `[as of 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
27
+
28
+ ### R-004 — Customer profile unknown (LOW, informational)
29
+ - **Description:** It's still unclear whether Contoso is a regional operator and what the org profile implies for solution scale and procurement path.
30
+ - **Mitigation:** Confirm via acct team (AI-004).
31
+ - `[as of 2026-04-13, source: ushak/Teams-Chats/2026-04-13_teams-summary.md]`
32
+
33
+ ---
34
+
35
+ ## Closed
36
+
37
+ _None yet._
38
+
39
+ ---
40
+
41
+ ## Conflicts
42
+
43
+ _None._
@@ -0,0 +1,45 @@
1
+ # Contoso — Timeline & Milestones (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+
5
+ ---
6
+
7
+ ## Past
8
+
9
+ | Date | Event | Significance | Source |
10
+ |------|-------|--------------|--------|
11
+ | 2026-02-26 | MPXe Policy Comments use-case deck created | Originating asset for the engagement | filename `Noridian_2026Feb26_MPXe-Microsoft_PolicyCommentsUseCase.pptx` |
12
+ | 2026-03-09 → 2026-03-11 | Initial intake / triage notes (OneNote `Contoso.one` → "3/11") | First captured discussion of Contoso | `ushak/OneNote/2026-04-13_onenote-summary.md` (references prior pages) |
13
+ | 2026-04-10 | Teams meeting chat "Contoso \| FDE Request prep before client meeting" created | Communications channel established | `ushak/Teams-Chats/2026-04-13_teams-summary.md` |
14
+ | 2026-04-13 | Apr 13 prep + client-facing meeting | First substantive client touchpoint; D-001 & D-002 captured | `ushak/Meetings/2026-04-13_meetings-summary.md` |
15
+ | 2026-04-17 | Sara asks Alesha for next steps | Status visibility kicks in | `ushak/Teams-Chats/2026-04-13_teams-summary.md` |
16
+ | 2026-04-20 | Todd posts post-meeting status — customer "bouncing between use cases" | First explicit signal of use-case ambiguity | `ushak/Teams-Chats/2026-04-20_teams-summary.md` |
17
+ | 2026-04-28 / 04-30 | Bhargav follow-up pings | Pressure to resolve next steps | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
18
+ | 2026-05-01 | Alesha acknowledges "slight miss" on follow-up material | Captures the momentum risk | `ushak/Teams-Chats/2026-04-27_teams-summary.md` |
19
+ | 2026-05-04 | SharePoint edit-request approval for Apr 13 meeting recording | Recording now editable / shareable | inbox notification 2026-05-04 |
20
+ | 2026-05-05 | MPXe deck modified (latest edit) | Asset updated | SharePoint folder listing |
21
+
22
+ ---
23
+
24
+ ## Present (this week)
25
+
26
+ | Target | Owner | Status |
27
+ |--------|-------|--------|
28
+ | Send overdue follow-up material to Contoso (AI-001) | Alesha | Open |
29
+ | Re-ping customer (AI-002) | Alesha | Planned early wk of May 4 |
30
+ | Internal alignment on staffing model (AI-003) | Todd | Status unknown |
31
+
32
+ ---
33
+
34
+ ## Planned / Anticipated
35
+
36
+ - **Customer commits to a use case.** No date — gates everything downstream.
37
+ - **Scoping / use-case workshop.** No date — natural next step after customer commit.
38
+ - **Engineering staffing decision (PD-002).** Should precede any solution-design work.
39
+ - **Solution architecture draft.** Not started.
40
+
41
+ ---
42
+
43
+ ## Conflicts
44
+
45
+ _None._
@@ -0,0 +1,55 @@
1
+ # Contoso — Artifacts & Deliverables (Current State)
2
+
3
+ **As of:** 2026-05-06
4
+
5
+ ---
6
+
7
+ ## Decks
8
+
9
+ | Title | Purpose | Last modified | Location |
10
+ |-------|---------|---------------|----------|
11
+ | Noridian_2026Feb26_MPXe-Microsoft_PolicyCommentsUseCase.pptx | Anchor use-case framing (MPXe Policy Comments) | 2026-05-05 | `…\Engagement Assets\Contoso\` (project SharePoint folder) |
12
+ | Microsoft Agent Factory — FDE Customer Presentation.PPTX | Reference deck for FDE engagement framing; **slides 6 & 21** used as fit-assessment lens | — | Shared in Teams chat 2026-04-13 (not in project folder) |
13
+
14
+ ---
15
+
16
+ ## Recordings
17
+
18
+ | Title | Date | Location | Notes |
19
+ |-------|------|----------|-------|
20
+ | Contoso FDE Request prep before client meeting (recording .mp4) | 2026-04-13 17:06 UTC | SharePoint (edit-approved 2026-05-04) | Available; transcript not yet pulled. |
21
+
22
+ ---
23
+
24
+ ## OneNote Pages (ISE Work › Contoso.one)
25
+
26
+ | Page | Date | Content highlights |
27
+ |------|------|-------------------|
28
+ | 4/13 - Acct team | 2026-04-13 | AWS not scaling; CMS interest; exec sponsorship confirmed; non-billable FDE approval |
29
+ | 3/11 (and a 3/11 meeting-notes variant) | 2026-03-09 → 2026-03-11 | Earlier intake / triage notes |
30
+
31
+ ---
32
+
33
+ ## Documents / Code / Diagrams
34
+
35
+ - **None captured.** No design docs, ADRs, repos, or diagrams have been created for this engagement yet.
36
+
37
+ ---
38
+
39
+ ## CRM / System-of-Record Links
40
+
41
+ - Dynamics CRM record link shared in chat 2026-04-13 (URL captured in `ushak/Teams-Chats/2026-04-13_teams-summary.md`).
42
+
43
+ ---
44
+
45
+ ## Known Gaps
46
+
47
+ - No customer-facing artifacts (proposal, scoping doc, ROM) have been produced.
48
+ - Apr 13 meeting transcript not yet captured.
49
+ - No architecture artifacts (see `03_architecture-and-solution.md`).
50
+
51
+ ---
52
+
53
+ ## Conflicts
54
+
55
+ _None._