chore(deps): bump actions/checkout from 4.2.2 to 6.0.2#3
Closed
dependabot[bot] wants to merge 1 commit into
Closed
chore(deps): bump actions/checkout from 4.2.2 to 6.0.2#3dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@11bd719...de0fac2) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
7369eac to
899db6a
Compare
jukka-matti
added a commit
that referenced
this pull request
Mar 19, 2026
…l-model-hierarchy Replace shallow AI Adaptation subsection with proper Three AI Modes table (No AI / AI Enabled / AI + Knowledge Base) and Four AI Context Layers. Move Knowledge Layer from Product Concerns to architectural treatment. Add 5 verification chart types to IMPROVE phase detail. Expand known gap #3 with explicit document upload gap during FRAME/SCOUT. Co-Authored-By: ruflo <ruv@ruv.net>
Owner
|
Applied this update directly on main in a consolidated dependency bump commit (all 13 Dependabot updates at once). Closing this PR. |
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
This was referenced Apr 27, 2026
jukka-matti
added a commit
that referenced
this pull request
Apr 27, 2026
Combines three sequenced PRs into one spec per feedback_full_vision_spec memory: - PR #1 (H1): team notes on state items — question / gemba / data-gap / decision kinds, persisted in ProcessHubInvestigationMetadata.stateNotes - PR #2 (V2 follow-up): full EvidenceSheet rendering — refactors ProcessHubEvidenceContract to split countFor (sync) + loadFindingsFor (async), eliminates the synthetic-Finding cast from PR #99 - PR #3 (H2 launch): General Evidence Source for CSV/Excel — adds GENERIC_TABULAR_PROFILE to DATA_PROFILE_REGISTRY, mapping confirmation UI in ProcessHubEvidencePanel, cadence metadata Resolves both prior open questions inline: - Evidence contract split (countFor + loadFindingsFor + onChipClick + onFindingSelect — cleaner than overloading findingsFor sync/async) - Mapping UX explicit confirmation (matches operating-model § "analyst confirms mappings" language) Updates spec index, marks the parent V2 actionable-panel spec as Delivered (PRs #98 #99). Co-Authored-By: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
Apr 27, 2026
Sequenced TDD breakdown for 3 PRs: - PR #1: team notes on state items (~250-350 LOC, 8 tasks). New ProcessStateNote types in core, ProcessHubInvestigationMetadata extension, ProcessHubNotesContract on the panel, StateItemNotesDrawer in apps/azure, Dashboard wiring via useStorage round-trip. - PR #2: full EvidenceSheet rendering (~300-400 LOC, 5 tasks). Refactors ProcessHubEvidenceContract to split countFor (sync) + loadFindingsFor (async); EvidenceSheet bottom sheet; Dashboard owns sheet state + async load via useStorage; eliminates synthetic-Finding cast from PR #99. - PR #3: General Evidence Source for CSV/Excel (~600-800 LOC, 4 tasks). GENERIC_TABULAR_PROFILE in DATA_PROFILE_REGISTRY; profile picker UI; mapping confirmation form; cadence selector (5 actual EvidenceCadence values); telemetry on save. Three implementation reality notes flagged at top: 1. Actual DataProfileDefinition signature differs from spec sketch (single 'label' field; detect takes only rows; confidence is 'high'/'medium'/'low' enum not number). 2. EvidenceCadence enum lacks 'monthly' — use existing 5 values. 3. Spec back-link upgrades to Markdown link in PR #1 Task 7. Co-Authored-By: ruflo <ruv@ruv.net>
5 tasks
jukka-matti
added a commit
that referenced
this pull request
Apr 28, 2026
* feat(core): add GENERIC_TABULAR_PROFILE for CSV/Excel evidence sources First H2 capability — any CSV/Excel with at least one numeric column becomes a recurring evidence source via this profile. Detection scales confidence from low → high based on numeric-column ratio (>=60% high, >=30% medium, else low). Validate rejects empty snapshots. Apply is identity (no derived signals — that's domain-specific work for future profiles like agent-review-log). DATA_PROFILE_REGISTRY now contains both agent-review-log and generic-tabular; detectDataProfiles returns multi-match results for files matching both (e.g., a review log will match both since its columns are tabular). Phase 3 PR #3, Task 2. Co-Authored-By: ruflo <ruv@ruv.net> * feat(azure): add multi-step wizard for general Evidence Source upload Extends ProcessHubEvidencePanel with a New Source flow alongside the existing quick Agent Review Log path. State machine routes through: upload → detect → optional profile picker → mapping confirmation → cadence (5 EvidenceCadence values, no monthly) → save. Reuses parseText, detectDataProfiles, and DATA_PROFILE_REGISTRY from @variscout/core. Telemetry process_hub.evidence_source_created emits non-PII payload (hubId, profileId, columnCount, rowCount, cadence) per ADR-059. The Agent Review Log quick-create + auto-apply path is preserved unchanged. Phase 3 PR #3, Task 3. Co-Authored-By: ruflo <ruv@ruv.net> * fix(azure): remove unused 'detecting' WizardState variant The variant was declared but never set — handleNewSourceFile awaits parseText + detectDataProfiles synchronously and jumps straight to confirming-mapping / picking-profile / error. Dead code removed; if a loading indicator becomes worth the UX cost on large files, reintroduce with a simpler shape (just sourceName, no rows yet). Phase 3 PR #3, code-review followup. Co-Authored-By: ruflo <ruv@ruv.net> --------- Co-authored-by: ruflo <ruv@ruv.net>
6 tasks
jukka-matti
added a commit
that referenced
this pull request
May 6, 2026
* data-flow F1+F2 P5.1: AzureHubRepository skeleton + composition root
Adds AzureHubRepository implementing HubRepository from @variscout/core/persistence.
Dispatch short-circuits HUB_PERSIST_SNAPSHOT to saveProcessHubToIndexedDB (bootstrap);
all other action kinds throw explicit P5.2/P5.3 not-yet-implemented error. Read APIs
wire against existing Azure Dexie tables (processHubs, evidenceSources, evidenceSnapshots,
evidenceSourceCursors); F3-pending entities (investigations, findings, questions,
causalLinks, suspectedCauses) are stubbed. Module-scoped azureHubRepository singleton
mirrors PWA composition-root pattern. apps/azure/CLAUDE.md updated with
persistence-boundary invariant documenting R12+R13 exceptions.
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P5.1 review fixes: hubs.list tombstone filter + multi-hub outcomes test + dispatch error test
- hubs.list() now filters h.deletedAt === null; hubs.get stays unscoped (comment added)
- outcomes.get has O(n hubs) comment noting F3 normalization will remove the scan
- AzureHubRepository.read.test: hubs.list tombstone test + multi-hub outcomes.get test
- AzureHubRepository.test: HUB_PERSIST_SNAPSHOT error propagation test
- Fix 4: corrected misleading fake-indexeddb comment ("kept at line 1" → "must be the first import statement")
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P5.2: Azure cascade helper with Dexie transaction
Adds cascadeArchiveDescendants(parentKind, parentId, archivedAt) in
apps/azure/src/persistence/cascadeArchive.ts. Uses transitiveCascade()
from @variscout/core/persistence; wraps all Dexie writes in a single
'rw' transaction covering evidenceSnapshots, evidenceSources,
evidenceSourceCursors, and processHubs. Per-kind stubs with F3 comments
for investigation/finding/question/causalLink/suspectedCause/rowProvenance/
canvasState (no Azure tables today). Outcome cascade explicitly deferred
to P5.3 per-action handler (hub blob mutation). Evidence source cursor
hub-range query uses compound PK [hubId+sourceId] between(). 10 new tests
covering: evidenceSource→cursor cascade, hub multi-table cascade,
investigation no-op, rollback, idempotency, empty-descendants. Barrel
updated to re-export the helper.
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P5.2 review fixes: cascade JSDoc + rollback comment + fan-out test
- Fix 1: add ## Atomic call pattern (P5.3+) section to cascadeArchiveDescendants
JSDoc prescribing the outer-transaction wrapping pattern P5.3 must use to
keep parent-row update + descendant cascade atomic; explains Dexie 4 zone reuse.
- Fix 2: replace hedge comment in rollback test with confident pass-confirmation
statement — rollback path verified green at P5.2 baseline (1098 tests).
- Fix 3: add cursor2 for src2 in the hub multi-table cascade test to cover the
fan-out path (hub → both evidenceSource cursors via compound key-range scan).
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P5.3: Azure per-action handlers + applyAction module
Implements all HubAction handlers in a new applyAction.ts module (Option B):
- Hub-blob mutations (HUB_UPDATE_GOAL, HUB_UPDATE_PRIMARY_SCOPE_DIMENSIONS,
OUTCOME_ADD, OUTCOME_UPDATE, OUTCOME_ARCHIVE) — read-modify-write via
saveProcessHubToIndexedDB.
- Direct Dexie table writes (EVIDENCE_ADD_SNAPSHOT, EVIDENCE_ARCHIVE_SNAPSHOT,
EVIDENCE_SOURCE_ADD, EVIDENCE_SOURCE_UPDATE_CURSOR, EVIDENCE_SOURCE_REMOVE).
- EVIDENCE_SOURCE_REMOVE atomically wraps cascade + parent soft-delete in a
single db.transaction; outer table list is a superset of cascadeArchiveDescendants'
internal transaction to satisfy Dexie zone propagation.
- Session-only kinds (INVESTIGATION_*, FINDING_*, QUESTION_*, CAUSAL_LINK_*,
SUSPECTED_CAUSE_*) — documented no-ops with F3 comment.
- Canvas kinds — documented no-ops with HUB_PERSIST_SNAPSHOT-flow comment.
- TypeScript exhaustiveness via assertNever() ensures compile-time completeness.
AzureHubRepository.dispatch now delegates to applyAction after the
HUB_PERSIST_SNAPSHOT short-circuit.
Adds 73 new tests (1098 → 1171). Adds sustainment-deferral note to
apps/azure/CLAUDE.md Invariants section.
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P5.3 review fixes: parent-update rollback test + @internal barrel + idempotency notes
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P6: Azure call-site migration to dispatch (storage facade + cursor sync)
Migration A: replace saveProcessHubToIndexedDB, saveEvidenceSourceToIndexedDB,
saveEvidenceSnapshotToIndexedDB in the three StorageProvider save methods with
azureHubRepository.dispatch(HUB_PERSIST_SNAPSHOT | EVIDENCE_SOURCE_ADD |
EVIDENCE_ADD_SNAPSHOT). Cloud-sync blocks unchanged. List/cache paths (lines 548,
595, 642) intentionally kept on direct localDb helpers (read-sync only).
Bootstrap save in listProcessHubs (line 548) left on direct call — it syncs cloud
→ local cache, not a hub-write dispatch path.
Migration B: replace db.evidenceSourceCursors.{get,put} in useEvidenceSourceSync
with azureHubRepository.evidenceSources.getCursor (Option B-1) and
dispatch(EVIDENCE_SOURCE_UPDATE_CURSOR). No direct Dexie usage remains in the file.
Tests: storage.test.ts — added db.processHubs mock for ensureDefaultProcessHubInIndexedDB;
added persistence mock for azureHubRepository.dispatch; added saveProcessHub /
saveEvidenceSource / saveEvidenceSnapshot tests asserting dispatch called with correct
action shapes. useEvidenceSourceSync.test.ts — replaced db.evidenceSourceCursors mock
with azureHubRepository mock; updated markSeen test to assert dispatch call shape.
Tests: 1173 → 1178 ✓ (5 new). Build: clean.
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P6 review fix: tighten cloud-sync test mocks for evidence paths
Add hoisted mocks + vi.mock factory entries for all six evidence-blob
functions (listBlobEvidenceSnapshots, saveBlobEvidenceSnapshot,
updateBlobEvidenceSnapshots, listBlobEvidenceSources,
saveBlobEvidenceSource, updateBlobEvidenceSources). Previously the
saveEvidenceSnapshotToCloud path called undefined blob functions which
were silently swallowed, letting the cloud-sync assertion pass without
the blob calls ever firing. Tighten the existing snapshot online test
to assert exact dispatch shape (provenance: []) + blob function calls.
Add parallel online + cloud-sync test for saveEvidenceSource covering
dispatch shape and blob function calls. Tests: 1178→1179.
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P7: ESLint dexie/db guard + dispatch-only docs
- P7.1: Update packages/stores, apps/pwa, apps/azure CLAUDE.md files to
explicitly state the dispatch-only invariant (domain stores never import
dexie directly; access via HubRepository / pwaHubRepository.dispatch /
azureHubRepository.dispatch). Update "will add" references to past tense
now that P7.2 delivers the rule. Enumerate R12+R13 exceptions clearly in
each file.
- P7.2: Add ESLint no-restricted-imports rule in eslint.config.js blocking
dexie package imports and **/db/schema glob imports outside the documented
allow-list (persistence/, db/, wallLayoutStore.ts, azure services/storage
+ localDb + cloudSync + lib/persistence, test files). Smoke-tested: rule
fires on ProcessHubEvidencePanel.tsx with clear actionable message; passes
cleanly against current codebase (0 errors).
- P7.3: Confirmed pnpm lint is already a step in pr-ready-check.sh (no
script change needed). pr-ready-check passes end-to-end.
Co-Authored-By: ruflo <ruv@ruv.net>
* data-flow F1+F2 P8.3 closeout: doc polish + decision-log + spec delivered
- Minor #1: add bootstrap cache-fill comment above storage.ts:548 for-loop
- Minor #2: R12 self-document comment on wallLayoutStore Dexie import
- Minor #3: fix plan frontmatter category (implementation-plan/audit → implementation)
- decision-log: F1+F2 closeout entry (what/why/deltas) + session backlog row
- spec: 2026-05-06-data-flow-foundation-design.md status active → delivered
Co-Authored-By: ruflo <ruv@ruv.net>
---------
Co-authored-by: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
May 9, 2026
… V1 PRs - Add PR-RPS-1 SHIPPED entry to §1 - Replace items #1, #3, #4 (Charter/Sustainment/Handoff piecewise) with the unified RPS V1 PR-RPS-2 through PR-RPS-10 sequence - F5's HubAction work now subsumed by PR-RPS-9 + PR-RPS-10 (note added) - Resolve §5 "F5 timing" question (moot post-RPS V1) - Add 3 new heuristics to §6 (step-back-for-system-design, drop-methodology- bridges, code-review-must-checkout-PR-branch) - Add RPS V1 spec + plan as related/references Co-Authored-By: ruflo <ruv@ruv.net>
9 tasks
jukka-matti
added a commit
that referenced
this pull request
May 14, 2026
…leanup workstream) (#166) * fix(8f-followup): delete legacy variscout-wall-layout Dexie DB on init Closes 8f followup HIGH #3 — pre-8f users carried an orphan IndexedDB forever after the wallLayoutStore → canvasViewportStore shape change. Mirror PwaHubRepository's legacy-DB cleanup pattern. Tightens the existing test that lied about asserting deletion. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(8f-followup): migrate canvas UI strings to typed message catalogs Closes 8f followup HIGH #5 — 47 hardcoded English strings across SystemLevelView, CanvasLensPicker, MobileLevelPicker, NoFocalStepPrompt, AuthorL3View, LocalMechanismView now route through MessageCatalog. CANVAS_LENS_REGISTRY labels/descriptions translated at render time in CanvasLensPicker via LENS_LABEL_KEY / LENS_DESC_KEY maps; the hooks registry keeps English for non-UI consumers. Non-English locales receive English placeholders pending a translation pass (TODO(i18n) comment). Co-Authored-By: ruflo <ruv@ruv.net> * fix(8f-followup): migrate Canvas empty-state to message catalog Closes the i18n reviewer's flagged follow-up: Canvas/index.tsx:1042 rendered the lens registry's English label and a local CANVAS_LEVEL_LABELS map as user-facing copy, bypassing i18n. - Export LENS_LABEL_KEY from CanvasLensPicker for cross-component reuse - Reuse canvas.mobile.{system,process,step} for level labels - Add canvas.lensPicker.invalidAtLevel parameterized key (32 locales, English placeholder elsewhere per the catalog's translation pass plan) - Drop CANVAS_LEVEL_LABELS + remove now-unused CANVAS_LENS_REGISTRY import Co-Authored-By: ruflo <ruv@ruv.net> * test(8f-followup): cover CanvasLensPicker lens × level predicate Closes 8f followup LOW #20 — load-bearing CanvasLensPicker had no dedicated test. 18 enabled/disabled cells (3 levels × 6 lenses) + click-dispatch + aria-label assertions. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): refresh stale wallLayoutStore references in store comments Closes 8f followup LOW #18 — viewStore.ts:140 + preferencesStore.ts:178 still mentioned wallLayoutStore in doc-strings after the PR1 rename to canvasViewportStore. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): fix plan frontmatter category to allowed enum value * refactor(8f-followup): extract getStepColumnAssignments to @variscout/core/frame Closes 8f followup HIGH #2 — AuthorL3View's private focalStepColumns helper duplicates business logic that should live in core/frame. The helper now lives at packages/core/src/frame/stepColumns.ts with 6 unit tests; AuthorL3View imports it. Per ADR-074 amendment + ADR-081: Canvas embeds owner-surface computation, doesn't re-derive. Co-Authored-By: ruflo <ruv@ruv.net> * fix(8f-followup): tie L1 specLimits to outcome's own measureSpecs entry Closes 8f followup MEDIUM #8 — SystemLevelView trusted a flat specLimits prop without ADR-073-anchored contract. Now accepts measureSpecs keyed by column and derives from measureSpecs[map.ctsColumn] internally; old prop renamed to specLimitsOverride (advisory/debug only, deprecated). Canvas passes { [ctsColumn]: { usl, lsl, target, cpkTarget } } as measureSpecs. Two regression tests assert the leak scenario: wrong-column measureSpecs key produces '--' Cpk, not a silently wrong value. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(8f-followup): replace LocalMechanismView's focalStepColumns duplicate Same ADR-074 amendment violation that PR2 fixed in AuthorL3View. The private helper now delegates to getStepColumnAssignments from @variscout/core/frame (introduced in the prior commit), flattening the structured result into the string[] this view needs. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): resolve lens × level matrix gap via spec amend Closes 8f followup HIGH #4 via AMEND path (not expand). Git blame shows both `performance` and `yamazumi` lenses were introduced with `enabled: false` AND registry descriptions explicitly labeling them as "Future ... lens" — intentional V2 placeholders, not bugs. Spec §10 was over-promised at original ship. - Spec §10 matrix amended: 6 cells marked `(V2 — deferred; lens not enabled in V1)` instead of pretending they ship enabled - V2 expansion path documented inline - investigations.md entry marked RESOLVED 2026-05-13 with rationale Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): replace setViewportLevel throw with warn + no-op (4.4) l3 without focalStepId now emits console.warn and returns the viewport unchanged instead of throwing. fitToContent guards the same path. Updated test asserts warn was called and state did not change. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(8f-followup): co-locate level math constants in core/canvas/viewport (4.7) Move FIT_TO_CONTENT_ZOOM_BY_LEVEL from canvasViewportStore into @variscout/core/canvas/viewport.ts and re-export it through the barrel. Add LOD_SNAP_BOUNDARIES (L2_OVERVIEW_LOW=0.5, L2_DETAIL_HIGH=1.8) for the upcoming snap-to-LOD feature. Single source of truth for level math. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): enforce 6px click-vs-drag deadband via clickDistance(6) (4.3) Adds .clickDistance(6) to the d3-zoom behavior in useCanvasViewportInput. Pointer moves ≤5px are treated as clicks; ≥6px as drags. Matches spec §6.3. Co-Authored-By: ruflo <ruv@ruv.net> * chore(8f-followup): delete dead worldToWallSvg + document CanvasViewport (4.5/4.6) worldToWallSvg was an identity function with no callers outside its own test; deleted function and test. CanvasViewport is used in Canvas/index.tsx — added JSDoc comment explaining its role so the seam is documented. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): snap-to-LOD on wheel-stop via d3-zoom end handler (4.2) Adds a 'end' listener to the zoom behavior. When the user releases the wheel with zoom in [0.3, 0.5) or [1.8, 2.0), the viewport eases back to 0.5 or 1.8 respectively over 150ms. Exports snapTarget() for unit testing. LOD_SNAP_BOUNDARIES lives in @variscout/core/canvas/viewport alongside LOD_THRESHOLDS. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): real LOD cross-fade + d3-transition snap (4.1/4.2 final) LODSwitcher now renders both outgoing and incoming renderers in stacked absolute divs during a 150ms window, then unmounts the outgoing. Uses useState+useEffect+setTimeout — no external animation library needed. useCanvasViewportInput snap-to-LOD uses d3-transition via selection.transition().duration(150).call(zoomBehavior.transform, ...). Adds d3-transition + @types/d3-transition to @variscout/hooks deps. Tests: 4 LODSwitcher tests assert dual-render during transition and single-render after 150ms via fake timers. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): per-Hub canvas viewport blob helpers in blobClient Closes 8f followup HIGH #1 part 1/2 — adds loadBlobCanvasViewport + saveBlobCanvasViewport mirroring the updateBlobEvidenceSnapshots ETag-conditional pattern. Per ADR-081 §2 (Azure = IndexedDB + Blob sync with ETag per ADR-079) and ADR-079. Also adds getLocalViewportUpdatedAt to @variscout/stores so the Azure lifecycle hook can compare timestamps without reading Dexie directly. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): wire Azure canvas viewport lifecycle to Blob sync Closes 8f followup HIGH #1 part 2/2 — useCanvasViewportLifecycle (Azure) now rehydrates from Blob after Dexie cache, debounced-persists to both Dexie and Blob with ETag, and treats precondition-failed as last-write- wins per spec §11 with App Insights telemetry on the conflict path. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): expose 4 remaining response-path CTAs at L3 column granularity Closes 8f followup MEDIUM #9 — LocalMechanismView previously only exposed Quick Action. Spec §5.3.a lists 5 CTAs at column-mechanism granularity (Quick Action / Focused Investigation / IP / Sustainment / Handoff). Threaded the 4 step-level callbacks already on CanvasProps through to LocalMechanismView; per-column button row added with new i18n keys (8 new MessageCatalog keys across 32 locale files). Parent callbacks are step-only; column is visible only within the card row. Co-Authored-By: ruflo <ruv@ruv.net> * feat(8f-followup): mobile L3 without focalStepId navigates to step-list Closes 8f followup MEDIUM #10 — MobileLevelPicker previously called setLevel('l2') before setZoom(2.5) as an explicit l2 redirect comment implied. The final committed state was already l3 (setZoom(2.5) fires inferLevel→l3), but the intent was undocumented. Updated comment to clarify the atomicity: both calls run synchronously before React re-renders, so the final state is l3 with no focalStepId, and canvas renders NoFocalStepPrompt (the step-list surface) per spec §7. Co-Authored-By: ruflo <ruv@ruv.net> * perf(8f-followup): selector-scope canvasViewport subscribe in d3-zoom hook Closes 8f followup MEDIUM #11 — useCanvasViewportInput previously subscribed to the whole canvasViewportStore; every unrelated mutation (setRailOpen, setViewMode, openChartCluster, etc.) fired syncElementToStoreViewport (which has its own diff-check guard, but still did needless work). Now tracks prevViewportRef and short-circuits on reference equality of state.viewports[hubId] — sync is skipped entirely when the hub's viewport slice hasn't changed. Test added: setRailOpen → d3 element __zoom unchanged. Co-Authored-By: ruflo <ruv@ruv.net> * chore(8f-followup): rename canvasViewport STORE_LAYER to annotation-per-hub Closes 8f followup LOW #15 — canvasViewportStore state is keyed by hubId not projectId since the 8f shape change. The annotation-per-project label was technically truthful (per-project umbrella, hub-keyed inside) but invited confusion. Renamed to annotation-per-hub; layerBoundary test + packages/stores/CLAUDE.md table updated. 'annotation-per-project' is now in the reserved/unused set; 'annotation-per-hub' is live. Co-Authored-By: ruflo <ruv@ruv.net> * docs(8f-followup): mark 19 of 20 findings RESOLVED on followup branch --------- Co-authored-by: ruflo <ruv@ruv.net>
jukka-matti
added a commit
that referenced
this pull request
May 14, 2026
… mismatches) The beforeEach import fix in e73fca6 closes the responsesApi.test.ts item from the deferred-tsc-errors entry. Adds item #4 capturing the 9 newly-surfaced SustainmentRecord + ProcessMap fixture-shape mismatches that became visible once responsesApi.test.ts was unblocked. Co-Authored-By: ruflo <ruv@ruv.net>
6 tasks
jukka-matti
added a commit
that referenced
this pull request
May 14, 2026
… Canvas decomposition + tsc hygiene (#168) * fix(pwa): eliminate setState-in-render warning by replacing bare usePanelsStore() with individual field selectors The bare `const store = usePanelsStore()` whole-store subscription in `useAppPanels` violated the CLAUDE.md/ADR-078 "Never bare useStore()" rule. In React 19 Strict Mode + Zustand 5 (useSyncExternalStore), the whole-store snapshot causes tearing detection to fire on every panelsStore update (panel-state transitions co-incident with LOD switches, frame-tab activation, Lock canvas toggle), producing 8+ "Cannot update a component (AppMain) while rendering" warnings per interaction. Fix: rewrite useAppPanels.ts to use 24 individual usePanelsStore(s => s.field) selectors — one per state field and action. useEffect dependency arrays cleaned accordingly (no more `store` object in deps). App.tsx return interface unchanged. Regression test added in apps/pwa/src/__tests__/App.test.tsx: mounts App, exercises showFrame() panel transition, asserts zero setState-in-render warnings. All 40 PWA test files green; pwa build green. Co-Authored-By: ruflo <ruv@ruv.net> * docs(investigations): add commit hash + correct rule attribution Spec-review followup: add commit hash 6c5bc1a to the setState-in-render resolution paragraph, and correct rule attribution from "CLAUDE.md / ADR-078" to "packages/stores/CLAUDE.md:18 (cites ADR-041)" — ADR-078 covers the 6-stores-across-3-layers model, not selector discipline. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(pwa): extract openDataTableAtRow compound action + drop dead _vi import Code-review followup: per feedback_fix_absorbed_violations_at_seam, lift the two bare usePanelsStore.setState() calls in useAppPanels.openDataTableAtRow into a single store-action openDataTableAtRow(index, isDesktop). Drops the last bare-setState seam violation in the hook. Also removes a dead `vi as _vi` import from App.test.tsx. Co-Authored-By: ruflo <ruv@ruv.net> * feat(cleanup): brand ProcessHubId opaque type + WallCanvas sentinel removal Define `ProcessHubId = string & { readonly __brand: 'ProcessHubId' }` in `packages/core/src/processHub.ts` (the only definition point). Add `asProcessHubId()` (throws on empty) and `isProcessHubId()` predicate; update `DEFAULT_PROCESS_HUB_ID` and `normalizeProcessHubId` to return `ProcessHubId`. Re-export from stores for back-compat consumption. Replace `hubId ?? '__wall-canvas-unbound__'` sentinel in WallCanvas with `hubId ?? null`; update `useCanvasViewportInput` to accept `ProcessHubId | null` with a null short-circuit (no store writes when hub is absent). 25-file sweep across packages/hooks/ui/apps: all `string`-typed hub slots at store boundaries cast/narrowed to `ProcessHubId`; test fixtures use `const h = (id: string) => id as ProcessHubId` helper. Both app lifecycle hooks (PWA + Azure) use `normalizeProcessHubId(hubId)` → `boundHubId` so the raw `string | null | undefined` param never reaches store calls. Closes LOW #19 from the 8f retrospective (docs/investigations.md updated). Co-Authored-By: ruflo <ruv@ruv.net> * fix(cleanup): move h() cast helper after imports in mapwall test Prettier placed the const between two import statements during the pre-commit format pass. Move it after all imports to keep ES module import grouping clean. Co-Authored-By: ruflo <ruv@ruv.net> * chore(stores): sweep ProcessHubId imports to @variscout/core Removes the back-compat re-export shim at canvasViewportStore.ts:16 per feedback_no_backcompat_clean_architecture; 7 consumers now import the branded type directly from @variscout/core/processHub. Barrel index.ts updated to re-export ProcessHubId from @variscout/core/processHub directly (not via the store file) so existing code that happens to pull from the barrel continues to compile. Co-Authored-By: ruflo <ruv@ruv.net> * chore(cleanup): finish ProcessHubId import sweep to @variscout/core Sweep the remaining ~15 consumers missed by the earlier pass; barrel shim removal exposed the gaps via TS error. All ProcessHubId imports now go directly to @variscout/core/processHub. Co-Authored-By: ruflo <ruv@ruv.net> * test(core, hooks): cover asProcessHubId/isProcessHubId + useCanvasViewportInput null short-circuit Two Important test gaps from PR2 code review: factory throw-on-empty (asProcessHubId, isProcessHubId) and the new hubId:null no-op path in useCanvasViewportInput. Both verify load-bearing contracts that were shipped without exercise. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(canvas): extract useCanvasHypothesisDrawing hook Moves all drawing-mode pointer/keyboard event handlers and the reset effect out of Canvas/index.tsx into a dedicated hook. The hook returns stable handler refs plus endpointLabel and parseEndpointElement helpers — 12 vitest tests cover all branches. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(canvas): extract useCanvasHypothesisArrows hook Moves arrowSegments state, cardElements ref, and both useLayoutEffects (ResizeObserver setup + DOM measurement) out of Canvas/index.tsx into a dedicated hook. Measurement is stable equality-guarded to avoid needless re-renders. 8 vitest tests cover empty, ResizeObserver attach/detach, and remeasure-on-viewport-change paths. Co-Authored-By: ruflo <ruv@ruv.net> * refactor(canvas): extract CanvasLevelRouter sub-component Moves the lens-validity gate and all l1/l2/l3 content composition out of Canvas/index.tsx into an internal sub-component. Canvas drops from 1135 to 848 lines. CanvasAuthoringMode and CanvasL3Archetype are defined in CanvasLevelRouter and re-exported from Canvas to avoid a circular import. 10 vitest tests cover the routing, lens-invalid empty state, archetype switching, and mode-toggle visibility. Barrel updates and CanvasWorkspace.test.tsx mock additions for the two new hooks land in this commit. Co-Authored-By: ruflo <ruv@ruv.net> * chore(types): add vite-env.d.ts + trivial tsc fixes in core/hooks (pre-existing) Category A — add minimal ImportMeta.env / ImportMeta.glob augmentation .d.ts files to packages/core/src/ and packages/hooks/src/ so that import.meta.env.DEV and import.meta.glob(...) resolve without requiring vite as a direct dep. Overloaded signatures distinguish eager (→ T) from lazy (→ () => Promise<T>) so calls into registerLocaleLoaders (which expects LocaleLoaderMap) type-check. Category C — two trivial fixes: - packages/hooks/src/__tests__/setup.ts: cast (window as unknown as Record...) to satisfy TS2352 (neither type sufficiently overlaps). - packages/hooks/src/__tests__/findingSourceLensCapture.test.ts: add _filters param to the vi.fn mock that takes one argument; was inferred as 0-arg. - packages/hooks/src/__tests__/setup.ts: /// <reference types="vitest/globals" /> so beforeEach is recognised by standalone tsc (globals:true is vitest-only). All pre-existing; unrelated to PR1/PR2/PR3 logic. Co-Authored-By: ruflo <ruv@ruv.net> * chore(test): cast DataRow fixtures + log deferred tsc errors (pre-existing) Category B — cast Record<string,unknown>[] test fixtures to DataRow[] at the constant definition site so useParetoChartData and useYamazumiChartData calls type-check without changing test behaviour: - packages/hooks/src/__tests__/timeLensWiring.test.ts: add DataRow import + cast PARETO_100 at buildParetoRows(100) assignment. - packages/hooks/src/__tests__/useYamazumiChartData.test.ts: add DataRow import + change EMPTY_DATA type annotation from Record<string,unknown>[] to DataRow[]. docs/investigations.md — new entry "Pre-existing tsc errors deferred from PR #168" listing the 3 remaining items that are out of scope for a trivial-cast pass: d3 type deps (useCanvasViewportInput.ts:2-4), tuple-mock fetch typing (useHubCommentStream.test.ts:274-277), and beforeEach globals in responsesApi.test.ts:862. All pre-existing; unrelated to PR1/PR2/PR3 logic. Co-Authored-By: ruflo <ruv@ruv.net> * chore(test): import beforeEach in responsesApi.test.ts One-line addendum to the pre-existing-tsc-error cleanup commit: the responsesApi.test.ts file uses beforeEach at line 862 but the vitest import on line 1 omits it. Same category as the other ImportMeta / test-globals fixes in afd8c8b. Co-Authored-By: ruflo <ruv@ruv.net> * docs(investigations): close item #3 + log item #4 (core fixture-shape mismatches) The beforeEach import fix in e73fca6 closes the responsesApi.test.ts item from the deferred-tsc-errors entry. Adds item #4 capturing the 9 newly-surfaced SustainmentRecord + ProcessMap fixture-shape mismatches that became visible once responsesApi.test.ts was unblocked. Co-Authored-By: ruflo <ruv@ruv.net> --------- Co-authored-by: ruflo <ruv@ruv.net>
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.
Bumps actions/checkout from 4.2.2 to 6.0.2.
Release notes
Sourced from actions/checkout's releases.
... (truncated)
Changelog
Sourced from actions/checkout's changelog.
... (truncated)
Commits
de0fac2Fix tag handling: preserve annotations and explicit fetch-tags (#2356)064fe7fAdd orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is set (...8e8c483Clarify v6 README (#2328)033fa0dAdd worktree support for persist-credentials includeIf (#2327)c2d88d3Update all references from v5 and v4 to v6 (#2314)1af3b93update readme/changelog for v6 (#2311)71cf226v6-beta (#2298)069c695Persist creds to a separate file (#2286)ff7abcdUpdate README to include Node.js 24 support details and requirements (#2248)08c6903Prepare v5.0.0 release (#2238)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)