Skip to content

repo logs --level filters on a non-existent field and silently returns zero output #386

Description

@hojinzs

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.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingchangeset:patchRequires a patch changeset for CLI package releasecliAffects @gh-symphony/cli packageobservabilityLogs, status, events, dashboards

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions