ID:WORK-086Status:done
Consolidate Plan Scanner with Shared Git Timestamp Utility
Priority:mediumComplexity:simpleMilestone:v1.0.0Source:SPEC-029
Summary
Refactor the plan scanner's getGitMtimes() in runes/plan/src/scanner.ts to use the shared git timestamp utility from packages/content/, eliminating duplicate git timestamp collection code. The plan-activity rune's mtime field will be sourced from the same data as $file.modified, ensuring consistency between the activity feed and individual rune attributes.
Acceptance Criteria
runes/plan/src/scanner.tsimports and uses the shared timestamp utility frompackages/content/instead of its owngetGitMtimes()implementation- The
getGitMtimes()function is removed fromscanner.ts - The
mtimefield in scanner results is derived from the shared utility'smodifiedvalue plan-activityrune displays the same modification dates as$file.modifiedon individual plan runes- No functional change in plan-activity output (dates match previous behavior)
- All existing plan scanner tests pass
Approach
- Add
@refrakt-md/contentas a dependency of@refrakt-md/plan(or extract the utility to a shared location both can import) - Replace
getGitMtimes()calls inscanner.tswith the shared utility - Map the shared utility's output format to the scanner's expected
mtimefield - Verify plan-activity output is unchanged
References
- File-Derived Timestamps for Runes (Phase 4 — Plan Scanner Consolidation)
- Create Shared Git Timestamp Utility (shared git timestamp utility — dependency)
runes/plan/src/scanner.ts— currentgetGitMtimes()implementation
Relationships
History
- 59ded4aContent edited
- f262d7bsource+SPEC-029
- f0a845a
- ☑ `runes/plan/src/scanner.ts` imports and uses the shared timestamp utility from `packages/content/` instead of its own `getGitMtimes()` implementation
- ☑ The `getGitMtimes()` function is removed from `scanner.ts`
- ☑ The `mtime` field in scanner results is derived from the shared utility's `modified` value
- +3 more criteria
- f87ae8dstatusready→done
- 2a05e00milestone+v1.0.0
- 43cadfeCreated (ready, medium, simple, plan, content, pipeline)