Repository navigation
Conversation
Created .claude/WORKFLOW-PROTOCOL.md: - Planning phase on dev branch - Commit planning docs before worktree creation - Create worktree from dev - Ask user to start NEW session for implementation Updated CLAUDE.md: - Added critical workflow protocol section - Reference to detailed protocol document This ensures clean separation: - Planning session (dev) = design, specs, approval - Implementation session (worktree) = focused coding Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Created comprehensive spec for universal teaching workflow: - STAT 545 as first implementation - Teaching-aware work command - Per-course .flow/teach-config.yml - 3-tier automation (scripts + flow-cli + GitHub Actions) - Integration with scholar and nexus - teach-init command for course scaffolding From brainstorm session with extensive user requirements gathering. Approved plan ready for implementation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Session accomplishments: - Branch cleanup (9 local, 4 remote branches) - Established dev branch workflow (feature → dev → main) - Created workflow protocol (.claude/WORKFLOW-*.md) - Created teaching workflow spec (911 lines, approved) - Created teaching-workflow worktree (ready for impl) Documentation updates: - BRANCH-WORKFLOW.md (323 lines) - WORKFLOW-PROTOCOL.md (197 lines) - SPEC-teaching-workflow.md (911 lines) - Updated CLAUDE.md, PR-WORKFLOW-GUIDE.md PRs merged: #207 (v5.3.0 roadmap), #208 (dev workflow) Session: 2.5 hours Next: NEW session in worktree per protocol Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added spec files: - SPEC-Flow-CLI-Documentation-Enhancement - Complete-Implementation.md (1270 lines, ADHD-friendly docs redesign) - SPEC-STAT-545-COMPREHENSIVE-PLAN.md (1418 lines, course migration plan) These specs were created alongside the teaching workflow spec but represent separate features for future implementation. Status: Ready for review and planning Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
New files: - docs/getting-started/im-stuck.md - Troubleshooting guide with quick fixes - docs/getting-started/choose-your-path.md - Role-based onboarding paths - docs/quick-reference-card.md - Printable command reference - docs/stylesheets/extra.css - ADHD-friendly visual enhancements Modified files: - docs/index.md - Added TL;DR callout and path selection grid - mkdocs.yml - Updated navigation with new pages Features: - Progressive disclosure design (quick wins up front) - Visual hierarchy with colored callout boxes - Print-friendly reference card - Grid-based path selection on homepage - Dark mode support for all new styles - Mobile responsive design Impact: Improves discoverability, reduces cognitive load, provides clear entry points for different learning styles. Based on complete implementation spec (1,270 lines) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Resolved merge conflict in .STATUS by keeping both entries: - Latest: Documentation Enhancement (Plan B) - shipped to production - Earlier: Teaching Workflow Planning - spec and protocol complete Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
New spec: SPEC-project-cache-auto-discovery.md - Comprehensive 3-phase implementation plan - Phase 1 (v5.6.0): Caching layer for 40x performance - Phase 2 (v5.7.0): Auto-discovery for zero config - Phase 3 (v5.8.0): Unified type detection Code review completed: - lib/project-detector.zsh (131 lines) - commands/pick.zsh (974 lines) - Rating: 8.5/10 - Identified: performance bottleneck, extensibility issues Updated .STATUS: - Added Sprint 6 roadmap (v5.6.0-v5.8.0, ~14 hours) - Updated Next Steps with new option B - Updated Just Completed section - Progress: 18% → 19% Impact: High performance gain + extensibility improvement Risk: Low (opt-in rollout, extensive testing) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Added 'Bash(exec zsh)' to approved commands list - Allows shell reload during workflow operations Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major updates to workflow documentation: BRANCH-WORKFLOW.md: - Added 'Mandatory Workflow Protocol' section - Detailed 5-step workflow (planning → worktree → implementation) - Tool usage constraints for Claude Code - Abort conditions for protected branch operations - Worktree isolation requirements - Workflow validation checklist CLAUDE.md: - Expanded 'Git Workflow & Standards' section - Explicit worktree creation protocol - Critical rule: NEW session required after worktree creation - Conventional commit standards - Tool usage constraints - ABORT conditions for Claude Code Key workflow rules enforced: 1. Planning on dev branch only 2. No feature code on dev branch 3. Worktree isolation for all features 4. NEW Claude session required after worktree creation 5. Conventional commits mandatory 6. PR workflow for all merges (feature → dev → main) Impact: Prevents common workflow violations - No accidental commits to main/dev - No working in wrong directory - No mixing planning and implementation contexts - Enforces branch protection rules Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
New files: - test-pick-command.zsh: 39 tests for pick functionality (556 lines) * Function existence (6 tests) * Frecency scoring (4 tests) * Project detection & listing (9 tests) * Session status indicators (4 tests) * Worktree detection (4 tests) * Pick invocation & edge cases (9 tests) * Aliases (3 tests) Enhanced files: - test-cc-dispatcher.zsh: Expanded to 37 tests (722 lines, +247) * Added unified grammar tests (4 tests) * Added shortcut expansion tests (4 tests) * Added explicit HERE tests (2 tests) * Added function existence tests (2 tests) Coverage highlights: - Pick: Frecency decay algorithm, session indicators, worktree integration - CC: Mode-first & target-first patterns, shortcuts (y/p/o/h), validation Test results: 76/76 passing (100%) Fixes applied: - Frecency scoring expectations (timestamp=0 returns 0) - ANSI code stripping for help text matching - Worktree test isolation (re-source plugin) - Error message validation - PATH restoration in edge cases Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
New documentation: - docs/guides/TESTING.md (comprehensive testing guide) * Test philosophy and architecture * Test file structure and patterns * Writing tests (6 patterns with examples) * Mock environment setup (projects, worktrees) * ANSI code handling for reliable assertions * Debugging test failures (4 strategies) * Best practices and TDD workflow * Coverage goals and CI integration Updates: - CLAUDE.md: Enhanced Testing section * Reference to new testing guide * Updated test suite overview (76+ tests) * Test coverage table * Quick verification commands - mkdocs.yml: Updated Testing navigation * Points to guides/TESTING.md * Added 🧪 emoji for visibility Coverage documented: - Pick command: 39 tests (100%) - CC dispatcher: 37 tests (100%) - DOT dispatcher: 112+ tests (100%) - Total: 76+ tests across 8 suites Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updates: - Added Core Test Suites section (v5.0.0+) * Table of 6 test files with coverage * 76+ tests total (100% passing) * Run all command: ./tests/run-all.sh * Link to Testing Guide - Reordered sections * Core Test Suites (#1) - Primary test infrastructure * Interactive Dog Feeding (#2) - Manual validation * Automated Test Suite (#3) - Legacy * ZSH Configuration Tests (#4) - Quick Commands section updated * Added run-all.sh * Added individual test suite commands * Shows coverage count (76+ tests) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat(cache): implement project list caching with 5-minute TTL Implement Phase 1 of the project cache enhancement (v5.3.0) to achieve sub-10ms performance for the pick command through intelligent caching. Core Module (lib/project-cache.zsh - 170 lines): - Cache generation with Unix timestamp header - TTL-based validity checking (5-minute default, configurable) - Auto-regeneration on missing/stale/corrupt cache - Graceful fallback to uncached mode on errors - Cache statistics and reporting - User commands: flow cache refresh/clear/status Integration: - Modified commands/pick.zsh to use cached list access - Added flow cache dispatcher to commands/flow.zsh - Integrated cache module into flow.plugin.zsh - XDG-compliant cache location: ~/.cache/flow-cli/projects.cache Unit Tests (42 tests across 3 suites): - Cache Access & Auto-Regeneration (16 tests) - Cache Generation (10 tests) - Cache Validation (16 tests) Integration Tests (17 tests): - End-to-end cache lifecycle - User command validation - Pick command integration Interactive Tests (15 tests): - ADHD-friendly dog-feeding test - Enhanced with expected vs actual output comparison - Gamification (streaks, bonuses, progress bars) Total: 59 automated tests + 15 interactive = 74 tests All tests passing with 100% function coverage Guides: - docs/guides/PROJECT-CACHE.md - Comprehensive implementation guide - docs/reference/CACHE-QUICK-REFERENCE.md - Quick lookup card Testing: - tests/TEST-PLAN.md - Complete test strategy - tests/TEST-RESULTS-ANALYSIS.md - Comprehensive results analysis - tests/INTERACTIVE-CACHE-TEST-README.md - Interactive test guide - tests/INTERACTIVE-TEST-IMPROVEMENTS.md - Enhancement details Cache Management: - Automatic cache generation on first use - Auto-regeneration when cache is stale (> 5 min) - Auto-regeneration when cache is corrupt - Manual control via flow cache commands Configuration: - PROJ_CACHE_TTL - Custom TTL in seconds (default: 300) - FLOW_CACHE_ENABLED - Enable/disable cache (default: 1) User Commands: - flow cache refresh - Force cache regeneration - flow cache clear - Delete cache file - flow cache status - Display cache statistics Error Handling: - Graceful fallback on all 5 failure modes - No user-visible errors - Transparent operation Expected improvement: 40x speedup - Before: ~200ms (filesystem scan) - After: <10ms (cache read) - Cache overhead: <1ms (TTL validation) Implementation: - lib/project-cache.zsh (new, 170 lines) - commands/pick.zsh (modified, cache integration) - commands/flow.zsh (modified, cache commands) - flow.plugin.zsh (modified, load cache module) Tests: - tests/unit/test-cache-*.zsh (new, 3 files, 42 tests) - tests/test-project-cache.zsh (modified, 17 integration tests) - tests/interactive-cache-dogfeeding.zsh (new, 15 interactive tests) - tests/test-utils.zsh (new, 20+ assertions) - tests/run-unit-tests.zsh (new, test orchestrator) Documentation: - docs/guides/PROJECT-CACHE.md (new) - docs/reference/CACHE-QUICK-REFERENCE.md (new) - tests/TEST-PLAN.md (new) - tests/TEST-RESULTS-ANALYSIS.md (new) - tests/INTERACTIVE-*.md (new, 2 files) - README.md (updated, performance section) - CLAUDE.md (updated, v5.3.0 status) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix(cache): store complete list, filter at read time Fix category filtering bug where cache stored filtered data but didn't re-apply filters on retrieval, causing wrong results when different filters were requested. ## Root Cause Cache generated with filter (e.g. 'dev') but returned that filtered data for ALL subsequent queries, ignoring the requested filter parameter. Example of bug: - pick dev → Cache stores: [dev projects only] - pick r → Cache returns: [dev projects] ❌ Wrong! ## Solution Architecture change: Cache stores COMPLETE unfiltered project list, filtering happens at read time using grep. Benefits: - Single cache serves all filter combinations - No cache invalidation on filter changes - Filtering is cheap (~1ms) vs scanning (~200ms) - Eliminates entire class of filter-related bugs ## Implementation lib/project-cache.zsh: - _proj_cache_generate(): Remove "$@" - always cache everything - _proj_list_all_cached(): Apply category/recent filters after read tests/unit/test-cache-generation.zsh: - Update tests to expect unfiltered cache contents ## Performance Impact Before fix (broken): - pick dev (first): 200ms (cache miss) - pick r (second): <1ms (wrong data from cache) ❌ After fix (correct): - pick dev (first): 200ms (cache miss, caches ALL) - pick r (second): <2ms (cache hit + filter) ✅ Performance maintained: 100x speedup (2ms vs 200ms) ## Test Results Before fix: 36/39 pick tests passing (92%) After fix: 39/39 pick tests passing (100%) All test suites: - ✅ 39/39 pick command tests - ✅ 42/42 cache unit tests - ✅ 17/17 cache integration tests - ✅ 98/98 total tests (100%) Fixes #3 category filter test failures Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
- index.md: Add cache note to Design Philosophy (40x faster) - quick-reference-card.md: Note pick is cached for speed - tutorials/02-multiple-projects.md: Add performance tip box Subtle mentions of v5.3.0 cache feature where users first encounter the pick command. Comprehensive guide already exists at docs/guides/PROJECT-CACHE.md (439 lines). Related: PR #214 - Project list caching with 5-minute TTL Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Data-Wise
added a commit
that referenced
this pull request
Sep 5, 2026
create-github-app-token was called with no permission-* inputs, so the minted token inherited EVERY permission the data-wise-homebrew-automation installation holds on homebrew-tap, for the duration of the job — a job that runs sed, git and gh against a live credential. The step needs exactly two things: commit and push the formula edit (contents: write), and open then auto-merge the bump PR (pull-requests: write) — the latter added by #499. Both are known-granted, not guessed: the App has authored 7 PRs on the tap (#215, #214, #213, #212, #210, #209, #207) and merged its own (#212, #210 show mergedBy = app/data-wise-homebrew-automation), which requires pull-requests: write; the formula pushes require contents: write. Least privilege on an existing credential — no behaviour change intended. create-github-app-token fails at mint time if a requested permission is not granted, so a mismatch surfaces immediately rather than silently. Verified: actionlint reports the same 2 pre-existing SC2086 infos before and after (different step, not introduced here); YAML parses and both keys land in the app-token step's with: block. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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
Merge v5.3.0 development work into main, including project cache feature and comprehensive testing infrastructure.
Key Features
🚀 Project Cache (40x Performance Improvement)
pickcommand: ~200ms → <10ms (40x faster)lib/project-cache.zsh(210 lines)🧪 Test Infrastructure
📚 Documentation Updates
Files Changed
Total: 24 files, 4,247 insertions, 4 deletions
Core Implementation:
lib/project-cache.zsh- Cache enginecommands/pick.zsh- Cache integrationflow.plugin.zsh- Cache module loadingTesting:
Documentation:
Testing
Deployment Checklist
Breaking Changes
None - fully backward compatible.
Related PRs
🤖 Generated with Claude Code