docs(01-01): complete scaffolding + process detection plan
- SUMMARY.md with execution results - STATE.md advanced to plan 2/2 - ROADMAP.md and REQUIREMENTS.md updated (DISC-01, DISC-02 complete) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,8 +9,8 @@ Requirements for initial release. Each maps to roadmap phases.
|
|||||||
|
|
||||||
### Session Discovery
|
### Session Discovery
|
||||||
|
|
||||||
- [ ] **DISC-01**: vmux détecte automatiquement les processus Claude Code actifs sur le poste
|
- [x] **DISC-01**: vmux détecte automatiquement les processus Claude Code actifs sur le poste
|
||||||
- [ ] **DISC-02**: vmux identifie le cwd et le worktree git de chaque session
|
- [x] **DISC-02**: vmux identifie le cwd et le worktree git de chaque session
|
||||||
- [ ] **DISC-03**: vmux affiche le nom de la branche git de chaque session
|
- [ ] **DISC-03**: vmux affiche le nom de la branche git de chaque session
|
||||||
- [ ] **DISC-04**: vmux permet d'associer un label humain à une session (ex: "review MR !456")
|
- [ ] **DISC-04**: vmux permet d'associer un label humain à une session (ex: "review MR !456")
|
||||||
|
|
||||||
@@ -66,8 +66,8 @@ Which phases cover which requirements. Updated during roadmap creation.
|
|||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| DISC-01 | Phase 1 | Pending |
|
| DISC-01 | Phase 1 | Complete |
|
||||||
| DISC-02 | Phase 1 | Pending |
|
| DISC-02 | Phase 1 | Complete |
|
||||||
| DISC-03 | Phase 1 | Pending |
|
| DISC-03 | Phase 1 | Pending |
|
||||||
| DISC-04 | Phase 2 | Pending |
|
| DISC-04 | Phase 2 | Pending |
|
||||||
| STATE-01 | Phase 1 | Pending |
|
| STATE-01 | Phase 1 | Pending |
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ Decimal phases appear between their surrounding integers in numeric order.
|
|||||||
**Plans**: 2 plans
|
**Plans**: 2 plans
|
||||||
|
|
||||||
Plans:
|
Plans:
|
||||||
- [ ] 01-01-PLAN.md — Scaffolding projet Go + detection des processus Claude via /proc
|
- [x] 01-01-PLAN.md — Scaffolding projet Go + detection des processus Claude via /proc
|
||||||
- [ ] 01-02-PLAN.md — Parsing JSONL, heuristique d'etat et CLI vmux list
|
- [ ] 01-02-PLAN.md — Parsing JSONL, heuristique d'etat et CLI vmux list
|
||||||
|
|
||||||
### Phase 2: Daemon et i3 Bridge
|
### Phase 2: Daemon et i3 Bridge
|
||||||
|
|||||||
@@ -2,16 +2,14 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v1.0
|
milestone: v1.0
|
||||||
milestone_name: milestone
|
milestone_name: milestone
|
||||||
status: planning
|
status: Ready to execute
|
||||||
stopped_at: Phase 1 context gathered
|
stopped_at: Completed 01-01-PLAN.md
|
||||||
last_updated: "2026-03-23T11:53:05.837Z"
|
last_updated: "2026-03-23T12:26:26.157Z"
|
||||||
last_activity: 2026-03-23 — Roadmap created
|
|
||||||
progress:
|
progress:
|
||||||
total_phases: 4
|
total_phases: 4
|
||||||
completed_phases: 0
|
completed_phases: 0
|
||||||
total_plans: 0
|
total_plans: 2
|
||||||
completed_plans: 0
|
completed_plans: 1
|
||||||
percent: 0
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@@ -21,16 +19,12 @@ progress:
|
|||||||
See: .planning/PROJECT.md (updated 2026-03-23)
|
See: .planning/PROJECT.md (updated 2026-03-23)
|
||||||
|
|
||||||
**Core value:** Savoir instantanement quelle session Claude Code a besoin de moi, sans scanner manuellement mes workspaces.
|
**Core value:** Savoir instantanement quelle session Claude Code a besoin de moi, sans scanner manuellement mes workspaces.
|
||||||
**Current focus:** Phase 1 - Session Discovery
|
**Current focus:** Phase 01 — session-discovery
|
||||||
|
|
||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: 1 of 4 (Session Discovery)
|
Phase: 01 (session-discovery) — EXECUTING
|
||||||
Plan: 0 of 2 in current phase
|
Plan: 2 of 2
|
||||||
Status: Ready to plan
|
|
||||||
Last activity: 2026-03-23 — Roadmap created
|
|
||||||
|
|
||||||
Progress: [░░░░░░░░░░] 0%
|
|
||||||
|
|
||||||
## Performance Metrics
|
## Performance Metrics
|
||||||
|
|
||||||
@@ -52,6 +46,7 @@ Progress: [░░░░░░░░░░] 0%
|
|||||||
- Trend: -
|
- Trend: -
|
||||||
|
|
||||||
*Updated after each plan completion*
|
*Updated after each plan completion*
|
||||||
|
| Phase 01 P01 | 2min | 2 tasks | 5 files |
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
@@ -62,6 +57,7 @@ Recent decisions affecting current work:
|
|||||||
|
|
||||||
- Roadmap: CLI one-shot en Phase 1 (pas de daemon), daemon en Phase 2, hooks en Phase 3
|
- Roadmap: CLI one-shot en Phase 1 (pas de daemon), daemon en Phase 2, hooks en Phase 3
|
||||||
- Roadmap: 4 phases derives des 4 categories de requirements
|
- Roadmap: 4 phases derives des 4 categories de requirements
|
||||||
|
- [Phase 01]: procDir injectable pour testabilite (pas de /proc en dur)
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -73,6 +69,6 @@ None yet.
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-03-23T11:53:05.835Z
|
Last session: 2026-03-23T12:26:26.155Z
|
||||||
Stopped at: Phase 1 context gathered
|
Stopped at: Completed 01-01-PLAN.md
|
||||||
Resume file: .planning/phases/01-session-discovery/01-CONTEXT.md
|
Resume file: None
|
||||||
|
|||||||
91
.planning/phases/01-session-discovery/01-01-SUMMARY.md
Normal file
91
.planning/phases/01-session-discovery/01-01-SUMMARY.md
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
phase: 01-session-discovery
|
||||||
|
plan: 01
|
||||||
|
subsystem: process-detection
|
||||||
|
tags: [go, proc, linux, cli]
|
||||||
|
|
||||||
|
requires: []
|
||||||
|
provides:
|
||||||
|
- "Go module scaffold (shell.nix, go.mod)"
|
||||||
|
- "Shared types: Process, Session, SessionState"
|
||||||
|
- "FindClaudeProcesses() scanning /proc for Claude PIDs"
|
||||||
|
- "EncodePath() converting absolute paths to ~/.claude/projects/ folder names"
|
||||||
|
affects: [01-02, 02-session-state]
|
||||||
|
|
||||||
|
tech-stack:
|
||||||
|
added: [go-1.25, go-stdlib-os]
|
||||||
|
patterns: [injectable-procdir-for-testing, fake-proc-fixtures]
|
||||||
|
|
||||||
|
key-files:
|
||||||
|
created: [shell.nix, go.mod, types.go, proc.go, proc_test.go]
|
||||||
|
modified: []
|
||||||
|
|
||||||
|
key-decisions:
|
||||||
|
- "filepath.Base matching for Claude binary detection (handles full paths)"
|
||||||
|
- "procDir parameter injection for testability (no hardcoded /proc)"
|
||||||
|
|
||||||
|
patterns-established:
|
||||||
|
- "Fake /proc fixtures: createFakeProc() builds temp dirs with cmdline files and cwd symlinks"
|
||||||
|
- "Silent error skipping: permission denied and vanished processes are skipped, not fatal"
|
||||||
|
|
||||||
|
requirements-completed: [DISC-01, DISC-02]
|
||||||
|
|
||||||
|
duration: 2min
|
||||||
|
completed: 2026-03-23
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 01 Plan 01: Scaffolding + Process Detection Summary
|
||||||
|
|
||||||
|
**Go module with FindClaudeProcesses() scanning /proc for active Claude Code PIDs and EncodePath() for session folder mapping**
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
- **Duration:** 2 min
|
||||||
|
- **Started:** 2026-03-23T12:23:44Z
|
||||||
|
- **Completed:** 2026-03-23T12:25:44Z
|
||||||
|
- **Tasks:** 2
|
||||||
|
- **Files created:** 5
|
||||||
|
|
||||||
|
## Accomplishments
|
||||||
|
- Go project scaffolded with NixOS shell.nix, go.mod, and shared types (Process, Session, SessionState)
|
||||||
|
- FindClaudeProcesses() scans configurable /proc directory, filters by "claude" binary name, reads cwd via Readlink
|
||||||
|
- EncodePath() converts paths to ~/.claude/projects/ folder format (replace / and . with -)
|
||||||
|
- 5 tests covering normal detection, permission denied, empty proc, and path encoding edge cases
|
||||||
|
|
||||||
|
## Task Commits
|
||||||
|
|
||||||
|
Each task was committed atomically:
|
||||||
|
|
||||||
|
1. **Task 1: Scaffolding projet + types partages** - `12e1ba7` (feat)
|
||||||
|
2. **Task 2 RED: Failing tests for proc scanning** - `81ee7dc` (test)
|
||||||
|
3. **Task 2 GREEN: Implement FindClaudeProcesses and EncodePath** - `166e441` (feat)
|
||||||
|
|
||||||
|
## Files Created/Modified
|
||||||
|
- `shell.nix` - NixOS dev environment with go and gopls
|
||||||
|
- `go.mod` - Go module github.com/pieMusic/vmux
|
||||||
|
- `types.go` - Shared types: Process, Session, SessionState (Working/NeedsInput/Idle/Unknown)
|
||||||
|
- `proc.go` - FindClaudeProcesses() and EncodePath()
|
||||||
|
- `proc_test.go` - 5 unit tests with fake /proc fixtures
|
||||||
|
|
||||||
|
## Decisions Made
|
||||||
|
- Used `filepath.Base(parts[0])` for binary detection to handle full paths like `/nix/store/.../claude`
|
||||||
|
- Injected procDir as parameter for full testability without mocking os functions
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Issues Encountered
|
||||||
|
- shell.nix was in Pierre's global gitignore; force-added with `git add -f` since it is project-specific
|
||||||
|
|
||||||
|
## User Setup Required
|
||||||
|
|
||||||
|
None - no external service configuration required.
|
||||||
|
|
||||||
|
## Next Phase Readiness
|
||||||
|
- Types and process detection ready for plan 01-02 (JSONL session matching, state heuristics, display)
|
||||||
|
- EncodePath enables PID-to-session folder mapping
|
||||||
|
|
||||||
|
---
|
||||||
|
*Phase: 01-session-discovery*
|
||||||
|
*Completed: 2026-03-23*
|
||||||
Reference in New Issue
Block a user