Skip to content

Commit 6919e9d

Browse files
davidortinauCopilot
andcommitted
.squad: Merge GitHub issues decisions, update agent cross-references
- Merged zoe-github-issues-created.md and zoe-azure-auth-plan.md into decisions.md - Deleted inbox files after merge - Updated agent history files with issue assignments (#39-#65): - Zoe: 14 issues (auth, infrastructure, hardening) - Kaylee: 8 issues (UI, CI/deploy, monitoring) - Jayne: E2E testing support - Wash: Deployment orchestration - Wrote orchestration log and session log - All 27 issues cross-referenced with dependencies - Phase execution order: 2→1→3→4→5 (security-first) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent ccc8680 commit 6919e9d

File tree

5 files changed

+168
-1
lines changed

5 files changed

+168
-1
lines changed

.squad/agents/jayne/history.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,22 @@
1818
- "It compiles" is NOT sufficient — must verify in running app
1919
- Must call `CacheService.InvalidateVocabSummary()` after recording attempts or dashboard is stale
2020
- Playwright must use `pressSequentially` not `fill()` for Blazor server-side binding
21+
- "It compiles" is NOT sufficient — must verify in running app
22+
- Must call `CacheService.InvalidateVocabSummary()` after recording attempts or dashboard is stale
23+
- Playwright must use `pressSequentially` not `fill()` for Blazor server-side binding
2124
- Test users: David (Korean, f452438c-...), Jose (Spanish, 8d5f7b4a-...), Gunther (German, c3bb57f7-...)
25+
26+
## Work Sessions
27+
28+
### 2026-03-13 — Cross-Agent Update: Azure Deployment Issues
29+
30+
**Status:** In Progress
31+
**GitHub Issues:** #39-#65 created by Zoe (Lead)
32+
**Jayne's Assignment:** N/A (testing/QA support for phase execution)
33+
34+
**Phase Execution Order:** Phase 2 (Secrets) → Phase 1 (Auth, localhost-testable) → Phase 3 (Infra) → Phase 4 (Pipeline) → Phase 5 (Hardening)
35+
36+
**E2E Testing Support:** Jayne to verify each phase's integration tests per e2e-testing skill (mandatory for every feature/fix).
37+
38+
**Critical Path:** CoreSync SQLite→PostgreSQL migration (#55, XL) — requires comprehensive data migration testing.
39+

.squad/agents/kaylee/history.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,26 @@
1616
- Activity pages: PageHeader, activity-content area, footer with activity-input-bar
1717
- Word Association activity at `/word-association` — latest activity, has Grade-first UX flow
1818
- Dashboard activities listed in `src/SentenceStudio.UI/Pages/Index.razor`
19+
20+
## Work Sessions
21+
22+
### 2026-03-13 — Cross-Agent Update: Azure Deployment Issues
23+
24+
**Status:** In Progress
25+
**GitHub Issues:** #39-#65 created by Zoe (Lead)
26+
**Kaylee's Assignments:** 8 issues
27+
28+
**Issues Assigned to Kaylee:**
29+
- #44 WebApp OIDC Integration (Phase 1, size:L)
30+
- #45 MAUI MSAL Implementation (Phase 1, size:XL)
31+
- #56 CI Workflow Setup (Phase 4, size:M)
32+
- #57 Deploy Workflow (Phase 4, size:L)
33+
- #58 Staging Environment (Phase 4, size:M)
34+
- #60 Azure Monitor/Application Insights (Phase 5, size:M)
35+
- #62 CORS Configuration (Phase 5, size:S)
36+
- #64 Auto-Scaling Rules (Phase 5, size:M)
37+
38+
**Phase Execution Order:** Phase 2 (Secrets) → Phase 1 (Auth, localhost-testable) → Phase 3 (Infra) → Phase 4 (Pipeline) → Phase 5 (Hardening)
39+
40+
**Critical Path:** CoreSync SQLite→PostgreSQL migration (#55, XL).
41+

.squad/agents/wash/history.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,23 @@
1717
- DI registration in `SentenceStudioAppBuilder.cs` (AppLib) and `Program.cs` (WebApp)
1818
- Aspire env var config: `builder.Configuration["AI:OpenAI:ApiKey"]` not `["AI__OpenAI__ApiKey"]`
1919
- Server DB at: `/Users/davidortinau/Library/Application Support/sentencestudio/server/sentencestudio.db`
20+
- Server DB at: `/Users/davidortinau/Library/Application Support/sentencestudio/server/sentencestudio.db`
2021
- UserProfileId columns for multi-user data isolation — all repos filter by active_profile_id
22+
23+
## Work Sessions
24+
25+
### 2026-03-13 — Cross-Agent Update: Azure Deployment Issues
26+
27+
**Status:** In Progress
28+
**GitHub Issues:** #39-#65 created by Zoe (Lead)
29+
**Wash's Role:** Deployment orchestration support
30+
31+
**Phase Execution Order:** Phase 2 (Secrets) → Phase 1 (Auth, localhost-testable) → Phase 3 (Infra) → Phase 4 (Pipeline) → Phase 5 (Hardening)
32+
33+
**Wash Coordination Points:**
34+
- Phase 4 (Pipeline) — CI/deploy workflows — coordinate with Kaylee's automation
35+
- Phase 3.5 (Container Apps) — deployment target provisioning
36+
- Critical Path: CoreSync SQLite→PostgreSQL migration (#55, XL) — coordinate safe data migration in production
37+
38+
**Key Dependencies:** Zoe coordinates Phase 1-3 decisions; Kaylee implements CI/deploy automation; Captain provides Azure portal access.
39+

.squad/agents/zoe/history.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,46 @@
1818
- Build with TFM: `dotnet build -f net10.0-maccatalyst`
1919
- E2E testing is mandatory for every feature/fix
2020
- Activities follow pattern: `activity-page-wrapper``PageHeader``activity-content``activity-input-bar`
21+
22+
## Work Sessions
23+
24+
### 2026-03-13 — GitHub Issues Created for Azure + Entra ID Plan
25+
26+
**Status:** Complete
27+
**Issues Created:** 27 issues (#39#65)
28+
**Dependencies:** All cross-referenced with dependency links
29+
30+
**Cross-Team Impact:**
31+
- **Kaylee:** 8 issues assigned (#44–45, #56–59, #60)
32+
- **Captain:** 1 issue assigned (#42)
33+
- Issues propagated to respective agent history files
34+
35+
See `.squad/decisions.md` for full decision record.
36+
37+
### 2025-07-22 — Created GitHub Issues for Azure Deployment + Entra ID Plan
38+
39+
**Status:** Complete
40+
**Issues Created:** 27 issues (#39-#65)
41+
**Decision:** Reframed issue #39 (2.1) from "security emergency" to "best practices" — no secrets were committed to git history.
42+
43+
**Issue Mapping to Plan:**
44+
45+
- **Phase 1 (Auth):** #42 (Entra registrations) → #43 (JWT API) → #44 (WebApp OIDC) → #45 (MAUI MSAL) → #46 (CoreSync) → #47 (Integration tests)
46+
- **Phase 2 (Secrets):** #39 (user-secrets) → #40 (config all projects) → #41 (HTTPS/headers) → #54 (Key Vault integration)
47+
- **Phase 3 (Infrastructure):** #48 (azure.yaml) → #49 (PostgreSQL) → #50 (Redis) → #51 (Blob) → #52 (Container Apps) → #53 (Key Vault) → #55 (CoreSync DB migration)
48+
- **Phase 4 (Pipeline):** #56 (CI) → #57 (Deploy) → #58 (Staging) → #59 (Migrations)
49+
- **Phase 5 (Hardening):** #60 (Monitoring) → #61 (Rate limit) → #62 (CORS) → #63 (Health) → #64 (Scaling) → #65 (Audit logging)
50+
51+
**Team Assignments:**
52+
- Zoe (Lead): 14 issues (auth foundational work, infra decisions, hardening architecture)
53+
- Kaylee (Full-stack): 8 issues (WebApp OIDC, MAUI MSAL, CI/deploy workflows, monitoring)
54+
- Captain (David): 1 issue (#42 - requires Azure portal/Entra ID access)
55+
56+
**Dependencies Validated:** All 27 issues cross-referenced with dependency links. Phase order preserved for execution.
57+
58+
**Key Learnings:**
59+
- No security emergency: appsettings.json with secrets already in .gitignore
60+
- User-secrets workflow as team best practice (Phase 2.1)
61+
- Phase 1 testable entirely on localhost with Entra ID redirecting to `http://localhost`
62+
- CoreSync SQLite→PostgreSQL migration is critical path item (Phase 3.7, XL size)
63+
- Aspire-native provisioning via `azd` avoids manual Bicep maintenance

.squad/decisions.md

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,71 @@
22

33
## Active Decisions
44

5-
No decisions recorded yet.
5+
### 1. GitHub Issues Created for Azure + Entra ID Plan (2026-03-13)
6+
7+
**Status:** DOCUMENTED
8+
**Date:** 2026-03-13
9+
**Author:** Zoe (Lead)
10+
11+
27 GitHub issues decompose the Azure deployment + Entra ID authentication plan into actionable work items across 5 phases. All issues linked with dependency references and assigned to team members.
12+
13+
**Key Decisions:**
14+
- **Reframed Issue #39:** User-secrets workflow as team best practice (not security emergency) — no secrets accidentally committed; `appsettings.json` already in `.gitignore`
15+
- **Execution Order:** Phase 2 → Phase 1 → Phase 3 → Phase 4 → Phase 5 (security-first approach)
16+
- **Phase 1 Testable Locally:** Auth flow fully validates on `localhost` without Azure deployment
17+
- **Team Assignments:** Zoe (14 issues, architecture/infra), Kaylee (8 issues, UI/deploy), Captain (1 issue, Azure portal)
18+
- **Critical Path:** CoreSync SQLite→PostgreSQL migration (Phase 3.7, XL complexity)
19+
20+
**Issue Mapping:**
21+
| Phase | Count | Issues |
22+
|-------|-------|--------|
23+
| Phase 1 (Auth) | 7 | #42-47 |
24+
| Phase 2 (Secrets) | 4 | #39-41, #54 |
25+
| Phase 3 (Infrastructure) | 8 | #48-53, #55 |
26+
| Phase 4 (Pipeline) | 4 | #56-59 |
27+
| Phase 5 (Hardening) | 6 | #60-65 |
28+
29+
**Learnings:**
30+
- Aspire-native provisioning (`azd`) generates Bicep — no manual templates needed
31+
- Localhost testing of auth eliminates blocker for early validation
32+
- DevAuthHandler alongside Entra ID maintains developer velocity
33+
- User-secrets as team best practice enables secure local dev
34+
35+
**Next Steps:**
36+
1. Captain: Register Entra ID app registrations (#42)
37+
2. Zoe: Begin user-secrets setup (#39-40)
38+
3. Kaylee: Begin CI workflow (#56)
39+
4. All phases proceed in parallel where dependencies allow
40+
41+
---
42+
43+
### 2. Architecture Plan: Azure Deployment with Entra ID Authentication (2026-03-13)
44+
45+
**Status:** REFERENCE
46+
**Date:** 2026-03-13
47+
**Author:** Zoe (Lead)
48+
49+
Comprehensive architecture plan for transitioning SentenceStudio from local-dev-only to production-ready Azure deployment with real authentication. Covers 5 phases from secret management through hardening, with technical decisions, risk register, and cost estimates.
50+
51+
**Key Technical Decisions:**
52+
1. **Aspire-Native Provisioning over Raw Bicep** — AppHost defines resources; `azd` generates Bicep
53+
2. **Keep DevAuthHandler Alongside Entra ID** — Developer velocity: use DevAuthHandler for local dev, Entra ID for production
54+
3. **PostgreSQL over Azure SQL** — Aligns with AppHost declaration and CoreSync support
55+
4. **Single-Tenant First** — Start with single Entra ID tenant; multi-tenant support added later
56+
5. **Token Caching:** SecureStorage (MAUI) and Redis (WebApp)
57+
58+
**3 App Registrations Required:**
59+
- SentenceStudio API (Web API — resource server)
60+
- SentenceStudio WebApp (Web app, confidential — Blazor Server)
61+
- SentenceStudio Native (Mobile/Desktop, public — MAUI clients)
62+
63+
**Scopes Exposed:**
64+
- `api://sentencestudio/user.read` — user profile, vocabulary
65+
- `api://sentencestudio/user.write` — modify user data, submit answers
66+
- `api://sentencestudio/ai.access` — AI chat, speech synthesis, image analysis
67+
- `api://sentencestudio/sync.readwrite` — CoreSync bi-directional sync
68+
69+
**Estimated Monthly Cost (Production):** ~$107-252
670

771
## Governance
872

0 commit comments

Comments
 (0)