From 6fb2beedaf8318b8a9f71662df07d34d16b53737 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 14 Jun 2026 15:33:30 +0000 Subject: [PATCH 1/3] Initial plan From ac4d4069e7723e262d3de2d2165a76a37fff9395 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 14 Jun 2026 15:36:32 +0000 Subject: [PATCH 2/3] docs: add roadmap plan for long-running logging --- ROADMAP.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ROADMAP.md b/ROADMAP.md index 44e6215..01e1df0 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -112,6 +112,32 @@ The .NET AI landscape has matured rapidly: - **Difficulty:** Medium - **Priority:** High +#### 3.4a Long-Running Process Observability & Logging + +- **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. +- **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. +- **Logging Goals:** + 1. **Stage timing** — emit elapsed time for detect, extract, semantic extract, graph build, cluster, analyze, and each export format. + 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. + 3. **Throughput insights** — include files/sec, nodes/edges extracted, and average time per file so large-repo runs can be compared. + 4. **Watch-mode diagnostics** — record debounce batches, changed-file counts, unchanged-file drops, incremental merge duration, and export duration after each update cycle. + 5. **Failure visibility** — summarize warnings by category (extract failures, AI failures, export failures) without requiring stack traces unless `--verbose` is enabled. +- **How:** + - Introduce lightweight timing around each pipeline stage (for example `Stopwatch`) while preserving the current user-friendly console output. + - Add a shared progress reporter so both `PipelineRunner` and `WatchMode` can emit consistent messages instead of ad-hoc `WriteLineAsync` calls. + - Keep the default output concise, then let `--verbose` unlock per-file details, periodic heartbeats, and warning breakdowns. + - 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. +- **Suggested Rollout:** + 1. **Phase 1 — Timings:** add elapsed-time summaries to existing stage boundaries and watch-mode update cycles. + 2. **Phase 2 — Heartbeats:** add periodic progress logs inside AST extraction and semantic extraction loops. + 3. **Phase 3 — Structured diagnostics:** centralize logging fields (stage, elapsed, file count, warning count) for reuse in CLI, MCP, and future telemetry integrations. +- **Success Criteria:** + - A user can identify the slowest stage of `graphify run` from one console session. + - A long watch-mode refresh shows whether time was spent in debounce, extraction, clustering, or export. + - Verbose mode gives enough detail to troubleshoot slow runs without attaching a debugger. +- **Difficulty:** Easy +- **Priority:** High + --- ### Medium-Term (3-6 months) — Structural Improvements From 12aeef8e22b632241d95ca38ead0143aa67f2a37 Mon Sep 17 00:00:00 2001 From: Bruno Capuano Date: Wed, 1 Jul 2026 10:11:50 -0400 Subject: [PATCH 3/3] docs: align roadmap install command Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ROADMAP.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 01e1df0..b1f7c44 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -82,9 +82,9 @@ The .NET AI landscape has matured rapidly: #### 3.1 `dotnet tool` Global Install -- **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 .` +- **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`. - **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. -- **How:** Add `true` and `graphify` to Graphify.Cli.csproj. Consider Native AOT for self-contained packaging. +- **How:** Add `true` and `graphify` 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. - **Difficulty:** Easy - **Priority:** High