create-egregore 0.20.2 → 0.21.0-runtime-mvp.2

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 (706) hide show
  1. package/assets/egregore-launcher.js +1013 -16
  2. package/bin/cli.js +11 -0
  3. package/lib/claude-runtime.js +192 -0
  4. package/lib/local.js +38 -31
  5. package/lib/pi-runtime.js +1 -0
  6. package/lib/prime-runtime.js +1 -0
  7. package/lib/runtime-identity.js +146 -0
  8. package/lib/setup.js +116 -17
  9. package/package.json +10 -6
  10. package/runtime/claude/.claude/context/commit-format.md +110 -0
  11. package/runtime/claude/.claude/context/git-language.md +46 -0
  12. package/runtime/claude/.claude/context/notification-consent.md +66 -0
  13. package/runtime/claude/.claude/context/pr-format.md +67 -0
  14. package/runtime/claude/.claude/context/telemetry.md +133 -0
  15. package/runtime/claude/.claude/hooks/boundary-check.sh +333 -0
  16. package/runtime/claude/.claude/hooks/branch-guard.sh +231 -0
  17. package/runtime/claude/.claude/hooks/card-context.sh +38 -0
  18. package/runtime/claude/.claude/hooks/emissary-detect.sh +53 -0
  19. package/runtime/claude/.claude/hooks/memory-refresh.sh +67 -0
  20. package/runtime/claude/.claude/hooks/onboarding-guard.sh +86 -0
  21. package/runtime/claude/.claude/hooks/retrieval-context.sh +43 -0
  22. package/runtime/claude/.claude/rules/voice-bedrock.md +73 -0
  23. package/runtime/claude/.claude/settings.json +131 -0
  24. package/runtime/claude/.claude/skills/activity/SKILL.md +68 -0
  25. package/runtime/claude/.claude/skills/announce/SKILL.md +54 -0
  26. package/runtime/claude/.claude/skills/archive/SKILL.md +71 -0
  27. package/runtime/claude/.claude/skills/branch/SKILL.md +147 -0
  28. package/runtime/claude/.claude/skills/checkup/SKILL.md +159 -0
  29. package/runtime/claude/.claude/skills/commit/SKILL.md +103 -0
  30. package/runtime/claude/.claude/skills/contribute/SKILL.md +343 -0
  31. package/runtime/claude/.claude/skills/create-skill/SKILL.md +135 -0
  32. package/runtime/claude/.claude/skills/dark-mode/SKILL.md +410 -0
  33. package/runtime/claude/.claude/skills/dashboard/SKILL.md +43 -0
  34. package/runtime/claude/.claude/skills/deep-reflect/REPORT.md +140 -0
  35. package/runtime/claude/.claude/skills/deep-reflect/RESEARCH.md +132 -0
  36. package/runtime/claude/.claude/skills/deep-reflect/ROLES.md +104 -0
  37. package/runtime/claude/.claude/skills/deep-reflect/SKILL.md +170 -0
  38. package/runtime/claude/.claude/skills/delete-user/SKILL.md +150 -0
  39. package/runtime/claude/.claude/skills/emissary/SKILL.md +220 -0
  40. package/runtime/claude/.claude/skills/handoff/SKILL.md +124 -0
  41. package/runtime/claude/.claude/skills/harvest/AUDIT.md +546 -0
  42. package/runtime/claude/.claude/skills/harvest/FORMAT.md +436 -0
  43. package/runtime/claude/.claude/skills/harvest/PROCESS.md +395 -0
  44. package/runtime/claude/.claude/skills/harvest/QUESTION_PALETTE.md +76 -0
  45. package/runtime/claude/.claude/skills/harvest/SKILL.md +100 -0
  46. package/runtime/claude/.claude/skills/ingest/SKILL.md +112 -0
  47. package/runtime/claude/.claude/skills/ingest-corpus/SKILL.md +187 -0
  48. package/runtime/claude/.claude/skills/ingest-notion/SKILL.md +214 -0
  49. package/runtime/claude/.claude/skills/ingest-user-interview/SKILL.md +65 -0
  50. package/runtime/claude/.claude/skills/ingest-user-interview/references/analysis-contract.md +125 -0
  51. package/runtime/claude/.claude/skills/invite/SKILL.md +111 -0
  52. package/runtime/claude/.claude/skills/issue/SKILL.md +104 -0
  53. package/runtime/claude/.claude/skills/me/SKILL.md +81 -0
  54. package/runtime/claude/.claude/skills/meeting/SKILL.md +76 -0
  55. package/runtime/claude/.claude/skills/meeting/references/analysis-contract.md +102 -0
  56. package/runtime/claude/.claude/skills/note/SKILL.md +71 -0
  57. package/runtime/claude/.claude/skills/notion-connect/SKILL.md +124 -0
  58. package/runtime/claude/.claude/skills/onboarding/SKILL.md +159 -0
  59. package/runtime/claude/.claude/skills/pr/SKILL.md +85 -0
  60. package/runtime/claude/.claude/skills/pull/SKILL.md +79 -0
  61. package/runtime/claude/.claude/skills/push/SKILL.md +47 -0
  62. package/runtime/claude/.claude/skills/quest/SKILL.md +121 -0
  63. package/runtime/claude/.claude/skills/reflect/SKILL.md +69 -0
  64. package/runtime/claude/.claude/skills/review-pr/SKILL.md +276 -0
  65. package/runtime/claude/.claude/skills/save/SKILL.md +92 -0
  66. package/runtime/claude/.claude/skills/slack-connect/SKILL.md +148 -0
  67. package/runtime/claude/.claude/skills/summon/SKILL.md +240 -0
  68. package/runtime/claude/.claude/skills/sync-repos/SKILL.md +82 -0
  69. package/runtime/claude/.claude/skills/teams-connect/SKILL.md +216 -0
  70. package/runtime/claude/.claude/skills/telegram-connect/SKILL.md +110 -0
  71. package/runtime/claude/.claude/skills/telemetry/SKILL.md +117 -0
  72. package/runtime/claude/.claude/skills/test/SKILL.md +87 -0
  73. package/runtime/claude/.claude/skills/the-spiral/SKILL.md +492 -0
  74. package/runtime/claude/.claude/skills/tui-design/SKILL.md +188 -0
  75. package/runtime/claude/.claude/skills/tutorial/SKILL.md +100 -0
  76. package/runtime/claude/.claude/skills/update/SKILL.md +265 -0
  77. package/runtime/claude/.claude/skills/view/SKILL.md +393 -0
  78. package/runtime/claude/.claude/skills/view/compose-scaffold.html +221 -0
  79. package/runtime/claude/.claude/skills/visual-explain/SKILL.md +132 -0
  80. package/runtime/claude/.claude/skills/wrap/SKILL.md +98 -0
  81. package/runtime/claude/CLAUDE.md +447 -0
  82. package/runtime/claude/bin/activity-action.sh +92 -0
  83. package/runtime/claude/bin/activity-data.sh +17 -0
  84. package/runtime/claude/bin/agent.sh +783 -0
  85. package/runtime/claude/bin/artifact-register.sh +164 -0
  86. package/runtime/claude/bin/artifact-writeback.sh +53 -0
  87. package/runtime/claude/bin/artifacts.sh +288 -0
  88. package/runtime/claude/bin/attendant.sh +707 -0
  89. package/runtime/claude/bin/autosave.sh +112 -0
  90. package/runtime/claude/bin/boundary.sh +253 -0
  91. package/runtime/claude/bin/build-sealed-dataroom.mjs +722 -0
  92. package/runtime/claude/bin/capture-reconcile.sh +69 -0
  93. package/runtime/claude/bin/capture-run.sh +357 -0
  94. package/runtime/claude/bin/codex-install-skills.sh +78 -0
  95. package/runtime/claude/bin/codex-render-spec.mjs +462 -0
  96. package/runtime/claude/bin/codex-session-start.sh +275 -0
  97. package/runtime/claude/bin/codex-skill-render.mjs +349 -0
  98. package/runtime/claude/bin/codex-sync-skills.sh +237 -0
  99. package/runtime/claude/bin/connect-refresh.sh +33 -0
  100. package/runtime/claude/bin/contribute-guard.sh +79 -0
  101. package/runtime/claude/bin/corpus_map.py +806 -0
  102. package/runtime/claude/bin/corpus_survey.py +304 -0
  103. package/runtime/claude/bin/dashboard-data.sh +18 -0
  104. package/runtime/claude/bin/github-auth.sh +121 -0
  105. package/runtime/claude/bin/graph-batch.sh +86 -0
  106. package/runtime/claude/bin/graph-op.sh +1106 -0
  107. package/runtime/claude/bin/graph-projection.sh +54 -0
  108. package/runtime/claude/bin/graph-wal.sh +242 -0
  109. package/runtime/claude/bin/graph.sh +267 -0
  110. package/runtime/claude/bin/handoff-lifecycle-job.sh +146 -0
  111. package/runtime/claude/bin/handoff-lifecycle.sh +280 -0
  112. package/runtime/claude/bin/handoff-pr-backfill.sh +86 -0
  113. package/runtime/claude/bin/handoff-preview.sh +169 -0
  114. package/runtime/claude/bin/handoff-run.sh +692 -0
  115. package/runtime/claude/bin/handoff-save-egregore.sh +224 -0
  116. package/runtime/claude/bin/index-handoff.sh +322 -0
  117. package/runtime/claude/bin/ingest-graph.sh +86 -0
  118. package/runtime/claude/bin/ingest-item.sh +10 -0
  119. package/runtime/claude/bin/ingest-surface.html +495 -0
  120. package/runtime/claude/bin/ingest.py +1011 -0
  121. package/runtime/claude/bin/ingest.sh +308 -0
  122. package/runtime/claude/bin/ingest_graph.py +856 -0
  123. package/runtime/claude/bin/ingest_surface.py +544 -0
  124. package/runtime/claude/bin/invite.sh +6 -0
  125. package/runtime/claude/bin/issue.sh +10 -0
  126. package/runtime/claude/bin/knowledge.sh +10 -0
  127. package/runtime/claude/bin/lib/artifact-id.sh +46 -0
  128. package/runtime/claude/bin/lib/config.sh +136 -0
  129. package/runtime/claude/bin/lib/context.sh +642 -0
  130. package/runtime/claude/bin/lib/dashboard-artifact.sh +242 -0
  131. package/runtime/claude/bin/lib/ensure-develop.sh +183 -0
  132. package/runtime/claude/bin/lib/git-message.sh +37 -0
  133. package/runtime/claude/bin/lib/git-sync.sh +494 -0
  134. package/runtime/claude/bin/lib/greeting.sh +548 -0
  135. package/runtime/claude/bin/lib/handoff-meta.sh +97 -0
  136. package/runtime/claude/bin/lib/hash.sh +13 -0
  137. package/runtime/claude/bin/lib/identity.sh +213 -0
  138. package/runtime/claude/bin/lib/metrics.sh +374 -0
  139. package/runtime/claude/bin/lib/noncode.sh +31 -0
  140. package/runtime/claude/bin/lib/permissions.sh +106 -0
  141. package/runtime/claude/bin/lib/time.sh +56 -0
  142. package/runtime/claude/bin/lib/worktree-links.sh +85 -0
  143. package/runtime/claude/bin/node-run.sh +42 -0
  144. package/runtime/claude/bin/notification.sh +6 -0
  145. package/runtime/claude/bin/notify.sh +636 -0
  146. package/runtime/claude/bin/observe-context.sh +14 -0
  147. package/runtime/claude/bin/onboarding.sh +6 -0
  148. package/runtime/claude/bin/person.py +634 -0
  149. package/runtime/claude/bin/person.sh +481 -0
  150. package/runtime/claude/bin/pi-render-spec.mjs +140 -0
  151. package/runtime/claude/bin/post-update.sh +37 -0
  152. package/runtime/claude/bin/prime-render-spec.mjs +147 -0
  153. package/runtime/claude/bin/publish-artifact.sh +324 -0
  154. package/runtime/claude/bin/publish-references.sh +144 -0
  155. package/runtime/claude/bin/quest.sh +9 -0
  156. package/runtime/claude/bin/question.sh +8 -0
  157. package/runtime/claude/bin/repo-state.sh +96 -0
  158. package/runtime/claude/bin/research-ingest.sh +7 -0
  159. package/runtime/claude/bin/restore-owned-skills.sh +67 -0
  160. package/runtime/claude/bin/retrieval_eval.py +385 -0
  161. package/runtime/claude/bin/runtime-identity.sh +70 -0
  162. package/runtime/claude/bin/runtime-upgrade.sh +43 -0
  163. package/runtime/claude/bin/scroll.sh +9 -0
  164. package/runtime/claude/bin/search.sh +318 -0
  165. package/runtime/claude/bin/session-autosave.sh +220 -0
  166. package/runtime/claude/bin/session-log.sh +199 -0
  167. package/runtime/claude/bin/session-start.sh +696 -0
  168. package/runtime/claude/bin/settings.sh +532 -0
  169. package/runtime/claude/bin/startup-check.sh +136 -0
  170. package/runtime/claude/bin/statusline.sh +41 -0
  171. package/runtime/claude/bin/telemetry.sh +666 -0
  172. package/runtime/claude/bin/test-changes.sh +344 -0
  173. package/runtime/claude/bin/thread.sh +9 -0
  174. package/runtime/claude/bin/todo.sh +9 -0
  175. package/runtime/claude/bin/view-render.sh +126 -0
  176. package/runtime/claude/bin/worktree-create.sh +145 -0
  177. package/runtime/claude/bin/worktree-remove.sh +50 -0
  178. package/runtime/claude/bin/worktree.sh +198 -0
  179. package/runtime/claude/egregore_runtime/__init__.py +228 -0
  180. package/runtime/claude/egregore_runtime/adapters/__init__.py +5 -0
  181. package/runtime/claude/egregore_runtime/adapters/invitation.py +237 -0
  182. package/runtime/claude/egregore_runtime/adapters/notification.py +59 -0
  183. package/runtime/claude/egregore_runtime/adapters/qmd.py +1701 -0
  184. package/runtime/claude/egregore_runtime/adapters/qmd_cli.py +210 -0
  185. package/runtime/claude/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  186. package/runtime/claude/egregore_runtime/admin_gate.py +102 -0
  187. package/runtime/claude/egregore_runtime/artifacts.py +523 -0
  188. package/runtime/claude/egregore_runtime/contracts.py +499 -0
  189. package/runtime/claude/egregore_runtime/entitlements.py +85 -0
  190. package/runtime/claude/egregore_runtime/errors.py +10 -0
  191. package/runtime/claude/egregore_runtime/graph.py +356 -0
  192. package/runtime/claude/egregore_runtime/handoff_lookup.py +196 -0
  193. package/runtime/claude/egregore_runtime/harness_cli.py +1221 -0
  194. package/runtime/claude/egregore_runtime/identity.py +734 -0
  195. package/runtime/claude/egregore_runtime/identity_cli.py +91 -0
  196. package/runtime/claude/egregore_runtime/ingest.py +575 -0
  197. package/runtime/claude/egregore_runtime/ingest_cli.py +254 -0
  198. package/runtime/claude/egregore_runtime/ingest_index_cli.py +147 -0
  199. package/runtime/claude/egregore_runtime/invitation_cli.py +51 -0
  200. package/runtime/claude/egregore_runtime/invitations.py +116 -0
  201. package/runtime/claude/egregore_runtime/issue_cli.py +305 -0
  202. package/runtime/claude/egregore_runtime/issues.py +359 -0
  203. package/runtime/claude/egregore_runtime/knowledge.py +376 -0
  204. package/runtime/claude/egregore_runtime/knowledge_cli.py +173 -0
  205. package/runtime/claude/egregore_runtime/lifecycle.py +888 -0
  206. package/runtime/claude/egregore_runtime/lifecycle_cli.py +269 -0
  207. package/runtime/claude/egregore_runtime/notification_cli.py +125 -0
  208. package/runtime/claude/egregore_runtime/notifications.py +230 -0
  209. package/runtime/claude/egregore_runtime/observe.py +342 -0
  210. package/runtime/claude/egregore_runtime/onboarding.py +290 -0
  211. package/runtime/claude/egregore_runtime/onboarding_cli.py +110 -0
  212. package/runtime/claude/egregore_runtime/policy.py +144 -0
  213. package/runtime/claude/egregore_runtime/profile.py +193 -0
  214. package/runtime/claude/egregore_runtime/quest_cli.py +216 -0
  215. package/runtime/claude/egregore_runtime/question_cli.py +180 -0
  216. package/runtime/claude/egregore_runtime/questions.py +304 -0
  217. package/runtime/claude/egregore_runtime/quests.py +419 -0
  218. package/runtime/claude/egregore_runtime/readiness.py +379 -0
  219. package/runtime/claude/egregore_runtime/research_ingest.py +256 -0
  220. package/runtime/claude/egregore_runtime/research_ingest_cli.py +44 -0
  221. package/runtime/claude/egregore_runtime/runtime.py +464 -0
  222. package/runtime/claude/egregore_runtime/scroll_cli.py +185 -0
  223. package/runtime/claude/egregore_runtime/scrolls.py +726 -0
  224. package/runtime/claude/egregore_runtime/status.py +412 -0
  225. package/runtime/claude/egregore_runtime/status_cli.py +174 -0
  226. package/runtime/claude/egregore_runtime/sync.py +218 -0
  227. package/runtime/claude/egregore_runtime/teamsync.py +139 -0
  228. package/runtime/claude/egregore_runtime/telemetry.py +640 -0
  229. package/runtime/claude/egregore_runtime/thread_cli.py +173 -0
  230. package/runtime/claude/egregore_runtime/threads.py +517 -0
  231. package/runtime/claude/egregore_runtime/todo_cli.py +142 -0
  232. package/runtime/claude/egregore_runtime/todos.py +244 -0
  233. package/runtime/claude/egregore_runtime/upgrade.py +770 -0
  234. package/runtime/claude/egregore_runtime/upgrade_worker.py +53 -0
  235. package/runtime/claude/egregore_runtime/writeback.py +391 -0
  236. package/runtime/claude/egregore_runtime/writeback_cli.py +114 -0
  237. package/runtime/claude/manifest.json +284 -0
  238. package/runtime/codex/.codex/hooks/search-hint.js +21 -52
  239. package/runtime/codex/.codex/hooks.json +3 -3
  240. package/runtime/codex/.codex/skills/activity/SKILL.md +23 -66
  241. package/runtime/codex/.codex/skills/announce/SKILL.md +27 -50
  242. package/runtime/codex/.codex/skills/archive/SKILL.md +21 -36
  243. package/runtime/codex/.codex/skills/checkup/SKILL.md +77 -36
  244. package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
  245. package/runtime/codex/.codex/skills/dashboard/SKILL.md +17 -47
  246. package/runtime/codex/.codex/skills/handoff/SKILL.md +84 -133
  247. package/runtime/codex/.codex/skills/harvest/SKILL.md +32 -117
  248. package/runtime/codex/.codex/skills/ingest/SKILL.md +47 -25
  249. package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +18 -36
  250. package/runtime/codex/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
  251. package/runtime/codex/.codex/skills/invite/SKILL.md +21 -35
  252. package/runtime/codex/.codex/skills/issue/SKILL.md +60 -41
  253. package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
  254. package/runtime/codex/.codex/skills/meeting/SKILL.md +16 -36
  255. package/runtime/codex/.codex/skills/meeting/references/analysis-contract.md +48 -0
  256. package/runtime/codex/.codex/skills/note/SKILL.md +30 -25
  257. package/runtime/codex/.codex/skills/onboarding/SKILL.md +36 -41
  258. package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
  259. package/runtime/codex/.codex/skills/quest/SKILL.md +27 -66
  260. package/runtime/codex/.codex/skills/reflect/SKILL.md +22 -36
  261. package/runtime/codex/.codex/skills/save/SKILL.md +2 -2
  262. package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
  263. package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
  264. package/runtime/codex/.codex/skills/tutorial/SKILL.md +40 -41
  265. package/runtime/codex/.codex/skills/view/SKILL.md +115 -111
  266. package/runtime/codex/.codex/skills/wrap/SKILL.md +45 -41
  267. package/runtime/codex/.codex/spec-manifest.json +9 -9
  268. package/runtime/codex/AGENTS.md +62 -58
  269. package/runtime/codex/bin/activity-action.sh +92 -0
  270. package/runtime/codex/bin/activity-data.sh +12 -233
  271. package/runtime/codex/bin/agent.sh +84 -100
  272. package/runtime/codex/bin/artifact-register.sh +164 -0
  273. package/runtime/codex/bin/artifact-writeback.sh +53 -0
  274. package/runtime/codex/bin/artifacts.sh +288 -0
  275. package/runtime/codex/bin/build-sealed-dataroom.mjs +722 -0
  276. package/runtime/codex/bin/capture-run.sh +18 -2
  277. package/runtime/codex/bin/codex-render-spec.mjs +41 -16
  278. package/runtime/codex/bin/codex-session-start.sh +14 -4
  279. package/runtime/codex/bin/codex-skill-render.mjs +9 -7
  280. package/runtime/codex/bin/corpus_map.py +806 -0
  281. package/runtime/codex/bin/corpus_survey.py +304 -0
  282. package/runtime/codex/bin/dashboard-data.sh +11 -171
  283. package/runtime/codex/bin/github-auth.sh +121 -0
  284. package/runtime/codex/bin/graph-batch.sh +7 -0
  285. package/runtime/codex/bin/graph-op.sh +4 -0
  286. package/runtime/codex/bin/graph-projection.sh +54 -0
  287. package/runtime/codex/bin/graph-wal.sh +13 -0
  288. package/runtime/codex/bin/graph.sh +44 -0
  289. package/runtime/codex/bin/handoff-lifecycle-job.sh +146 -0
  290. package/runtime/codex/bin/handoff-lifecycle.sh +280 -0
  291. package/runtime/codex/bin/handoff-preview.sh +169 -0
  292. package/runtime/codex/bin/handoff-run.sh +42 -26
  293. package/runtime/codex/bin/ingest-graph.sh +6 -0
  294. package/runtime/codex/bin/ingest-item.sh +10 -0
  295. package/runtime/codex/bin/ingest.sh +59 -30
  296. package/runtime/codex/bin/invite.sh +6 -0
  297. package/runtime/codex/bin/issue.sh +10 -0
  298. package/runtime/codex/bin/knowledge.sh +10 -0
  299. package/runtime/codex/bin/lib/config.sh +20 -0
  300. package/runtime/codex/bin/lib/context.sh +46 -25
  301. package/runtime/codex/bin/lib/git-sync.sh +70 -6
  302. package/runtime/codex/bin/lib/greeting.sh +34 -5
  303. package/runtime/codex/bin/lib/handoff-meta.sh +97 -0
  304. package/runtime/codex/bin/lib/worktree-links.sh +6 -0
  305. package/runtime/codex/bin/node-run.sh +42 -0
  306. package/runtime/codex/bin/notification.sh +6 -0
  307. package/runtime/codex/bin/observe-context.sh +14 -0
  308. package/runtime/codex/bin/onboarding.sh +6 -0
  309. package/runtime/codex/bin/person.py +4 -0
  310. package/runtime/codex/bin/person.sh +43 -10
  311. package/runtime/codex/bin/pi-render-spec.mjs +140 -0
  312. package/runtime/codex/bin/post-update.sh +37 -0
  313. package/runtime/codex/bin/prime-render-spec.mjs +147 -0
  314. package/runtime/codex/bin/publish-artifact.sh +55 -2
  315. package/runtime/codex/bin/quest.sh +9 -0
  316. package/runtime/codex/bin/question.sh +8 -0
  317. package/runtime/codex/bin/research-ingest.sh +7 -0
  318. package/runtime/codex/bin/restore-owned-skills.sh +67 -0
  319. package/runtime/codex/bin/retrieval_eval.py +385 -0
  320. package/runtime/codex/bin/runtime-identity.sh +70 -0
  321. package/runtime/codex/bin/runtime-upgrade.sh +43 -0
  322. package/runtime/codex/bin/scroll.sh +9 -0
  323. package/runtime/codex/bin/search.sh +231 -195
  324. package/runtime/codex/bin/settings.sh +174 -5
  325. package/runtime/codex/bin/startup-check.sh +136 -0
  326. package/runtime/codex/bin/telemetry.sh +522 -247
  327. package/runtime/codex/bin/test-changes.sh +344 -0
  328. package/runtime/codex/bin/thread.sh +9 -0
  329. package/runtime/codex/bin/todo.sh +9 -0
  330. package/runtime/codex/bin/view-render.sh +126 -0
  331. package/runtime/codex/bin/worktree-create.sh +19 -5
  332. package/runtime/codex/egregore_runtime/__init__.py +228 -0
  333. package/runtime/codex/egregore_runtime/adapters/__init__.py +5 -0
  334. package/runtime/codex/egregore_runtime/adapters/invitation.py +237 -0
  335. package/runtime/codex/egregore_runtime/adapters/notification.py +59 -0
  336. package/runtime/codex/egregore_runtime/adapters/qmd.py +1701 -0
  337. package/runtime/codex/egregore_runtime/adapters/qmd_cli.py +210 -0
  338. package/runtime/codex/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  339. package/runtime/codex/egregore_runtime/admin_gate.py +102 -0
  340. package/runtime/codex/egregore_runtime/artifacts.py +523 -0
  341. package/runtime/codex/egregore_runtime/contracts.py +499 -0
  342. package/runtime/codex/egregore_runtime/entitlements.py +85 -0
  343. package/runtime/codex/egregore_runtime/errors.py +10 -0
  344. package/runtime/codex/egregore_runtime/graph.py +356 -0
  345. package/runtime/codex/egregore_runtime/handoff_lookup.py +196 -0
  346. package/runtime/codex/egregore_runtime/harness_cli.py +1221 -0
  347. package/runtime/codex/egregore_runtime/identity.py +734 -0
  348. package/runtime/codex/egregore_runtime/identity_cli.py +91 -0
  349. package/runtime/codex/egregore_runtime/ingest.py +575 -0
  350. package/runtime/codex/egregore_runtime/ingest_cli.py +254 -0
  351. package/runtime/codex/egregore_runtime/ingest_index_cli.py +147 -0
  352. package/runtime/codex/egregore_runtime/invitation_cli.py +51 -0
  353. package/runtime/codex/egregore_runtime/invitations.py +116 -0
  354. package/runtime/codex/egregore_runtime/issue_cli.py +305 -0
  355. package/runtime/codex/egregore_runtime/issues.py +359 -0
  356. package/runtime/codex/egregore_runtime/knowledge.py +376 -0
  357. package/runtime/codex/egregore_runtime/knowledge_cli.py +173 -0
  358. package/runtime/codex/egregore_runtime/lifecycle.py +888 -0
  359. package/runtime/codex/egregore_runtime/lifecycle_cli.py +269 -0
  360. package/runtime/codex/egregore_runtime/notification_cli.py +125 -0
  361. package/runtime/codex/egregore_runtime/notifications.py +230 -0
  362. package/runtime/codex/egregore_runtime/observe.py +342 -0
  363. package/runtime/codex/egregore_runtime/onboarding.py +290 -0
  364. package/runtime/codex/egregore_runtime/onboarding_cli.py +110 -0
  365. package/runtime/codex/egregore_runtime/policy.py +144 -0
  366. package/runtime/codex/egregore_runtime/profile.py +193 -0
  367. package/runtime/codex/egregore_runtime/quest_cli.py +216 -0
  368. package/runtime/codex/egregore_runtime/question_cli.py +180 -0
  369. package/runtime/codex/egregore_runtime/questions.py +304 -0
  370. package/runtime/codex/egregore_runtime/quests.py +419 -0
  371. package/runtime/codex/egregore_runtime/readiness.py +379 -0
  372. package/runtime/codex/egregore_runtime/research_ingest.py +256 -0
  373. package/runtime/codex/egregore_runtime/research_ingest_cli.py +44 -0
  374. package/runtime/codex/egregore_runtime/runtime.py +464 -0
  375. package/runtime/codex/egregore_runtime/scroll_cli.py +185 -0
  376. package/runtime/codex/egregore_runtime/scrolls.py +726 -0
  377. package/runtime/codex/egregore_runtime/status.py +412 -0
  378. package/runtime/codex/egregore_runtime/status_cli.py +174 -0
  379. package/runtime/codex/egregore_runtime/sync.py +218 -0
  380. package/runtime/codex/egregore_runtime/teamsync.py +139 -0
  381. package/runtime/codex/egregore_runtime/telemetry.py +640 -0
  382. package/runtime/codex/egregore_runtime/thread_cli.py +173 -0
  383. package/runtime/codex/egregore_runtime/threads.py +517 -0
  384. package/runtime/codex/egregore_runtime/todo_cli.py +142 -0
  385. package/runtime/codex/egregore_runtime/todos.py +244 -0
  386. package/runtime/codex/egregore_runtime/upgrade.py +770 -0
  387. package/runtime/codex/egregore_runtime/upgrade_worker.py +53 -0
  388. package/runtime/codex/egregore_runtime/writeback.py +391 -0
  389. package/runtime/codex/egregore_runtime/writeback_cli.py +114 -0
  390. package/runtime/codex/manifest.json +98 -1
  391. package/runtime/pi/.codex/hooks/search-hint.js +21 -52
  392. package/runtime/pi/.codex/hooks.json +3 -3
  393. package/runtime/pi/.codex/skills/activity/SKILL.md +23 -66
  394. package/runtime/pi/.codex/skills/announce/SKILL.md +27 -50
  395. package/runtime/pi/.codex/skills/archive/SKILL.md +21 -36
  396. package/runtime/pi/.codex/skills/checkup/SKILL.md +77 -36
  397. package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
  398. package/runtime/pi/.codex/skills/dashboard/SKILL.md +17 -47
  399. package/runtime/pi/.codex/skills/handoff/SKILL.md +84 -133
  400. package/runtime/pi/.codex/skills/harvest/SKILL.md +32 -117
  401. package/runtime/pi/.codex/skills/ingest/SKILL.md +47 -25
  402. package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +18 -36
  403. package/runtime/pi/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
  404. package/runtime/pi/.codex/skills/invite/SKILL.md +21 -35
  405. package/runtime/pi/.codex/skills/issue/SKILL.md +60 -41
  406. package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
  407. package/runtime/pi/.codex/skills/meeting/SKILL.md +16 -36
  408. package/runtime/pi/.codex/skills/meeting/references/analysis-contract.md +48 -0
  409. package/runtime/pi/.codex/skills/note/SKILL.md +30 -25
  410. package/runtime/pi/.codex/skills/onboarding/SKILL.md +36 -41
  411. package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
  412. package/runtime/pi/.codex/skills/quest/SKILL.md +27 -66
  413. package/runtime/pi/.codex/skills/reflect/SKILL.md +22 -36
  414. package/runtime/pi/.codex/skills/save/SKILL.md +2 -2
  415. package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
  416. package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
  417. package/runtime/pi/.codex/skills/tutorial/SKILL.md +40 -41
  418. package/runtime/pi/.codex/skills/view/SKILL.md +115 -111
  419. package/runtime/pi/.codex/skills/wrap/SKILL.md +45 -41
  420. package/runtime/pi/.codex/spec-manifest.json +9 -9
  421. package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -48
  422. package/runtime/pi/.pi/extensions/egregore.ts +7 -0
  423. package/runtime/pi/.pi/spec-manifest.json +2 -2
  424. package/runtime/pi/AGENTS.md +62 -58
  425. package/runtime/pi/bin/activity-action.sh +92 -0
  426. package/runtime/pi/bin/activity-data.sh +12 -233
  427. package/runtime/pi/bin/agent.sh +84 -100
  428. package/runtime/pi/bin/artifact-register.sh +164 -0
  429. package/runtime/pi/bin/artifact-writeback.sh +53 -0
  430. package/runtime/pi/bin/artifacts.sh +288 -0
  431. package/runtime/pi/bin/build-sealed-dataroom.mjs +722 -0
  432. package/runtime/pi/bin/capture-run.sh +18 -2
  433. package/runtime/pi/bin/codex-render-spec.mjs +41 -16
  434. package/runtime/pi/bin/codex-session-start.sh +14 -4
  435. package/runtime/pi/bin/codex-skill-render.mjs +9 -7
  436. package/runtime/pi/bin/corpus_map.py +806 -0
  437. package/runtime/pi/bin/corpus_survey.py +304 -0
  438. package/runtime/pi/bin/dashboard-data.sh +11 -171
  439. package/runtime/pi/bin/github-auth.sh +121 -0
  440. package/runtime/pi/bin/graph-batch.sh +7 -0
  441. package/runtime/pi/bin/graph-op.sh +4 -0
  442. package/runtime/pi/bin/graph-projection.sh +54 -0
  443. package/runtime/pi/bin/graph-wal.sh +13 -0
  444. package/runtime/pi/bin/graph.sh +44 -0
  445. package/runtime/pi/bin/handoff-lifecycle-job.sh +146 -0
  446. package/runtime/pi/bin/handoff-lifecycle.sh +280 -0
  447. package/runtime/pi/bin/handoff-preview.sh +169 -0
  448. package/runtime/pi/bin/handoff-run.sh +42 -26
  449. package/runtime/pi/bin/ingest-graph.sh +6 -0
  450. package/runtime/pi/bin/ingest-item.sh +10 -0
  451. package/runtime/pi/bin/ingest.sh +59 -30
  452. package/runtime/pi/bin/invite.sh +6 -0
  453. package/runtime/pi/bin/issue.sh +10 -0
  454. package/runtime/pi/bin/knowledge.sh +10 -0
  455. package/runtime/pi/bin/lib/config.sh +20 -0
  456. package/runtime/pi/bin/lib/context.sh +46 -25
  457. package/runtime/pi/bin/lib/git-sync.sh +70 -6
  458. package/runtime/pi/bin/lib/greeting.sh +34 -5
  459. package/runtime/pi/bin/lib/handoff-meta.sh +97 -0
  460. package/runtime/pi/bin/lib/worktree-links.sh +6 -0
  461. package/runtime/pi/bin/node-run.sh +42 -0
  462. package/runtime/pi/bin/notification.sh +6 -0
  463. package/runtime/pi/bin/observe-context.sh +14 -0
  464. package/runtime/pi/bin/onboarding.sh +6 -0
  465. package/runtime/pi/bin/person.py +4 -0
  466. package/runtime/pi/bin/person.sh +43 -10
  467. package/runtime/pi/bin/pi-observe-context.mjs +93 -0
  468. package/runtime/pi/bin/pi-product-workflows.mjs +1 -1
  469. package/runtime/pi/bin/pi-render-spec.mjs +1 -1
  470. package/runtime/pi/bin/post-update.sh +37 -0
  471. package/runtime/pi/bin/prime-render-spec.mjs +147 -0
  472. package/runtime/pi/bin/publish-artifact.sh +55 -2
  473. package/runtime/pi/bin/quest.sh +9 -0
  474. package/runtime/pi/bin/question.sh +8 -0
  475. package/runtime/pi/bin/research-ingest.sh +7 -0
  476. package/runtime/pi/bin/restore-owned-skills.sh +67 -0
  477. package/runtime/pi/bin/retrieval_eval.py +385 -0
  478. package/runtime/pi/bin/runtime-identity.sh +70 -0
  479. package/runtime/pi/bin/runtime-upgrade.sh +43 -0
  480. package/runtime/pi/bin/scroll.sh +9 -0
  481. package/runtime/pi/bin/search.sh +231 -195
  482. package/runtime/pi/bin/settings.sh +174 -5
  483. package/runtime/pi/bin/startup-check.sh +136 -0
  484. package/runtime/pi/bin/telemetry.sh +522 -247
  485. package/runtime/pi/bin/test-changes.sh +344 -0
  486. package/runtime/pi/bin/thread.sh +9 -0
  487. package/runtime/pi/bin/todo.sh +9 -0
  488. package/runtime/pi/bin/view-render.sh +126 -0
  489. package/runtime/pi/bin/worktree-create.sh +19 -5
  490. package/runtime/pi/egregore_runtime/__init__.py +228 -0
  491. package/runtime/pi/egregore_runtime/adapters/__init__.py +5 -0
  492. package/runtime/pi/egregore_runtime/adapters/invitation.py +237 -0
  493. package/runtime/pi/egregore_runtime/adapters/notification.py +59 -0
  494. package/runtime/pi/egregore_runtime/adapters/qmd.py +1701 -0
  495. package/runtime/pi/egregore_runtime/adapters/qmd_cli.py +210 -0
  496. package/runtime/pi/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  497. package/runtime/pi/egregore_runtime/admin_gate.py +102 -0
  498. package/runtime/pi/egregore_runtime/artifacts.py +523 -0
  499. package/runtime/pi/egregore_runtime/contracts.py +499 -0
  500. package/runtime/pi/egregore_runtime/entitlements.py +85 -0
  501. package/runtime/pi/egregore_runtime/errors.py +10 -0
  502. package/runtime/pi/egregore_runtime/graph.py +356 -0
  503. package/runtime/pi/egregore_runtime/handoff_lookup.py +196 -0
  504. package/runtime/pi/egregore_runtime/harness_cli.py +1221 -0
  505. package/runtime/pi/egregore_runtime/identity.py +734 -0
  506. package/runtime/pi/egregore_runtime/identity_cli.py +91 -0
  507. package/runtime/pi/egregore_runtime/ingest.py +575 -0
  508. package/runtime/pi/egregore_runtime/ingest_cli.py +254 -0
  509. package/runtime/pi/egregore_runtime/ingest_index_cli.py +147 -0
  510. package/runtime/pi/egregore_runtime/invitation_cli.py +51 -0
  511. package/runtime/pi/egregore_runtime/invitations.py +116 -0
  512. package/runtime/pi/egregore_runtime/issue_cli.py +305 -0
  513. package/runtime/pi/egregore_runtime/issues.py +359 -0
  514. package/runtime/pi/egregore_runtime/knowledge.py +376 -0
  515. package/runtime/pi/egregore_runtime/knowledge_cli.py +173 -0
  516. package/runtime/pi/egregore_runtime/lifecycle.py +888 -0
  517. package/runtime/pi/egregore_runtime/lifecycle_cli.py +269 -0
  518. package/runtime/pi/egregore_runtime/notification_cli.py +125 -0
  519. package/runtime/pi/egregore_runtime/notifications.py +230 -0
  520. package/runtime/pi/egregore_runtime/observe.py +342 -0
  521. package/runtime/pi/egregore_runtime/onboarding.py +290 -0
  522. package/runtime/pi/egregore_runtime/onboarding_cli.py +110 -0
  523. package/runtime/pi/egregore_runtime/policy.py +144 -0
  524. package/runtime/pi/egregore_runtime/profile.py +193 -0
  525. package/runtime/pi/egregore_runtime/quest_cli.py +216 -0
  526. package/runtime/pi/egregore_runtime/question_cli.py +180 -0
  527. package/runtime/pi/egregore_runtime/questions.py +304 -0
  528. package/runtime/pi/egregore_runtime/quests.py +419 -0
  529. package/runtime/pi/egregore_runtime/readiness.py +379 -0
  530. package/runtime/pi/egregore_runtime/research_ingest.py +256 -0
  531. package/runtime/pi/egregore_runtime/research_ingest_cli.py +44 -0
  532. package/runtime/pi/egregore_runtime/runtime.py +464 -0
  533. package/runtime/pi/egregore_runtime/scroll_cli.py +185 -0
  534. package/runtime/pi/egregore_runtime/scrolls.py +726 -0
  535. package/runtime/pi/egregore_runtime/status.py +412 -0
  536. package/runtime/pi/egregore_runtime/status_cli.py +174 -0
  537. package/runtime/pi/egregore_runtime/sync.py +218 -0
  538. package/runtime/pi/egregore_runtime/teamsync.py +139 -0
  539. package/runtime/pi/egregore_runtime/telemetry.py +640 -0
  540. package/runtime/pi/egregore_runtime/thread_cli.py +173 -0
  541. package/runtime/pi/egregore_runtime/threads.py +517 -0
  542. package/runtime/pi/egregore_runtime/todo_cli.py +142 -0
  543. package/runtime/pi/egregore_runtime/todos.py +244 -0
  544. package/runtime/pi/egregore_runtime/upgrade.py +770 -0
  545. package/runtime/pi/egregore_runtime/upgrade_worker.py +53 -0
  546. package/runtime/pi/egregore_runtime/writeback.py +391 -0
  547. package/runtime/pi/egregore_runtime/writeback_cli.py +114 -0
  548. package/runtime/pi/manifest.json +98 -1
  549. package/runtime/prime/.codex/hooks/search-hint.js +21 -52
  550. package/runtime/prime/.codex/hooks.json +3 -3
  551. package/runtime/prime/.codex/skills/activity/SKILL.md +23 -66
  552. package/runtime/prime/.codex/skills/announce/SKILL.md +27 -50
  553. package/runtime/prime/.codex/skills/archive/SKILL.md +21 -36
  554. package/runtime/prime/.codex/skills/checkup/SKILL.md +77 -36
  555. package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
  556. package/runtime/prime/.codex/skills/dashboard/SKILL.md +17 -47
  557. package/runtime/prime/.codex/skills/handoff/SKILL.md +84 -133
  558. package/runtime/prime/.codex/skills/harvest/SKILL.md +32 -117
  559. package/runtime/prime/.codex/skills/ingest/SKILL.md +47 -25
  560. package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +18 -36
  561. package/runtime/prime/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
  562. package/runtime/prime/.codex/skills/invite/SKILL.md +21 -35
  563. package/runtime/prime/.codex/skills/issue/SKILL.md +60 -41
  564. package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
  565. package/runtime/prime/.codex/skills/meeting/SKILL.md +16 -36
  566. package/runtime/prime/.codex/skills/meeting/references/analysis-contract.md +48 -0
  567. package/runtime/prime/.codex/skills/note/SKILL.md +30 -25
  568. package/runtime/prime/.codex/skills/onboarding/SKILL.md +36 -41
  569. package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
  570. package/runtime/prime/.codex/skills/quest/SKILL.md +27 -66
  571. package/runtime/prime/.codex/skills/reflect/SKILL.md +22 -36
  572. package/runtime/prime/.codex/skills/save/SKILL.md +2 -2
  573. package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
  574. package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
  575. package/runtime/prime/.codex/skills/tutorial/SKILL.md +40 -41
  576. package/runtime/prime/.codex/skills/view/SKILL.md +115 -111
  577. package/runtime/prime/.codex/skills/wrap/SKILL.md +45 -41
  578. package/runtime/prime/.codex/spec-manifest.json +9 -9
  579. package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +57 -48
  580. package/runtime/prime/.prime/agent/extensions/egregore.ts +7 -0
  581. package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
  582. package/runtime/prime/AGENTS.md +62 -58
  583. package/runtime/prime/bin/activity-action.sh +92 -0
  584. package/runtime/prime/bin/activity-data.sh +12 -233
  585. package/runtime/prime/bin/agent.sh +84 -100
  586. package/runtime/prime/bin/artifact-register.sh +164 -0
  587. package/runtime/prime/bin/artifact-writeback.sh +53 -0
  588. package/runtime/prime/bin/artifacts.sh +288 -0
  589. package/runtime/prime/bin/build-sealed-dataroom.mjs +722 -0
  590. package/runtime/prime/bin/capture-run.sh +18 -2
  591. package/runtime/prime/bin/codex-render-spec.mjs +41 -16
  592. package/runtime/prime/bin/codex-session-start.sh +14 -4
  593. package/runtime/prime/bin/codex-skill-render.mjs +9 -7
  594. package/runtime/prime/bin/corpus_map.py +806 -0
  595. package/runtime/prime/bin/corpus_survey.py +304 -0
  596. package/runtime/prime/bin/dashboard-data.sh +11 -171
  597. package/runtime/prime/bin/github-auth.sh +121 -0
  598. package/runtime/prime/bin/graph-batch.sh +7 -0
  599. package/runtime/prime/bin/graph-op.sh +4 -0
  600. package/runtime/prime/bin/graph-projection.sh +54 -0
  601. package/runtime/prime/bin/graph-wal.sh +13 -0
  602. package/runtime/prime/bin/graph.sh +44 -0
  603. package/runtime/prime/bin/handoff-lifecycle-job.sh +146 -0
  604. package/runtime/prime/bin/handoff-lifecycle.sh +280 -0
  605. package/runtime/prime/bin/handoff-preview.sh +169 -0
  606. package/runtime/prime/bin/handoff-run.sh +42 -26
  607. package/runtime/prime/bin/ingest-graph.sh +6 -0
  608. package/runtime/prime/bin/ingest-item.sh +10 -0
  609. package/runtime/prime/bin/ingest.sh +59 -30
  610. package/runtime/prime/bin/invite.sh +6 -0
  611. package/runtime/prime/bin/issue.sh +10 -0
  612. package/runtime/prime/bin/knowledge.sh +10 -0
  613. package/runtime/prime/bin/lib/config.sh +20 -0
  614. package/runtime/prime/bin/lib/context.sh +46 -25
  615. package/runtime/prime/bin/lib/git-sync.sh +70 -6
  616. package/runtime/prime/bin/lib/greeting.sh +34 -5
  617. package/runtime/prime/bin/lib/handoff-meta.sh +97 -0
  618. package/runtime/prime/bin/lib/worktree-links.sh +6 -0
  619. package/runtime/prime/bin/node-run.sh +42 -0
  620. package/runtime/prime/bin/notification.sh +6 -0
  621. package/runtime/prime/bin/observe-context.sh +14 -0
  622. package/runtime/prime/bin/onboarding.sh +6 -0
  623. package/runtime/prime/bin/person.py +4 -0
  624. package/runtime/prime/bin/person.sh +43 -10
  625. package/runtime/prime/bin/pi-observe-context.mjs +93 -0
  626. package/runtime/prime/bin/pi-product-workflows.mjs +1 -1
  627. package/runtime/prime/bin/pi-render-spec.mjs +140 -0
  628. package/runtime/prime/bin/post-update.sh +37 -0
  629. package/runtime/prime/bin/prime-render-spec.mjs +1 -1
  630. package/runtime/prime/bin/publish-artifact.sh +55 -2
  631. package/runtime/prime/bin/quest.sh +9 -0
  632. package/runtime/prime/bin/question.sh +8 -0
  633. package/runtime/prime/bin/research-ingest.sh +7 -0
  634. package/runtime/prime/bin/restore-owned-skills.sh +67 -0
  635. package/runtime/prime/bin/retrieval_eval.py +385 -0
  636. package/runtime/prime/bin/runtime-identity.sh +70 -0
  637. package/runtime/prime/bin/runtime-upgrade.sh +43 -0
  638. package/runtime/prime/bin/scroll.sh +9 -0
  639. package/runtime/prime/bin/search.sh +231 -195
  640. package/runtime/prime/bin/settings.sh +174 -5
  641. package/runtime/prime/bin/startup-check.sh +136 -0
  642. package/runtime/prime/bin/telemetry.sh +522 -247
  643. package/runtime/prime/bin/test-changes.sh +344 -0
  644. package/runtime/prime/bin/thread.sh +9 -0
  645. package/runtime/prime/bin/todo.sh +9 -0
  646. package/runtime/prime/bin/view-render.sh +126 -0
  647. package/runtime/prime/bin/worktree-create.sh +19 -5
  648. package/runtime/prime/egregore_runtime/__init__.py +228 -0
  649. package/runtime/prime/egregore_runtime/adapters/__init__.py +5 -0
  650. package/runtime/prime/egregore_runtime/adapters/invitation.py +237 -0
  651. package/runtime/prime/egregore_runtime/adapters/notification.py +59 -0
  652. package/runtime/prime/egregore_runtime/adapters/qmd.py +1701 -0
  653. package/runtime/prime/egregore_runtime/adapters/qmd_cli.py +210 -0
  654. package/runtime/prime/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
  655. package/runtime/prime/egregore_runtime/admin_gate.py +102 -0
  656. package/runtime/prime/egregore_runtime/artifacts.py +523 -0
  657. package/runtime/prime/egregore_runtime/contracts.py +499 -0
  658. package/runtime/prime/egregore_runtime/entitlements.py +85 -0
  659. package/runtime/prime/egregore_runtime/errors.py +10 -0
  660. package/runtime/prime/egregore_runtime/graph.py +356 -0
  661. package/runtime/prime/egregore_runtime/handoff_lookup.py +196 -0
  662. package/runtime/prime/egregore_runtime/harness_cli.py +1221 -0
  663. package/runtime/prime/egregore_runtime/identity.py +734 -0
  664. package/runtime/prime/egregore_runtime/identity_cli.py +91 -0
  665. package/runtime/prime/egregore_runtime/ingest.py +575 -0
  666. package/runtime/prime/egregore_runtime/ingest_cli.py +254 -0
  667. package/runtime/prime/egregore_runtime/ingest_index_cli.py +147 -0
  668. package/runtime/prime/egregore_runtime/invitation_cli.py +51 -0
  669. package/runtime/prime/egregore_runtime/invitations.py +116 -0
  670. package/runtime/prime/egregore_runtime/issue_cli.py +305 -0
  671. package/runtime/prime/egregore_runtime/issues.py +359 -0
  672. package/runtime/prime/egregore_runtime/knowledge.py +376 -0
  673. package/runtime/prime/egregore_runtime/knowledge_cli.py +173 -0
  674. package/runtime/prime/egregore_runtime/lifecycle.py +888 -0
  675. package/runtime/prime/egregore_runtime/lifecycle_cli.py +269 -0
  676. package/runtime/prime/egregore_runtime/notification_cli.py +125 -0
  677. package/runtime/prime/egregore_runtime/notifications.py +230 -0
  678. package/runtime/prime/egregore_runtime/observe.py +342 -0
  679. package/runtime/prime/egregore_runtime/onboarding.py +290 -0
  680. package/runtime/prime/egregore_runtime/onboarding_cli.py +110 -0
  681. package/runtime/prime/egregore_runtime/policy.py +144 -0
  682. package/runtime/prime/egregore_runtime/profile.py +193 -0
  683. package/runtime/prime/egregore_runtime/quest_cli.py +216 -0
  684. package/runtime/prime/egregore_runtime/question_cli.py +180 -0
  685. package/runtime/prime/egregore_runtime/questions.py +304 -0
  686. package/runtime/prime/egregore_runtime/quests.py +419 -0
  687. package/runtime/prime/egregore_runtime/readiness.py +379 -0
  688. package/runtime/prime/egregore_runtime/research_ingest.py +256 -0
  689. package/runtime/prime/egregore_runtime/research_ingest_cli.py +44 -0
  690. package/runtime/prime/egregore_runtime/runtime.py +464 -0
  691. package/runtime/prime/egregore_runtime/scroll_cli.py +185 -0
  692. package/runtime/prime/egregore_runtime/scrolls.py +726 -0
  693. package/runtime/prime/egregore_runtime/status.py +412 -0
  694. package/runtime/prime/egregore_runtime/status_cli.py +174 -0
  695. package/runtime/prime/egregore_runtime/sync.py +218 -0
  696. package/runtime/prime/egregore_runtime/teamsync.py +139 -0
  697. package/runtime/prime/egregore_runtime/telemetry.py +640 -0
  698. package/runtime/prime/egregore_runtime/thread_cli.py +173 -0
  699. package/runtime/prime/egregore_runtime/threads.py +517 -0
  700. package/runtime/prime/egregore_runtime/todo_cli.py +142 -0
  701. package/runtime/prime/egregore_runtime/todos.py +244 -0
  702. package/runtime/prime/egregore_runtime/upgrade.py +770 -0
  703. package/runtime/prime/egregore_runtime/upgrade_worker.py +53 -0
  704. package/runtime/prime/egregore_runtime/writeback.py +391 -0
  705. package/runtime/prime/egregore_runtime/writeback_cli.py +114 -0
  706. package/runtime/prime/manifest.json +98 -1
@@ -0,0 +1,395 @@
1
+ # Harvest — Cognitive Protocol
2
+
3
+ > Harvest elicits latent human or agent context — preferences, positions,
4
+ > tacit knowledge, taste, constraints, role-shaped judgment — and turns
5
+ > the answers into organizationally usable context.
6
+
7
+ This document is the **cognitive protocol** for `/harvest`. It defines how
8
+ the model conducts the conversation: how it seeds, generates, evaluates,
9
+ checkpoints, cascades, and synthesizes. It is authored fresh from
10
+ [`AUDIT.md`](./AUDIT.md).
11
+
12
+ For persistence (graph schema, async metadata, local-mode markdown
13
+ contracts), see `AUDIT.md` §9–§11. This document references those
14
+ contracts but does not re-specify them.
15
+
16
+ For format (synthesis layers, synthesis blocks), see `FORMAT.md`. This
17
+ document points to it but does not duplicate it.
18
+
19
+ For question intent, answer shape, probe moves, and hard bans, see
20
+ [`QUESTION_PALETTE.md`](./QUESTION_PALETTE.md). It is their canonical
21
+ home; this document controls when they enter the conversational rhythm.
22
+
23
+ ---
24
+
25
+ ## 0. What the model is doing
26
+
27
+ Harvest is **model-led, not flowchart-led**:
28
+
29
+ > The model owns the next question. The protocol only requires that it
30
+ > can explain why the question is being asked, preserve the answer, and
31
+ > update its interpretation.
32
+
33
+ There is no fixed round count, no fixed question count per round, no
34
+ required dimensions. The model reads the situation, generates the next
35
+ question with an articulable purpose, evaluates the answer, and decides
36
+ whether to deepen, pivot, checkpoint, cascade, or synthesize.
37
+
38
+ ---
39
+
40
+ ## 1. Boundary (read once, then never again in this doc)
41
+
42
+ **Harvest** elicits latent context. **Spiral** stress-tests claims. They
43
+ share craft (good questions, careful evaluation, evidence-bound
44
+ synthesis) but their objectives differ.
45
+
46
+ Harvest does not pick winners. Harvest does not converge by obligation.
47
+ Divergence between respondents is information, not a problem to resolve.
48
+ **A harvest maps the choices; it need not make them** — for some
49
+ harvests the output is *"Cem prefers X because…"*, *"Oz sees the
50
+ boundary this way…"*, *"Renc is carrying a constraint we haven't
51
+ documented…"* — useful context even when no recommendation is appropriate.
52
+
53
+ That's the boundary. The rest of this document stays in harvest's own
54
+ register: *elicit, preserve, situate, surface, interpret-with-evidence*.
55
+
56
+ The six elicitation moves in §3 (seed, generate, evaluate, checkpoint,
57
+ cascade, synthesize) are the durable craft. They were extracted from the
58
+ prior spiral-context harvest draft; the objectives that drifted toward
59
+ claim-stress-testing are not. After this section, that prior draft is
60
+ not referenced again.
61
+
62
+ ---
63
+
64
+ ## 2. Invariants
65
+
66
+ Every harvest must hold these. They are non-negotiable and apply
67
+ regardless of harvest shape (single / multi, present / async, preference
68
+ / alignment / extraction).
69
+
70
+ 1. **No hidden role stereotyping.** Every implicit role inference is
71
+ inspectable in the manifest *and* surfaced into the interaction when
72
+ confidence is below threshold.
73
+ 2. **No survey collapse.** AskUserQuestion (AUQ) options never exhaust
74
+ the answer space. Every question carries a freeform escape hatch.
75
+ Options are drawn from context, not prefab taxonomies.
76
+ 3. **No unmarked cascade contamination.** When prior respondents'
77
+ positions are disclosed to a later respondent, that disclosure is
78
+ explicit, recorded on the manifest, and visible to the respondent.
79
+ 4. **No synthesis without evidence.** Every assertion in synthesis
80
+ traces to a recorded turn or to seed context, marked as such.
81
+ 5. **The model can articulate `questionIntent` for every question and
82
+ explain why the chosen answer shape fits it.** If it can't, the
83
+ question is not ready to ask. Choose from `QUESTION_PALETTE.md`; when
84
+ another shape fits better than its closest intent row, record a
85
+ one-sentence reason.
86
+
87
+ ---
88
+
89
+ ## 3. The six moves
90
+
91
+ ### 3.1 Seed
92
+
93
+ Every harvest begins with **intent** and **context**.
94
+
95
+ - **Intent** = what the harvest wants to learn — dimensions, not
96
+ questions. *"Understand each respondent's preferences, constraints,
97
+ and tensions around pricing"* is intent. *"What price should we
98
+ charge?"* is a decision, not a harvest intent.
99
+ - **Context** = what is already known: seed documents, prior harvests,
100
+ RoleSheets for sender and receiver(s), recent sessions/handoffs/quests
101
+ on the topic.
102
+
103
+ If intent or context is ambiguous, ask the harvest **initiator** for
104
+ clarification before generating the first questions. A handful of
105
+ clarifying questions upfront produces a dramatically better harvest than
106
+ proceeding on assumption.
107
+
108
+ **Resolve RoleSheets before the first question.** See `AUDIT.md` §6 for
109
+ the schema. Two sheets per turn: `SenderSheet` (who is asking — usually
110
+ the initiator) and `ReceiverSheet` (who is being asked). The asymmetry
111
+ matters: *cem-asks-renc-about-pricing* differs from
112
+ *renc-asks-cem-about-pricing*.
113
+
114
+ ### 3.2 Generate (situated questions)
115
+
116
+ Generate questions live from intent + context + RoleSheets + what has
117
+ come back so far. Never from a predetermined list.
118
+
119
+ Each question carries:
120
+ - An articulable **`questionIntent`** the model can state to itself.
121
+ - An answer shape selected from `QUESTION_PALETTE.md`.
122
+ - A short **header** (≤12 chars) when AskUserQuestion (AUQ) is the
123
+ chosen interaction.
124
+ - Options drawn from the actual context (seed quotes, prior answers,
125
+ role-likely lenses) when the chosen shape uses options — never prefab
126
+ taxonomies.
127
+ - A **freeform escape hatch** for every closed shape (AUQ provides
128
+ "Other" by default).
129
+
130
+ Choose the move and answer shape from `QUESTION_PALETTE.md`. Its named
131
+ conversational moves — ladder, critical incident, triad, best-worst,
132
+ swing question, mirrored-inference check, and one-at-a-time forced
133
+ choice — run inside this generate → evaluate rhythm; the palette owns
134
+ their definitions and bans.
135
+
136
+ **Round shape (affordance, not script)**:
137
+ - One interaction per round. Use AUQ for structured choices and plain
138
+ dialogue for conversational moves that need no widget.
139
+ - 1–3 questions per round (model decides; usually 2).
140
+ - Round count is not fixed. End when returns diminish or the respondent
141
+ signals.
142
+
143
+ **How much context to include with each question is judgment.**
144
+ Considerations the model weighs:
145
+
146
+ - Showing another respondent's position can provoke valuable reaction —
147
+ or bias the answer. The disclosure setting (§3.5) settles this per
148
+ harvest.
149
+ - Extensive recontextualization helps a respondent who lacks
150
+ background. It patronizes one who has it.
151
+ - Structured options scaffold a low-stakes decision. They flatten a
152
+ high-stakes preference. Use freeform when nuance matters.
153
+ - A diagram or position map can orient. It can also frame the answer.
154
+
155
+ **Forbidden in round 1**:
156
+ - Leading questions that presuppose a position.
157
+ - Disclosing other respondents' answers (unless the disclosure setting
158
+ explicitly permits it; see §3.5).
159
+ - Asking what the seed already answers.
160
+
161
+ **Always permitted**:
162
+ - Asking the respondent to reframe the harvest's intent.
163
+ - Asking what the model *should* be asking that it isn't.
164
+ - Ending early at any checkpoint.
165
+
166
+ **Anti-calcification handling.** When a `ReceiverSheet` field is
167
+ inferred at low/medium confidence, surface the inference into the
168
+ question itself: *"I'm reading you as approaching this from the eng-lead
169
+ lens — push back if that's wrong."* The respondent can correct in one
170
+ turn, before the inference shapes a chain of questions.
171
+
172
+ ### 3.3 Evaluate
173
+
174
+ After each response, the model notices what came back and records an
175
+ **`evaluation`** alongside the answer. The kinds of things a good
176
+ interviewer notices:
177
+
178
+ - **Novel framing** — the respondent reframed the question in a way
179
+ that reveals a different mental model. High signal. Explore it.
180
+ - **Unresolved tension** — the answer contradicts something said
181
+ earlier or something in the seed. Worth probing — but probing is
182
+ *understanding the tension*, not pressing the respondent toward
183
+ resolution.
184
+ - **Tacit content** — a preference, taste, or constraint surfaced that
185
+ the respondent treats as obvious but isn't documented anywhere. High
186
+ signal for a context/preference harvest.
187
+ - **Shallow signal** — canned or surface-level answer. Try the
188
+ dimension from a different angle, or accept that the respondent
189
+ doesn't have more to give on it.
190
+ - **Strong conviction** — clear, defended position. Clarify once if
191
+ useful; respect it. Strong preferences are data, not resistance.
192
+ - **Surprising connection** — the respondent linked two dimensions the
193
+ model didn't anticipate. Follow the thread.
194
+ - **Diminishing returns** — confirms what's known. Move on.
195
+ - **Satisficing watch** — straight-lining, instant first-card picks,
196
+ one-word notes, or all-selected multis suggest shallow processing.
197
+ Do not treat the pattern as reliable signal; switch shape or probe
198
+ before synthesizing it.
199
+ - **Sycophancy guard** — evaluations must record material disagreement
200
+ or unresolved tension when present. An evaluation stream that only
201
+ affirms the respondent is incomplete.
202
+
203
+ These are orientations, not a checklist. They feed the next question
204
+ generation and they accumulate into a **running interpretive state** —
205
+ the model's evolving read of what this harvest is producing. By
206
+ synthesis time, the model is assembling and interpreting from the
207
+ running state, not starting from scratch.
208
+
209
+ ### 3.4 Checkpoint
210
+
211
+ At natural transition points — when a cluster of dimensions feels
212
+ explored, when returns diminish, when the respondent signals — offer a
213
+ checkpoint:
214
+
215
+ > "We've covered [dimensions]. Threads still worth pulling on:
216
+ > [remaining]. Continue, or synthesize what we have?"
217
+
218
+ The respondent co-steers. They might say *"skip X, go deeper on Y"* or
219
+ *"I'm done"* or *"actually, there's something we haven't touched."* All
220
+ productive responses.
221
+
222
+ Checkpoints respect the respondent's time and agency. **Do not impose
223
+ arbitrary limits** — no fixed round count, no fixed turn count. Offer
224
+ checkpoints when a genuine transition arrives.
225
+
226
+ ### 3.5 Multi-respondent disclosure (cascade)
227
+
228
+ Cascade = running the harvest across multiple respondents in sequence;
229
+ the design question is what each later respondent sees. The harvest
230
+ declares a **disclosure setting** (the `context_mode` field) at seed
231
+ time and records it on the manifest:
232
+
233
+ | Setting | Behavior | Use when | Default |
234
+ |---|---|---|---|
235
+ | **blind** | Each respondent answers independently; other respondents' answer content neither appears nor shapes their questions | Preference, estimate, or position intents where uncontaminated signal matters | **Yes** for preference, estimate, and position intents |
236
+ | **disclosed** | Later respondents see attributed, crystallized prior positions | Reaction is the point; later respondents add value by responding to what already surfaced | Only when the initiator explicitly chooses disclosure |
237
+ | **comparative** | Later respondents are explicitly asked to compare or contrast their position with attributed priors | The comparison itself is the elicitation intent | Only when the initiator explicitly chooses comparison |
238
+
239
+ The setting is **explicit on the manifest, visible to respondents**, and
240
+ shapes what context the model includes per question (§3.2). An unmarked
241
+ cascade is an invariant violation (§2 invariant 3).
242
+
243
+ In **disclosed** and **comparative** modes, attribute prior positions
244
+ when surfacing them: *"Oz said X. Where does that land for you?"* —
245
+ never *"Some on the team think X."* Anonymized contamination is worse
246
+ than disclosed contamination.
247
+
248
+ In **blind** mode, another respondent's answer content must not shape a
249
+ later person's questions, even invisibly. Adaptive interviews may use
250
+ the seed, RoleSheets, and that respondent's own prior turns. A blind
251
+ shared-artifact round freezes the source version and question set before
252
+ the first response so every respondent receives the same artifact.
253
+
254
+ Never turn attributed positions into an anonymous or aggregate claim
255
+ such as *"most of the team thinks X."* Name the respondents and preserve
256
+ their reasons. A majority is not collective alignment; 2/3 may be
257
+ reported as an attributed majority, never as a shared team position.
258
+
259
+ **Corrections and sealing.** While collection is open, a respondent may
260
+ correct their own response. Store each correction append-only; the latest
261
+ finalized response is canonical, and the completion count is the number
262
+ of distinct finalized respondents, not the number of submissions. A
263
+ shared-artifact round seals only when its declared completion condition
264
+ is met (by default, one finalized response from every declared
265
+ respondent). After sealing, the evidence set is immutable. A changed
266
+ position starts a new round that references the sealed one. There is no
267
+ automatic second pass after disclosure.
268
+
269
+ ### 3.6 Synthesize
270
+
271
+ Synthesis is a deliberate act when all respondents finish (or a solo
272
+ harvest reaches diminishing returns). The model reads everything
273
+ through the running interpretive state and produces a layered artifact
274
+ per `FORMAT.md`.
275
+
276
+ **Two principles bind synthesis**:
277
+
278
+ 1. **Interpret with evidence.** Every assertion ties to a recorded turn
279
+ or marked seed (§2 invariant 4). Quotes are verbatim and attributed.
280
+ Patterns name the turns they're extracted from.
281
+ 2. **Generative emission.** Which layers and which sections within them
282
+ exist depends on what the harvest produced. A pure preference harvest
283
+ may emit L0 + L2 + L3 with no L1; an alignment scan may emit a thick
284
+ L1 with thin per-person L2; a knowledge extraction may emit L0 +
285
+ structured-knowledge L2 + L3. The model chooses based on what's
286
+ present, not what the template "expects."
287
+
288
+ Synthesis carries **no obligation to converge or pick a winner**. It
289
+ surfaces what was elicited, organized for legibility. For some
290
+ harvests, *"Cem prefers X because Y; Oz prefers Z because W; they don't
291
+ disagree, they're optimizing for different constraints"* is the entire
292
+ output.
293
+
294
+ The synthesis artifact is `/reflect`-able: patterns, preferences, and
295
+ positions emit in shapes the org's pattern/decision graph can ingest.
296
+ See `FORMAT.md` §8.
297
+
298
+ ---
299
+
300
+ ## 4. The full rhythm
301
+
302
+ ```
303
+ seed → generate → present → evaluate → ((generate → ...))* → checkpoint
304
+ → ((continue / pivot / cascade / end))* → synthesize
305
+ ```
306
+
307
+ This is a rhythm, not a script. The model inhabits it the way a good
308
+ interviewer inhabits conversation — alert, present, willing to follow
309
+ signal, willing to end early, willing to be surprised.
310
+
311
+ ---
312
+
313
+ ## 5. Self-harvest (single-respondent case)
314
+
315
+ When `sender == receiver` — *"I want to think through my own position
316
+ on X"* — cascade is moot, the disclosure setting is moot, RoleSheet
317
+ asymmetry collapses. Everything else applies: seed, generate situated
318
+ questions, evaluate, checkpoint, synthesize. The model interviews the
319
+ user and produces the same layered artifact. No special path; just the
320
+ single-respondent case of the multi-respondent flow.
321
+
322
+ ---
323
+
324
+ ## 6. Async harvest (respondent not in session)
325
+
326
+ When a respondent isn't present:
327
+
328
+ 1. The model generates the next round's questions for that respondent
329
+ based on intent + context + that respondent's RoleSheet + context
330
+ allowed by the disclosure setting. In blind mode, that means the
331
+ respondent's own prior turns only, never another respondent's
332
+ answers. A blind shared-artifact round dispatches its frozen question
333
+ set unchanged.
334
+ 2. Questions are emitted into a question file with **harvest metadata
335
+ in the frontmatter** — see `AUDIT.md` §9 for the schema. The async
336
+ bridge extends `/ask`'s existing markdown shape with `harvest_id`,
337
+ `harvest_session_id`, `turn`, `question_intent`, `context_mode`, and
338
+ `status`.
339
+ 3. The session's `HarvestSession` status is `pending` until the
340
+ respondent engages.
341
+ 4. When the respondent answers via `/ask`, status moves *pending →
342
+ answered*. The next time `/harvest --resume` runs, it incorporates
343
+ the answers, evaluates them under the running interpretive state,
344
+ and continues toward the next round or synthesis.
345
+
346
+ The model treats async answers the same way as in-session answers for
347
+ evaluation purposes. The latency is operational, not cognitive.
348
+
349
+ ---
350
+
351
+ ## 7. Resume
352
+
353
+ Harvests span days. Re-entry is first-class.
354
+
355
+ - `/harvest --resume {harvest_id}` — explicit resume.
356
+ - Implicit resume: a `/harvest <topic>` that matches an active harvest
357
+ surfaces it and asks: *continuation or fresh start?*
358
+ - On resume, the model reloads the manifest, all sessions, and the
359
+ running interpretive state from recorded `evaluation` fields. It does
360
+ **not** re-do already-answered turns. It picks up where it left off
361
+ or, if all sessions are `complete` / `incorporated`, proceeds to
362
+ synthesize.
363
+
364
+ ---
365
+
366
+ ## 8. The four anti-conflation fixtures
367
+
368
+ Before adding any new rule to this protocol, run it through these
369
+ fixtures. If a rule does not apply cleanly to all four, it has drifted
370
+ into forced-adjudication territory and does not belong here.
371
+
372
+ 1. *"What's Cem's design taste for the artifact viewer?"* — pure
373
+ preference, no proposition being evaluated, no alignment target.
374
+ 2. *"What is Oz carrying about the moat question?"* — tacit position,
375
+ no decision being forced.
376
+ 3. *"What does Renc know about go-to-market constraints we haven't
377
+ documented?"* — knowledge extraction, nothing to recommend.
378
+ 4. *"What do cem, renc, and oz each prefer for pricing?"* — alignment
379
+ scan; divergence is information, not a problem to resolve.
380
+
381
+ This is the test the protocol must pass.
382
+
383
+ ---
384
+
385
+ ## 9. What this document does not cover
386
+
387
+ - **Persistence** — graph schema, ID conventions, async question
388
+ metadata, local-mode markdown contract: see `AUDIT.md` §9–§11.
389
+ - **Format** — synthesis layers, synthesis blocks, layered disclosure
390
+ rules: see `FORMAT.md`.
391
+ - **Question palette** — intent-to-shape selection, conversational-move
392
+ definitions, and hard bans: see `QUESTION_PALETTE.md`.
393
+ - **Orchestration** — argument parsing, mode detection, file
394
+ read/write, ID minting: belongs in `SKILL.md` once it's rewritten as
395
+ a thin entry point.
@@ -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.
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: harvest
3
+ description: "Run an adaptive harvest — directed elicitation that extracts, deepens, and synthesizes what people think about a topic. Use for 'harvest', 'run a harvest', 'align the team on', or a structured interview; not for a casual question or fixed survey."
4
+ ---
5
+
6
+ # Harvest
7
+
8
+ Elicit tacit preferences, positions, constraints, and knowledge, then preserve
9
+ an attributed synthesis. A harvest maps choices; it does not force convergence.
10
+
11
+ ## When to invoke
12
+
13
+ Run an adaptive harvest — directed elicitation that extracts, deepens, and synthesizes what people think about a topic. Use for 'harvest', 'run a harvest', 'align the team on', or a structured interview; not for a casual question or fixed survey.
14
+
15
+ ## Load the cognitive contracts
16
+
17
+ Read these completely before questioning:
18
+
19
+ - `.claude/skills/harvest/PROCESS.md` — adaptive elicitation rhythm
20
+ - `.claude/skills/harvest/QUESTION_PALETTE.md` — intent, move, answer shape
21
+ - `.claude/skills/harvest/FORMAT.md` — evidence-bound synthesis grammar
22
+
23
+ Use `AUDIT.md` §14 only when a pasted decision-surface return requires its
24
+ review grammar. Its historical graph/file persistence recipes are not an
25
+ execution contract; Runtime adapters below own persistence.
26
+
27
+ ## Seed
28
+
29
+ Parse topic plus optional `--respondents`, `--seed`, `--resume`, and
30
+ `--mode blind|disclosed|comparative`. Reuse attached
31
+ `EGREGORE_ORG_CONTEXT_V1`; do not repeat retrieval or reopen supplied sources.
32
+ If a named gap remains, make one `bin/search.sh query` episode and open only
33
+ the missing canonical evidence. Do not query infrastructure directly.
34
+
35
+ Make low-confidence RoleSheet assumptions visible. In blind mode, other
36
+ respondents' answer content neither appears nor shapes their questions. For a
37
+ blind shared-artifact round, dispatch the frozen question set unchanged.
38
+
39
+ ## Elicit
40
+
41
+ Apply PROCESS.md's seed → generate → evaluate → checkpoint → cascade →
42
+ synthesize rhythm:
43
+
44
+ - Ask one interaction at a time and always allow freeform correction.
45
+ - Record a `questionIntent` and evidence-bound evaluation for each answer.
46
+ - Watch for satisficing and sycophancy; name real tensions.
47
+ - Offer checkpoints at natural transitions and respect “I'm done.”
48
+ - Attribute disclosed positions. Never turn a majority into anonymous team
49
+ alignment.
50
+ - While collection is open, a respondent may correct their answer. After the
51
+ declared completion condition seals the evidence, a changed position starts
52
+ a new round; there is no automatic second pass.
53
+
54
+ For an absent respondent, create one authorized canonical question per turn:
55
+
56
+ ```bash
57
+ bash bin/question.sh create \
58
+ --from "{initiator}" --to "{respondent}" \
59
+ --topic "{topic}" --question "{question}" \
60
+ --harvest-id "{harvest_id}" \
61
+ --harvest-session-id "{harvest_session_id}" \
62
+ --turn "{turn}" --question-intent "{intent}" \
63
+ --context-mode "{blind|disclosed|comparative}"
64
+ ```
65
+
66
+ This records the pending question; it does not notify anyone. Delivery requires
67
+ a separate action permission and exact recipient/message consent.
68
+
69
+ ## Decision-shaped rounds
70
+
71
+ For three or more genuine interrelated forks, use the existing Meridian
72
+ decision-surface renderer and QUESTION_PALETTE modes. Self surfaces may remain
73
+ local. Do not publish, share, or deliver a directed surface implicitly. A
74
+ separate permitted, explicitly consented action is required. Absorb returned
75
+ answers into the evidence set; keep `UNDECIDED` open. Do not write graph or
76
+ event-log projections directly.
77
+
78
+ ## Synthesize and write once
79
+
80
+ Build the attributed layered synthesis from FORMAT.md. Every assertion must
81
+ trace to a recorded answer or marked seed. Show the synthesis and wait for
82
+ acceptance or edits. Then render one complete Markdown body to a temporary file
83
+ and make exactly one canonical synthesis write:
84
+
85
+ ```bash
86
+ bash bin/knowledge.sh create \
87
+ --type finding --subtype harvest-synthesis \
88
+ --title "{topic} — harvest synthesis" \
89
+ --input "$TMP_SYNTHESIS" \
90
+ --topic harvest --topic "{topic}" \
91
+ --workstream "{workstream}"
92
+ ```
93
+
94
+ The Runtime owns ActorContext authorization, stable provenance, Markdown/Git,
95
+ retrieval refresh, background embedding, and content-free telemetry. Do not
96
+ run a second save, index, graph, publish, share, or notification action.
97
+
98
+ Render the compact `⊙ HARVEST` completion with topic, respondents, disclosure
99
+ mode, canonical path, and writeback status. Canonical Markdown wins over every
100
+ optional projection.