You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pkg/workflow/compiler_yaml_graders.go:67 (compiler-side, writes the grader manifest JSON) and pkg/cli/audit_report_graders.go:67 (CLI-side, reads it back for gh aw audit) each independently declare a graderManifestEntry struct. Both share ID, Name, Unit, Direction, Threshold, but the writer's struct has 8 more fields (Description, Source, Enabled, Max, Min, Digest, Run, Config) that the CLI-side reader silently drops when parsing the manifest back.
Why this matters
This is a write/read pair for the same JSON file maintained as two independently-evolving type definitions. Any new field added to the compiler's manifest schema silently fails to reach the audit report reader — the same failure mode already observed for AwInfo/AuditEngineConfig drift (AgentRuntime field). Because the two structs match on the fields they share, this kind of drift produces no test failure and no visible symptom until someone goes looking for a field that "should" be there.
Suggested Change
Move the shared read/write schema into pkg/types (following the existing BaseMCPServerConfig pattern already used to prevent MCP-config duplication between parser and workflow), so pkg/workflow and pkg/cli both import one canonical struct instead of maintaining two independently-evolving JSON contracts for the same manifest file.
Expected Impact
Eliminates a silent-data-loss class of bug where compiler-side grader manifest fields never reach the audit report, without needing to notice the gap first.
Suggested Agent
New Agent / general-purpose Go refactor.
Estimated Effort
Medium (2-3 hours — cross-package type move plus updating both call sites)
Data Source
DeepReport analysis 2026-08-28, source: Typist Go Type Consistency Analysis (discussion #56632), Cluster 8.
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
api.anthropic.com
To allow these domains, add them to the network.allowed list in your workflow frontmatter:
Description
pkg/workflow/compiler_yaml_graders.go:67(compiler-side, writes the grader manifest JSON) andpkg/cli/audit_report_graders.go:67(CLI-side, reads it back forgh aw audit) each independently declare agraderManifestEntrystruct. Both shareID,Name,Unit,Direction,Threshold, but the writer's struct has 8 more fields (Description,Source,Enabled,Max,Min,Digest,Run,Config) that the CLI-side reader silently drops when parsing the manifest back.Why this matters
This is a write/read pair for the same JSON file maintained as two independently-evolving type definitions. Any new field added to the compiler's manifest schema silently fails to reach the audit report reader — the same failure mode already observed for
AwInfo/AuditEngineConfigdrift (AgentRuntimefield). Because the two structs match on the fields they share, this kind of drift produces no test failure and no visible symptom until someone goes looking for a field that "should" be there.Suggested Change
Move the shared read/write schema into
pkg/types(following the existingBaseMCPServerConfigpattern already used to prevent MCP-config duplication betweenparserandworkflow), sopkg/workflowandpkg/cliboth import one canonical struct instead of maintaining two independently-evolving JSON contracts for the same manifest file.Expected Impact
Eliminates a silent-data-loss class of bug where compiler-side grader manifest fields never reach the audit report, without needing to notice the gap first.
Suggested Agent
New Agent / general-purpose Go refactor.
Estimated Effort
Medium (2-3 hours — cross-package type move plus updating both call sites)
Data Source
DeepReport analysis 2026-08-28, source: Typist Go Type Consistency Analysis (discussion #56632), Cluster 8.
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
api.anthropic.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.