mikeboone Claude Sonnet 4.6 commited on
Commit
487ba69
Β·
1 Parent(s): 2d8d24b

chore: close sprint 3, open sprint 4 with branching strategy

Browse files

- Create sprint_2026_04.md with 4 priorities: branching/versioning,
run-time settings redesign, data narrative layer, 10k row test
- Add branching strategy to CLAUDE.md (main/develop/hotfix model)
- Update sprint pointer and history table in CLAUDE.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (2) hide show
  1. CLAUDE.md +50 -3
  2. sprint_2026_04.md +144 -0
CLAUDE.md CHANGED
@@ -70,10 +70,56 @@ The user may be running a live demo on HF. Pushing without permission can break
70
 
71
  ## Current Sprint
72
 
73
- **ALWAYS READ FIRST**: `sprint_2026_03.md` (in root)
74
 
75
  For overall project status, see `PROJECT_STATUS.md` in root.
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  ### Sprint Doc Workflow - IMPORTANT
78
 
79
  **This is how we stay organized. Follow this process consistently:**
@@ -375,7 +421,8 @@ All docs live in `dev_notes/` unless noted. When in doubt about how something wo
375
  ### Sprint History
376
  | Doc | Status |
377
  |-----|--------|
378
- | `sprint_2026_03.md` *(root)* | **Current sprint** β€” read this at the start of every session |
 
379
  | `sprint_2026_02.md` *(root)* | Closed β€” February/March |
380
  | `sprint_2026_01.md` *(root)* | Closed β€” January |
381
 
@@ -384,5 +431,5 @@ All docs live in `dev_notes/` unless noted. When in doubt about how something wo
384
 
385
  ---
386
 
387
- *Last Updated: April 28, 2026*
388
  *This is the source of truth - update rules here, not in .cursorrules*
 
70
 
71
  ## Current Sprint
72
 
73
+ **ALWAYS READ FIRST**: `sprint_2026_04.md` (in root)
74
 
75
  For overall project status, see `PROJECT_STATUS.md` in root.
76
 
77
+ ---
78
+
79
+ ## Branching Strategy
80
+
81
+ **Three-branch model: `main` / `develop` / hotfix**
82
+
83
+ | Branch | Purpose | Deploys to |
84
+ |--------|---------|------------|
85
+ | `main` | Production β€” always stable and shippable | `hf` (prod) |
86
+ | `develop` | Sprint integration β€” current sprint work | `hf-test` |
87
+ | `feature/*` | Individual features β€” branch off `develop` | local / `hf-test` |
88
+
89
+ ### Rules
90
+
91
+ **Normal sprint work:**
92
+ ```bash
93
+ git checkout develop
94
+ git checkout -b feature/my-thing
95
+ # ... work ...
96
+ git checkout develop && git merge feature/my-thing
97
+ git push hf-test develop:main # deploy to test
98
+ ```
99
+
100
+ **Shipping to prod (end of sprint or stable milestone):**
101
+ ```bash
102
+ git checkout main && git merge develop
103
+ git push hf main # deploy to prod
104
+ git push origin main
105
+ git tag v1.x.x && git push origin --tags
106
+ ```
107
+
108
+ **Hotfix to prod (urgent fix while sprint work is in develop):**
109
+ ```bash
110
+ git checkout main
111
+ git checkout -b hotfix/description
112
+ # ... fix ...
113
+ git checkout main && git merge hotfix/description
114
+ git push hf main # deploy to prod immediately
115
+ git checkout develop && git merge hotfix/description # keep develop in sync
116
+ git push hf-test develop:main
117
+ git push origin main develop
118
+ ```
119
+
120
+ > **Never push sprint/feature work directly to `main`.
121
+ > Never push to `hf` (prod) from anything other than `main`.**
122
+
123
  ### Sprint Doc Workflow - IMPORTANT
124
 
125
  **This is how we stay organized. Follow this process consistently:**
 
421
  ### Sprint History
422
  | Doc | Status |
423
  |-----|--------|
424
+ | `sprint_2026_04.md` *(root)* | **Current sprint** β€” read this at the start of every session |
425
+ | `sprint_2026_03.md` *(root)* | Closed β€” March/April |
426
  | `sprint_2026_02.md` *(root)* | Closed β€” February/March |
427
  | `sprint_2026_01.md` *(root)* | Closed β€” January |
428
 
 
431
 
432
  ---
433
 
434
+ *Last Updated: April 29, 2026*
435
  *This is the source of truth - update rules here, not in .cursorrules*
sprint_2026_04.md ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Sprint: May 2026
2
+
3
+ *Started: April 29, 2026*
4
+ *Previous sprint: `sprint_2026_03.md` (closed β€” March/April)*
5
+
6
+ ---
7
+
8
+ ## Context
9
+
10
+ App is live in production. Core pipeline is stable (6–7/8 tests passing consistently).
11
+ This sprint focuses on developer workflow, UX improvements, and data quality before
12
+ expanding the user base further.
13
+
14
+ ---
15
+
16
+ ## Branch Strategy
17
+
18
+ - **`main`** β€” always reflects production (`hf` remote). Only merge here when ready to ship.
19
+ - **`develop`** β€” integration branch for this sprint. Deploys to `hf-test`.
20
+ - **Feature branches** β€” branch off `develop`, merge back to `develop` when done.
21
+ - **Hotfixes** β€” branch off `main`, fix, merge to `main` AND `develop`, push to `hf`.
22
+
23
+ > See CLAUDE.md "Branching Strategy" section for full workflow rules.
24
+
25
+ ---
26
+
27
+ ## Sprint Priorities
28
+
29
+ ### Priority 1 β€” Branching / Release Strategy βœ… (set up at sprint start)
30
+
31
+ - [x] Define `main` / `develop` / hotfix workflow β€” documented in CLAUDE.md
32
+ - [ ] Create `develop` branch from current `main`
33
+ - [ ] Update CI/push targets: sprint work β†’ `hf-test` via `develop`; prod fixes β†’ `hf` via `main`
34
+ - [ ] Add git tag for current prod release (`v1.0.0` or similar) before new sprint work begins
35
+
36
+ ---
37
+
38
+ ### Priority 2 β€” Run-Time Settings Redesign
39
+
40
+ **Goal:** All pipeline control knobs are live on the app screen. No save/reload cycle.
41
+ Setting a value takes effect for the next run immediately. Defaults come from Supabase
42
+ admin settings, but can be overridden at runtime without touching the database.
43
+
44
+ **Right panel layout:**
45
+ ```
46
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
47
+ β”‚ TS Environment [dropdown] β”‚ ← always visible
48
+ β”‚ AI Model [dropdown] β”‚ ← always visible
49
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
50
+ β”‚ β–Ά Advanced Settings β”‚ ← accordion, collapsed by default
51
+ β”‚ Liveboard Name [text] β”‚
52
+ β”‚ Data Size [dropdown] (Small / Medium / Standard / Large)
53
+ β”‚ Geo Scope [dropdown] (USA Only / International)
54
+ β”‚ [other knobs as added] β”‚
55
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
56
+ β”‚ Pipeline Status / Progress β”‚ ← below settings
57
+ β”‚ [stage indicators] β”‚
58
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
59
+ ```
60
+
61
+ **Rules:**
62
+ - Values shown are loaded from user's saved settings (Supabase) at page load
63
+ - Changing a value in the panel takes effect immediately for the current session β€” no Save button needed
64
+ - "Save as default" option (optional, later) β€” writes back to Supabase
65
+ - Eliminates the separate Settings tab for pipeline-control settings (those move here)
66
+ - Settings tab becomes admin/account settings only (TS credentials, user preferences)
67
+
68
+ **Tasks:**
69
+ - [ ] Audit all Settings tab fields β€” categorize as (a) run-time knobs or (b) admin/account
70
+ - [ ] Move run-time knobs to right panel with accordion
71
+ - [ ] Wire values to controller at run time (not just at session init)
72
+ - [ ] Remove save/reload dependency for pipeline settings
73
+ - [ ] Update `fact_table_size`, `dim_table_size`, `geo_scope`, `liveboard_name` to read from panel state
74
+
75
+ ---
76
+
77
+ ### Priority 3 β€” Data Narrative Layer
78
+
79
+ **Goal:** Generated data tells the right story. Numbers reflect KPI targets, business context,
80
+ and the outlier patterns the liveboard is designed to highlight.
81
+
82
+ **Problem:** The data generator knows column names and types but not what story the data
83
+ should tell. KPI targets, growth trends, and anomaly patterns live in the matrix
84
+ (`uc_config`) but never reach `populate_demo_data`.
85
+
86
+ **Approach:**
87
+ - [ ] Research: audit what's in `uc_config` that's relevant to data generation (KPI definitions, story questions, outlier targets)
88
+ - [ ] Design: define a `DataNarrativeSpec` β€” per-column target ranges, trend direction, key outlier rows
89
+ - [ ] Pass `DataNarrativeSpec` from matrix config into `populate_demo_data` / LegitData
90
+ - [ ] Generator uses spec to set realistic value ranges for numeric columns (revenue, churn, margin, etc.)
91
+ - [ ] Outlier injection: a small number of rows (3–5%) hit the "interesting" values the liveboard questions are designed to surface
92
+
93
+ ---
94
+
95
+ ### Priority 4 β€” 10k Row Test
96
+
97
+ **Goal:** Confirm the "large" preset (10k fact rows) works end-to-end and produces better liveboard quality.
98
+
99
+ **Known issues to solve in test:**
100
+ - Settings cached at controller init β€” test must change setting β†’ trigger fresh session β†’ run pipeline
101
+ - 10k runs will be ~3–4x slower β€” bump test timeout for large-preset tests
102
+ - Validate that `is_fact_table` name-based detection correctly assigns 10k rows (not 500)
103
+
104
+ **Tasks:**
105
+ - [ ] Add `fact_table_size=10000` variant to test suite (separate test case or flag)
106
+ - [ ] Implement session reset between setting change and run in test harness
107
+ - [ ] Increase timeout for large-preset test cases
108
+ - [ ] Compare data/liveboard quality scores: 1k vs 10k on same company/use case
109
+
110
+ ---
111
+
112
+ ## Next Priorities (from status report "Working On Next")
113
+
114
+ - [ ] **Async pipeline** β€” data population + TS model creation currently sequential; run in parallel to cut total pipeline time
115
+ - [ ] **Enablement** β€” HTML user guide (full page on HF doc space, not just the markdown draft); demo videos
116
+ - [ ] **Matrix field input** β€” story definitions need field review; liveboard makeup and key outlier questions per vertical
117
+
118
+ ---
119
+
120
+ ## Backlog (leftover from Sprint 3, lower priority)
121
+
122
+ - [ ] Unified Outlier System β€” quality not there yet
123
+ - [ ] Demo Pack Generation
124
+ - [ ] Chart titles / viz naming
125
+ - [ ] Tag assignment to models (returns 404; works for tables)
126
+ - [ ] Fix Research Cache Not Loading
127
+ - [ ] Fix DAYSONHAND Generation (currently random, needs business logic)
128
+ - [ ] MCP 500 retry logic
129
+ - [ ] Model Generator: Chasm Trap Fix
130
+ - [ ] Dead code cleanup (model TML generators)
131
+ - [ ] Incorporate Snowflake row counts into quality test data grading score
132
+ - [ ] AI Feedback verbosity
133
+ - [ ] `viz_type` enforcement (matrix chart type hints β†’ override TS defaults)
134
+ - [ ] Actual data outliers β†’ liveboard (`data_outliers` param ready, needs connection)
135
+
136
+ ---
137
+
138
+ ## Done
139
+
140
+ *(items move here as completed)*
141
+
142
+ ---
143
+
144
+ *Last updated: April 29, 2026*