chore: bump parquet/squirreling deps and polish install wizard output#78
chore: bump parquet/squirreling deps and polish install wizard output#78philcunliffe wants to merge 1 commit into
Conversation
- Update hyparquet-writer 0.15.4 -> 0.15.6 and squirreling 0.12.22 -> 0.12.23 (dependencies, optionalDependencies, and overrides). - Redraw TUI prompts in place via a clearOnResolve option so successive wizard prompts no longer stack below one another; measure physical rows using terminal width so wrapped frames clear correctly. - Separate the skills-install block from surrounding wizard output with leading/trailing blank lines so the npx install finale is readable. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Dual-agent review —
|
| Source | Finding (severity, evidence) | Intersects |
|---|---|---|
| Codex | major — export default path-dependent (walkthrough.js:711 vs core_commands.js:2333) |
Targets + direct callers |
| Codex | minor — defaulted-export telemetry ambiguity (walkthrough.js:711,730) |
Targets |
| Codex | minor — clearOnResolve cleanup lacks direct test (runtime.js:82) |
Targets (TUI hot path) |
risk_class=low: no concurrency/security/data-migration surface; the broad TUI-runtime change is verified + regression-tested; dep bumps are patch-level.
Codex review (full)
Fix Validations
Wrapped TUI frames duplicated while navigating long options
- Status: correct
- Evidence:
src/core/cli/tui/runtime.js:99,runtime.js:218,test/core/cli/tui/runtime.test.js:324 - Assessment: The redraw path now uses physical-row counting (with wrapping) instead of newline counting, and the regression test exercises a narrow terminal wrap case.
Prompt frames stacked between wizard questions
- Status: correct
- Evidence:
runtime.js:82,walkthrough.js:429,walkthrough.js:456,walkthrough.js:522 - Assessment:
clearOnResolveis threaded through the runtime and enabled on walkthrough prompts, so settled prompt frames are explicitly cleared before the next step.
Wizard looked stuck during long backfill
- Status: correct
- Evidence:
walkthrough.js:1261,walkthrough.js:1263 - Assessment: A pre-run status line is now emitted before each provider import starts, making the transition out of the consent prompt visibly progress.
Findings
Contract & Interface Fidelity — major (high)
- Evidence:
walkthrough.js:711,core_commands.js:2333 - Why it matters: Default export behavior is now path-dependent: interactive walkthrough defaults to
local-parquet, while non-interactivehyp init --source ...still defaults tokeep-local, creating divergent configs for equivalent source selections. - Suggested fix: Unify defaulting logic in one place (e.g.
runPickerWalkthroughinput normalization orrunPickerInit) so omitted--exportresolves consistently across interactive and flag-driven init flows.
Debuggability & Operability — minor (medium)
- Evidence:
walkthrough.js:711,walkthrough.js:730 - Why it matters: Telemetry still logs an
exportspick event even when no export prompt is shown, so analytics can no longer distinguish "user chose local-parquet" from "system defaulted local-parquet." - Suggested fix: Add explicit origin metadata (e.g.
pick_origin=default|user) or emit a separate event for defaulted export selection.
Test Evidence Quality — minor (medium)
- Evidence:
runtime.js:82,test/core/cli/tui/runtime.test.js:294,runtime.test.js:324 - Why it matters: The new
clearOnResolvecleanup branch is behaviorally important but the added tests focus on row counting/redraw, not on resolve/cancel frame clearing itself. - Suggested fix: Add runtime tests that set
clearOnResolve: trueand assert cleanup emits cursor-up + clear on both resolve and cancel paths.
No Finding
Behavioral Correctness · Change Impact/Blast Radius · Concurrency, Ordering & State Safety · Error Handling & Resilience · Security Surface · Resource Lifecycle & Cleanup · Release Safety · Architectural Consistency
Claude review (full)
Code review
No issues found. Checked for bugs and CLAUDE.md compliance.
(5-Sonnet parallel scan + Haiku confidence scoring. Four sub-threshold candidates were filtered at the 0.80 gate: interactive export-picker removal — 50, deliberate code-documented decision; clearOnResolve cancel-erase UX — 50, ordering verified correct; missing clearOnResolve unit test — 25, coverage gap not required by CLAUDE.md; cancelledResult() returning keep-local — 25, dead value on the cancel path. The substance of the first is counted via Codex's major.)
Reports: .gc/pr-pipeline/reviews/pr-78/{codex,claude,risk,dual-review}.md · Ran manually (pr-pipeline rig suspended), faithful to mol-pr-dual-review.
🤖 Generated with Claude Code
Summary
Bundles dependency bumps with install-wizard output polish.
Dependencies
hyparquet-writer0.15.4 → 0.15.6 (optionalDependencies+overrides)squirreling0.12.22 → 0.12.23 (dependencies+overrides)npm installresolves cleanly; icebird's transitive copies dedupe to the same versions.Install wizard readability
clearOnResolveTUI option erases a prompt's frame when it settles so the next prompt redraws in the same spot instead of stacking below it. Row counting now measures physical rows using the terminal width, so wrapped frames clear correctly.installed skill … →lines in the npx install finale now have a leading and trailing blank line, separating them from the preceding client-attach output and the following backfill prompt. Guarded so no stray blank lines appear when nothing installs.Before:
After:
Testing
npm test— 675 passnpm run lint— cleannpm run typecheck— clean🤖 Generated with Claude Code