You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ROADMAP.md
+28-2Lines changed: 28 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,9 +82,9 @@ The .NET AI landscape has matured rapidly:
82
82
83
83
#### 3.1 `dotnet tool` Global Install
84
84
85
-
-**Description:** Package Graphify.Cli as a global .NET tool so users can install with `dotnet tool install -g graphify` and run with just `graphify run .`
85
+
-**Description:** Package Graphify.Cli as a global .NET tool so users can install with `dotnet tool install -g graphify-dotnet` and run with just `graphify run`.
86
86
-**Rationale:** Eliminates the clone-and-build workflow. The Python version is on PyPI (`pip install graphifyy`); we need parity. Global tools are the standard .NET distribution mechanism for CLI apps.
87
-
-**How:** Add `<PackAsTool>true</PackAsTool>` and `<ToolCommandName>graphify</ToolCommandName>` to Graphify.Cli.csproj. Consider Native AOT for self-contained packaging.
87
+
-**How:** Add `<PackAsTool>true</PackAsTool>` and `<ToolCommandName>graphify</ToolCommandName>` to Graphify.Cli.csproj. Users would install it with `dotnet tool install -g graphify-dotnet` and run `graphify run`. Consider Native AOT for self-contained packaging.
88
88
-**Difficulty:** Easy
89
89
-**Priority:** High
90
90
@@ -112,6 +112,32 @@ The .NET AI landscape has matured rapidly:
112
112
-**Difficulty:** Medium
113
113
-**Priority:** High
114
114
115
+
#### 3.4a Long-Running Process Observability & Logging
116
+
117
+
-**Description:** Add richer progress logging for the full pipeline and watch mode so users can see where time is being spent during long-running operations.
118
+
-**Rationale:**`PipelineRunner` currently prints stage names and aggregate counts, but it does not report per-stage duration, throughput, retries/skips over time, or heartbeat updates while extraction and AI enrichment are still running. `WatchMode` reports changed files, but not how long debounce, re-detection, extraction, merge, clustering, or export took. This makes it hard to distinguish "still working" from "stuck," especially on large repositories or when AI-backed semantic extraction is enabled.
119
+
-**Logging Goals:**
120
+
1.**Stage timing** — emit elapsed time for detect, extract, semantic extract, graph build, cluster, analyze, and each export format.
121
+
2.**Heartbeat progress** — during long loops, print periodic progress updates (for example every N files or every few seconds) with processed/skipped counts and current stage.
122
+
3.**Throughput insights** — include files/sec, nodes/edges extracted, and average time per file so large-repo runs can be compared.
123
+
4.**Watch-mode diagnostics** — record debounce batches, changed-file counts, unchanged-file drops, incremental merge duration, and export duration after each update cycle.
124
+
5.**Failure visibility** — summarize warnings by category (extract failures, AI failures, export failures) without requiring stack traces unless `--verbose` is enabled.
125
+
-**How:**
126
+
- Introduce lightweight timing around each pipeline stage (for example `Stopwatch`) while preserving the current user-friendly console output.
127
+
- Add a shared progress reporter so both `PipelineRunner` and `WatchMode` can emit consistent messages instead of ad-hoc `WriteLineAsync` calls.
128
+
- Keep the default output concise, then let `--verbose` unlock per-file details, periodic heartbeats, and warning breakdowns.
129
+
- Keep structured/diagnostic output compatible with a future `ILogger` or OpenTelemetry bridge so this work can later feed the planned Aspire dashboard instead of being console-only.
130
+
-**Suggested Rollout:**
131
+
1.**Phase 1 — Timings:** add elapsed-time summaries to existing stage boundaries and watch-mode update cycles.
0 commit comments