Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
b562d81
feat(044/Phase A): DiagnosticLog helper + generic ETW events
codemonkeychris May 19, 2026
306ab96
feat(044/Phase B): subsystem ETW events for Hosting/Persistence/Navig…
codemonkeychris May 19, 2026
feabd32
feat(044/Phase D): ReactorTrace.Subscribe in-process listener helper
codemonkeychris May 19, 2026
79b27be
fix(044/Phase C.1): Md4cParser Debug.Fail("Unreachable") → Unreachabl…
codemonkeychris May 19, 2026
e2a755b
feat(044/Phase C.2): NavigationDiagnostics Debug.WriteLine → typed ETW
codemonkeychris May 19, 2026
7312ce7
feat(044/Phase C.3): IntlAccessor Debug.WriteLine → typed ETW
codemonkeychris May 19, 2026
301593b
feat(044/Phase C.4): Shell HR Debug.WriteLine → DiagnosticLog.HResult…
codemonkeychris May 19, 2026
21e22e1
feat(044/Phase C.5): persistence Debug.WriteLine → DiagnosticLog + Pe…
codemonkeychris May 20, 2026
90d516b
feat(044/Phase C.6): RenderContext user-callback isolation → Diagnost…
codemonkeychris May 20, 2026
b761a7a
feat(044/Phase C.7a): LayoutEtwConsumer error swallows → DiagnosticLog
codemonkeychris May 20, 2026
054c53e
feat(044/Phase C.7b): Reconciler navigation lifecycle callbacks → Dia…
codemonkeychris May 20, 2026
97af4a8
feat(044/Phase F): wire ReactorEventSource → reactor.logs MCP tool
codemonkeychris May 20, 2026
e74855e
test(044/Phase I): ReactorTraceCollector + regression guards
codemonkeychris May 20, 2026
7055fce
docs(044/Phase H): diagnostics user guide
codemonkeychris May 20, 2026
21cd6ef
feat(044/Phase C.8): ReactorWindow + residual Reconciler swallows → D…
codemonkeychris May 20, 2026
68790b5
docs(044/Phase C-audit): swallowed-error audit catalog
codemonkeychris May 20, 2026
12aaeec
feat(044/Phase C.9): narrow catches per §6.7.2 + drop dead-defensive …
codemonkeychris May 20, 2026
f7e7070
fix(044): address CR feedback — EventListener race, long hex padding,…
codemonkeychris May 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,21 @@ For the full doc-pipeline workflow (compile, check-tier, render-diagrams), see [
- **Tag-based event dispatch.** Event handlers are wired once at mount; the current element is stored in `Tag` so handlers always read the latest closure.
- **No XAML.** Everything is C#.

### Diagnostics: audience, not severity, decides the channel

`Debug.WriteLine` exists for the framework contributor reading the Output window in Visual Studio; it disappears in Release builds. `ReactorEventSource` (the `Microsoft-UI-Reactor` provider) exists for the app developer, SRE, and support engineer — it's release-visible, keyword-gated, and zero-allocation when no consumer is attached. New code that reports an error, a swallowed exception, or a failing HRESULT belongs on the EventSource side; new code that traces internal framework state for a contributor's benefit (reconciler bookkeeping, scheduler queue depth) stays on `Debug.WriteLine`.

For swallowed exceptions and HRESULT-return diagnostics, route through the `DiagnosticLog` helper:

```csharp
catch (COMException ex) when (ex.HResult is HResults.RPC_E_DISCONNECTED or HResults.E_FAIL)
{
DiagnosticLog.SwallowedError(LogCategory.Hosting, "AppWindow.Close", ex);
}
```

`DiagnosticLog.SwallowedError` and `DiagnosticLog.HResultFailed` emit the typed ETW event under `Keywords.Errors` at `Warning` in Release **and** mirror a richer line (including `ex.Message`) to `Debug.WriteLine` in Debug builds via a `[Conditional("DEBUG")]` helper. The exception message never reaches the ETW payload — see [`docs/guide/diagnostics.md`](docs/guide/diagnostics.md) for the PII discipline and the full capture workflow.

---

## Hot reload
Expand Down
90 changes: 90 additions & 0 deletions docs/_pipeline/diagrams/diagnostics/flow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading