Skip to content

[Code Quality] Extract shared RunAnalysis base struct from ProcessedRun/RunSummary/DownloadResult #47387

Description

@github-actions

Description

Three types in pkg/cli/logs_models.goProcessedRun (line 97), RunSummary (line 213), and DownloadResult (line 239) — share an identical ~16-field analysis core (Run, AwContext, TaskDomain, BehaviorFingerprint, AgenticAssessments, AccessAnalysis, FirewallAnalysis, RedactedDomainsAnalysis, MissingTools, MissingData, Noops, MCPFailures, MCPToolUsage, TokenUsage, GitHubRateLimitUsage, JobDetails). This duplication creates drift risk whenever a new analysis dimension is added.

Suggested Changes

  • Extract a shared RunAnalysis base struct containing the ~16 common fields
  • Embed RunAnalysis in ProcessedRun, RunSummary, and DownloadResult
  • Reconcile JSON tags for RunSummary (has additional persistence fields) to ensure no tag conflicts
  • Update all construction sites to initialize via the embedded struct

Files Affected

  • pkg/cli/logs_models.go (primary)
  • Construction sites throughout pkg/cli/ (search for ProcessedRun{, RunSummary{, DownloadResult{)

Success Criteria

  • RunAnalysis base struct extracted with all shared fields
  • All three types embed RunAnalysis with no JSON tag conflicts
  • All construction sites updated
  • All existing tests pass (make test-unit)
  • No change to JSON serialization output

Source

Extracted from [typist] Typist — Go Type Consistency Analysis (pkg/) (2026-07-22)

Priority

High — the largest duplicated field block in the package; eliminates drift risk when analysis dimensions change.

🔍 Task mining by Discussion Task Miner - Code Quality Improvement Agent · sonnet46 49.7 AIC · ⌖ 5.61 AIC · ⊞ 7.1K ·

  • expires on Jul 23, 2026, 11:13 AM UTC-08:00

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions