create-egregore 0.19.21 → 0.19.23

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 (229) hide show
  1. package/assets/egregore-launcher.js +29 -3
  2. package/bin/cli.js +3 -4
  3. package/lib/auth.js +3 -4
  4. package/lib/path-lookup.js +59 -0
  5. package/lib/setup.js +52 -6
  6. package/package.json +2 -2
  7. package/runtime/codex/.claude/context/notification-consent.md +66 -0
  8. package/runtime/codex/.codex/hooks/branch-guard.js +14 -3
  9. package/runtime/codex/.codex/skills/add/SKILL.md +8 -4
  10. package/runtime/codex/.codex/skills/announce/SKILL.md +21 -8
  11. package/runtime/codex/.codex/skills/answer/SKILL.md +8 -4
  12. package/runtime/codex/.codex/skills/archive/SKILL.md +8 -4
  13. package/runtime/codex/.codex/skills/ask/SKILL.md +14 -6
  14. package/runtime/codex/.codex/skills/audit/SKILL.md +29 -0
  15. package/runtime/codex/.codex/skills/autosave/SKILL.md +29 -0
  16. package/runtime/codex/.codex/skills/branch/SKILL.md +8 -4
  17. package/runtime/codex/.codex/skills/checkup/SKILL.md +8 -4
  18. package/runtime/codex/.codex/skills/commit/SKILL.md +8 -4
  19. package/runtime/codex/.codex/skills/contribute/SKILL.md +8 -4
  20. package/runtime/codex/.codex/skills/dark-mode/SKILL.md +8 -4
  21. package/runtime/codex/.codex/skills/delete-user/SKILL.md +8 -4
  22. package/runtime/codex/.codex/skills/demo-mode/SKILL.md +29 -0
  23. package/runtime/codex/.codex/skills/deploy-bridge/SKILL.md +8 -4
  24. package/runtime/codex/.codex/skills/design/SKILL.md +29 -0
  25. package/runtime/codex/.codex/skills/egregore-voice/SKILL.md +8 -4
  26. package/runtime/codex/.codex/skills/emissary/SKILL.md +8 -4
  27. package/runtime/codex/.codex/skills/env/SKILL.md +8 -4
  28. package/runtime/codex/.codex/skills/handoff/SKILL.md +81 -10
  29. package/runtime/codex/.codex/skills/harvest/QUESTION_PALETTE.md +76 -0
  30. package/runtime/codex/.codex/skills/harvest/SKILL.md +30 -6
  31. package/runtime/codex/.codex/skills/ingest/SKILL.md +8 -4
  32. package/runtime/codex/.codex/skills/ingest-google/SKILL.md +8 -4
  33. package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +8 -4
  34. package/runtime/codex/.codex/skills/invite/SKILL.md +6 -2
  35. package/runtime/codex/.codex/skills/issue/SKILL.md +8 -4
  36. package/runtime/codex/.codex/skills/me/SKILL.md +8 -4
  37. package/runtime/codex/.codex/skills/meeting/SKILL.md +8 -4
  38. package/runtime/codex/.codex/skills/minion/SKILL.md +8 -4
  39. package/runtime/codex/.codex/skills/mock/SKILL.md +29 -0
  40. package/runtime/codex/.codex/skills/note/SKILL.md +8 -4
  41. package/runtime/codex/.codex/skills/onboarding/SKILL.md +8 -4
  42. package/runtime/codex/.codex/skills/pr/SKILL.md +8 -4
  43. package/runtime/codex/.codex/skills/product-voice/SKILL.md +29 -0
  44. package/runtime/codex/.codex/skills/project/SKILL.md +8 -4
  45. package/runtime/codex/.codex/skills/pull/SKILL.md +8 -4
  46. package/runtime/codex/.codex/skills/push/SKILL.md +8 -4
  47. package/runtime/codex/.codex/skills/quest/SKILL.md +6 -3
  48. package/runtime/codex/.codex/skills/quest-suggest/SKILL.md +8 -4
  49. package/runtime/codex/.codex/skills/reflect/SKILL.md +8 -4
  50. package/runtime/codex/.codex/skills/review-pr/SKILL.md +8 -4
  51. package/runtime/codex/.codex/skills/save/SKILL.md +6 -4
  52. package/runtime/codex/.codex/skills/scroll/SKILL.md +92 -23
  53. package/runtime/codex/.codex/skills/scroll/assets/shell.html +381 -52
  54. package/runtime/codex/.codex/skills/session-view/SKILL.md +8 -4
  55. package/runtime/codex/.codex/skills/setup/SKILL.md +8 -4
  56. package/runtime/codex/.codex/skills/summon/SKILL.md +8 -4
  57. package/runtime/codex/.codex/skills/sync-repos/SKILL.md +8 -4
  58. package/runtime/codex/.codex/skills/task/SKILL.md +9 -5
  59. package/runtime/codex/.codex/skills/teams-connect/SKILL.md +29 -0
  60. package/runtime/codex/.codex/skills/telegram-connect/SKILL.md +8 -4
  61. package/runtime/codex/.codex/skills/telemetry/SKILL.md +8 -4
  62. package/runtime/codex/.codex/skills/test/SKILL.md +8 -4
  63. package/runtime/codex/.codex/skills/thread/SKILL.md +8 -4
  64. package/runtime/codex/.codex/skills/todo/SKILL.md +8 -4
  65. package/runtime/codex/.codex/skills/tui-design/SKILL.md +8 -4
  66. package/runtime/codex/.codex/skills/tutorial/SKILL.md +8 -4
  67. package/runtime/codex/.codex/skills/update/SKILL.md +8 -4
  68. package/runtime/codex/.codex/skills/visual-explain/SKILL.md +8 -4
  69. package/runtime/codex/.codex/spec-manifest.json +4 -4
  70. package/runtime/codex/AGENTS.md +36 -14
  71. package/runtime/codex/bin/activity-data.sh +1 -1
  72. package/runtime/codex/bin/agent.sh +38 -19
  73. package/runtime/codex/bin/attendant.sh +8 -2
  74. package/runtime/codex/bin/autosave.sh +1 -1
  75. package/runtime/codex/bin/capture-reconcile.sh +8 -6
  76. package/runtime/codex/bin/capture-run.sh +1 -1
  77. package/runtime/codex/bin/codex-install-skills.sh +1 -1
  78. package/runtime/codex/bin/codex-render-spec.mjs +12 -5
  79. package/runtime/codex/bin/codex-session-start.sh +1 -1
  80. package/runtime/codex/bin/codex-skill-render.mjs +5 -0
  81. package/runtime/codex/bin/codex-sync-skills.sh +9 -5
  82. package/runtime/codex/bin/dashboard-data.sh +1 -1
  83. package/runtime/codex/bin/graph-batch.sh +1 -1
  84. package/runtime/codex/bin/graph-op.sh +1 -1
  85. package/runtime/codex/bin/graph-wal.sh +1 -1
  86. package/runtime/codex/bin/graph.sh +1 -1
  87. package/runtime/codex/bin/handoff-pr-backfill.sh +1 -1
  88. package/runtime/codex/bin/handoff-run.sh +117 -119
  89. package/runtime/codex/bin/handoff-save-egregore.sh +62 -32
  90. package/runtime/codex/bin/index-handoff.sh +3 -2
  91. package/runtime/codex/bin/ingest-graph.sh +1 -1
  92. package/runtime/codex/bin/ingest.sh +1 -1
  93. package/runtime/codex/bin/lib/artifact-id.sh +1 -1
  94. package/runtime/codex/bin/lib/config.sh +56 -20
  95. package/runtime/codex/bin/lib/context.sh +7 -1
  96. package/runtime/codex/bin/lib/ensure-develop.sh +1 -1
  97. package/runtime/codex/bin/lib/git-sync.sh +145 -59
  98. package/runtime/codex/bin/lib/greeting.sh +14 -0
  99. package/runtime/codex/bin/lib/hash.sh +1 -1
  100. package/runtime/codex/bin/lib/noncode.sh +1 -1
  101. package/runtime/codex/bin/lib/time.sh +1 -1
  102. package/runtime/codex/bin/notify.sh +492 -153
  103. package/runtime/codex/bin/person.sh +1 -1
  104. package/runtime/codex/bin/publish-artifact.sh +64 -8
  105. package/runtime/codex/bin/publish-references.sh +1 -1
  106. package/runtime/codex/bin/repo-state.sh +7 -10
  107. package/runtime/codex/bin/search.sh +1 -1
  108. package/runtime/codex/bin/session-autosave.sh +1 -1
  109. package/runtime/codex/bin/session-log.sh +1 -1
  110. package/runtime/codex/bin/settings.sh +32 -2
  111. package/runtime/codex/bin/telemetry.sh +1 -1
  112. package/runtime/codex/bin/worktree-create.sh +14 -4
  113. package/runtime/codex/bin/worktree-remove.sh +1 -1
  114. package/runtime/codex/bin/worktree.sh +1 -1
  115. package/runtime/codex/manifest.json +18 -1
  116. package/runtime/pi/.claude/context/notification-consent.md +66 -0
  117. package/runtime/pi/.codex/hooks/branch-guard.js +14 -3
  118. package/runtime/pi/.codex/skills/add/SKILL.md +8 -4
  119. package/runtime/pi/.codex/skills/announce/SKILL.md +21 -8
  120. package/runtime/pi/.codex/skills/answer/SKILL.md +8 -4
  121. package/runtime/pi/.codex/skills/archive/SKILL.md +8 -4
  122. package/runtime/pi/.codex/skills/ask/SKILL.md +14 -6
  123. package/runtime/pi/.codex/skills/audit/SKILL.md +29 -0
  124. package/runtime/pi/.codex/skills/autosave/SKILL.md +29 -0
  125. package/runtime/pi/.codex/skills/branch/SKILL.md +8 -4
  126. package/runtime/pi/.codex/skills/checkup/SKILL.md +8 -4
  127. package/runtime/pi/.codex/skills/commit/SKILL.md +8 -4
  128. package/runtime/pi/.codex/skills/contribute/SKILL.md +8 -4
  129. package/runtime/pi/.codex/skills/dark-mode/SKILL.md +8 -4
  130. package/runtime/pi/.codex/skills/delete-user/SKILL.md +8 -4
  131. package/runtime/pi/.codex/skills/demo-mode/SKILL.md +29 -0
  132. package/runtime/pi/.codex/skills/deploy-bridge/SKILL.md +8 -4
  133. package/runtime/pi/.codex/skills/design/SKILL.md +29 -0
  134. package/runtime/pi/.codex/skills/egregore-voice/SKILL.md +8 -4
  135. package/runtime/pi/.codex/skills/emissary/SKILL.md +8 -4
  136. package/runtime/pi/.codex/skills/env/SKILL.md +8 -4
  137. package/runtime/pi/.codex/skills/handoff/SKILL.md +81 -10
  138. package/runtime/pi/.codex/skills/harvest/QUESTION_PALETTE.md +76 -0
  139. package/runtime/pi/.codex/skills/harvest/SKILL.md +30 -6
  140. package/runtime/pi/.codex/skills/ingest/SKILL.md +8 -4
  141. package/runtime/pi/.codex/skills/ingest-google/SKILL.md +8 -4
  142. package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +8 -4
  143. package/runtime/pi/.codex/skills/invite/SKILL.md +6 -2
  144. package/runtime/pi/.codex/skills/issue/SKILL.md +8 -4
  145. package/runtime/pi/.codex/skills/me/SKILL.md +8 -4
  146. package/runtime/pi/.codex/skills/meeting/SKILL.md +8 -4
  147. package/runtime/pi/.codex/skills/minion/SKILL.md +8 -4
  148. package/runtime/pi/.codex/skills/mock/SKILL.md +29 -0
  149. package/runtime/pi/.codex/skills/note/SKILL.md +8 -4
  150. package/runtime/pi/.codex/skills/onboarding/SKILL.md +8 -4
  151. package/runtime/pi/.codex/skills/pr/SKILL.md +8 -4
  152. package/runtime/pi/.codex/skills/product-voice/SKILL.md +29 -0
  153. package/runtime/pi/.codex/skills/project/SKILL.md +8 -4
  154. package/runtime/pi/.codex/skills/pull/SKILL.md +8 -4
  155. package/runtime/pi/.codex/skills/push/SKILL.md +8 -4
  156. package/runtime/pi/.codex/skills/quest/SKILL.md +6 -3
  157. package/runtime/pi/.codex/skills/quest-suggest/SKILL.md +8 -4
  158. package/runtime/pi/.codex/skills/reflect/SKILL.md +8 -4
  159. package/runtime/pi/.codex/skills/review-pr/SKILL.md +8 -4
  160. package/runtime/pi/.codex/skills/save/SKILL.md +6 -4
  161. package/runtime/pi/.codex/skills/scroll/SKILL.md +92 -23
  162. package/runtime/pi/.codex/skills/scroll/assets/shell.html +381 -52
  163. package/runtime/pi/.codex/skills/session-view/SKILL.md +8 -4
  164. package/runtime/pi/.codex/skills/setup/SKILL.md +8 -4
  165. package/runtime/pi/.codex/skills/summon/SKILL.md +8 -4
  166. package/runtime/pi/.codex/skills/sync-repos/SKILL.md +8 -4
  167. package/runtime/pi/.codex/skills/task/SKILL.md +9 -5
  168. package/runtime/pi/.codex/skills/teams-connect/SKILL.md +29 -0
  169. package/runtime/pi/.codex/skills/telegram-connect/SKILL.md +8 -4
  170. package/runtime/pi/.codex/skills/telemetry/SKILL.md +8 -4
  171. package/runtime/pi/.codex/skills/test/SKILL.md +8 -4
  172. package/runtime/pi/.codex/skills/thread/SKILL.md +8 -4
  173. package/runtime/pi/.codex/skills/todo/SKILL.md +8 -4
  174. package/runtime/pi/.codex/skills/tui-design/SKILL.md +8 -4
  175. package/runtime/pi/.codex/skills/tutorial/SKILL.md +8 -4
  176. package/runtime/pi/.codex/skills/update/SKILL.md +8 -4
  177. package/runtime/pi/.codex/skills/visual-explain/SKILL.md +8 -4
  178. package/runtime/pi/.codex/spec-manifest.json +4 -4
  179. package/runtime/pi/.pi/APPEND_SYSTEM.md +34 -12
  180. package/runtime/pi/.pi/extensions/egregore.ts +8 -1
  181. package/runtime/pi/.pi/spec-manifest.json +2 -2
  182. package/runtime/pi/AGENTS.md +36 -14
  183. package/runtime/pi/bin/activity-data.sh +1 -1
  184. package/runtime/pi/bin/agent.sh +38 -19
  185. package/runtime/pi/bin/attendant.sh +8 -2
  186. package/runtime/pi/bin/autosave.sh +1 -1
  187. package/runtime/pi/bin/capture-reconcile.sh +8 -6
  188. package/runtime/pi/bin/capture-run.sh +1 -1
  189. package/runtime/pi/bin/codex-install-skills.sh +1 -1
  190. package/runtime/pi/bin/codex-render-spec.mjs +12 -5
  191. package/runtime/pi/bin/codex-session-start.sh +1 -1
  192. package/runtime/pi/bin/codex-skill-render.mjs +5 -0
  193. package/runtime/pi/bin/codex-sync-skills.sh +9 -5
  194. package/runtime/pi/bin/dashboard-data.sh +1 -1
  195. package/runtime/pi/bin/graph-batch.sh +1 -1
  196. package/runtime/pi/bin/graph-op.sh +1 -1
  197. package/runtime/pi/bin/graph-wal.sh +1 -1
  198. package/runtime/pi/bin/graph.sh +1 -1
  199. package/runtime/pi/bin/handoff-pr-backfill.sh +1 -1
  200. package/runtime/pi/bin/handoff-run.sh +117 -119
  201. package/runtime/pi/bin/handoff-save-egregore.sh +62 -32
  202. package/runtime/pi/bin/index-handoff.sh +3 -2
  203. package/runtime/pi/bin/ingest-graph.sh +1 -1
  204. package/runtime/pi/bin/ingest.sh +1 -1
  205. package/runtime/pi/bin/lib/artifact-id.sh +1 -1
  206. package/runtime/pi/bin/lib/config.sh +56 -20
  207. package/runtime/pi/bin/lib/context.sh +7 -1
  208. package/runtime/pi/bin/lib/ensure-develop.sh +1 -1
  209. package/runtime/pi/bin/lib/git-sync.sh +145 -59
  210. package/runtime/pi/bin/lib/greeting.sh +14 -0
  211. package/runtime/pi/bin/lib/hash.sh +1 -1
  212. package/runtime/pi/bin/lib/noncode.sh +1 -1
  213. package/runtime/pi/bin/lib/time.sh +1 -1
  214. package/runtime/pi/bin/notify.sh +492 -153
  215. package/runtime/pi/bin/person.sh +1 -1
  216. package/runtime/pi/bin/pi-product-workflows.mjs +14 -5
  217. package/runtime/pi/bin/pi-session-start.sh +1 -1
  218. package/runtime/pi/bin/publish-artifact.sh +64 -8
  219. package/runtime/pi/bin/publish-references.sh +1 -1
  220. package/runtime/pi/bin/repo-state.sh +7 -10
  221. package/runtime/pi/bin/search.sh +1 -1
  222. package/runtime/pi/bin/session-autosave.sh +1 -1
  223. package/runtime/pi/bin/session-log.sh +1 -1
  224. package/runtime/pi/bin/settings.sh +32 -2
  225. package/runtime/pi/bin/telemetry.sh +1 -1
  226. package/runtime/pi/bin/worktree-create.sh +14 -4
  227. package/runtime/pi/bin/worktree-remove.sh +1 -1
  228. package/runtime/pi/bin/worktree.sh +1 -1
  229. package/runtime/pi/manifest.json +18 -1
@@ -21,8 +21,8 @@ question, run a topic by someone, or inspect pending questions for themselves.
21
21
  tooling when available; otherwise render:
22
22
 
23
23
  ```text
24
- Send these questions?
25
- 1. Send as-is
24
+ Save these questions?
25
+ 1. Save as-is
26
26
  2. Edit
27
27
  Other:
28
28
  ```
@@ -37,13 +37,20 @@ Add harvest flags only when this ask is part of a harvest:
37
37
  `--harvest-id`, `--harvest-session-id`, `--turn`, `--question-intent`, and
38
38
  `--context-mode`.
39
39
 
40
- 7. In connected mode, notify best-effort with:
40
+ 7. In connected mode, follow
41
+ `.claude/context/notification-consent.md`. Saving the questions is not
42
+ notification consent. Prepare without sending:
41
43
 
42
44
  ```bash
43
- bash bin/notify.sh send "$TARGET" "$AUTHOR has a question about \"$TOPIC\". Ask for \$activity to answer."
45
+ PLAN_JSON=$(bash bin/notify.sh plan send "$TARGET" "$AUTHOR has a question about \"$TOPIC\". Ask for \$activity to answer.")
44
46
  ```
45
47
 
46
- 8. Report the created `memory/knowledge/questions/...` path.
48
+ Show the exact organization, recipient, channel, and message in a separate
49
+ Send / Edit / Cancel checkpoint. Only a Send response to that preview permits
50
+ one approve + dispatch.
51
+
52
+ 8. Report the created `memory/knowledge/questions/...` path and the truthful
53
+ notification state.
47
54
 
48
55
  ## Inward Mode
49
56
 
@@ -54,6 +61,7 @@ answers.
54
61
 
55
62
  ## Rules
56
63
 
57
- - Person-targeted asks are asynchronous: store, optionally notify, then stop.
64
+ - Person-targeted asks are asynchronous: store first; notification is a
65
+ separate exact-consent action.
58
66
  - Local mode is filesystem-only; skip graph and notification calls.
59
67
  - Do not use Claude Code commands.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: audit
3
+ description: 'Fallback Codex adapter for the Egregore audit workflow.'
4
+ ---
5
+
6
+ <!-- generated-by: bin/codex-sync-skills.sh -->
7
+
8
+ # Egregore audit Adapter
9
+
10
+ This is fallback coverage for a long-tail Egregore workflow that has not been
11
+ ported to a hand-written Codex-native skill yet.
12
+
13
+ Use the project shell and filesystem directly. Do not invoke Claude Code
14
+ commands. Translate interactive choices to structured Codex question tooling
15
+ when it is available; otherwise render compact numbered choices with an
16
+ `Other:` option and wait for the user.
17
+
18
+ 1. Read `.claude/skills/audit/SKILL.md` for the workflow details.
19
+ 2. Run the referenced `bin/` scripts directly from Codex.
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
27
+ calls when `egregore.json` declares `"mode": "local"`.
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
29
+ handoffs.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: autosave
3
+ description: 'View or change your personal autosave settings, and merge staged auto-save PRs. The consent surface for ambient session capture.'
4
+ ---
5
+
6
+ <!-- generated-by: bin/codex-sync-skills.sh -->
7
+
8
+ # Egregore autosave Adapter
9
+
10
+ This is fallback coverage for a long-tail Egregore workflow that has not been
11
+ ported to a hand-written Codex-native skill yet.
12
+
13
+ Use the project shell and filesystem directly. Do not invoke Claude Code
14
+ commands. Translate interactive choices to structured Codex question tooling
15
+ when it is available; otherwise render compact numbered choices with an
16
+ `Other:` option and wait for the user.
17
+
18
+ 1. Read `.claude/skills/autosave/SKILL.md` for the workflow details.
19
+ 2. Run the referenced `bin/` scripts directly from Codex.
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
27
+ calls when `egregore.json` declares `"mode": "local"`.
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
29
+ handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/branch/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -33,9 +33,13 @@ reading `.claude/skills/checkup/SKILL.md`, reproduce the same visible UX in Code
33
33
 
34
34
  1. Read `.claude/skills/checkup/SKILL.md` for the workflow details.
35
35
  2. Run the referenced `bin/` scripts directly from Codex.
36
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
37
- explicitly says they are required.
38
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
36
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
37
+ says they are required.
38
+ 4. For every external notification, follow
39
+ `.claude/context/notification-consent.md`: plan without sending, then show
40
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
41
+ consent from the workflow request or a batch approval.
42
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
39
43
  calls when `egregore.json` declares `"mode": "local"`.
40
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
44
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
41
45
  handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/commit/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/contribute/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/dark-mode/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/delete-user/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: demo-mode
3
+ description: 'Fallback Codex adapter for the Egregore demo-mode workflow.'
4
+ ---
5
+
6
+ <!-- generated-by: bin/codex-sync-skills.sh -->
7
+
8
+ # Egregore demo-mode Adapter
9
+
10
+ This is fallback coverage for a long-tail Egregore workflow that has not been
11
+ ported to a hand-written Codex-native skill yet.
12
+
13
+ Use the project shell and filesystem directly. Do not invoke Claude Code
14
+ commands. Translate interactive choices to structured Codex question tooling
15
+ when it is available; otherwise render compact numbered choices with an
16
+ `Other:` option and wait for the user.
17
+
18
+ 1. Read `.claude/skills/demo-mode/SKILL.md` for the workflow details.
19
+ 2. Run the referenced `bin/` scripts directly from Codex.
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
27
+ calls when `egregore.json` declares `"mode": "local"`.
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
29
+ handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/deploy-bridge/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: design
3
+ description: '>'
4
+ ---
5
+
6
+ <!-- generated-by: bin/codex-sync-skills.sh -->
7
+
8
+ # Egregore design Adapter
9
+
10
+ This is fallback coverage for a long-tail Egregore workflow that has not been
11
+ ported to a hand-written Codex-native skill yet.
12
+
13
+ Use the project shell and filesystem directly. Do not invoke Claude Code
14
+ commands. Translate interactive choices to structured Codex question tooling
15
+ when it is available; otherwise render compact numbered choices with an
16
+ `Other:` option and wait for the user.
17
+
18
+ 1. Read `.claude/skills/design/SKILL.md` for the workflow details.
19
+ 2. Run the referenced `bin/` scripts directly from Codex.
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
27
+ calls when `egregore.json` declares `"mode": "local"`.
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
29
+ handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/egregore-voice/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -33,9 +33,13 @@ reading `.claude/skills/emissary/SKILL.md`, reproduce the same visible UX in Cod
33
33
 
34
34
  1. Read `.claude/skills/emissary/SKILL.md` for the workflow details.
35
35
  2. Run the referenced `bin/` scripts directly from Codex.
36
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
37
- explicitly says they are required.
38
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
36
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
37
+ says they are required.
38
+ 4. For every external notification, follow
39
+ `.claude/context/notification-consent.md`: plan without sending, then show
40
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
41
+ consent from the workflow request or a batch approval.
42
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
39
43
  calls when `egregore.json` declares `"mode": "local"`.
40
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
44
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
41
45
  handoffs.
@@ -17,9 +17,13 @@ when it is available; otherwise render compact numbered choices with an
17
17
 
18
18
  1. Read `.claude/skills/env/SKILL.md` for the workflow details.
19
19
  2. Run the referenced `bin/` scripts directly from Codex.
20
- 3. Treat graph, publish, and notify steps as best-effort unless that workflow
21
- explicitly says they are required.
22
- 4. Keep local-mode behavior filesystem-first and avoid graph or notification
20
+ 3. Treat graph and publish steps as best-effort unless that workflow explicitly
21
+ says they are required.
22
+ 4. For every external notification, follow
23
+ `.claude/context/notification-consent.md`: plan without sending, then show
24
+ a separate exact Send / Edit / Cancel checkpoint. Never infer notification
25
+ consent from the workflow request or a batch approval.
26
+ 5. Keep local-mode behavior filesystem-first and avoid graph or notification
23
27
  calls when `egregore.json` declares `"mode": "local"`.
24
- 5. Never call the deprecated `egregore-handoff` CLI for Egregore project
28
+ 6. Never call the deprecated `egregore-handoff` CLI for Egregore project
25
29
  handoffs.
@@ -6,8 +6,8 @@ description: Create an internal Egregore team handoff when the user invokes /han
6
6
  # Egregore Handoff
7
7
 
8
8
  Native Codex Egregore skill. This creates an internal team handoff in
9
- `memory/handoffs/`, indexes it, publishes it when possible, and notifies through
10
- the Egregore scripts. External runnable packets are emissaries; if the user
9
+ `memory/handoffs/`, indexes it, publishes it when possible, and may prepare an
10
+ external notification proposal. External runnable packets are emissaries; if the user
11
11
  asks for one or provides an `egregore.xyz/emissary/e/` link, use the emissary
12
12
  tooling instead.
13
13
 
@@ -22,25 +22,85 @@ an addressed recipient belongs to `$wrap`.
22
22
  `name`, then git config.
23
23
  3. Parse a short topic and optional recipient from the user request. Match the
24
24
  recipient against `memory/people/*.md`; omit the recipient when uncertain.
25
- 4. Draft the markdown body with these sections:
25
+ 4. Draft the canonical markdown record with frontmatter and these sections:
26
26
  - `## Briefing`
27
27
  - `## Key Decisions`
28
28
  - `## Current State`
29
29
  - `## Open Threads`
30
30
  - `## Next Steps`
31
31
  - `## Entry Points`
32
- 5. Write the body to a temp file, then run one orchestration command:
32
+ Use this metadata contract even when the user supplied only prose:
33
+
34
+ ```markdown
35
+ ---
36
+ capture_schema: egregore-capture/v1
37
+ capture_mode: addressed
38
+ kind: addressed
39
+ from: <author>
40
+ addressed_to: <recipient, if any>
41
+ date: YYYY-MM-DD
42
+ topic: <topic>
43
+ intent: <action | feedback | fyi>
44
+ claim: <one-line claim>
45
+ ask: <what the receiver should do>
46
+ ---
47
+ ```
48
+
49
+ 5. Compose the HTML view from that record. Markdown is canonical; the JSON is
50
+ only a presentation map. Give every JSON section a stable `id` and add a
51
+ top-level `sourceMap` from every authored `##` heading to the section that
52
+ contains its complete text:
53
+
54
+ ```json
55
+ {
56
+ "kind": "handoff",
57
+ "kicker": "Handoff",
58
+ "topic": "<topic>",
59
+ "claim": "<one-line claim>",
60
+ "sourceMap": {
61
+ "Briefing": "briefing",
62
+ "Key Decisions": "decisions",
63
+ "Current State": "current-state",
64
+ "Open Threads": "open-threads",
65
+ "Next Steps": "next-steps",
66
+ "Entry Points": "entry-points"
67
+ },
68
+ "sections": [
69
+ {"id":"briefing","label":"Briefing","component":"prose","body":"<complete Briefing text>"}
70
+ ]
71
+ }
72
+ ```
73
+
74
+ Pick richer components when they fit, but copy all authored content into
75
+ the mapped destination. Never independently summarize the Markdown into the
76
+ JSON. For command-heavy sections, keep command headings, explanatory text,
77
+ fenced commands, and expected output verbatim.
78
+
79
+ 6. Render the actual HTML with semantic coverage enabled and show it before
80
+ publishing. This is the approval surface—not a list of component names:
81
+
82
+ ```bash
83
+ node packages/egregore-artifacts/bin/cli.js composed "$COMPOSED_FILE" \
84
+ --source "$BODY_FILE" --verify-fidelity
85
+ ```
86
+
87
+ Stop for confirmation after the browser preview. If validation fails, fix
88
+ the mapping/content and render again. Skip confirmation only when the user
89
+ explicitly said to send without preview.
90
+
91
+ 7. After confirmation, run one orchestration command:
33
92
 
34
93
  ```bash
35
94
  TMPDIR="$(mktemp -d -t codex-handoff-XXXXXX)"
36
- TMPDIR="$TMPDIR" bash bin/capture-run.sh --mode addressed --author "$AUTHOR" --topic "$TOPIC" ${RECIPIENT_ARG} < "$BODY_FILE"
95
+ TMPDIR="$TMPDIR" bash bin/capture-run.sh --mode addressed --author "$AUTHOR" \
96
+ --topic "$TOPIC" ${RECIPIENT_ARG} --composed "$COMPOSED_FILE" < "$BODY_FILE"
37
97
  ```
38
98
 
39
99
  Use `--recipient "$RECIPIENT"` only when a clear teammate or future-self
40
- recipient is known. Do not pass `--no-publish` or `--no-notify` unless the user
41
- explicitly asked for a dry run.
100
+ recipient is known. Do not pass `--no-publish` unless the user explicitly
101
+ asked for a dry run. The runner may plan a notification, but never dispatches.
42
102
 
43
- 6. Read `$TMPDIR/handoff-run-result.json` and render:
103
+ 8. Read `$TMPDIR/handoff-run-result.json` and render:
44
104
 
45
105
  ```bash
46
106
  node bin/codex-skill-render.mjs handoff-card "$TMPDIR/handoff-run-result.json"
@@ -50,13 +110,20 @@ Paste the rendered card exactly in the visible response, preferably in a
50
110
  `text` fenced block. Do not paraphrase the card into bullets unless the user
51
111
  asks for a summary.
52
112
 
53
- 7. Fire the detached save helper when appropriate:
113
+ 9. If the result has `notifyStatus: "approval_required"`, follow
114
+ `.claude/context/notification-consent.md`. In a separate checkpoint, show
115
+ the exact organization, recipient/group, every channel/delivery, and exact
116
+ message from `notifyPlan`; offer Send / Edit / Cancel and wait. Only a Send
117
+ response to that preview permits one `approve` + `dispatch`. A local direct
118
+ message never falls back to a group.
119
+
120
+ 10. Fire the detached save helper when appropriate:
54
121
 
55
122
  ```bash
56
123
  ( bash bin/handoff-save-egregore.sh "$AUTHOR" "$TOPIC" >/dev/null 2>&1 & ) >/dev/null 2>&1
57
124
  ```
58
125
 
59
- 8. Report the `memory/...` path and hosted link from the result JSON when a
126
+ 11. Report the `memory/...` path and hosted link from the result JSON when a
60
127
  link exists.
61
128
 
62
129
  ## Rules
@@ -65,7 +132,11 @@ asks for a summary.
65
132
  - Do not use Claude Code commands.
66
133
  - Keep the briefing concise and operational; include exact files, branches,
67
134
  commands, open questions, and verification state when relevant.
135
+ - The artifact is a view of the handoff, never a summary of it. Publishing
136
+ must fail when any non-empty authored section is unmapped or loses content.
68
137
  - Structured UX parity is required: the rendered card is the acknowledgment.
69
138
  Do not add a preamble such as "Handoff created successfully." Preserve the
70
139
  72-column TUI/card shape, status footer, links below the box, and warning
71
140
  placement used by the Egregore handoff workflow.
141
+ - Creating or approving the handoff is not notification consent. Never approve
142
+ or dispatch from detached work.
@@ -0,0 +1,76 @@
1
+ # Harvest — Question Palette
2
+
3
+ > Ask for the kind of judgment the harvest actually needs.
4
+
5
+ This document is the single canonical home for choosing a question move
6
+ and answer shape from `questionIntent`. `PROCESS.md` owns the conversational
7
+ rhythm and evaluation; `SKILL.md` owns rendered-surface wiring; scrolls
8
+ consume this palette directly. They point here instead of restating it.
9
+ The byte-identical `.codex/skills/harvest/QUESTION_PALETTE.md` file is a
10
+ packaging mirror for Codex and Pi; tests reject drift from this source.
11
+
12
+ The palette is a decision aid, not a checklist. It never requires a mix or
13
+ minimum number of shapes. An all-`single` surface is correct when every
14
+ question is truly an enumerable fork; it is wrong when rankings, subsets,
15
+ graded positions, or unmapped spaces were flattened into option cards.
16
+
17
+ ## Selection rule
18
+
19
+ For every question:
20
+
21
+ 1. State the `questionIntent`: what the answer must reveal or change.
22
+ 2. Choose the closest intent row below.
23
+ 3. Use its move and answer shape when available.
24
+ 4. If another shape fits better, record one sentence explaining why.
25
+ 5. In a new rendered surface, declare `mode` explicitly. An absent mode
26
+ falls back to `single` only for backward compatibility.
27
+
28
+ The author must be able to explain both why the question is being asked
29
+ and why its answer shape fits. There is no shape quota or preset flow.
30
+
31
+ ## Intent → move → answer shape
32
+
33
+ | Elicitation intent | Question move / answer shape | Guard |
34
+ |---|---|---|
35
+ | Decide among enumerable, mutually exclusive alternatives | Run the **enumerability test**: the author can state the full space. Use option cards, mode `single`, with 2–4 options, an “other, in your own words” escape, honest ± tradeoffs, and at most one argued lean. | If the full space cannot be stated, it is not a single-pick fork. |
36
+ | Place a graded position or intensity between two honest poles | Name the evaluated dimension and both poles concretely. Use mode `spectrum` with 5–7 discrete, fully labeled stops; follow a midpoint with a clarifying probe. | Nothing is preselected. Untouched, midpoint, and UNDECIDED remain distinct. Never use a continuous slider. |
37
+ | Set priority or sequence over a small set | Use mode `rank`; allow ties or top-k when a total order would invent precision. | Keep to at most 5 items. |
38
+ | Compare importance across a longer list | Run **best-worst** as dialogue: show 3–4 items, ask most and least, then rotate subsets. | Do not turn a long list into a rating battery. |
39
+ | Choose a non-exclusive subset | In an artifact, use mode `multi` with an explicit `max`. In live dialogue, walk items one at a time as explicit include / leave-out judgments. | Cap the subset and keep the candidate set small enough to inspect. “Select all that apply” without a cap invites shallow selection. |
40
+ | Allocate relative magnitude or resources | Use mode `weight` with coarse 5–10% steps and an explicit untouched state. | Use at most 5 buckets; do not imply false precision or prefill an even split. |
41
+ | Weight decision dimensions with different ranges | Ask a **swing question**: with every dimension at its worst, which swing to best would the respondent buy first? Continue against the concrete ranges. | Do not substitute context-free importance ratings. |
42
+ | Elicit a quantity plus confidence | Ask, in order: lowest plausible, highest plausible, best guess, then sureness. Prefer frequency framing. | This needs the four-field interval card; until that renderer addition exists, run it conversationally. |
43
+ | Explore an unmapped answer space, rationale, or discovery question | Use an open prompt anchored in the respondent’s own words. Acknowledge the answer, then probe only when it is insufficient. | Ask at most 1–2 probes per question; do not use a bare “why?” when a specific clarifier is available. |
44
+ | Discover tacit taste dimensions before minting a fork | Run a **triad**: present three concrete elements and ask which two are alike and how the third differs. The named difference becomes a candidate axis. | Do not supply the taste taxonomy in advance. |
45
+ | Reach tacit expertise behind a general claim | Run a **critical-incident sequence**: one concrete incident, a co-built timeline, deepening probes, then “what if X had been absent?” | Generalities are elicited through a real case, not requested directly. |
46
+ | Deepen a thin why-note | **Ladder up** with “why does that matter to you?” or **ladder down** with “give me a concrete example.” | Stop after at most 3 consecutive ladder steps. |
47
+ | Verify the interviewer’s interpretation | Run a **mirrored-inference check**: “My read of your position is X — what is wrong in that?” End a harvest with a member check of each respondent’s own synthesis when useful. | Mirror the sharpest reading, including tensions; do not smooth disagreement into affirmation. |
48
+ | Get concrete feedback after abstract forks run dry, or when the respondent asks to see the work | Show only the relevant draft or excerpt in the decisions view and ask an open prompt naming what the answer will change. | This is selective authoring, not a mode: no default per-section controls, no generic ready/not-ready verdict, and no interaction added to the readable face. |
49
+ | Elicit multi-respondent preferences, positions, or estimates | Default to blind independent collection. Freeze one shared artifact and question set when everyone should answer the same inquiry; otherwise adapt only from the seed, RoleSheet, and that respondent’s own prior turns. | Attribute every position and preserve its reasoning. Append pre-seal corrections and let the latest supersede; after sealing, a changed position starts a new round. Never report an anonymous aggregate such as “most of the team thinks.” |
50
+ | Preserve honest nonresponse | Offer explicit `UNDECIDED`, distinct from untouched. | Never force an answer. A scroll may carry it once, then must reframe or demote the question. |
51
+ | Handle an escape-hatch answer that names a missing option | At review, treat it as a candidate option or fork for the next version. | The creator decides whether it enters the pool; never silently coerce it into an existing option. |
52
+
53
+ ## Conversational moves
54
+
55
+ These moves need no widget. They run inside PROCESS’s generate → evaluate
56
+ rhythm:
57
+
58
+ - **Ladder up / down** moves between value and concrete example.
59
+ - **Critical incident** reconstructs one real episode before generalizing.
60
+ - **Triad** lets the respondent name the comparison axis.
61
+ - **Best-worst** extracts discrimination from rotating small subsets.
62
+ - **Swing question** ties importance to the actual range of change.
63
+ - **Mirrored-inference check** asks the respondent to correct the model’s
64
+ strongest interpretation.
65
+ - **One-at-a-time forced choice** replaces an unbounded check-all with
66
+ inspectable include / leave-out judgments.
67
+
68
+ ## Hard bans
69
+
70
+ These are lintable rules:
71
+
72
+ - No agree/disagree, true/false, or yes/no stems — rewrite as explicit alternatives or an item-specific scale.
73
+ - No draggable sliders with a preset thumb; no numbers-only or endpoint-only scales.
74
+ - No batteries of stacked identical gauges; one question per fold-point, adjacent to its motivating prose.
75
+ - Nothing pre-selected, ever — including spectrum position and weight splits; the lean argues, it never pre-picks.
76
+ - No dropdowns in surfaces; >4 genuine options means an unsplit fork — split it.
@@ -49,21 +49,44 @@ best-effort and must never block markdown state.
49
49
  4. Clarify the harvest intent when topic, respondents, dimensions, or
50
50
  disclosure mode are under-specified. Use structured Codex question tooling
51
51
  when available; otherwise ask one numbered question at a time with `Other:`.
52
- 5. Ask situated questions. Each question must have an explicit
53
- `question_intent` and must be grounded in the role sheet, seed, or prior
54
- answers.
52
+ 5. Read `QUESTION_PALETTE.md` completely. Ask situated questions with an
53
+ explicit `question_intent`, an answer shape that fits it, and grounding in
54
+ the role sheet, seed, the respondent's own prior answers, or attributed
55
+ positions allowed by the disclosure setting. Blind mode must not use
56
+ another respondent's answer content, even invisibly. Record a one-sentence
57
+ reason when departing from the palette's closest intent row.
55
58
  6. Persist every turn immediately with turn number, question, intent, answer,
56
- and evaluation. For absent respondents, create async questions with:
59
+ and evaluation. Apply the palette's satisficing and sycophancy guards when
60
+ evaluating. For absent respondents, create async questions with:
57
61
 
58
62
  ```bash
59
63
  bin/agent.sh ask --from "$INITIATOR" --to "$RESPONDENT" --topic "$TOPIC" --question "$QUESTION" --harvest-id "$HARVEST_ID" --harvest-session-id "$HARVEST_SESSION_ID" --turn "$TURN" --question-intent "$QUESTION_INTENT" --context-mode "$DISCLOSURE_MODE"
60
64
  ```
61
65
 
62
- 7. In connected mode, notify async respondents best-effort with
63
- `bin/notify.sh send`.
66
+ 7. In connected mode, follow `.claude/context/notification-consent.md` for
67
+ each async respondent: prepare one direct notification, show its exact
68
+ recipient/channel/message in a separate checkpoint, and dispatch once only
69
+ after that approval. Selecting respondents is not notification consent and
70
+ approvals cannot be batched.
64
71
  8. Continue until present respondents reach diminishing returns and async
65
72
  respondents are either answered, pending, or explicitly skipped.
66
73
 
74
+ ## Multi-respondent rounds
75
+
76
+ Preference, estimate, and position intents default to `blind`. When everyone
77
+ should answer the same inquiry, freeze one source version and question set
78
+ before collection and send the identical artifact to each respondent.
79
+
80
+ While collection is open, a respondent may correct their own response. Append
81
+ the correction, use their latest finalized response as canonical, and count
82
+ distinct finalized respondents rather than submissions. After the declared
83
+ completion condition seals the evidence, it is immutable; a changed position
84
+ starts a new round. There is no automatic second pass after disclosure.
85
+
86
+ Attribute disclosed positions and preserve their reasoning. Never turn them
87
+ into an anonymous aggregate such as "most of the team thinks." A majority may
88
+ be named with its respondents, but it is not collective alignment.
89
+
67
90
  ## Synthesis
68
91
 
69
92
  Write `synthesis.md` with:
@@ -102,6 +125,7 @@ render the Egregore harvest TUI instead of a prose-only recap:
102
125
  ## Rules
103
126
 
104
127
  - Ask one question at a time for present respondents.
128
+ - Never impose an answer-shape quota or preset question flow.
105
129
  - Make low-confidence role assumptions visible when they shape questions.
106
130
  - Local mode skips graph and notification calls.
107
131
  - Do not use Claude Code commands.