@ckanner/flywheel 0.31.0 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +48 -5
  2. package/CONTRIBUTING.md +19 -0
  3. package/LICENSE +21 -0
  4. package/README.en.md +4 -171
  5. package/README.md +152 -269
  6. package/README.zh-CN.md +116 -0
  7. package/bin/flywheel-claude-code-pro-worker.js +1 -1
  8. package/bin/flywheel-codex-pro-worker.js +1 -1
  9. package/bin/flywheel-dsh-worker.js +1 -1
  10. package/bin/flywheel.js +1 -1
  11. package/bin/runtime.js +1 -1
  12. package/docs/README.md +84 -0
  13. package/docs/README.zh-CN.md +64 -0
  14. package/docs/archive/README.md +13 -0
  15. package/docs/archive/codex-pro-adapter-handoff.md +197 -0
  16. package/docs/archive/design-v0.24.md +540 -0
  17. package/docs/design.md +681 -0
  18. package/docs/en/claude-code-pro.md +25 -16
  19. package/docs/en/configuration.md +306 -141
  20. package/docs/en/contributing.md +303 -0
  21. package/docs/en/flow-console.md +67 -13
  22. package/docs/en/getting-started.md +232 -126
  23. package/docs/en/investigation.md +219 -0
  24. package/docs/en/jev-shadow.md +67 -0
  25. package/docs/en/model-policy.md +147 -62
  26. package/docs/en/releasing.md +207 -0
  27. package/docs/en/session-evaluation.md +4 -2
  28. package/docs/en/session-recovery.md +49 -6
  29. package/docs/en/workflow.md +222 -114
  30. package/docs/evaluation/README.md +12 -0
  31. package/docs/evaluation/jev-historical-provisional.json +138 -0
  32. package/docs/evaluation/jev-historical-result-2026-11-10.json +174 -0
  33. package/docs/plans/2026-11-01-dsh-integration.md +67 -0
  34. package/docs/plans/2026-11-01-model-profiles-preflight.md +29 -0
  35. package/docs/plans/2026-11-01-npm-installation.md +19 -0
  36. package/docs/plans/2026-11-03-codex-pro-default.md +28 -0
  37. package/docs/plans/2026-11-06-adaptive-workflow.md +365 -0
  38. package/docs/plans/2026-11-07-session-lifecycle.en.md +424 -0
  39. package/docs/plans/2026-11-07-session-lifecycle.md +337 -0
  40. package/docs/plans/2026-11-08-flow-console.md +271 -0
  41. package/docs/plans/2026-11-10-jev-shadow.md +32 -0
  42. package/docs/plans/2026-11-10-task-discovery.md +17 -0
  43. package/docs/plans/2026-11-10-workbench-redesign.md +19 -0
  44. package/docs/plans/2026-11-12-feedback-driven-workflows.md +739 -0
  45. package/docs/plans/README.md +22 -0
  46. package/docs/reviews/2026-08-24-v0.18-review-fixplan.md +265 -0
  47. package/docs/reviews/2026-09-12-pr4-pr5-review.md +70 -0
  48. package/docs/reviews/README.md +12 -0
  49. package/docs/validation/2026-11-01-npm-installation.md +105 -0
  50. package/docs/validation/2026-11-01-profiles-preflight.md +67 -0
  51. package/docs/validation/2026-11-01-results.md +114 -0
  52. package/docs/validation/2026-11-03-codex-pro-default.md +90 -0
  53. package/docs/validation/2026-11-04-dsh-native-view.md +85 -0
  54. package/docs/validation/2026-11-04-release-0.28.1.md +33 -0
  55. package/docs/validation/2026-11-04-release-0.28.2.md +35 -0
  56. package/docs/validation/2026-11-05-dsh-0.2.2-compatibility.md +26 -0
  57. package/docs/validation/2026-11-05-registry-smoke-recovery.md +26 -0
  58. package/docs/validation/2026-11-05-release-0.28.3.md +32 -0
  59. package/docs/validation/2026-11-05-subscription-model-access.md +60 -0
  60. package/docs/validation/2026-11-05-view-order.md +14 -0
  61. package/docs/validation/2026-11-07-adaptive-workflow.md +79 -0
  62. package/docs/validation/2026-11-07-claude-code-pro.md +144 -0
  63. package/docs/validation/2026-11-07-session-lifecycle.md +136 -0
  64. package/docs/validation/2026-11-08-session-p3-p4.md +99 -0
  65. package/docs/validation/2026-11-09-flow-console.md +81 -0
  66. package/docs/validation/2026-11-10-jev-shadow.md +50 -0
  67. package/docs/validation/2026-11-10-task-discovery.md +45 -0
  68. package/docs/validation/2026-11-10-workbench-redesign.md +54 -0
  69. package/docs/validation/2026-11-11-release-0.30.2.md +65 -0
  70. package/docs/validation/2026-11-11-release-0.31.0.md +46 -0
  71. package/docs/validation/2026-11-12-dsh-0.2.2-rc.2.md +58 -0
  72. package/docs/validation/2026-11-12-feedback-driven-workflows.md +187 -0
  73. package/docs/validation/README.md +41 -0
  74. package/docs/validation/evidence/2026-11-08-session-p3-p4.json +5430 -0
  75. package/docs/validation/evidence/claude-node-bridges.txt +118 -0
  76. package/docs/validation/evidence/claude-npm-build.txt +15 -0
  77. package/docs/validation/evidence/claude-npm-candidate.json +54 -0
  78. package/docs/validation/evidence/claude-npm-install.txt +21 -0
  79. package/docs/validation/evidence/claude-npm-tests.txt +145 -0
  80. package/docs/validation/evidence/claude-plugin-tests.txt +205 -0
  81. package/docs/validation/evidence/claude-quality-gate.txt +29 -0
  82. package/docs/validation/evidence/claude-race.txt +7 -0
  83. package/docs/validation/evidence/codex-pro-070-probes.txt +4 -0
  84. package/docs/validation/evidence/dsh-bridge.txt +4 -0
  85. package/docs/validation/evidence/dsh-native-view-bridge-tests.txt +1 -0
  86. package/docs/validation/evidence/dsh-native-view-build.txt +15 -0
  87. package/docs/validation/evidence/dsh-native-view-candidate.json +54 -0
  88. package/docs/validation/evidence/dsh-native-view-inspect.txt +27 -0
  89. package/docs/validation/evidence/dsh-native-view-install-tests.txt +19 -0
  90. package/docs/validation/evidence/dsh-native-view-npm-tests.txt +143 -0
  91. package/docs/validation/evidence/dsh-native-view-plugin-tests.txt +99 -0
  92. package/docs/validation/evidence/dsh-native-view-quality-gate.txt +29 -0
  93. package/docs/validation/evidence/dsh-plugin-tests.txt +48 -0
  94. package/docs/validation/evidence/function-coverage.txt +378 -0
  95. package/docs/validation/evidence/npm-build.txt +13 -0
  96. package/docs/validation/evidence/npm-contract-tests.txt +65 -0
  97. package/docs/validation/evidence/npm-dsh-bridge.txt +18 -0
  98. package/docs/validation/evidence/npm-dsh-plugin-tests.txt +62 -0
  99. package/docs/validation/evidence/npm-function-coverage.txt +420 -0
  100. package/docs/validation/evidence/npm-install-tests.txt +20 -0
  101. package/docs/validation/evidence/npm-quality-gate.txt +29 -0
  102. package/docs/validation/evidence/npm-race.txt +7 -0
  103. package/docs/validation/evidence/pr-dsh-bridge.txt +4 -0
  104. package/docs/validation/evidence/pr-dsh-plugin-tests.txt +48 -0
  105. package/docs/validation/evidence/pr-function-coverage.txt +379 -0
  106. package/docs/validation/evidence/pr-quality-gate.txt +28 -0
  107. package/docs/validation/evidence/pr-race.txt +6 -0
  108. package/docs/validation/evidence/profiles-control-smoke.json +1 -0
  109. package/docs/validation/evidence/profiles-dsh-bridge.txt +18 -0
  110. package/docs/validation/evidence/profiles-dsh-plugin-tests.txt +59 -0
  111. package/docs/validation/evidence/profiles-function-coverage.txt +411 -0
  112. package/docs/validation/evidence/profiles-quality-gate.txt +29 -0
  113. package/docs/validation/evidence/profiles-race.txt +7 -0
  114. package/docs/validation/evidence/quality-gate.txt +28 -0
  115. package/docs/validation/evidence/race.txt +6 -0
  116. package/docs/validation/evidence/watchdog-startup-after.txt +2 -0
  117. package/docs/validation/evidence/watchdog-startup-before.txt +6 -0
  118. package/docs/validation/evidence/watchdog-startup-quality-gate.txt +29 -0
  119. package/docs/validation/evidence/watchdog-startup-race.txt +7 -0
  120. package/docs/{claude-code-pro.md → zh-CN/claude-code-pro.md} +23 -17
  121. package/docs/{configuration.md → zh-CN/configuration.md} +323 -139
  122. package/docs/zh-CN/contributing.md +240 -0
  123. package/docs/{flow-console.md → zh-CN/flow-console.md} +55 -12
  124. package/docs/zh-CN/getting-started.md +352 -0
  125. package/docs/zh-CN/investigation.md +182 -0
  126. package/docs/zh-CN/jev-shadow.md +79 -0
  127. package/docs/zh-CN/model-policy.md +123 -0
  128. package/docs/zh-CN/releasing.md +120 -0
  129. package/docs/{session-evaluation.md → zh-CN/session-evaluation.md} +4 -2
  130. package/docs/{session-recovery.md → zh-CN/session-recovery.md} +46 -12
  131. package/docs/zh-CN/workflow.md +270 -0
  132. package/npm/install.js +1 -1
  133. package/package.json +12 -25
  134. package/docs/getting-started.md +0 -418
  135. package/docs/model-policy.md +0 -65
  136. package/docs/workflow.md +0 -314
@@ -0,0 +1,378 @@
1
+ github.com/ckanner/flywheel/internal/childenv/childenv.go:18: OSLookupEnv 100.0%
2
+ github.com/ckanner/flywheel/internal/childenv/childenv.go:22: BuildChildEnv 100.0%
3
+ github.com/ckanner/flywheel/internal/childenv/childenv.go:41: GateEnv 100.0%
4
+ github.com/ckanner/flywheel/internal/childenv/childenv.go:53: EnvSlice 100.0%
5
+ github.com/ckanner/flywheel/internal/circuitbreaker/circuitbreaker.go:36: TodayKey 100.0%
6
+ github.com/ckanner/flywheel/internal/circuitbreaker/circuitbreaker.go:42: CheckBudget 100.0%
7
+ github.com/ckanner/flywheel/internal/circuitbreaker/circuitbreaker.go:76: Signature 100.0%
8
+ github.com/ckanner/flywheel/internal/circuitbreaker/circuitbreaker.go:97: dedupSorted 100.0%
9
+ github.com/ckanner/flywheel/internal/circuitbreaker/circuitbreaker.go:114: Jaccard 100.0%
10
+ github.com/ckanner/flywheel/internal/circuitbreaker/circuitbreaker.go:139: DetectSpin 100.0%
11
+ github.com/ckanner/flywheel/internal/cli/control.go:39: controlCmd 100.0%
12
+ github.com/ckanner/flywheel/internal/cli/control.go:84: writeControlJSON 100.0%
13
+ github.com/ckanner/flywheel/internal/cli/control.go:91: controlTaskArg 100.0%
14
+ github.com/ckanner/flywheel/internal/cli/control.go:103: controlDirectory 100.0%
15
+ github.com/ckanner/flywheel/internal/cli/control.go:123: controlSnapshot 100.0%
16
+ github.com/ckanner/flywheel/internal/cli/control.go:144: startControlledTask 100.0%
17
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:18: intakeCmd 100.0%
18
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:49: gardenCmd 100.0%
19
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:85: installSkillsCmd 100.0%
20
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:131: renderInstall 100.0%
21
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:161: installEmbeddedSnapshot 100.0%
22
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:213: materializeFS 100.0%
23
+ github.com/ckanner/flywheel/internal/cli/modules_cmd.go:233: repoRoot 100.0%
24
+ github.com/ckanner/flywheel/internal/cli/root.go:21: Execute 100.0%
25
+ github.com/ckanner/flywheel/internal/cli/root.go:31: Error 100.0%
26
+ github.com/ckanner/flywheel/internal/cli/root.go:39: runRoot 100.0%
27
+ github.com/ckanner/flywheel/internal/cli/root.go:60: logf 100.0%
28
+ github.com/ckanner/flywheel/internal/cli/root.go:64: newRootCmd 100.0%
29
+ github.com/ckanner/flywheel/internal/cli/root.go:88: versionCmd 100.0%
30
+ github.com/ckanner/flywheel/internal/cli/run.go:19: contains 100.0%
31
+ github.com/ckanner/flywheel/internal/cli/run.go:28: runCmd 100.0%
32
+ github.com/ckanner/flywheel/internal/cli/run.go:98: orEmptyStr 100.0%
33
+ github.com/ckanner/flywheel/internal/cli/run.go:108: printJSON 100.0%
34
+ github.com/ckanner/flywheel/internal/cli/skills.go:12: skillsCmd 100.0%
35
+ github.com/ckanner/flywheel/internal/cli/skills.go:21: skillsListCmd 100.0%
36
+ github.com/ckanner/flywheel/internal/cli/skills.go:34: skillsReadCmd 100.0%
37
+ github.com/ckanner/flywheel/internal/cli/status.go:25: signalZero 100.0%
38
+ github.com/ckanner/flywheel/internal/cli/status.go:27: statusCmd 100.0%
39
+ github.com/ckanner/flywheel/internal/cli/status.go:124: evidencePass 100.0%
40
+ github.com/ckanner/flywheel/internal/cli/status.go:136: evidenceVerdict 100.0%
41
+ github.com/ckanner/flywheel/internal/cli/status.go:146: orchestratorAlive 100.0%
42
+ github.com/ckanner/flywheel/internal/cli/status.go:170: warnIfStalled 100.0%
43
+ github.com/ckanner/flywheel/internal/cli/stop.go:23: stopCmd 100.0%
44
+ github.com/ckanner/flywheel/internal/cli/stop.go:50: stopTask 100.0%
45
+ github.com/ckanner/flywheel/internal/cli/stop.go:83: freezeStoppedTask 100.0%
46
+ github.com/ckanner/flywheel/internal/cli/template.go:14: templateCmd 100.0%
47
+ github.com/ckanner/flywheel/internal/cli/util.go:12: mustCwd 100.0%
48
+ github.com/ckanner/flywheel/internal/cli/util.go:20: resolveTaskDir 100.0%
49
+ github.com/ckanner/flywheel/internal/cli/util.go:33: Error 100.0%
50
+ github.com/ckanner/flywheel/internal/config/config.go:137: Default 100.0%
51
+ github.com/ckanner/flywheel/internal/config/config.go:159: boolPtr 100.0%
52
+ github.com/ckanner/flywheel/internal/config/config.go:162: Normalize 100.0%
53
+ github.com/ckanner/flywheel/internal/config/config.go:213: Validate 100.0%
54
+ github.com/ckanner/flywheel/internal/config/config.go:283: GlobalConfigPath 100.0%
55
+ github.com/ckanner/flywheel/internal/config/config.go:299: EmbeddedTable 100.0%
56
+ github.com/ckanner/flywheel/internal/config/config.go:306: MaterializeGlobal 100.0%
57
+ github.com/ckanner/flywheel/internal/config/config.go:332: Load 100.0%
58
+ github.com/ckanner/flywheel/internal/config/config.go:349: loadFile 100.0%
59
+ github.com/ckanner/flywheel/internal/config/config.go:361: parseConfig 100.0%
60
+ github.com/ckanner/flywheel/internal/config/config.go:378: FindConfigFile 100.0%
61
+ github.com/ckanner/flywheel/internal/contract/contract.go:31: Error 100.0%
62
+ github.com/ckanner/flywheel/internal/contract/contract.go:38: errf 100.0%
63
+ github.com/ckanner/flywheel/internal/contract/contract.go:52: Command 100.0%
64
+ github.com/ckanner/flywheel/internal/contract/contract.go:67: Level 100.0%
65
+ github.com/ckanner/flywheel/internal/contract/contract.go:144: Slug 100.0%
66
+ github.com/ckanner/flywheel/internal/contract/contract.go:152: splitFrontmatter 100.0%
67
+ github.com/ckanner/flywheel/internal/contract/contract.go:178: ParseFrontmatter 100.0%
68
+ github.com/ckanner/flywheel/internal/contract/contract.go:212: compileAll 100.0%
69
+ github.com/ckanner/flywheel/internal/contract/contract.go:251: compileSchemas 100.0%
70
+ github.com/ckanner/flywheel/internal/contract/contract.go:260: flattenErrors 100.0%
71
+ github.com/ckanner/flywheel/internal/contract/contract.go:276: schemaViolations 100.0%
72
+ github.com/ckanner/flywheel/internal/contract/contract.go:291: validateAgainst 100.0%
73
+ github.com/ckanner/flywheel/internal/contract/contract.go:309: MilestoneOfPacket 100.0%
74
+ github.com/ckanner/flywheel/internal/contract/contract.go:320: ParseExpect 100.0%
75
+ github.com/ckanner/flywheel/internal/contract/contract.go:333: ParsePacket 100.0%
76
+ github.com/ckanner/flywheel/internal/contract/contract.go:358: ParseSpec 100.0%
77
+ github.com/ckanner/flywheel/internal/contract/contract.go:392: LoadSpec 100.0%
78
+ github.com/ckanner/flywheel/internal/contract/contract.go:403: LoadPackets 100.0%
79
+ github.com/ckanner/flywheel/internal/contract/contract.go:445: StateSchema 100.0%
80
+ github.com/ckanner/flywheel/internal/contract/contract.go:453: ValidateStateValue 100.0%
81
+ github.com/ckanner/flywheel/internal/defectinjection/defectinjection.go:60: DefaultRun 100.0%
82
+ github.com/ckanner/flywheel/internal/defectinjection/defectinjection.go:64: managedRun 100.0%
83
+ github.com/ckanner/flywheel/internal/defectinjection/defectinjection.go:92: incompleteReason 100.0%
84
+ github.com/ckanner/flywheel/internal/defectinjection/defectinjection.go:115: ParsePatchFiles 100.0%
85
+ github.com/ckanner/flywheel/internal/defectinjection/defectinjection.go:156: ShouldSample 100.0%
86
+ github.com/ckanner/flywheel/internal/defectinjection/defectinjection.go:194: RunDefectInjection 100.0%
87
+ github.com/ckanner/flywheel/internal/donereport/donereport.go:28: Parse 100.0%
88
+ github.com/ckanner/flywheel/internal/drivers/codex.go:63: ParseCodexEventStream 100.0%
89
+ github.com/ckanner/flywheel/internal/drivers/codex.go:142: defaultOpenCodexProject 100.0%
90
+ github.com/ckanner/flywheel/internal/drivers/codex.go:155: RegisterCodexProject 100.0%
91
+ github.com/ckanner/flywheel/internal/drivers/codex.go:167: RunCodex 100.0%
92
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:96: InvokeHarness 100.0%
93
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:219: invalidHarnessResult 100.0%
94
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:226: fromWatchdog 100.0%
95
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:239: Name 100.0%
96
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:241: harness 100.0%
97
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:246: Plan 100.0%
98
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:247: Execute 100.0%
99
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:248: Review 100.0%
100
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:249: Judge 100.0%
101
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:250: Intake 100.0%
102
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:251: Garden 100.0%
103
+ github.com/ckanner/flywheel/internal/drivers/drivers.go:255: CreateDrivers 100.0%
104
+ github.com/ckanner/flywheel/internal/drivers/dsh.go:61: parseDSHStream 100.0%
105
+ github.com/ckanner/flywheel/internal/drivers/dsh.go:156: parseDSHUsage 100.0%
106
+ github.com/ckanner/flywheel/internal/drivers/dsh.go:185: RunDSH 100.0%
107
+ github.com/ckanner/flywheel/internal/drivers/jsonl.go:18: feed 100.0%
108
+ github.com/ckanner/flywheel/internal/drivers/jsonl.go:40: flush 100.0%
109
+ github.com/ckanner/flywheel/internal/drivers/jsonl.go:47: jsonErrorMessage 100.0%
110
+ github.com/ckanner/flywheel/internal/drivers/kimi.go:53: ParseKimiStreamJson 100.0%
111
+ github.com/ckanner/flywheel/internal/drivers/kimi.go:116: parseKimiUsage 100.0%
112
+ github.com/ckanner/flywheel/internal/drivers/kimi.go:150: RunKimi 100.0%
113
+ github.com/ckanner/flywheel/internal/drivers/mock.go:15: mockResult 100.0%
114
+ github.com/ckanner/flywheel/internal/drivers/mock.go:35: intPtr 100.0%
115
+ github.com/ckanner/flywheel/internal/drivers/mock.go:36: usagePtr 100.0%
116
+ github.com/ckanner/flywheel/internal/drivers/mock.go:50: NewMockDriver 100.0%
117
+ github.com/ckanner/flywheel/internal/drivers/mock.go:67: Name 100.0%
118
+ github.com/ckanner/flywheel/internal/drivers/mock.go:69: behavior 100.0%
119
+ github.com/ckanner/flywheel/internal/drivers/mock.go:74: MockResult 100.0%
120
+ github.com/ckanner/flywheel/internal/drivers/mock.go:76: Plan 100.0%
121
+ github.com/ckanner/flywheel/internal/drivers/mock.go:93: Execute 100.0%
122
+ github.com/ckanner/flywheel/internal/drivers/mock.go:126: Review 100.0%
123
+ github.com/ckanner/flywheel/internal/drivers/mock.go:138: Judge 100.0%
124
+ github.com/ckanner/flywheel/internal/drivers/mock.go:150: Intake 100.0%
125
+ github.com/ckanner/flywheel/internal/drivers/mock.go:156: Garden 100.0%
126
+ github.com/ckanner/flywheel/internal/drivers/mock.go:167: nilIfEmpty 100.0%
127
+ github.com/ckanner/flywheel/internal/drivers/omp.go:35: RunOmp 100.0%
128
+ github.com/ckanner/flywheel/internal/drivers/omp.go:88: ParseOmpEventStream 100.0%
129
+ github.com/ckanner/flywheel/internal/drivers/pi.go:51: ParsePiEventStream 100.0%
130
+ github.com/ckanner/flywheel/internal/drivers/pi.go:60: parseAgentEventStream 100.0%
131
+ github.com/ckanner/flywheel/internal/drivers/pi.go:165: RunPi 100.0%
132
+ github.com/ckanner/flywheel/internal/drivers/zcode_desktop.go:26: zcodeDesktopBin 100.0%
133
+ github.com/ckanner/flywheel/internal/drivers/zcode_desktop.go:33: defaultOpenZcodeWorkspace 100.0%
134
+ github.com/ckanner/flywheel/internal/drivers/zcode_desktop.go:52: RegisterZcodeWorkspace 100.0%
135
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:68: defaultZcodeRuntimeCommand 100.0%
136
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:77: splitZcodeModel 100.0%
137
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:115: newZcodeProto 100.0%
138
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:127: attach 100.0%
139
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:137: sendLocked 100.0%
140
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:147: requestCreate 100.0%
141
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:167: maybeSendPrompt 100.0%
142
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:186: requestRead 100.0%
143
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:204: failLocked 100.0%
144
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:214: feedLine 100.0%
145
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:280: handleResponse 100.0%
146
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:301: consumeRead 100.0%
147
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:381: snapshot 100.0%
148
+ github.com/ckanner/flywheel/internal/drivers/zcode_rpc.go:392: RunZcode 100.0%
149
+ github.com/ckanner/flywheel/internal/errs/errs.go:56: IsRetryable 100.0%
150
+ github.com/ckanner/flywheel/internal/errs/errs.go:59: ShouldFallback 100.0%
151
+ github.com/ckanner/flywheel/internal/errs/errs.go:74: statusCode 100.0%
152
+ github.com/ckanner/flywheel/internal/errs/errs.go:95: timeoutNegated 100.0%
153
+ github.com/ckanner/flywheel/internal/errs/errs.go:107: ClassifyError 100.0%
154
+ github.com/ckanner/flywheel/internal/errs/errs.go:141: ExtractRetryAfterMs 100.0%
155
+ github.com/ckanner/flywheel/internal/errs/errs.go:163: ComputeBackoff 100.0%
156
+ github.com/ckanner/flywheel/internal/exitcontract/exitcontract.go:33: Evaluate 100.0%
157
+ github.com/ckanner/flywheel/internal/fallback/fallback.go:30: ResolveBinding 100.0%
158
+ github.com/ckanner/flywheel/internal/fallback/fallback.go:46: NextChannel 100.0%
159
+ github.com/ckanner/flywheel/internal/fallback/fallback.go:63: ModelForChannel 100.0%
160
+ github.com/ckanner/flywheel/internal/fallback/fallback.go:80: EnvKeyForChannel 100.0%
161
+ github.com/ckanner/flywheel/internal/fallback/fallback.go:92: MissingChannelEnv 100.0%
162
+ github.com/ckanner/flywheel/internal/fallback/fallback.go:107: AuthFallbackAllowed 100.0%
163
+ github.com/ckanner/flywheel/internal/ledger/ledger.go:42: IsLedgerTaskPath 100.0%
164
+ github.com/ckanner/flywheel/internal/machine/acceptance.go:20: acceptanceFingerprint 100.0%
165
+ github.com/ckanner/flywheel/internal/machine/acceptance.go:51: diffAcceptance 100.0%
166
+ github.com/ckanner/flywheel/internal/machine/acceptance.go:80: recordAcceptanceChanges 100.0%
167
+ github.com/ckanner/flywheel/internal/machine/acceptance.go:115: authoritativeChangedFiles 100.0%
168
+ github.com/ckanner/flywheel/internal/machine/context.go:94: nowISO 100.0%
169
+ github.com/ckanner/flywheel/internal/machine/context.go:99: err 100.0%
170
+ github.com/ckanner/flywheel/internal/machine/context.go:110: save 100.0%
171
+ github.com/ckanner/flywheel/internal/machine/context.go:124: recordRetry 100.0%
172
+ github.com/ckanner/flywheel/internal/machine/context.go:138: touchProgress 100.0%
173
+ github.com/ckanner/flywheel/internal/machine/context.go:145: recordSpawnMetrics 100.0%
174
+ github.com/ckanner/flywheel/internal/machine/context.go:292: reasoningCharsOf 100.0%
175
+ github.com/ckanner/flywheel/internal/machine/context.go:299: mathRound 100.0%
176
+ github.com/ckanner/flywheel/internal/machine/context.go:303: warnIfCacheCold 100.0%
177
+ github.com/ckanner/flywheel/internal/machine/context.go:322: containsString 100.0%
178
+ github.com/ckanner/flywheel/internal/machine/context.go:332: apiKeysFor 100.0%
179
+ github.com/ckanner/flywheel/internal/machine/context.go:347: taskDirPrefix 100.0%
180
+ github.com/ckanner/flywheel/internal/machine/context.go:360: ledgerExcludes 100.0%
181
+ github.com/ckanner/flywheel/internal/machine/context.go:373: commitExcludes 100.0%
182
+ github.com/ckanner/flywheel/internal/machine/context.go:384: partitionChangedFiles 100.0%
183
+ github.com/ckanner/flywheel/internal/machine/context.go:416: channelApiKey 100.0%
184
+ github.com/ckanner/flywheel/internal/machine/context.go:430: missingKeyForRealDriver 100.0%
185
+ github.com/ckanner/flywheel/internal/machine/context.go:439: budgetGate 100.0%
186
+ github.com/ckanner/flywheel/internal/machine/context.go:462: PidFile 100.0%
187
+ github.com/ckanner/flywheel/internal/machine/context.go:467: AssertNoRunningOrchestrator 100.0%
188
+ github.com/ckanner/flywheel/internal/machine/context.go:493: WarnIfForeignDirty 100.0%
189
+ github.com/ckanner/flywheel/internal/machine/context.go:508: unitCwd 100.0%
190
+ github.com/ckanner/flywheel/internal/machine/context.go:519: projectRoot 100.0%
191
+ github.com/ckanner/flywheel/internal/machine/context.go:529: CreateContext 100.0%
192
+ github.com/ckanner/flywheel/internal/machine/contract_revision.go:26: reconcileContractRevisions 100.0%
193
+ github.com/ckanner/flywheel/internal/machine/contract_revision.go:96: isPlannerContract 100.0%
194
+ github.com/ckanner/flywheel/internal/machine/contract_revision.go:108: planScopeIdentity 100.0%
195
+ github.com/ckanner/flywheel/internal/machine/contract_revision.go:118: checkPlanReanchor 100.0%
196
+ github.com/ckanner/flywheel/internal/machine/contract_revision.go:134: contractsComplete 100.0%
197
+ github.com/ckanner/flywheel/internal/machine/evidence.go:36: snapshotExcluded 100.0%
198
+ github.com/ckanner/flywheel/internal/machine/evidence.go:41: candidateFingerprint 100.0%
199
+ github.com/ckanner/flywheel/internal/machine/evidence.go:119: verificationIdentity 100.0%
200
+ github.com/ckanner/flywheel/internal/machine/evidence.go:156: evidenceIdentity 100.0%
201
+ github.com/ckanner/flywheel/internal/machine/evidence.go:164: currentL1Evidence 100.0%
202
+ github.com/ckanner/flywheel/internal/machine/evidence.go:174: invalidateEvidence 100.0%
203
+ github.com/ckanner/flywheel/internal/machine/lease.go:13: AcquireRunLease 100.0%
204
+ github.com/ckanner/flywheel/internal/machine/run.go:41: derefString 100.0%
205
+ github.com/ckanner/flywheel/internal/machine/run.go:48: milestoneByID 100.0%
206
+ github.com/ckanner/flywheel/internal/machine/run.go:57: shortSHA 100.0%
207
+ github.com/ckanner/flywheel/internal/machine/run.go:64: firstNonEmpty 100.0%
208
+ github.com/ckanner/flywheel/internal/machine/run.go:74: jsonNilable 100.0%
209
+ github.com/ckanner/flywheel/internal/machine/run.go:81: commitOutcomeMap 100.0%
210
+ github.com/ckanner/flywheel/internal/machine/run.go:112: derefStringPtr 100.0%
211
+ github.com/ckanner/flywheel/internal/machine/run.go:120: jsonToMap 100.0%
212
+ github.com/ckanner/flywheel/internal/machine/run.go:138: orTransport 100.0%
213
+ github.com/ckanner/flywheel/internal/machine/run.go:147: nextActionablePacket 100.0%
214
+ github.com/ckanner/flywheel/internal/machine/run.go:159: currentMilestone 100.0%
215
+ github.com/ckanner/flywheel/internal/machine/run.go:172: writePid 100.0%
216
+ github.com/ckanner/flywheel/internal/machine/run.go:192: clearPid 100.0%
217
+ github.com/ckanner/flywheel/internal/machine/run.go:200: registerSigterm 100.0%
218
+ github.com/ckanner/flywheel/internal/machine/run.go:219: unregisterSigterm 100.0%
219
+ github.com/ckanner/flywheel/internal/machine/run.go:246: strPtrAlways 100.0%
220
+ github.com/ckanner/flywheel/internal/machine/run.go:248: summary 100.0%
221
+ github.com/ckanner/flywheel/internal/machine/run.go:289: RunTask 100.0%
222
+ github.com/ckanner/flywheel/internal/machine/run.go:330: reloadPackets 100.0%
223
+ github.com/ckanner/flywheel/internal/machine/run.go:350: run 100.0%
224
+ github.com/ckanner/flywheel/internal/machine/run.go:522: milestoneSummaryLine 100.0%
225
+ github.com/ckanner/flywheel/internal/machine/run.go:587: RunSingleStep 100.0%
226
+ github.com/ckanner/flywheel/internal/machine/run.go:627: runSingle 100.0%
227
+ github.com/ckanner/flywheel/internal/machine/run.go:745: optStr 100.0%
228
+ github.com/ckanner/flywheel/internal/machine/steps.go:21: strPtr 100.0%
229
+ github.com/ckanner/flywheel/internal/machine/steps.go:29: toSpawnResult 100.0%
230
+ github.com/ckanner/flywheel/internal/machine/steps.go:49: wdog 100.0%
231
+ github.com/ckanner/flywheel/internal/machine/steps.go:59: appendFile 100.0%
232
+ github.com/ckanner/flywheel/internal/machine/steps.go:68: appendInbox 100.0%
233
+ github.com/ckanner/flywheel/internal/machine/steps.go:77: appendRetro 100.0%
234
+ github.com/ckanner/flywheel/internal/machine/steps.go:81: baseRefOf 100.0%
235
+ github.com/ckanner/flywheel/internal/machine/steps.go:89: orHEAD 100.0%
236
+ github.com/ckanner/flywheel/internal/machine/steps_execute.go:31: executeStep 100.0%
237
+ github.com/ckanner/flywheel/internal/machine/steps_execute.go:300: readUnitReport 100.0%
238
+ github.com/ckanner/flywheel/internal/machine/steps_execute.go:333: l1Step 100.0%
239
+ github.com/ckanner/flywheel/internal/machine/steps_execute.go:406: errorText 100.0%
240
+ github.com/ckanner/flywheel/internal/machine/steps_execute.go:415: effectiveTestFilePatterns 100.0%
241
+ github.com/ckanner/flywheel/internal/machine/steps_plan.go:25: awaitCredentialsApproval 100.0%
242
+ github.com/ckanner/flywheel/internal/machine/steps_plan.go:144: milestoneGateStep 100.0%
243
+ github.com/ckanner/flywheel/internal/machine/steps_plan.go:208: planStep 100.0%
244
+ github.com/ckanner/flywheel/internal/machine/steps_plan.go:432: planUntilValid 100.0%
245
+ github.com/ckanner/flywheel/internal/machine/steps_plan.go:490: persistPlanContracts 100.0%
246
+ github.com/ckanner/flywheel/internal/machine/steps_verdict.go:23: agentVerdictStep 100.0%
247
+ github.com/ckanner/flywheel/internal/machine/steps_verdict.go:176: reviewStep 100.0%
248
+ github.com/ckanner/flywheel/internal/machine/steps_verdict.go:263: loopToBinding 100.0%
249
+ github.com/ckanner/flywheel/internal/machine/steps_verdict.go:272: judgeStep 100.0%
250
+ github.com/ckanner/flywheel/internal/machine/stop_control.go:35: StopRequestFile 100.0%
251
+ github.com/ckanner/flywheel/internal/machine/stop_control.go:39: RunLeaseHeld 100.0%
252
+ github.com/ckanner/flywheel/internal/machine/stop_control.go:59: ReadRunControl 100.0%
253
+ github.com/ckanner/flywheel/internal/machine/stop_control.go:76: WriteStopRequest 100.0%
254
+ github.com/ckanner/flywheel/internal/machine/stop_control.go:100: watchStopRequests 100.0%
255
+ github.com/ckanner/flywheel/internal/machine/units.go:24: commitUnitChangesIn 100.0%
256
+ github.com/ckanner/flywheel/internal/machine/units.go:28: mergeUnitWorktree 100.0%
257
+ github.com/ckanner/flywheel/internal/machine/units.go:32: removeUnitWorktree 100.0%
258
+ github.com/ckanner/flywheel/internal/machine/units.go:37: commitTaskDirChanges 100.0%
259
+ github.com/ckanner/flywheel/internal/machine/units.go:41: markInterruptedUnits 100.0%
260
+ github.com/ckanner/flywheel/internal/machine/units.go:51: failAttempt 100.0%
261
+ github.com/ckanner/flywheel/internal/machine/units.go:99: l1BoundaryChangedFiles 100.0%
262
+ github.com/ckanner/flywheel/internal/machine/units.go:127: executorSelfChangedFiles 100.0%
263
+ github.com/ckanner/flywheel/internal/machine/units.go:144: escalatePacket 100.0%
264
+ github.com/ckanner/flywheel/internal/machine/units.go:218: completeUnit 100.0%
265
+ github.com/ckanner/flywheel/internal/machine/units.go:361: maybeDefectInjection 100.0%
266
+ github.com/ckanner/flywheel/internal/machine/units.go:448: doneReportValid 100.0%
267
+ github.com/ckanner/flywheel/internal/machine/units.go:462: injectionStop 100.0%
268
+ github.com/ckanner/flywheel/internal/machine/units.go:500: runExecuteLoop 100.0%
269
+ github.com/ckanner/flywheel/internal/machine/units.go:559: processPacket 100.0%
270
+ github.com/ckanner/flywheel/internal/machine/units.go:766: l1PassTrue 100.0%
271
+ github.com/ckanner/flywheel/internal/machine/util.go:11: jsonUnmarshal 100.0%
272
+ github.com/ckanner/flywheel/internal/machine/util.go:13: fileExists 100.0%
273
+ github.com/ckanner/flywheel/internal/machine/util.go:20: processAlive 100.0%
274
+ github.com/ckanner/flywheel/internal/machine/util.go:24: verifyForeignDirty 100.0%
275
+ github.com/ckanner/flywheel/internal/metrics/metrics.go:19: PromptHash 100.0%
276
+ github.com/ckanner/flywheel/internal/metrics/metrics.go:27: Append 100.0%
277
+ github.com/ckanner/flywheel/internal/metrics/metrics.go:52: PriceForModel 100.0%
278
+ github.com/ckanner/flywheel/internal/metrics/metrics.go:87: EstimateCostUSD 100.0%
279
+ github.com/ckanner/flywheel/internal/modules/garden.go:38: ExtractFailurePatterns 100.0%
280
+ github.com/ckanner/flywheel/internal/modules/garden.go:78: collectInputs 100.0%
281
+ github.com/ckanner/flywheel/internal/modules/garden.go:98: buildGardenPrompt 100.0%
282
+ github.com/ckanner/flywheel/internal/modules/garden.go:157: orEmpty 100.0%
283
+ github.com/ckanner/flywheel/internal/modules/garden.go:185: ValidateGardenProposals 100.0%
284
+ github.com/ckanner/flywheel/internal/modules/garden.go:244: RunGarden 100.0%
285
+ github.com/ckanner/flywheel/internal/modules/installskills.go:18: fileExists 100.0%
286
+ github.com/ckanner/flywheel/internal/modules/installskills.go:41: ListRepoSkills 100.0%
287
+ github.com/ckanner/flywheel/internal/modules/installskills.go:58: skillFrontmatterOk 100.0%
288
+ github.com/ckanner/flywheel/internal/modules/installskills.go:82: InstallSkills 100.0%
289
+ github.com/ckanner/flywheel/internal/modules/installskills.go:154: renderActionText 100.0%
290
+ github.com/ckanner/flywheel/internal/modules/intake.go:25: Fingerprint 100.0%
291
+ github.com/ckanner/flywheel/internal/modules/intake.go:42: whitespaceFold 100.0%
292
+ github.com/ckanner/flywheel/internal/modules/intake.go:49: realExec 100.0%
293
+ github.com/ckanner/flywheel/internal/modules/intake.go:58: FetchSourceCandidates 100.0%
294
+ github.com/ckanner/flywheel/internal/modules/intake.go:133: orLimit 100.0%
295
+ github.com/ckanner/flywheel/internal/modules/intake.go:140: truncate 100.0%
296
+ github.com/ckanner/flywheel/internal/modules/intake.go:149: parseExistingFingerprints 100.0%
297
+ github.com/ckanner/flywheel/internal/modules/intake.go:166: ParseTriageVerdict 100.0%
298
+ github.com/ckanner/flywheel/internal/modules/intake.go:204: candidateSection 100.0%
299
+ github.com/ckanner/flywheel/internal/modules/intake.go:229: writeTriageVerdict 100.0%
300
+ github.com/ckanner/flywheel/internal/modules/intake.go:242: ListApprovedCandidates 100.0%
301
+ github.com/ckanner/flywheel/internal/modules/intake.go:273: buildTriagePrompt 100.0%
302
+ github.com/ckanner/flywheel/internal/modules/intake.go:312: RunIntake 100.0%
303
+ github.com/ckanner/flywheel/internal/modules/module.go:53: NewContext 100.0%
304
+ github.com/ckanner/flywheel/internal/modules/module.go:79: ModuleWatchdogOpts 100.0%
305
+ github.com/ckanner/flywheel/internal/modules/module.go:88: ChannelAPIKey 100.0%
306
+ github.com/ckanner/flywheel/internal/modules/module.go:100: APIKeysFor 100.0%
307
+ github.com/ckanner/flywheel/internal/modules/module.go:115: recordModuleMetrics 100.0%
308
+ github.com/ckanner/flywheel/internal/modules/module.go:230: CallAgent 100.0%
309
+ github.com/ckanner/flywheel/internal/modules/module.go:349: dispatchRole 100.0%
310
+ github.com/ckanner/flywheel/internal/modules/module.go:367: exists 100.0%
311
+ github.com/ckanner/flywheel/internal/modules/module.go:372: nilIfEmpty 100.0%
312
+ github.com/ckanner/flywheel/internal/modules/module.go:379: firstNonEmpty 100.0%
313
+ github.com/ckanner/flywheel/internal/modules/module.go:388: round3 100.0%
314
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:25: ReadCacheScope 100.0%
315
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:59: joinNonEmpty 100.0%
316
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:74: BuildExecutePrompt 100.0%
317
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:148: BuildReviewPrompt 100.0%
318
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:216: BuildPlanPrompt 100.0%
319
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:261: evidenceFlag 100.0%
320
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:272: BuildJudgePrompt 100.0%
321
+ github.com/ckanner/flywheel/internal/prompts/prompts.go:347: ParseReviewVerdict 100.0%
322
+ github.com/ckanner/flywheel/internal/skillsembed/skillsembed.go:28: List 100.0%
323
+ github.com/ckanner/flywheel/internal/skillsembed/skillsembed.go:32: ListFrom 100.0%
324
+ github.com/ckanner/flywheel/internal/skillsembed/skillsembed.go:63: Read 100.0%
325
+ github.com/ckanner/flywheel/internal/skillsembed/skillsembed.go:75: DirFS 100.0%
326
+ github.com/ckanner/flywheel/internal/skillsembed/skillsembed.go:83: str 100.0%
327
+ github.com/ckanner/flywheel/internal/state/state.go:28: Error 100.0%
328
+ github.com/ckanner/flywheel/internal/state/state.go:35: Error 100.0%
329
+ github.com/ckanner/flywheel/internal/state/state.go:37: errf 100.0%
330
+ github.com/ckanner/flywheel/internal/state/state.go:40: NowISO 100.0%
331
+ github.com/ckanner/flywheel/internal/state/state.go:204: StateFile 100.0%
332
+ github.com/ckanner/flywheel/internal/state/state.go:207: Exists 100.0%
333
+ github.com/ckanner/flywheel/internal/state/state.go:213: Load 100.0%
334
+ github.com/ckanner/flywheel/internal/state/state.go:258: Save 100.0%
335
+ github.com/ckanner/flywheel/internal/state/state.go:305: EmptyPacketState 100.0%
336
+ github.com/ckanner/flywheel/internal/state/state.go:329: EnsurePacketStates 100.0%
337
+ github.com/ckanner/flywheel/internal/state/state.go:343: Init 100.0%
338
+ github.com/ckanner/flywheel/internal/state/state.go:389: MarkInterruptedUnits 100.0%
339
+ github.com/ckanner/flywheel/internal/state/state.go:404: RecordUsage 100.0%
340
+ github.com/ckanner/flywheel/internal/verify/git_semantics.go:25: checkGitSemantics 100.0%
341
+ github.com/ckanner/flywheel/internal/verify/report_restore.go:12: RestoreReservedReport 100.0%
342
+ github.com/ckanner/flywheel/internal/verify/verify.go:44: envLookup 100.0%
343
+ github.com/ckanner/flywheel/internal/verify/verify.go:56: envSlice 100.0%
344
+ github.com/ckanner/flywheel/internal/verify/verify.go:101: RunGateCommands 100.0%
345
+ github.com/ckanner/flywheel/internal/verify/verify.go:191: identityArgs 100.0%
346
+ github.com/ckanner/flywheel/internal/verify/verify.go:201: ForeignDirtyFiles 100.0%
347
+ github.com/ckanner/flywheel/internal/verify/verify.go:224: unescapePorcelain 100.0%
348
+ github.com/ckanner/flywheel/internal/verify/verify.go:238: WorktreeNames 100.0%
349
+ github.com/ckanner/flywheel/internal/verify/verify.go:252: EnsureUnitWorktree 100.0%
350
+ github.com/ckanner/flywheel/internal/verify/verify.go:266: MergeUnitWorktree 100.0%
351
+ github.com/ckanner/flywheel/internal/verify/verify.go:280: RemoveUnitWorktree 100.0%
352
+ github.com/ckanner/flywheel/internal/verify/verify.go:334: GetBaseRef 100.0%
353
+ github.com/ckanner/flywheel/internal/verify/verify.go:348: PersistedHead 100.0%
354
+ github.com/ckanner/flywheel/internal/verify/verify.go:383: AheadCount 100.0%
355
+ github.com/ckanner/flywheel/internal/verify/verify.go:391: GetChangedFiles 100.0%
356
+ github.com/ckanner/flywheel/internal/verify/verify.go:423: listUntracked 100.0%
357
+ github.com/ckanner/flywheel/internal/verify/verify.go:448: GetDiffText 100.0%
358
+ github.com/ckanner/flywheel/internal/verify/verify.go:487: appendUntrackedSections 100.0%
359
+ github.com/ckanner/flywheel/internal/verify/verify.go:559: CommitUnitChanges 100.0%
360
+ github.com/ckanner/flywheel/internal/verify/verify.go:621: CommitTaskDirChanges 100.0%
361
+ github.com/ckanner/flywheel/internal/verify/verify.go:671: excludedCommitPath 100.0%
362
+ github.com/ckanner/flywheel/internal/verify/verify.go:700: globToRegExp 100.0%
363
+ github.com/ckanner/flywheel/internal/verify/verify.go:720: CheckBoundaries 100.0%
364
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:81: register 100.0%
365
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:87: unregister 100.0%
366
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:96: KillActiveChildren 100.0%
367
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:124: killGroup 100.0%
368
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:134: cleanProcessGroup 100.0%
369
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:162: Write 100.0%
370
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:179: String 100.0%
371
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:185: isTruncated 100.0%
372
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:208: ReadFrom 100.0%
373
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:218: Write 100.0%
374
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:235: Run 100.0%
375
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:390: msDur 100.0%
376
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:397: exitCodeOf 100.0%
377
+ github.com/ckanner/flywheel/internal/watchdog/watchdog.go:406: signalOf 100.0%
378
+ total: (statements) 100.0%
@@ -0,0 +1,13 @@
1
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
2
+
3
+ > @ckanner/flywheel@0.27.0 build:npm
4
+ > bash scripts/build-npm.sh 0.27.0 dist-npm
5
+
6
+ Built host plugin, rc.5 client module, and native SDK worker.
7
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
8
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
9
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
10
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
11
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
12
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
13
+ Built 6 verified npm packages for 0.27.0 at <checkout>/dist-npm (development source; not publishable)
@@ -0,0 +1,65 @@
1
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
2
+
3
+ > @ckanner/flywheel@0.27.0 test
4
+ > node --test npm/test/*.test.js
5
+
6
+ ✔ invalid installer arguments return one JSON error without creating installation state (244.762308ms)
7
+ ✔ installer executes special paths literally and repeat setup keeps a stable desktop launcher (968.345465ms)
8
+ ✔ explicit no-dsh is reported as skipped while missing CLI prerequisites remain recoverable (698.819226ms)
9
+ ✔ human setup output retains diagnostic remedies and does not announce an uninstalled DSH plugin (326.235663ms)
10
+ ✔ missing DSH reports partial installation and recovers on a later explicit command (591.870063ms)
11
+ ✔ DSH reporting a different installed version cannot complete setup (279.903056ms)
12
+ ✔ a skills conflict remains visible and prevents later desktop changes (184.931413ms)
13
+ ✔ setup cancellation waits for a trapping CLI and cannot publish success (360.176764ms)
14
+ ✔ step timeout rejects a CLI that traps termination as exit zero (1305.858238ms)
15
+ ✔ cancellation during final unlock cannot return a successful report or hide cleanup errors (679.211286ms)
16
+ ✔ managed launcher updates preserve user edits and invalid installation records (11.699062ms)
17
+ ✔ setup preserves a modified launcher and exposes the failed step in its JSON result (545.626331ms)
18
+ ✔ capture cancels a whole installation process group after its leader exits (749.42429ms)
19
+ ✔ normal exit zero cannot hide a surviving installation subprocess (1999.873034ms)
20
+ ✔ inherited output handles outside the owned group produce a bounded failure (997.515126ms)
21
+ ✔ concurrent setup preserves the active install lock and can retry after its owner exits (782.410426ms)
22
+ ✔ an installer never removes a lock whose ownership changed (3.609866ms)
23
+ ✔ all six package versions, exact dependencies and platform selectors must agree (2.828716ms)
24
+ ✔ preflight accepts only the exact clean HEAD tag, not an ancestor tag (63.504522ms)
25
+ ✔ source snapshots preserve modes and symlinks without copying ignored files or editing source (15.354059ms)
26
+ ✔ candidate verifies actual tar manifests, exact source and clean source policy (74.97322ms)
27
+ ✔ changed tar bytes and symlink substitution cannot pass candidate verification (27.034115ms)
28
+ ✔ rehashed tarball with a wrong embedded package version is still rejected (58.179641ms)
29
+ ✔ public candidate verification CLI returns failure for a mismatched source (141.129952ms)
30
+ ✔ npm absence is only structured E404; authentication, network and cancellation fail closed (0.907028ms)
31
+ ✔ a successful empty integrity response never permits publication, while a missing latest tag is allowed (28.68146ms)
32
+ ✔ real npm view distinguishes an absent package from a forbidden registry (454.239929ms)
33
+ ✔ publishing uses exact dependencies first and never advances latest; retries verify existing bytes (40.454867ms)
34
+ ✔ a conflicting existing version or newer latest blocks every publish before mutation (28.770034ms)
35
+ ✔ an uncertain publish response succeeds only when registry bytes match (27.580218ms)
36
+ ✔ failed publish with no registry version stops before later packages (28.626001ms)
37
+ ✔ publication cancellation is a failure even if registry accepted the bytes (28.060703ms)
38
+ ✔ registry visibility waits are bounded (27.937668ms)
39
+ ✔ a local candidate changed after registry preflight is not published (27.055992ms)
40
+ ✔ latest promotion requires all six versions and promotes the entry package last (26.454446ms)
41
+ ✔ a concurrent newer entry tag cannot be rolled back during promotion (27.999771ms)
42
+ ✔ latest verification checks all versions and rejects unknown version ordering (25.09511ms)
43
+ ✔ release commands reject incomplete or unsafe options (0.393354ms)
44
+ ✔ npm CLI preserves literal argv, stdin, cwd, environment, stderr and native exit status (99.3787ms)
45
+ ✔ an explicit worker override is preserved, even when the bundled worker is unavailable (147.758054ms)
46
+ ✔ missing platform or worker packages fail visibly instead of selecting another installation (88.081876ms)
47
+ ✔ a non-executable native binary reports a launch failure (47.933657ms)
48
+ ✔ resolved native and worker versions must match the meta package's exact pins (152.960186ms)
49
+ ✔ a stale parent dependency is rejected while a correctly hoisted package is accepted (209.085519ms)
50
+ ✔ install and setup dispatch to the bundled installer with untouched arguments (113.633881ms)
51
+ ✔ worker shim uses its current Node executable and the package's public worker export (86.988047ms)
52
+ ✔ SIGTERM reaches the native owner and npm waits for its worker and delayed cleanup (348.482733ms)
53
+ ✔ SIGINT reaches the native owner and npm waits for its worker and delayed cleanup (337.11374ms)
54
+ ✔ SIGHUP reaches the native owner and npm waits for its worker and delayed cleanup (347.951587ms)
55
+ ✔ native signal death maps to its conventional exit code (69.221916ms)
56
+ ✔ cancellation preserves a native diagnostic failure after cleanup (352.301543ms)
57
+ ✔ worker shim also waits for cancellation cleanup and rejects a late exit zero (174.197488ms)
58
+ ℹ tests 52
59
+ ℹ suites 0
60
+ ℹ pass 52
61
+ ℹ fail 0
62
+ ℹ cancelled 0
63
+ ℹ skipped 0
64
+ ℹ todo 0
65
+ ℹ duration_ms 11802.580002
@@ -0,0 +1,18 @@
1
+ === RUN TestDSHNodeWorkerOfflineBridge
2
+ === RUN TestDSHNodeWorkerOfflineBridge/explicit_provider_differs_from_account_channel
3
+ === RUN TestDSHNodeWorkerOfflineBridge/doctor/ok
4
+ === RUN TestDSHNodeWorkerOfflineBridge/doctor/missing-policy
5
+ === RUN TestDSHNodeWorkerOfflineBridge/doctor/wrong-policy
6
+ === RUN TestDSHNodeWorkerOfflineBridge/doctor/wrong-cwd
7
+ === RUN TestDSHNodeWorkerOfflineBridge/doctor/malformed
8
+ === RUN TestDSHNodeWorkerOfflineBridge/doctor/forced-shutdown
9
+ --- PASS: TestDSHNodeWorkerOfflineBridge (1.49s)
10
+ --- PASS: TestDSHNodeWorkerOfflineBridge/explicit_provider_differs_from_account_channel (0.10s)
11
+ --- PASS: TestDSHNodeWorkerOfflineBridge/doctor/ok (0.10s)
12
+ --- PASS: TestDSHNodeWorkerOfflineBridge/doctor/missing-policy (0.11s)
13
+ --- PASS: TestDSHNodeWorkerOfflineBridge/doctor/wrong-policy (0.09s)
14
+ --- PASS: TestDSHNodeWorkerOfflineBridge/doctor/wrong-cwd (0.11s)
15
+ --- PASS: TestDSHNodeWorkerOfflineBridge/doctor/malformed (0.09s)
16
+ --- PASS: TestDSHNodeWorkerOfflineBridge/doctor/forced-shutdown (0.81s)
17
+ PASS
18
+ ok github.com/ckanner/flywheel/internal/drivers 1.501s
@@ -0,0 +1,62 @@
1
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
2
+
3
+ > @ckanner/dsh-plugin-flywheel@0.27.0 check
4
+ > npm test
5
+
6
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
7
+
8
+ > @ckanner/dsh-plugin-flywheel@0.27.0 test
9
+ > npm run build && node --test test/*.test.js
10
+
11
+ npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm.
12
+
13
+ > @ckanner/dsh-plugin-flywheel@0.27.0 build
14
+ > node scripts/build.mjs
15
+
16
+ Built host plugin, rc.5 client module, and native SDK worker.
17
+ ✔ built panel is idle until a click and can inspect effective models without a task (100.745138ms)
18
+ ✔ task lifecycle labels do not confuse completed or pending work with a stopped engine (40.581332ms)
19
+ ✔ all packets remain accessible, text is escaped, and missing costs remain unknown (30.286383ms)
20
+ ✔ local and SDK doctor buttons display structured failures, remedies, and unverified account facts (26.201154ms)
21
+ ✔ switching paths clears old results and late requests cannot overwrite the new selection or busy state (16.695573ms)
22
+ ✔ late failures are ignored after a path change and active errors can recover (21.178756ms)
23
+ ✔ control invokes only the Go JSON CLI using literal argv, including paths with shell syntax (83.160524ms)
24
+ ✔ configuration and doctor need no task directory, and probe is an explicit doctor-only boolean (175.86549ms)
25
+ ✔ doctor returns a valid failed report but rejects process, protocol, and identity failures (719.26044ms)
26
+ ✔ hung controls are bounded and cancellation is never a diagnostic success (221.93384ms)
27
+ ✔ diagnostic cancellation and timeout keep the Go owner alive until delayed group cleanup finishes (14095.262672ms)
28
+ ✔ an unresponsive diagnostic owner is eventually force-stopped after its cleanup window (21023.545317ms)
29
+ ✔ slash command and model tool use the same validated engine control boundary (195.811876ms)
30
+ ✔ policy uses the shipped shell probe and pins effective session facts, rejecting partial enforcement (1.206911ms)
31
+ ✔ browser module registers the actual rc.5 dock and calls existing command Remote (5.700725ms)
32
+ ✔ desktop resolves a verified npm launcher without a shell PATH (4.096862ms)
33
+ ✔ invalid or stale records do not silently select another executable (4.464606ms)
34
+ ✔ receipt and launcher links or non-executable files are rejected (1.490308ms)
35
+ ✔ start normalizes cwd and rejects resume, extra write roots, implicit permission, and empty route (13.896438ms)
36
+ ✔ only unique committed model calls count; cache is included in aggregate input, reasoning is a subset (2.029552ms)
37
+ ✔ missing or malformed usage remains unknown, not free or partial cost (0.420625ms)
38
+ ✔ an idle or max-token interval is not successful completion (0.738464ms)
39
+ ✔ permission acknowledgement must match actual cwd, policy, approval and full confinement (0.462538ms)
40
+ ✔ full worker handshake, durable result, usage and SDK shutdown agree with the Go contract (80.022565ms)
41
+ ✔ wrong-policy: fail before submitting a paid prompt (60.174075ms)
42
+ ✔ wrong-cwd: fail before submitting a paid prompt (63.923909ms)
43
+ ✔ missing-policy: fail before submitting a paid prompt (55.931864ms)
44
+ ✔ malformed: fail before submitting a paid prompt (65.415624ms)
45
+ ✔ empty: session/wait alone never establishes success (49.218054ms)
46
+ ✔ missing-terminal: session/wait alone never establishes success (48.258225ms)
47
+ ✔ max-tokens: session/wait alone never establishes success (49.11533ms)
48
+ ✔ corrupt-tail: session/wait alone never establishes success (54.747777ms)
49
+ ✔ unknown provider usage survives a successful call as null (59.798163ms)
50
+ ✔ full lifecycle deadline includes a stalled initialize; no model prompt is sent (163.069722ms)
51
+ ✔ external cancellation settles a stalled turn through SDK shutdown (133.673357ms)
52
+ ✔ forced SDK shutdown cannot claim successful settlement of native managed ranges (701.724175ms)
53
+ ✔ doctor exercises runtime and permission handshake but never prompts a model (52.781087ms)
54
+ ✔ overlay pins real native confinement and disables model-owned delegation and auxiliary model calls (0.256293ms)
55
+ ℹ tests 38
56
+ ℹ suites 0
57
+ ℹ pass 38
58
+ ℹ fail 0
59
+ ℹ cancelled 0
60
+ ℹ skipped 0
61
+ ℹ todo 0
62
+ ℹ duration_ms 36620.878001