@hassangameryt/freeflow 0.5.0 → 0.7.0

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 (301) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codex-plugin/plugin.json +4 -5
  4. package/README.md +141 -163
  5. package/capabilities/cognitive-routing/SKILL.md +387 -0
  6. package/capabilities/context-virtualization/SKILL.md +103 -0
  7. package/capabilities/conversation-history/SKILL.md +53 -0
  8. package/command-surface.json +6 -37
  9. package/hooks/freeflow-runtime-context.mjs +50 -541
  10. package/hooks/hooks.json +1 -26
  11. package/hooks/tests/check-runtime-context-hook.sh +114 -308
  12. package/package.json +27 -17
  13. package/pi-extension/dist/cognitive-routing/commands.js +96 -0
  14. package/pi-extension/dist/cognitive-routing/config.js +232 -0
  15. package/pi-extension/dist/cognitive-routing/controller.js +1292 -0
  16. package/pi-extension/dist/cognitive-routing/history.js +451 -0
  17. package/pi-extension/dist/cognitive-routing/host.js +188 -0
  18. package/pi-extension/dist/cognitive-routing/pi-routing-session.js +414 -0
  19. package/pi-extension/dist/cognitive-routing/pi-session-control.js +320 -0
  20. package/pi-extension/dist/cognitive-routing/runtime.js +43 -0
  21. package/pi-extension/dist/cognitive-routing/tool.js +212 -0
  22. package/pi-extension/dist/cognitive-routing/types.js +6 -0
  23. package/pi-extension/dist/context-virtualization/commands.js +89 -0
  24. package/pi-extension/dist/context-virtualization/projector.js +42 -0
  25. package/pi-extension/dist/context-virtualization/runtime.js +356 -0
  26. package/pi-extension/dist/context-virtualization/state.js +57 -0
  27. package/pi-extension/dist/context-virtualization/types.js +10 -0
  28. package/pi-extension/dist/conversation-history/passages.js +66 -0
  29. package/pi-extension/dist/conversation-history/ranking.js +105 -0
  30. package/pi-extension/dist/conversation-history/runtime.js +226 -0
  31. package/pi-extension/dist/conversation-history/search.js +56 -0
  32. package/pi-extension/dist/conversation-history/types.js +1 -0
  33. package/pi-extension/dist/freeflow-context/resolver.js +120 -0
  34. package/pi-extension/dist/freeflow-context/runtime.js +80 -0
  35. package/pi-extension/dist/freeflow-context/source-projector.js +95 -0
  36. package/pi-extension/dist/freeflow-context/tool.js +308 -0
  37. package/pi-extension/dist/freeflow-context/types.js +12 -0
  38. package/pi-extension/dist/freeflow-context/visibility.js +28 -0
  39. package/pi-extension/dist/index.js +564 -129
  40. package/pi-extension/dist/runtime/runtime-context.js +357 -470
  41. package/pi-extension/dist/runtime/runtime-identity.js +5 -0
  42. package/pi-extension/dist/settings/settings-tui.js +78 -0
  43. package/pi-extension/dist/settings/settings-ui.js +572 -826
  44. package/pi-extension/dist/ui/text-component.js +57 -0
  45. package/pi-extension/src/cognitive-routing/commands.ts +129 -0
  46. package/pi-extension/src/cognitive-routing/config.ts +303 -0
  47. package/pi-extension/src/cognitive-routing/controller.ts +1628 -0
  48. package/pi-extension/src/cognitive-routing/history.ts +650 -0
  49. package/pi-extension/src/cognitive-routing/host.ts +266 -0
  50. package/pi-extension/src/cognitive-routing/pi-routing-session.ts +538 -0
  51. package/pi-extension/src/cognitive-routing/pi-session-control.ts +444 -0
  52. package/pi-extension/src/cognitive-routing/runtime.ts +57 -0
  53. package/pi-extension/src/cognitive-routing/tool.ts +273 -0
  54. package/pi-extension/src/cognitive-routing/types.ts +89 -0
  55. package/pi-extension/src/context-virtualization/commands.ts +111 -0
  56. package/pi-extension/src/context-virtualization/projector.ts +62 -0
  57. package/pi-extension/src/context-virtualization/runtime.ts +406 -0
  58. package/pi-extension/src/context-virtualization/state.ts +79 -0
  59. package/pi-extension/src/context-virtualization/types.ts +92 -0
  60. package/pi-extension/src/conversation-history/passages.ts +81 -0
  61. package/pi-extension/src/conversation-history/ranking.ts +155 -0
  62. package/pi-extension/src/conversation-history/runtime.ts +250 -0
  63. package/pi-extension/src/conversation-history/search.ts +79 -0
  64. package/pi-extension/src/conversation-history/types.ts +31 -0
  65. package/pi-extension/src/freeflow-context/resolver.ts +139 -0
  66. package/pi-extension/src/freeflow-context/runtime.ts +100 -0
  67. package/pi-extension/src/freeflow-context/source-projector.ts +106 -0
  68. package/pi-extension/src/freeflow-context/tool.ts +360 -0
  69. package/pi-extension/src/freeflow-context/types.ts +70 -0
  70. package/pi-extension/src/freeflow-context/visibility.ts +53 -0
  71. package/pi-extension/src/index.ts +597 -135
  72. package/pi-extension/src/runtime/runtime-context.ts +373 -491
  73. package/pi-extension/src/runtime/runtime-identity.ts +8 -0
  74. package/pi-extension/src/settings/settings-tui.ts +93 -0
  75. package/pi-extension/src/settings/settings-ui.ts +679 -910
  76. package/pi-extension/src/ui/text-component.ts +66 -0
  77. package/pi-extension/tests/cognitive-routing/commands.test.js +134 -0
  78. package/pi-extension/tests/cognitive-routing/controller.test.js +1128 -0
  79. package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +1142 -0
  80. package/pi-extension/tests/cognitive-routing/history.test.js +274 -0
  81. package/pi-extension/tests/cognitive-routing/host-fixture.js +4 -0
  82. package/pi-extension/tests/cognitive-routing/host-identity.test.js +63 -0
  83. package/pi-extension/tests/cognitive-routing/pi-normal-lifecycle.test.js +434 -0
  84. package/pi-extension/tests/cognitive-routing/pi-session-control.test.js +174 -0
  85. package/pi-extension/tests/cognitive-routing/pi-session-history.test.js +91 -0
  86. package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +279 -0
  87. package/pi-extension/tests/cognitive-routing/tool.test.js +230 -0
  88. package/pi-extension/tests/context-virtualization/extension.test.js +749 -0
  89. package/pi-extension/tests/context-virtualization/projector.test.js +110 -0
  90. package/pi-extension/tests/context-virtualization/runtime.test.js +216 -0
  91. package/pi-extension/tests/conversation-history/runtime.test.js +98 -0
  92. package/pi-extension/tests/conversation-history/search.test.js +97 -0
  93. package/pi-extension/tests/integration/mode-free-core.test.js +218 -0
  94. package/pi-extension/tests/integration/pi-extension.test.js +532 -3701
  95. package/pi-extension/tests/integration/prompt-architecture.test.js +350 -0
  96. package/pi-extension/tests/integration/unaffected-regressions.test.js +411 -0
  97. package/runtime/prompts/cognitive-routing.md +10 -0
  98. package/runtime/prompts/context-virtualization.md +3 -0
  99. package/runtime/prompts/conversation-history.md +3 -0
  100. package/runtime/prompts/core.md +84 -0
  101. package/runtime/prompts/interaction-contract.md +11 -0
  102. package/skills/action-selection/SKILL.md +140 -0
  103. package/skills/action-selection/references/trajectory-stalls.md +71 -0
  104. package/skills/bypass/SKILL.md +109 -38
  105. package/skills/commit-work/SKILL.md +94 -55
  106. package/skills/commit-work/references/git-state-edges.md +94 -0
  107. package/skills/commit-work/references/simple-push.md +92 -0
  108. package/skills/commit-work/references/staging-decisions.md +79 -46
  109. package/skills/decision-gate/SKILL.md +80 -22
  110. package/skills/design-for-depth/SKILL.md +206 -60
  111. package/skills/design-for-depth/references/design-pressure-signals.md +108 -240
  112. package/skills/design-for-depth/references/interface-design-loop.md +77 -97
  113. package/skills/design-for-depth/references/module-and-dependency-design.md +147 -0
  114. package/skills/design-for-depth/references/software-design-philosophy.md +128 -174
  115. package/skills/design-for-depth/references/state-and-failure-boundaries.md +136 -0
  116. package/skills/diagnose-failure/SKILL.md +200 -48
  117. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +18 -6
  118. package/skills/diagnose-failure/references/{flaky-and-performance.md → flaky-and-performance-diagnosis.md} +13 -5
  119. package/skills/discuss/SKILL.md +119 -65
  120. package/skills/discuss/references/discussion-continuity.md +123 -0
  121. package/skills/evaluate-skill/SKILL.md +166 -52
  122. package/skills/evaluate-skill/references/{definition-schema.md → evaluation-definition-schema.md} +43 -3
  123. package/skills/evaluate-skill/references/evaluation-design.md +56 -30
  124. package/skills/evaluate-skill/references/execution-and-evidence.md +8 -3
  125. package/skills/evaluate-skill/references/review-and-revision.md +62 -21
  126. package/skills/evaluate-skill/scripts/lib/definitions.mjs +114 -3
  127. package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +156 -1
  128. package/skills/evaluate-skill/scripts/lib/grade.mjs +9 -1
  129. package/skills/evaluate-skill/scripts/lib/pi.mjs +147 -32
  130. package/skills/evaluate-skill/scripts/lib/rpc.mjs +4 -4
  131. package/skills/evaluate-skill/scripts/lib/runner.mjs +36 -14
  132. package/skills/evaluate-skill/scripts/lib/sandbox.mjs +92 -0
  133. package/skills/evaluate-skill/scripts/pi-guard.mjs +1 -1
  134. package/skills/evaluate-skill/scripts/pi-observer.mjs +66 -0
  135. package/skills/evaluate-skill/scripts/skill-eval.mjs +6 -5
  136. package/skills/execute-work/SKILL.md +99 -57
  137. package/skills/execute-work/references/code-practices.md +4 -4
  138. package/skills/execute-work/references/execute-work-edges.md +62 -0
  139. package/skills/finish-branch/SKILL.md +2 -2
  140. package/skills/finish-branch/references/integration-options.md +1 -1
  141. package/skills/handoff/SKILL.md +3 -3
  142. package/skills/launch-work/SKILL.md +1 -1
  143. package/skills/launch-work/references/launch-readiness.md +2 -2
  144. package/skills/migration-work/SKILL.md +2 -2
  145. package/skills/migration-work/references/migration-lifecycle.md +1 -1
  146. package/skills/release-work/SKILL.md +1 -1
  147. package/skills/release-work/references/release-evidence.md +1 -1
  148. package/skills/review-artifact/SKILL.md +129 -66
  149. package/skills/review-artifact/references/adjudicate-artifact-review.md +101 -0
  150. package/skills/review-artifact/references/independent-artifact-reviewer-contract.md +159 -0
  151. package/skills/review-work/SKILL.md +113 -68
  152. package/skills/review-work/references/adjudicate-work-review.md +97 -0
  153. package/skills/review-work/references/independent-work-reviewer-contract.md +139 -0
  154. package/skills/review-work/references/security-risk-lens.md +18 -16
  155. package/skills/setup-freeflow/SKILL.md +16 -17
  156. package/skills/setup-freeflow/references/activation-contract.md +24 -30
  157. package/skills/setup-freeflow/references/host-setup.md +6 -7
  158. package/skills/simplify-code/SKILL.md +97 -39
  159. package/skills/simplify-code/references/simplification-patterns.md +1 -1
  160. package/skills/tdd/SKILL.md +100 -53
  161. package/skills/tdd/references/test-design.md +3 -3
  162. package/skills/track-work/SKILL.md +195 -58
  163. package/skills/track-work/references/working-record-format.md +515 -0
  164. package/skills/track-work/scripts/lib/document.mjs +713 -0
  165. package/skills/track-work/scripts/lib/format.mjs +166 -0
  166. package/skills/track-work/scripts/lib/store.mjs +233 -0
  167. package/skills/track-work/scripts/lib/transitions.mjs +790 -0
  168. package/skills/track-work/scripts/lib/views.mjs +40 -0
  169. package/skills/track-work/scripts/working-record.mjs +316 -0
  170. package/skills/verify-work/SKILL.md +57 -19
  171. package/skills/verify-work/references/browser-runtime-evidence.md +2 -2
  172. package/skills/verify-work/references/integration-evidence.md +1 -7
  173. package/skills/verify-work/references/performance-evidence.md +2 -2
  174. package/skills/workflow/SKILL.md +137 -55
  175. package/skills/workflow/references/domain-skill-composition.md +26 -40
  176. package/skills/write-plan/SKILL.md +1 -1
  177. package/skills/write-skill/SKILL.md +218 -61
  178. package/skills/write-skill/references/activation-boundaries.md +63 -21
  179. package/skills/write-skill/references/agent-first-instructions.md +61 -27
  180. package/skills/write-skill/references/progressive-disclosure.md +97 -33
  181. package/skills/write-skill/references/skill-dependency-graphs.md +190 -0
  182. package/capabilities/output-router/SKILL.md +0 -206
  183. package/capabilities/output-router/references/safety-policy.md +0 -40
  184. package/capabilities/output-router/references/setup.md +0 -110
  185. package/pi-extension/dist/output-router/host-producer-identification.js +0 -232
  186. package/pi-extension/dist/output-router/native-safety-net.js +0 -216
  187. package/pi-extension/dist/output-router/observed-tool-routing.js +0 -122
  188. package/pi-extension/dist/output-router/renderers.js +0 -1023
  189. package/pi-extension/dist/output-router/router-tools.js +0 -554
  190. package/pi-extension/dist/output-router/schemas.js +0 -383
  191. package/pi-extension/dist/output-router/status.js +0 -744
  192. package/pi-extension/dist/output-router/utils.js +0 -502
  193. package/pi-extension/src/output-router/host-producer-identification.ts +0 -256
  194. package/pi-extension/src/output-router/native-safety-net.ts +0 -248
  195. package/pi-extension/src/output-router/observed-tool-routing.ts +0 -134
  196. package/pi-extension/src/output-router/renderers.ts +0 -1108
  197. package/pi-extension/src/output-router/router-tools.ts +0 -579
  198. package/pi-extension/src/output-router/schemas.ts +0 -387
  199. package/pi-extension/src/output-router/status.ts +0 -791
  200. package/pi-extension/src/output-router/utils.ts +0 -554
  201. package/pi-extension/tests/output-router/observed-producers.test.js +0 -132
  202. package/pi-extension/tests/output-router/search.test.js +0 -722
  203. package/router/dist/benchmarks/benchmark-harness.d.ts +0 -35
  204. package/router/dist/benchmarks/benchmark-harness.js +0 -92
  205. package/router/dist/benchmarks/benchmarks.d.ts +0 -109
  206. package/router/dist/benchmarks/benchmarks.js +0 -979
  207. package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +0 -95
  208. package/router/dist/benchmarks/codex-qa-benchmarks.js +0 -500
  209. package/router/dist/benchmarks/command-benchmarks.d.ts +0 -143
  210. package/router/dist/benchmarks/command-benchmarks.js +0 -698
  211. package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +0 -82
  212. package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +0 -773
  213. package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +0 -132
  214. package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +0 -1380
  215. package/router/dist/benchmarks/context-saving-baseline.d.ts +0 -60
  216. package/router/dist/benchmarks/context-saving-baseline.js +0 -470
  217. package/router/dist/benchmarks/index-benchmarks.d.ts +0 -103
  218. package/router/dist/benchmarks/index-benchmarks.js +0 -862
  219. package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +0 -101
  220. package/router/dist/benchmarks/storage-policy-benchmarks.js +0 -618
  221. package/router/dist/benchmarks/vault-index-benchmarks.d.ts +0 -56
  222. package/router/dist/benchmarks/vault-index-benchmarks.js +0 -322
  223. package/router/dist/config/config.d.ts +0 -103
  224. package/router/dist/config/config.js +0 -632
  225. package/router/dist/config/router-contract.d.ts +0 -10
  226. package/router/dist/config/router-contract.js +0 -54
  227. package/router/dist/config/schema.d.ts +0 -27
  228. package/router/dist/config/schema.js +0 -648
  229. package/router/dist/config/types.d.ts +0 -573
  230. package/router/dist/config/types.js +0 -41
  231. package/router/dist/evidence/bounded-evidence.d.ts +0 -40
  232. package/router/dist/evidence/bounded-evidence.js +0 -323
  233. package/router/dist/evidence/evidence-range-selector.d.ts +0 -24
  234. package/router/dist/evidence/evidence-range-selector.js +0 -232
  235. package/router/dist/evidence/evidence-search.d.ts +0 -27
  236. package/router/dist/evidence/evidence-search.js +0 -490
  237. package/router/dist/evidence/evidence.d.ts +0 -38
  238. package/router/dist/evidence/evidence.js +0 -200
  239. package/router/dist/evidence/failure-contracts.d.ts +0 -37
  240. package/router/dist/evidence/failure-contracts.js +0 -166
  241. package/router/dist/evidence/line-ranges.d.ts +0 -24
  242. package/router/dist/evidence/line-ranges.js +0 -22
  243. package/router/dist/experiments/local-index.d.ts +0 -64
  244. package/router/dist/experiments/local-index.js +0 -581
  245. package/router/dist/index.d.ts +0 -30
  246. package/router/dist/index.js +0 -32
  247. package/router/dist/local/local-traversal.d.ts +0 -18
  248. package/router/dist/local/local-traversal.js +0 -334
  249. package/router/dist/processing/engine.d.ts +0 -132
  250. package/router/dist/processing/engine.js +0 -533
  251. package/router/dist/processing/reducers.d.ts +0 -280
  252. package/router/dist/processing/reducers.js +0 -1673
  253. package/router/dist/processing/renderers.d.ts +0 -31
  254. package/router/dist/processing/renderers.js +0 -195
  255. package/router/dist/processing/scripts.d.ts +0 -91
  256. package/router/dist/processing/scripts.js +0 -386
  257. package/router/dist/repo/repo-traversal.d.ts +0 -18
  258. package/router/dist/repo/repo-traversal.js +0 -245
  259. package/router/dist/routing/observed-reducers.d.ts +0 -41
  260. package/router/dist/routing/observed-reducers.js +0 -661
  261. package/router/dist/routing/observed-routing.d.ts +0 -26
  262. package/router/dist/routing/observed-routing.js +0 -378
  263. package/router/dist/routing/parsers.d.ts +0 -16
  264. package/router/dist/routing/parsers.js +0 -521
  265. package/router/dist/routing/run-filters.d.ts +0 -60
  266. package/router/dist/routing/run-filters.js +0 -238
  267. package/router/dist/routing/run-reducers.d.ts +0 -49
  268. package/router/dist/routing/run-reducers.js +0 -122
  269. package/router/dist/sandbox/adapter-roots.d.ts +0 -46
  270. package/router/dist/sandbox/adapter-roots.js +0 -66
  271. package/router/dist/sandbox/eryx-python-adapter.d.ts +0 -13
  272. package/router/dist/sandbox/eryx-python-adapter.js +0 -868
  273. package/router/dist/sandbox/jq-wasm-adapter.d.ts +0 -9
  274. package/router/dist/sandbox/jq-wasm-adapter.js +0 -429
  275. package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +0 -13
  276. package/router/dist/sandbox/quickjs-wasi-adapter.js +0 -384
  277. package/router/dist/sandbox/script-sandbox.d.ts +0 -134
  278. package/router/dist/sandbox/script-sandbox.js +0 -337
  279. package/router/dist/setup/script-transform-adapters.d.ts +0 -32
  280. package/router/dist/setup/script-transform-adapters.js +0 -278
  281. package/router/dist/tools/batch.d.ts +0 -33
  282. package/router/dist/tools/batch.js +0 -586
  283. package/router/dist/tools/run.d.ts +0 -62
  284. package/router/dist/tools/run.js +0 -1304
  285. package/router/dist/tools/search.d.ts +0 -66
  286. package/router/dist/tools/search.js +0 -1364
  287. package/router/dist/transform/engine.d.ts +0 -168
  288. package/router/dist/transform/engine.js +0 -2072
  289. package/router/dist/vault/vault-index.d.ts +0 -125
  290. package/router/dist/vault/vault-index.js +0 -416
  291. package/router/dist/vault/vault.d.ts +0 -138
  292. package/router/dist/vault/vault.js +0 -630
  293. package/runtime/interaction-contract.md +0 -16
  294. package/skills/discuss/references/checkpoints.md +0 -66
  295. package/skills/execute-work/references/execution-loop.md +0 -77
  296. package/skills/mode-contract/SKILL.md +0 -104
  297. package/skills/review-artifact/references/reviewer-prompt.md +0 -148
  298. package/skills/review-work/references/reviewer-prompt.md +0 -134
  299. package/skills/track-work/references/working-record-schema.md +0 -378
  300. package/skills/workflow/references/workflow-loop.md +0 -92
  301. /package/skills/handoff/references/{templates.md → handoff-templates.md} +0 -0
@@ -0,0 +1,92 @@
1
+ # Simple Push
2
+
3
+ Read this before performing any push through Commit Work.
4
+
5
+ A **simple push** sends inspected local commits from the current named branch to one explicit or established remote branch without force, deletion, tag publication, integration, pull-request creation, release, or deployment.
6
+
7
+ Use [Finish Branch](../../finish-branch/SKILL.md) when the route requires choosing how to integrate, share, preserve, rewrite, or clean up branch state.
8
+
9
+ ## Confirm Push Authority
10
+
11
+ Push requires authority separate from local commit.
12
+
13
+ Confirm:
14
+
15
+ - which commits are intended;
16
+ - the local branch;
17
+ - the destination remote and branch;
18
+ - whether setting a new upstream is included;
19
+ - that no force, deletion, tag, or history rewrite is implied.
20
+
21
+ Do not infer a remote, destination branch, pull-request target, or shared-branch policy when the wrong choice could affect collaborators.
22
+
23
+ ## Inspect The Route
24
+
25
+ Inspect:
26
+
27
+ ```bash
28
+ git branch --show-current
29
+ git status --short --branch
30
+ git branch -vv
31
+ git remote -v
32
+ git log -1 --oneline --decorate
33
+ ```
34
+
35
+ When an upstream exists, inspect:
36
+
37
+ ```bash
38
+ git rev-parse --abbrev-ref --symbolic-full-name @{upstream}
39
+ git rev-list --left-right --count @{upstream}...HEAD
40
+ ```
41
+
42
+ Ahead/behind state is only as fresh as the local remote-tracking reference. Do not claim current remote state unless it was freshly observed.
43
+
44
+ Stop before pushing when:
45
+
46
+ - `HEAD` is detached;
47
+ - destination or upstream is unclear;
48
+ - unexpected commits or dirty state change the route;
49
+ - protected or shared-branch policy disallows the push or leaves its route unclear;
50
+ - local and observed upstream history diverge;
51
+ - the push would require force, deletion, tag publication, or another separately controlled action.
52
+
53
+ ## Push The Exact Branch
54
+
55
+ Use the established upstream when it clearly matches the approved route.
56
+
57
+ When no upstream exists, set one only when the remote and branch destination are explicit and the configuration change is included in the accepted route.
58
+
59
+ Do not push additional branches or tags.
60
+
61
+ A force push is not a simple push. Return an explicitly requested history rewrite to Workflow or Finish Branch.
62
+
63
+ ## Handle Rejection Without Escalation
64
+
65
+ If the push is rejected or fails:
66
+
67
+ - preserve the complete result;
68
+ - do not automatically pull, merge, rebase, force, change remotes, or change destination;
69
+ - inspect whether any remote update occurred;
70
+ - return authentication, divergence, policy, or destination decisions to [Workflow](../../workflow/SKILL.md) or Finish Branch.
71
+
72
+ A failed push does not invalidate the local commit.
73
+
74
+ ## Verify And Report
75
+
76
+ After a successful push, inspect:
77
+
78
+ ```bash
79
+ git status --short --branch
80
+ git branch -vv
81
+ ```
82
+
83
+ Report:
84
+
85
+ - pushed commit range;
86
+ - remote and destination branch;
87
+ - whether an upstream was created or changed;
88
+ - command result and strongest observed remote-state evidence;
89
+ - remaining unpushed commits or dirty state;
90
+ - CI, review, integration, release, or deployment work not established by the push.
91
+
92
+ A successful push proves transfer to the observed destination. It does not prove pull-request creation, merge, release, deployment, or remote CI success.
@@ -1,73 +1,106 @@
1
1
  # Staging Decisions
2
2
 
3
- Use this when staged state is mixed, generated files or durable docs appear, broad commit/push language conflicts with the diff, or producing a narrow checkpoint may touch user-owned work.
3
+ Read this when staged, unstaged, or untracked changes have mixed ownership or concerns; a path contains both included and excluded work; existing staged ownership is uncertain; generated, durable, sensitive, or suspicious files appear; or narrowing may require changing existing staged state.
4
4
 
5
- ## Evidence First
5
+ This reference determines what may enter the checkpoint. It does not establish commit authority, verification, review readiness, or permission to alter user-owned work.
6
6
 
7
- Inspect:
7
+ ## Classify The Changed Units
8
8
 
9
- - `git status --short`
10
- - `git diff --cached`
11
- - `git diff`
12
- - `git ls-files --others --exclude-standard`
9
+ Classify at the path level only when the whole path has one role. Otherwise classify individual hunks.
13
10
 
14
- Diff evidence beats “staged means ready,” “commit everything,” “push all changes,” and “include every leftover.”
11
+ - **Checkpoint content:** directly implements or proves the checkpoint claim.
12
+ - **Required companion:** tests, documentation, schema, metadata, or generated output required for that same claim.
13
+ - **Related but separable:** useful work that does not need to be preserved in this checkpoint.
14
+ - **Unrelated or user-owned:** work outside the accepted outcome or whose ownership is not established.
15
+ - **Sensitive or unsafe:** secrets, credentials, personal data, environment files, debug output, destructive state, or unexplained artifacts.
16
+ - **Unclear:** content whose purpose, generator, ownership, or evidence relationship is not yet supported.
15
17
 
16
- ## Classify Paths
18
+ Only checkpoint content and required companions belong.
17
19
 
18
- For each changed path, classify:
20
+ A broad request such as "commit everything" may authorize broad inclusion, but it does not remove the obligation to inspect unsafe, unclear, or unexpectedly unrelated content.
19
21
 
20
- - **Checkpoint:** directly implements or proves the intended slice.
21
- - **Required generated output:** repo convention or task requires it and its generator is known.
22
- - **Durable artifact:** Spec, policy, ADR, or Plan that belongs to the same accepted checkpoint while retaining its own authority and lifecycle.
23
- - **Durable continuation memory:** Working Record or Handoff describing the same checkpoint without becoming authority over live evidence.
24
- - **Related but separable:** useful work that should remain outside this checkpoint.
25
- - **Unrelated or user-owned:** not part of the current outcome.
26
- - **Sensitive or unsafe:** secrets, private data, debug output, destructive state, or unclear generated content.
22
+ ## Protect Existing Staged State
27
23
 
28
- Do not infer ownership from staging state.
24
+ Existing staged changes may belong to another workflow.
29
25
 
30
- ## Narrow Checkpoint
26
+ Inspect them, but do not infer that they are intended merely because they are staged. Do not silently:
31
27
 
32
- A narrow commit is safe when:
28
+ - absorb them into the checkpoint;
29
+ - unstage or reset them;
30
+ - amend them into another commit;
31
+ - move them through a stash or temporary commit;
32
+ - replace the index or use index tricks to bypass ownership ambiguity.
33
33
 
34
- - an explicit request, user-approved Plan, or explicitly approved discussion authorizes the local checkpoint;
35
- - its outcome and source requirement are clear;
36
- - every included path belongs to that outcome;
37
- - verification supports the claim represented by the commit;
38
- - selected review status is known and [Workflow](../../workflow/SKILL.md) supports the checkpoint route;
39
- - excluded changes can remain untouched without loss;
40
- - the final report names remaining dirty state.
34
+ When intended and pre-existing staged work cannot be separated without manipulating ambiguous state, present the smallest safe options and ask which checkpoint the user wants.
41
35
 
42
- Plan approval does not prove that every current path belongs. Stage explicit paths or hunks. If narrowing requires unstaging, rearranging, regenerating, or modifying user-owned work, stop unless the user or repo workflow already authorized that operation.
36
+ ## Handle Partial Files Carefully
43
37
 
44
- ## Mixed Concerns
38
+ A file may contain both checkpoint and excluded hunks. Stage only the intended hunks when their behavior and evidence remain independently coherent.
45
39
 
46
- Separate changes when combining them harms review, diagnosis, or rollback, especially:
40
+ Stop when:
47
41
 
48
- - behavior plus unrelated refactoring;
49
- - source code plus local debug output;
50
- - generated artifacts plus unexplained hand edits;
51
- - durable source-truth changes plus implementation that has not been confirmed;
52
- - security, privacy, billing, permissions, migration, data-loss, compatibility, or public API behavior plus unrelated work;
53
- - learning-slice evidence plus production changes that have not passed promotion criteria.
42
+ - included and excluded hunks depend on each other;
43
+ - partial staging would produce an invalid intermediate state;
44
+ - verification ran against the combined working tree and excluded changes may have affected the result;
45
+ - the staged version differs materially from the state that was reviewed or verified.
54
46
 
55
- A single coherent behavior with its tests and matching docs may belong together.
47
+ Do not claim an isolated staged checkpoint is supported merely because the combined dirty worktree passed.
56
48
 
57
- ## Generated Files
49
+ ## Include Generated Files Deliberately
58
50
 
59
- Commit generated files, snapshots, lockfiles, build outputs, or formatter changes only when the task or repo convention makes them part of the checkpoint.
51
+ Include generated files, snapshots, lockfiles, formatter output, or build artifacts only when repository convention or the accepted outcome requires them.
60
52
 
61
- Name the generator or command that produced required output. Do not hand-edit generated files unless the repo explicitly expects it.
53
+ Establish:
62
54
 
63
- ## Durable Artifacts
55
+ - which command or generator produced them;
56
+ - whether their changes are expected from the accepted source change;
57
+ - whether they are deterministic enough to review;
58
+ - whether hand edits are prohibited;
59
+ - whether their verification belongs to the checkpoint evidence.
64
60
 
65
- Specs, policies, and ADRs may govern behavior. Plans preserve approved strategy; Working Records and Handoffs preserve memory. Include any of them with code only when they belong to the same coherent checkpoint and their own maintenance rules support the change.
61
+ Do not include generated output merely because it changed. Do not hand-edit it unless the repository explicitly expects that workflow.
66
62
 
67
- Do not revise a durable artifact merely to make the commit appear coherent. Return a material inconsistency to [Workflow](../../workflow/SKILL.md); use [Decision Gate](../../decision-gate/SKILL.md) when one user-owned choice or source conflict blocks the checkpoint.
63
+ ## Preserve Durable Artifacts Honestly
68
64
 
69
- ## Existing Staged State
65
+ A Spec, Plan, ADR, policy, public documentation file, or release artifact may have authority and maintenance rules independent of implementation.
70
66
 
71
- Existing staged changes may belong to another workflow. Inspect them, but do not silently unstage, amend, discard, or absorb them.
67
+ Include it only when:
72
68
 
73
- When ownership remains ambiguous, present the smallest safe staging options and ask which checkpoint the user wants.
69
+ - its change is explicitly covered;
70
+ - it belongs to the same coherent checkpoint;
71
+ - it describes the same accepted behavior;
72
+ - its own maintenance policy permits the update.
73
+
74
+ Do not edit a durable artifact merely to make implementation appear coherent. Return contradictions to [Workflow](../../workflow/SKILL.md).
75
+
76
+ Working Records under `.freeflow/tasks/**` are ignored local memory and must never be staged or committed.
77
+
78
+ ## Reject Sensitive Or Suspicious Content
79
+
80
+ Stop before staging:
81
+
82
+ - secrets, tokens, credentials, private keys, or local environment files;
83
+ - databases, dumps, recordings, or personal data;
84
+ - unexplained binaries or generated archives;
85
+ - logs, traces, screenshots, or debug output not explicitly required;
86
+ - destructive state or files whose inclusion could expose or lose user data.
87
+
88
+ Do not "clean up" suspicious files by deleting or discarding them. Preserve their state and report the exact paths.
89
+
90
+ ## Verify The Candidate
91
+
92
+ After staging, compare all three states:
93
+
94
+ ```bash
95
+ git diff --cached
96
+ git diff
97
+ git status --short --branch
98
+ ```
99
+
100
+ The checkpoint is narrow only when:
101
+
102
+ - the index contains exactly the intended checkpoint;
103
+ - excluded work remains untouched;
104
+ - remaining dirty state is understood;
105
+ - verification still supports the staged version rather than only the combined worktree;
106
+ - the final report can name everything left behind.
@@ -1,48 +1,106 @@
1
1
  ---
2
- name: decision-gate
3
- description: Use when proceeding would silently choose for the user, conflict with existing code, tests, docs, or requirements, or take a materially different path from what was requested or agreed.
2
+ name: "decision-gate"
3
+ description: "Use when proceeding would silently choose a consequential outcome for the user, or when accepted sources conflict in a way that leaves one material choice blocking the next action."
4
4
  ---
5
5
 
6
6
  # Decision Gate
7
7
 
8
- Stop before making a decision that belongs to the user or quietly changing the agreed path.
8
+ Resolve one known blocking decision without making it for the user.
9
9
 
10
- The [Interaction Contract](../../runtime/interaction-contract.md) governs whether the user is asking, proposing, reasoning, or authorizing action. Decision Gate begins only after one blocking choice or conflict is clear. When the problem or alternatives still need broader exploration, read [Discuss](../discuss/SKILL.md) instead.
10
+ A **blocking decision** is a choice whose realistic answers materially change the accepted outcome, scope, behavior, risk, persistence, compatibility, evidence boundary, or next safe action.
11
11
 
12
- ## Stop Here
12
+ Decision Gate is not general discussion, factual investigation, or an approval checkpoint for routine work. It begins only when one blocking choice or source conflict is clear enough to resolve with one direct question.
13
13
 
14
- Use the gate when:
14
+ The [Interaction Contract](../../runtime/prompts/interaction-contract.md) governs whether the user is asking, proposing, deciding, or authorizing action. [Workflow](../workflow/SKILL.md) owns authority and routing.
15
15
 
16
- - the user must choose product behavior, scope, priorities, public interfaces, compatibility, permissions, security, privacy, billing, data-loss behavior, migration direction, or another hard-to-reverse outcome;
17
- - the request conflicts with existing code, tests, docs, policies, requirements, or established behavior;
18
- - the proposed action would materially change what was requested or agreed, including its evidence quality, risk, cost, persistence, or user-visible result;
19
- - new evidence exposes one known user choice or source conflict that must be resolved before proceeding.
16
+ ## Enter With One Decision
20
17
 
21
- Do not use the gate for facts that can be inspected, harmless local choices, or reversible implementation details that preserve the accepted outcome.
18
+ Use Decision Gate only when:
22
19
 
23
- ## Inspect Before Asking
20
+ - the requested or accepted path is known;
21
+ - one unresolved choice or material source conflict can be stated precisely;
22
+ - available evidence and established source precedence do not already settle it;
23
+ - different realistic answers would materially change what follows;
24
+ - proceeding would silently decide for the user or override accepted source truth.
24
25
 
25
- Inspect code, tests, docs, policies, logs, repository state, or current external sources when they can answer the factual part of the problem.
26
+ Do not use Decision Gate for:
26
27
 
27
- Ask the user only for a choice that remains theirs. If you cannot state the decision and meaningful alternatives clearly, the option space is not ready for a gate; use Discuss.
28
+ - facts available through focused passive inspection;
29
+ - reversible implementation details that preserve the accepted outcome;
30
+ - ordinary authorization for one clear additional action;
31
+ - preferences that do not affect the result or its acceptance;
32
+ - hypothetical edge cases without supported reachability or consequence;
33
+ - broad or unsettled option spaces that still require exploration.
34
+
35
+ Use [Discuss](../discuss/SKILL.md) when the problem, alternatives, assumptions, or direction are not yet bounded enough for one decision.
36
+
37
+ When several decisions appear, ask only the earliest one whose answer determines whether the others remain relevant. Do not turn the gate into an interview.
38
+
39
+ ## Resolve Facts Before Asking
40
+
41
+ Inspect the smallest existing evidence that can settle the factual part: the current request, accepted decisions, code, tests, documentation, Specs, policies, ADRs, repository state, supplied artifacts, and current primary sources when relevant.
42
+
43
+ Do not ask the user to choose between factual claims whose truth can be established from available evidence.
44
+
45
+ When accepted sources appear to conflict:
46
+
47
+ 1. state each source's exact claim and applicable scope;
48
+ 2. determine whether each is current, accepted, draft, historical, generated, or advisory;
49
+ 3. apply repository-defined precedence or maintenance policy when one exists;
50
+ 4. identify the observable consequence of following each claim.
51
+
52
+ A difference is material only when applicable sources make incompatible claims and selecting between them changes the accepted result or next safe action.
53
+
54
+ Do not invent a universal hierarchy: code is not automatically correct because it runs, tests are not automatically requirements because they fail, documentation is not automatically stale because implementation differs, and task memory does not override live accepted source truth.
55
+
56
+ If established precedence resolves the conflict, return the supported result to Workflow without asking a decision question. Updating an inconsistent source belongs to its owning activity and requires its own authority.
57
+
58
+ If responsible framing requires new active evidence, return the exact claim, proposed observer, expected evidence, and stop condition to Workflow. Decision Gate does not run an experiment merely to make its question easier.
28
59
 
29
60
  ## Ask One Direct Question
30
61
 
31
- State:
62
+ State proportionately:
32
63
 
33
- 1. what was requested or previously agreed;
34
- 2. the conflicting evidence, missing choice, or materially different path;
64
+ 1. the requested or previously accepted path;
65
+ 2. the exact missing choice or conflicting evidence;
35
66
  3. why it changes the next action;
36
- 4. the meaningful options and tradeoffs;
67
+ 4. the realistic options and material tradeoffs;
37
68
  5. a recommendation when evidence supports one;
38
69
  6. one direct question that resolves the block.
39
70
 
71
+ Frame the choice around the outcome the user owns, not ordinary implementation mechanics. Do not ask which file to change when the real decision is which behavior or contract should govern.
72
+
73
+ Do not manufacture a menu. Omit dominated, unsafe, unavailable, or hypothetical options. A direct yes-or-no question is appropriate when one supported deviation needs a decision. Include preserving the current behavior, waiting, or stopping only when each is real.
74
+
75
+ Recommend plainly when one path is better supported. State its principal tradeoff and what evidence or changed priority would alter the recommendation. A recommendation is not the user's decision.
76
+
40
77
  Then stop. Do not perform the blocked action in the same response.
41
78
 
42
- Urgency, approval to continue, reviewer confidence, or existing practice does not resolve an unnamed decision or conflict.
79
+ Urgency, prior effort, reviewer confidence, common practice, or general approval to continue does not resolve an unnamed decision or source conflict.
80
+
81
+ ## Interpret And Return The Decision
82
+
83
+ Treat an explicit choice as resolving only the decision that was asked. A question, criticism, hypothesis, preference, conditional answer, or request for more information is not automatically a decision; respond to its substance and keep the blocked action stopped.
84
+
85
+ Route narrowly:
86
+
87
+ - explicit choice with a clear covered path → Workflow;
88
+ - answer that reopens alternatives or assumptions → Discuss;
89
+ - unresolved factual evidence → Workflow and the appropriate evidence owner;
90
+ - defer, preserve, or stop → return that outcome without forcing progress.
91
+
92
+ A resolved decision may complete the missing intent for a still-valid request. It does not authorize unrelated effects or another outcome by implication.
93
+
94
+ Return to Workflow with:
95
+
96
+ - the exact decision and who or what established it;
97
+ - the selected outcome and important exclusions;
98
+ - material consequences and affected source truth;
99
+ - remaining uncertainty or revisit condition;
100
+ - the authority state of the next action.
43
101
 
44
- ## Exit
102
+ When losing the decision or its rationale could cause later misalignment, Workflow may route [Track Work](../track-work/SKILL.md) to preserve it. Decision Gate does not mutate task memory itself.
45
103
 
46
- Exit when the choice is explicit, the conflict is resolved, and remaining uncertainty would not change the next safe action.
104
+ Do not broaden the answer, reinterpret it as approval for a different path, or continue past another separately controlled boundary.
47
105
 
48
- Preserve the decision accurately for the work that depends on it. Do not broaden the decision or treat it as approval for a different path.
106
+ Stop when one direct question has been asked and no answer exists, the answer does not resolve the material block, the appropriate decision owner is unavailable, or active evidence is required before a responsible choice can be framed. A supported wait, deferment, preservation boundary, or stop is a valid result.