feat(capability): wire SubgroupConfigPopover to processMap.subgroupAxes#74
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
jukka-matti
added a commit
that referenced
this pull request
Apr 18, 2026
… microcopy End-to-end walk of the FRAME umbrella in browser surfaced four issues; this commit fixes all of them so the umbrella (ADR-070, PRs #69–74) is ready to merge after MBB review. 1. PWA showFrame hook forwarding (fixes runtime crash on Frame tab click) - apps/pwa/src/hooks/useAppPanels.ts: the hook wrapped panelsStore but stripped showFrame and left 'frame' out of activeView typing. Clicking Frame tab threw "panels.showFrame is not a function". 2. WorkspaceView type gained 'frame' (unblocks Azure build) - packages/core/src/ui-types/index.ts (ViewState.activeView) - packages/stores/src/sessionStore.ts (WorkspaceView) - apps/azure/src/components/AppHeader.tsx (local WorkspaceView) - Pre-existing breakage from c4872d1 that tsc caught: Frame route in AppHeader/usePanelsPersistence/Editor typed against a view enum that still didn't list 'frame'. All three build paths now clean. 3. Investigation-showcase seeds processMap (ADR-070) - packages/data/src/types.ts: SampleConfig gains optional processMap. - packages/hooks/src/useDataIngestion.ts: loadSample now writes sample.config.processMap into projectStore.processContext (merging with whatever context already exists), and clears a prior processMap when loading a mapless sample. - apps/pwa/src/hooks/useDataIngestion.ts + apps/azure/src/hooks/...: thread setProcessContext/getProcessContext through to the base hook. - packages/data/src/samples/investigation-showcase.ts: seeds the Fill Weight showcase with a single "Fill" step, 4 tributaries (Line as the nominated subgroup axis), CTS=Fill_Weight_g with 495/500/505, and two hunches. The Frame workspace now opens ready-made for the pre-built Findings/Questions story — no rebuild required. 4. Gap detector microcopy polish - packages/core/src/frame/gapDetector.ts: unnamed steps produced "No CTQ at "". Add …" and Step "" has no tributaries.". Now reads "No CTQ at this step …" and "This step has no tributaries …" when step.name is empty/whitespace. Named steps still get quoted. - +2 tests in gapDetector.test.ts covering both branches. Tests green: 44 frame (core), 21 ProcessMapBase (ui), 10 useDataIngestion (hooks). pr-ready-check green (turbo tests + lint + docs:check). Part of the FRAME umbrella (PRs #69/#70/#71/#72/#73/#74, ADR-070). Co-Authored-By: ruflo <ruv@ruv.net>
c4872d1 to
a6d9614
Compare
Completes the capability-storytelling leg of the FRAME umbrella (ADR-070): the rational-subgroup selector in the capability view now reads from the tributaries the user nominated in FRAME, not from the full factors list. Same microcopy, same popover, but the candidates now reflect process structure. Changes: - packages/core/src/frame/subgroupAxes.ts — new pure helper `subgroupAxisColumns(map)` that resolves tributary IDs in processMap.subgroupAxes to their column names, preserving order and tolerating dangling references (axes pointing at deleted tributaries). - packages/core/src/frame/__tests__/subgroupAxes.test.ts — 6 tests for null / undefined / empty / populated / ordering / dangling cases. - packages/core/src/frame/index.ts — export the helper from the /frame barrel alongside inferMode and detectGaps. - apps/pwa/src/components/Dashboard.tsx — read processContext from projectStore, derive subgroup candidates via subgroupAxisColumns, fall back to factors when the map has no axes set (backward compat). - apps/azure/src/components/Dashboard.tsx — mirror of the PWA wiring. Tests: 2580 core (+6 from subgroupAxes), 1179 ui, 111 pwa, 771 azure; pr-ready-check green (tests + lint + docs:check). Stacked on feat/frame-azure-integration (PR #73) — uses @variscout/core/frame. When #73 merges, this rebases onto main. Plan: .claude/plans/i-was-interviewing-greg-dynamic-umbrella.md Spec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md ADR: docs/07-decisions/adr-070-frame-workspace.md Co-Authored-By: ruflo <ruv@ruv.net>
… microcopy End-to-end walk of the FRAME umbrella in browser surfaced four issues; this commit fixes all of them so the umbrella (ADR-070, PRs #69–74) is ready to merge after MBB review. 1. PWA showFrame hook forwarding (fixes runtime crash on Frame tab click) - apps/pwa/src/hooks/useAppPanels.ts: the hook wrapped panelsStore but stripped showFrame and left 'frame' out of activeView typing. Clicking Frame tab threw "panels.showFrame is not a function". 2. WorkspaceView type gained 'frame' (unblocks Azure build) - packages/core/src/ui-types/index.ts (ViewState.activeView) - packages/stores/src/sessionStore.ts (WorkspaceView) - apps/azure/src/components/AppHeader.tsx (local WorkspaceView) - Pre-existing breakage from c4872d1 that tsc caught: Frame route in AppHeader/usePanelsPersistence/Editor typed against a view enum that still didn't list 'frame'. All three build paths now clean. 3. Investigation-showcase seeds processMap (ADR-070) - packages/data/src/types.ts: SampleConfig gains optional processMap. - packages/hooks/src/useDataIngestion.ts: loadSample now writes sample.config.processMap into projectStore.processContext (merging with whatever context already exists), and clears a prior processMap when loading a mapless sample. - apps/pwa/src/hooks/useDataIngestion.ts + apps/azure/src/hooks/...: thread setProcessContext/getProcessContext through to the base hook. - packages/data/src/samples/investigation-showcase.ts: seeds the Fill Weight showcase with a single "Fill" step, 4 tributaries (Line as the nominated subgroup axis), CTS=Fill_Weight_g with 495/500/505, and two hunches. The Frame workspace now opens ready-made for the pre-built Findings/Questions story — no rebuild required. 4. Gap detector microcopy polish - packages/core/src/frame/gapDetector.ts: unnamed steps produced "No CTQ at "". Add …" and Step "" has no tributaries.". Now reads "No CTQ at this step …" and "This step has no tributaries …" when step.name is empty/whitespace. Named steps still get quoted. - +2 tests in gapDetector.test.ts covering both branches. Tests green: 44 frame (core), 21 ProcessMapBase (ui), 10 useDataIngestion (hooks). pr-ready-check green (turbo tests + lint + docs:check). Part of the FRAME umbrella (PRs #69/#70/#71/#72/#73/#74, ADR-070). Co-Authored-By: ruflo <ruv@ruv.net>
6d9d338 to
f499b21
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Completes the capability-storytelling leg of the FRAME umbrella (ADR-070): the rational-subgroup selector in the capability view now reads from the tributaries the user nominated in FRAME, not from the full factors list. Same microcopy, same popover — but the candidates now reflect process structure, not keyword-matched columns.
Stacked on #73. When it merges, this rebases onto main.
What ships
packages/core/src/frame/subgroupAxes.ts— new pure helpersubgroupAxisColumns(map)resolvingprocessMap.subgroupAxes(tributary IDs) to column names, preserving order, tolerating dangling references (axes pointing at deleted tributaries).__tests__/subgroupAxes.test.ts— 6 tests covering null / undefined / empty / populated / ordering / dangling references.packages/core/src/frame/index.ts— export the helper from the/framebarrel alongsideinferModeanddetectGaps.apps/pwa/src/components/Dashboard.tsx— readprocessContextfromprojectStore, derive subgroup candidates viasubgroupAxisColumns, fall back tofactorswhen the map has no axes set (backward compat for projects without a map).apps/azure/src/components/Dashboard.tsx— mirror of the PWA wiring.UX contract
Test plan
pnpm --filter @variscout/core test— 2580 tests pass (+6 fromsubgroupAxes)pnpm --filter @variscout/ui test— 1179 tests passpnpm --filter @variscout/pwa test— 111 tests passpnpm --filter @variscout/azure-app test— 771 tests passbash scripts/pr-ready-check.shgreen (tests + lint + docs:check)claude --chromeacross a seeded sample end to end:Context
Plan:
.claude/plans/i-was-interviewing-greg-dynamic-umbrella.mdSpec: docs/superpowers/specs/2026-04-18-frame-process-map-design.md
ADR: docs/07-decisions/adr-070-frame-workspace.md
🤖 Generated with ruflo