Skip to content

Commit 04285cf

Browse files
author
Presta
committed
feat(fk-enhancement): add FK enhancement design docs + Opus 4.6 review
- FK-ENHANCEMENT-COMPLETE-PLAN v2.0.0: 403h/12 sprints, Phase 0 added - FK-ENHANCEMENT-OPUS-FINDINGS: Opus 4.6 CONDITIONAL GO verdict, 4 CRITs fixed - FK-ENHANCEMENT-RESEARCH v1.1.0: BFS cycle detection fix (CRIT-4) - FK-ENHANCEMENT-BENEFIT v1.1.0: revised timeline - FK-ENHANCEMENT-OPUS-REVIEW: review package sent to Opus - docs/library/10-FK-ENHANCEMENT: agent-consumable summary - docs/library/README: index updated (31 layers, 4061 objects) - model/connections.json: add ADO connection for 51-ACA (connection-ado-51aca) Opus 4.6 fixes: CRIT-1: 180h → 403h (realistic effort) CRIT-2: saga pattern for scenario merge (Cosmos NoSQL has no cross-partition txn) CRIT-3: separate /relationships container option CRIT-4: BFS visited set with layer:id keys (prevent infinite loops) Timeline: March 2026 (Phase 0) - February 2027 (Phase 5 migration) 27 edge types, 14-risk matrix, phase-by-phase rollout
1 parent 8bedd8d commit 04285cf

8 files changed

+5676
-6
lines changed
Lines changed: 306 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,306 @@
1+
# FK Enhancement Benefits for 51-ACA Sprint Automation
2+
3+
**Date**: 2026-02-28 14:33 ET (original); 2026-02-28 18:30 ET (v1.1.0)
4+
**Version**: 1.1.0
5+
**Status**: Design Phase -- revised per Opus 4.6 review
6+
**Scope**: 31 data model layers (endpoints, containers, screens, hooks, projects, sprints, connections, wbs, etc.)
7+
**Full Research**: [FK-ENHANCEMENT-RESEARCH-2026-02-28.md](FK-ENHANCEMENT-RESEARCH-2026-02-28.md)
8+
**Opus Findings**: [FK-ENHANCEMENT-OPUS-FINDINGS-2026-02-28.md](FK-ENHANCEMENT-OPUS-FINDINGS-2026-02-28.md)
9+
10+
---
11+
12+
## What Are "Layers"?
13+
14+
The EVA Data Model API manages **31 distinct entity types (layers)**, not source code repositories:
15+
16+
- **Technical**: endpoints, containers, services, schemas, hooks, components, agents
17+
- **UI**: screens, literals, prompts
18+
- **Governance**: **projects** (53 numbered EVA projects), **wbs** (work breakdown), **sprints** (execution records), milestones, risks
19+
- **Integration**: **connections** (ADO/GitHub/Azure APIs), planes, environments
20+
- **Security**: personas, feature_flags, requirements, security_controls
21+
22+
This FK enhancement connects these 31 layers relationally. Example: sprint -> wbs -> endpoints -> containers -> projects (5-layer FK chain).
23+
24+
---
25+
26+
## TL;DR: What This Means for 51-ACA
27+
28+
The proposed FK enhancement transforms the Data Model API from **loose string arrays** into **explicit PK/FK relationships with versioning**. This directly enables your stated goals:
29+
30+
> "i plan using IaC from UI, build pipelines, workflows, schedule submit jobs"
31+
> -- User, 2026-02-28
32+
33+
### What You Get
34+
35+
1. **IaC from UI**
36+
- Click "Export Infrastructure" in admin UI -> Auto-generates Bicep/Terraform
37+
- Walk FK graph, emit deployment scripts
38+
- Validate with PSRule before deploying
39+
40+
2. **Build Pipelines**
41+
- Auto-generate Azure Pipelines YAML from FK graph
42+
- Topological sort ensures correct deployment order (containers before endpoints)
43+
- FK violations block pipeline (shift-left testing)
44+
45+
3. **Workflows**
46+
- Schedule Cosmos sync jobs with FK-driven dependency resolution
47+
- Example: "Sync jobs container, then job_history (depends on jobs)"
48+
- Retry failed steps with FK integrity validation
49+
50+
4. **Scenarios**
51+
- Test branch deployments before merging to main
52+
- "What if I add this new endpoint?" -> FK graph shows full impact
53+
- Rollback if deployment fails (version snapshots)
54+
55+
---
56+
57+
## Use Case: 51-ACA Sprint Automation Enhanced
58+
59+
### Today (Port 8055 Local Instance)
60+
61+
```powershell
62+
# Query sprint data
63+
$sprint = Invoke-RestMethod "http://localhost:8055/model/sprints/51-ACA-sprint-02"
64+
# Returns: velocity, MTI, story IDs (loose coupling)
65+
66+
# To deploy sprint changes:
67+
# 1. Manually read PLAN.md to understand dependencies
68+
# 2. Manually write Bicep files
69+
# 3. Manually order deployment steps
70+
# 4. Manually validate FK integrity
71+
# 5. Cross fingers and deploy
72+
```
73+
74+
### Tomorrow (FK Enhanced + Versioning)
75+
76+
```powershell
77+
# Step 1: Create scenario for sprint 02
78+
$scenario = Invoke-RestMethod "$base/model/scenarios/create" -Method POST -Body @{
79+
name = "51-ACA-sprint-02"
80+
base_version = "main@v676" # Current port 8055 state
81+
description = "Sprint 02 stories: 15 features, velocity 15"
82+
} | ConvertFrom-Json
83+
84+
# Step 2: Add new features to scenario (mutates FK graph in isolated branch)
85+
Invoke-RestMethod "$base/model/endpoints/POST /v1/51aca/submit?scenario=$($scenario.id)" `
86+
-Method PUT -Body @{
87+
id = "POST /v1/51aca/submit"
88+
service = "51aca-api"
89+
cosmos_writes = ["51aca_jobs"] # FK to container
90+
status = "implemented"
91+
}
92+
93+
# Step 3: Validate scenario (impact analysis)
94+
$validation = Invoke-RestMethod "$base/model/scenarios/$($scenario.id)/validate" -Method POST
95+
# Returns:
96+
# - new_objects: ["POST /v1/51aca/submit"]
97+
# - affected_objects: ["51ACADashboard", "useJobSubmit"]
98+
# - breaking_changes: [] # No blockers
99+
# - deployment_order: ["1. Create container: 51aca_jobs", "2. Deploy endpoint", "3. Update UI"]
100+
101+
# Step 4: Auto-generate IaC from scenario
102+
$bicep = Invoke-RestMethod "$base/model/iac/generate?layer=containers&scenario=$($scenario.id)&format=bicep"
103+
$bicep | Out-File "deploy/sprint-02-infrastructure.bicep"
104+
105+
# Step 5: Auto-generate pipeline
106+
$pipeline = Invoke-RestMethod "$base/model/pipelines/generate?scenario=$($scenario.id)&format=azure-pipelines"
107+
$pipeline | Out-File ".azure-pipelines/sprint-02-deploy.yml"
108+
109+
# Step 6: Merge scenario to main (atomic)
110+
Invoke-RestMethod "$base/model/scenarios/$($scenario.id)/merge" -Method POST
111+
# All FK graph changes committed together (no partial state)
112+
113+
# Step 7: Deploy via auto-generated pipeline
114+
az pipelines run --name "sprint-02-deploy"
115+
```
116+
117+
**What Changed:**
118+
- ❌ BEFORE: 5 manual steps, 30 minutes, error-prone
119+
- ✅ AFTER: 7 API calls, 2 minutes, FK-validated
120+
121+
---
122+
123+
## Timeline Impact on 51-ACA (Revised per Opus 4.6 -- 403h, 12 sprints)
124+
125+
### Immediate (Sprint 1-2, March-April 2026) -- Phase 0 NEW
126+
127+
- **Phase 0 delivers FK validation on existing string arrays** -- zero migration risk
128+
- Port 8055 objects automatically validated on upsert
129+
- Orphan scan identifies cleanup targets before FK seeding
130+
- No schema changes needed
131+
132+
### Phase 1A (May-June 2026, Sprints 3-4)
133+
134+
- Base FK schema deployed to ACA Cosmos instance
135+
- 51-ACA objects get `_relationships` field (empty initially)
136+
- **No migration needed** -- opt-in per object
137+
138+
### Phase 1B-Scenarios (July 2026, Sprints 5-6)
139+
140+
- Scenario API available: Test sprint deployments in isolation
141+
- **Saga-based merge** (not atomic -- Cosmos NoSQL limitation)
142+
- Compensation log for rollback on partial failure
143+
144+
### Phase 3 (August 2026, Sprint 7)
145+
146+
- Relationship indexes deployed
147+
- O(1) navigation: `GET /model/sprints/51-ACA-sprint-02/descendants`
148+
- Returns full WBS tree in 1 API call (< 100ms)
149+
- **BFS cycle detection** prevents infinite loops on self-referential layers
150+
151+
### Phase 1C-IaC (September 2026, Sprint 8) + Phase 1D-Pipelines (October 2026, Sprint 9)
152+
153+
- **IaC generation**: Auto-generate Bicep/Terraform from FK graph
154+
- **Pipeline generation**: Auto-generate Azure Pipelines YAML / GitHub Actions
155+
156+
### Phase 4 (November 2026, Sprint 10)
157+
158+
- Cascade rules enforced
159+
- Delete confirmation shows full impact: "This will affect 12 downstream objects"
160+
161+
### Phase 5 (January-February 2027, Sprint 12)
162+
163+
- Migration script backfills all 676+ objects in port 8055
164+
- All loose string arrays converted to explicit FK relationships
165+
- **Production-ready FK graph**
166+
167+
---
168+
169+
## Recommended 51-ACA Actions
170+
171+
### Short-Term (Sprint 2)
172+
173+
1. **Read FK enhancement research**: [FK-ENHANCEMENT-RESEARCH-2026-02-28.md](FK-ENHANCEMENT-RESEARCH-2026-02-28.md)
174+
2. **Document current dependencies**: Which WBS items depend on which endpoints/containers?
175+
3. **Identify IaC needs**: What infrastructure do you deploy manually today?
176+
177+
### Medium-Term (Sprint 3-5)
178+
179+
1. **Test scenario API** (Phase 1B, June 2026)
180+
- Create test scenario: "What if I add submit_job endpoint?"
181+
- Validate impact before implementing
182+
2. **Adopt IaC generation** (Phase 1B)
183+
- Replace manual Bicep files with auto-generated IaC
184+
- Store generated IaC in git: `deploy/sprint-XX-infra.bicep`
185+
3. **Migrate 1 sprint to FK-enhanced workflow** (pilot)
186+
- Sprint 3: Traditional workflow
187+
- Sprint 4: FK-enhanced workflow (scenario -> validate -> merge -> deploy)
188+
- Compare: Time saved, errors caught, rollback ease
189+
190+
### Long-Term (Sprint 6+)
191+
192+
1. **Full FK adoption** (Phase 5, September 2026)
193+
- All 676 objects migrated to explicit FK relationships
194+
- Port 8055 instance syncs FK graph to ACA Cosmos
195+
- Sprint automation fully FK-driven:
196+
* Story -> WBS -> Endpoints -> Containers (explicit FKs)
197+
* Auto-detect dependencies from FK graph
198+
* Generate deployment order automatically
199+
200+
2. **Workflow orchestration**
201+
- Schedule nightly Cosmos sync: `sync-51aca-data`
202+
- FK-driven dependency order: Sync base containers before derived views
203+
- FK integrity validation after each sync step
204+
205+
3. **UI enhancements in 31-eva-faces**
206+
- Dependency graph visualizer: See full WBS tree
207+
- Delete impact preview: "This will break 3 sprint stories"
208+
- Relationship navigation: Click endpoint -> see all screens that call it
209+
210+
---
211+
212+
## Risk Mitigation for 51-ACA
213+
214+
### Risk 1: Port 8055 Isolation
215+
216+
**Concern**: 51-ACA uses isolated port 8055 instance, not shared ACA Cosmos.
217+
218+
**Mitigation**:
219+
- FK enhancement supports multi-instance architecture (MODEL_DIR env var)
220+
- Port 8055 can opt-in to FK relationships independently
221+
- No forced migration to ACA Cosmos
222+
- **Your isolation is preserved**
223+
224+
### Risk 2: Sprint Automation Disruption
225+
226+
**Concern**: FK migration might break existing sprint automation.
227+
228+
**Mitigation**:
229+
- Phase 1-4: FK relationships are **optional** (opt-in per object)
230+
- Existing string arrays continue working until Phase 5 (September 2026)
231+
- 6-month transition period (May-September 2026)
232+
- Backward compatibility: Both string arrays AND FKs supported during transition
233+
234+
### Risk 3: Learning Curve
235+
236+
**Concern**: Team must learn new FK API routes.
237+
238+
**Mitigation**:
239+
- Phase 1B includes comprehensive documentation
240+
- Auto-generated code examples for common scenarios
241+
- Pilot sprint (Sprint 4) with full support from data model team
242+
- Fallback: Keep using port 8055 local instance if FK adoption blocked
243+
244+
---
245+
246+
## Example: Sprint 02 Deploy Workflow (FK-Enhanced)
247+
248+
**User Request:**
249+
> "Deploy Sprint 02 features (15 stories) to staging environment"
250+
251+
**Traditional Workflow (Manual, 30 mins):**
252+
1. Read PLAN.md, identify new endpoints
253+
2. Write Bicep files for new Cosmos containers
254+
3. Manually order deployment steps
255+
4. Deploy Bicep
256+
5. Deploy API code
257+
6. Update frontend
258+
7. Run smoke tests
259+
8. Hope nothing broke
260+
261+
**FK-Enhanced Workflow (Automated, 5 mins):**
262+
```powershell
263+
# 1. Create scenario (branch FK graph)
264+
$scenario = Invoke-RestMethod "$base/model/scenarios/create" -Method POST -Body '{"name":"sprint-02","base_version":"main@v676"}'
265+
266+
# 2. Auto-populate scenario from PLAN.md (new script)
267+
pwsh -File "C:\AICOE\eva-foundry\51-ACA\scripts\sync-sprint-to-scenario.ps1" -SprintId "51-ACA-sprint-02" -ScenarioId $scenario.id
268+
269+
# 3. Validate (impact analysis)
270+
$validation = Invoke-RestMethod "$base/model/scenarios/$($scenario.id)/validate" -Method POST
271+
if ($validation.breaking_changes.Count -gt 0) {
272+
Write-Error "Blocked: $($validation.breaking_changes -join ', ')"
273+
exit 1
274+
}
275+
276+
# 4. Generate IaC + Pipeline
277+
Invoke-RestMethod "$base/model/iac/generate?scenario=$($scenario.id)&format=bicep" | Out-File "deploy/sprint-02.bicep"
278+
Invoke-RestMethod "$base/model/pipelines/generate?scenario=$($scenario.id)&format=azure-pipelines" | Out-File ".azure-pipelines/sprint-02.yml"
279+
280+
# 5. Deploy via Azure Pipelines (FK-aware deployment order)
281+
az pipelines run --name "sprint-02" --branch "feature/sprint-02"
282+
283+
# 6. If success -> Merge scenario to main (atomic)
284+
Invoke-RestMethod "$base/model/scenarios/$($scenario.id)/merge" -Method POST
285+
286+
# 7. If failure -> Rollback (restore snapshot)
287+
$snapshot = Invoke-RestMethod "$base/model/snapshots/create" -Method POST -Body '{"name":"pre-sprint-02"}'
288+
Invoke-RestMethod "$base/model/snapshots/$($snapshot.id)/restore" -Method POST
289+
```
290+
291+
**Comparison:**
292+
- Traditional: 30 minutes, manual steps, no rollback
293+
- FK-Enhanced: 5 minutes, fully automated, one-click rollback
294+
295+
---
296+
297+
## Next Steps
298+
299+
1. **Read full research**: [FK-ENHANCEMENT-RESEARCH-2026-02-28.md](FK-ENHANCEMENT-RESEARCH-2026-02-28.md)
300+
2. **Provide feedback**: Does this address your IaC/pipeline/workflow needs?
301+
3. **Pilot planning**: Can we pilot FK-enhanced workflow in Sprint 4?
302+
4. **Document dependencies**: Start documenting WBS -> endpoint -> container dependencies for FK migration
303+
304+
---
305+
306+
**END OF DOCUMENT**

0 commit comments

Comments
 (0)