Problem
The documented gh-symphony repo logs --level error (README.md:365) silently drops every event. packages/cli/src/commands/logs.ts:81,162 filter with if (parsed.level && event.level !== parsed.level) continue;, but OrchestratorEvent (packages/core/src/observability/structured-events.ts) has no level field and no append site writes one, so event.level is always undefined and every event is dropped.
Impact (OSS user)
An operator debugging a failed run runs the most natural triage command, sees nothing, concludes there are no errors, and abandons the path — even though errors exist. No warning indicates the flag matched nothing.
Evidence (real files)
packages/cli/src/commands/logs.ts:81,162; flag registered at packages/cli/src/index.ts:598,608.
packages/core/src/observability/structured-events.ts (no level on any of the 17 event variants); no level: written in packages/orchestrator/src/service.ts append sites.
- README.md:365 documents
--level <level> as 'Filter by log level'. No test covers --level (packages/cli/src/commands/logs.test.ts).
Proposed fix
Derive a level from event type in logs.ts (error for run-failed/worker-error/hook-failed, warn for run-suppressed/run-retried, info otherwise) and filter on that — or add a populated level field to OrchestratorEvent. At minimum, when --level matches nothing, print a notice instead of empty output. If neither, remove the flag and its README line.
Priority: P1 · Symphony layer: Observability · category: cli-ux
Filed from an OSS-user-perspective audit of the repo.
Problem
The documented
gh-symphony repo logs --level error(README.md:365) silently drops every event.packages/cli/src/commands/logs.ts:81,162filter withif (parsed.level && event.level !== parsed.level) continue;, butOrchestratorEvent(packages/core/src/observability/structured-events.ts) has nolevelfield and no append site writes one, soevent.levelis alwaysundefinedand every event is dropped.Impact (OSS user)
An operator debugging a failed run runs the most natural triage command, sees nothing, concludes there are no errors, and abandons the path — even though errors exist. No warning indicates the flag matched nothing.
Evidence (real files)
packages/cli/src/commands/logs.ts:81,162; flag registered atpackages/cli/src/index.ts:598,608.packages/core/src/observability/structured-events.ts(nolevelon any of the 17 event variants); nolevel:written inpackages/orchestrator/src/service.tsappend sites.--level <level>as 'Filter by log level'. No test covers--level(packages/cli/src/commands/logs.test.ts).Proposed fix
Derive a level from event type in
logs.ts(error for run-failed/worker-error/hook-failed, warn for run-suppressed/run-retried, info otherwise) and filter on that — or add a populatedlevelfield toOrchestratorEvent. At minimum, when--levelmatches nothing, print a notice instead of empty output. If neither, remove the flag and its README line.Priority: P1 · Symphony layer: Observability · category: cli-ux
Filed from an OSS-user-perspective audit of the repo.