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.
- package/assets/egregore-launcher.js +1013 -16
- package/bin/cli.js +11 -0
- package/lib/claude-runtime.js +192 -0
- package/lib/local.js +38 -31
- package/lib/pi-runtime.js +1 -0
- package/lib/prime-runtime.js +1 -0
- package/lib/runtime-identity.js +146 -0
- package/lib/setup.js +116 -17
- package/package.json +10 -6
- package/runtime/claude/.claude/context/commit-format.md +110 -0
- package/runtime/claude/.claude/context/git-language.md +46 -0
- package/runtime/claude/.claude/context/notification-consent.md +66 -0
- package/runtime/claude/.claude/context/pr-format.md +67 -0
- package/runtime/claude/.claude/context/telemetry.md +133 -0
- package/runtime/claude/.claude/hooks/boundary-check.sh +333 -0
- package/runtime/claude/.claude/hooks/branch-guard.sh +231 -0
- package/runtime/claude/.claude/hooks/card-context.sh +38 -0
- package/runtime/claude/.claude/hooks/emissary-detect.sh +53 -0
- package/runtime/claude/.claude/hooks/memory-refresh.sh +67 -0
- package/runtime/claude/.claude/hooks/onboarding-guard.sh +86 -0
- package/runtime/claude/.claude/hooks/retrieval-context.sh +43 -0
- package/runtime/claude/.claude/rules/voice-bedrock.md +73 -0
- package/runtime/claude/.claude/settings.json +131 -0
- package/runtime/claude/.claude/skills/activity/SKILL.md +68 -0
- package/runtime/claude/.claude/skills/announce/SKILL.md +54 -0
- package/runtime/claude/.claude/skills/archive/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/branch/SKILL.md +147 -0
- package/runtime/claude/.claude/skills/checkup/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/commit/SKILL.md +103 -0
- package/runtime/claude/.claude/skills/contribute/SKILL.md +343 -0
- package/runtime/claude/.claude/skills/create-skill/SKILL.md +135 -0
- package/runtime/claude/.claude/skills/dark-mode/SKILL.md +410 -0
- package/runtime/claude/.claude/skills/dashboard/SKILL.md +43 -0
- package/runtime/claude/.claude/skills/deep-reflect/REPORT.md +140 -0
- package/runtime/claude/.claude/skills/deep-reflect/RESEARCH.md +132 -0
- package/runtime/claude/.claude/skills/deep-reflect/ROLES.md +104 -0
- package/runtime/claude/.claude/skills/deep-reflect/SKILL.md +170 -0
- package/runtime/claude/.claude/skills/delete-user/SKILL.md +150 -0
- package/runtime/claude/.claude/skills/emissary/SKILL.md +220 -0
- package/runtime/claude/.claude/skills/handoff/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/harvest/AUDIT.md +546 -0
- package/runtime/claude/.claude/skills/harvest/FORMAT.md +436 -0
- package/runtime/claude/.claude/skills/harvest/PROCESS.md +395 -0
- package/runtime/claude/.claude/skills/harvest/QUESTION_PALETTE.md +76 -0
- package/runtime/claude/.claude/skills/harvest/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/ingest/SKILL.md +112 -0
- package/runtime/claude/.claude/skills/ingest-corpus/SKILL.md +187 -0
- package/runtime/claude/.claude/skills/ingest-notion/SKILL.md +214 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/SKILL.md +65 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/references/analysis-contract.md +125 -0
- package/runtime/claude/.claude/skills/invite/SKILL.md +111 -0
- package/runtime/claude/.claude/skills/issue/SKILL.md +104 -0
- package/runtime/claude/.claude/skills/me/SKILL.md +81 -0
- package/runtime/claude/.claude/skills/meeting/SKILL.md +76 -0
- package/runtime/claude/.claude/skills/meeting/references/analysis-contract.md +102 -0
- package/runtime/claude/.claude/skills/note/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/notion-connect/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/onboarding/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/pr/SKILL.md +85 -0
- package/runtime/claude/.claude/skills/pull/SKILL.md +79 -0
- package/runtime/claude/.claude/skills/push/SKILL.md +47 -0
- package/runtime/claude/.claude/skills/quest/SKILL.md +121 -0
- package/runtime/claude/.claude/skills/reflect/SKILL.md +69 -0
- package/runtime/claude/.claude/skills/review-pr/SKILL.md +276 -0
- package/runtime/claude/.claude/skills/save/SKILL.md +92 -0
- package/runtime/claude/.claude/skills/slack-connect/SKILL.md +148 -0
- package/runtime/claude/.claude/skills/summon/SKILL.md +240 -0
- package/runtime/claude/.claude/skills/sync-repos/SKILL.md +82 -0
- package/runtime/claude/.claude/skills/teams-connect/SKILL.md +216 -0
- package/runtime/claude/.claude/skills/telegram-connect/SKILL.md +110 -0
- package/runtime/claude/.claude/skills/telemetry/SKILL.md +117 -0
- package/runtime/claude/.claude/skills/test/SKILL.md +87 -0
- package/runtime/claude/.claude/skills/the-spiral/SKILL.md +492 -0
- package/runtime/claude/.claude/skills/tui-design/SKILL.md +188 -0
- package/runtime/claude/.claude/skills/tutorial/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/update/SKILL.md +265 -0
- package/runtime/claude/.claude/skills/view/SKILL.md +393 -0
- package/runtime/claude/.claude/skills/view/compose-scaffold.html +221 -0
- package/runtime/claude/.claude/skills/visual-explain/SKILL.md +132 -0
- package/runtime/claude/.claude/skills/wrap/SKILL.md +98 -0
- package/runtime/claude/CLAUDE.md +447 -0
- package/runtime/claude/bin/activity-action.sh +92 -0
- package/runtime/claude/bin/activity-data.sh +17 -0
- package/runtime/claude/bin/agent.sh +783 -0
- package/runtime/claude/bin/artifact-register.sh +164 -0
- package/runtime/claude/bin/artifact-writeback.sh +53 -0
- package/runtime/claude/bin/artifacts.sh +288 -0
- package/runtime/claude/bin/attendant.sh +707 -0
- package/runtime/claude/bin/autosave.sh +112 -0
- package/runtime/claude/bin/boundary.sh +253 -0
- package/runtime/claude/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/claude/bin/capture-reconcile.sh +69 -0
- package/runtime/claude/bin/capture-run.sh +357 -0
- package/runtime/claude/bin/codex-install-skills.sh +78 -0
- package/runtime/claude/bin/codex-render-spec.mjs +462 -0
- package/runtime/claude/bin/codex-session-start.sh +275 -0
- package/runtime/claude/bin/codex-skill-render.mjs +349 -0
- package/runtime/claude/bin/codex-sync-skills.sh +237 -0
- package/runtime/claude/bin/connect-refresh.sh +33 -0
- package/runtime/claude/bin/contribute-guard.sh +79 -0
- package/runtime/claude/bin/corpus_map.py +806 -0
- package/runtime/claude/bin/corpus_survey.py +304 -0
- package/runtime/claude/bin/dashboard-data.sh +18 -0
- package/runtime/claude/bin/github-auth.sh +121 -0
- package/runtime/claude/bin/graph-batch.sh +86 -0
- package/runtime/claude/bin/graph-op.sh +1106 -0
- package/runtime/claude/bin/graph-projection.sh +54 -0
- package/runtime/claude/bin/graph-wal.sh +242 -0
- package/runtime/claude/bin/graph.sh +267 -0
- package/runtime/claude/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/claude/bin/handoff-lifecycle.sh +280 -0
- package/runtime/claude/bin/handoff-pr-backfill.sh +86 -0
- package/runtime/claude/bin/handoff-preview.sh +169 -0
- package/runtime/claude/bin/handoff-run.sh +692 -0
- package/runtime/claude/bin/handoff-save-egregore.sh +224 -0
- package/runtime/claude/bin/index-handoff.sh +322 -0
- package/runtime/claude/bin/ingest-graph.sh +86 -0
- package/runtime/claude/bin/ingest-item.sh +10 -0
- package/runtime/claude/bin/ingest-surface.html +495 -0
- package/runtime/claude/bin/ingest.py +1011 -0
- package/runtime/claude/bin/ingest.sh +308 -0
- package/runtime/claude/bin/ingest_graph.py +856 -0
- package/runtime/claude/bin/ingest_surface.py +544 -0
- package/runtime/claude/bin/invite.sh +6 -0
- package/runtime/claude/bin/issue.sh +10 -0
- package/runtime/claude/bin/knowledge.sh +10 -0
- package/runtime/claude/bin/lib/artifact-id.sh +46 -0
- package/runtime/claude/bin/lib/config.sh +136 -0
- package/runtime/claude/bin/lib/context.sh +642 -0
- package/runtime/claude/bin/lib/dashboard-artifact.sh +242 -0
- package/runtime/claude/bin/lib/ensure-develop.sh +183 -0
- package/runtime/claude/bin/lib/git-message.sh +37 -0
- package/runtime/claude/bin/lib/git-sync.sh +494 -0
- package/runtime/claude/bin/lib/greeting.sh +548 -0
- package/runtime/claude/bin/lib/handoff-meta.sh +97 -0
- package/runtime/claude/bin/lib/hash.sh +13 -0
- package/runtime/claude/bin/lib/identity.sh +213 -0
- package/runtime/claude/bin/lib/metrics.sh +374 -0
- package/runtime/claude/bin/lib/noncode.sh +31 -0
- package/runtime/claude/bin/lib/permissions.sh +106 -0
- package/runtime/claude/bin/lib/time.sh +56 -0
- package/runtime/claude/bin/lib/worktree-links.sh +85 -0
- package/runtime/claude/bin/node-run.sh +42 -0
- package/runtime/claude/bin/notification.sh +6 -0
- package/runtime/claude/bin/notify.sh +636 -0
- package/runtime/claude/bin/observe-context.sh +14 -0
- package/runtime/claude/bin/onboarding.sh +6 -0
- package/runtime/claude/bin/person.py +634 -0
- package/runtime/claude/bin/person.sh +481 -0
- package/runtime/claude/bin/pi-render-spec.mjs +140 -0
- package/runtime/claude/bin/post-update.sh +37 -0
- package/runtime/claude/bin/prime-render-spec.mjs +147 -0
- package/runtime/claude/bin/publish-artifact.sh +324 -0
- package/runtime/claude/bin/publish-references.sh +144 -0
- package/runtime/claude/bin/quest.sh +9 -0
- package/runtime/claude/bin/question.sh +8 -0
- package/runtime/claude/bin/repo-state.sh +96 -0
- package/runtime/claude/bin/research-ingest.sh +7 -0
- package/runtime/claude/bin/restore-owned-skills.sh +67 -0
- package/runtime/claude/bin/retrieval_eval.py +385 -0
- package/runtime/claude/bin/runtime-identity.sh +70 -0
- package/runtime/claude/bin/runtime-upgrade.sh +43 -0
- package/runtime/claude/bin/scroll.sh +9 -0
- package/runtime/claude/bin/search.sh +318 -0
- package/runtime/claude/bin/session-autosave.sh +220 -0
- package/runtime/claude/bin/session-log.sh +199 -0
- package/runtime/claude/bin/session-start.sh +696 -0
- package/runtime/claude/bin/settings.sh +532 -0
- package/runtime/claude/bin/startup-check.sh +136 -0
- package/runtime/claude/bin/statusline.sh +41 -0
- package/runtime/claude/bin/telemetry.sh +666 -0
- package/runtime/claude/bin/test-changes.sh +344 -0
- package/runtime/claude/bin/thread.sh +9 -0
- package/runtime/claude/bin/todo.sh +9 -0
- package/runtime/claude/bin/view-render.sh +126 -0
- package/runtime/claude/bin/worktree-create.sh +145 -0
- package/runtime/claude/bin/worktree-remove.sh +50 -0
- package/runtime/claude/bin/worktree.sh +198 -0
- package/runtime/claude/egregore_runtime/__init__.py +228 -0
- package/runtime/claude/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/claude/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/claude/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/claude/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/claude/egregore_runtime/admin_gate.py +102 -0
- package/runtime/claude/egregore_runtime/artifacts.py +523 -0
- package/runtime/claude/egregore_runtime/contracts.py +499 -0
- package/runtime/claude/egregore_runtime/entitlements.py +85 -0
- package/runtime/claude/egregore_runtime/errors.py +10 -0
- package/runtime/claude/egregore_runtime/graph.py +356 -0
- package/runtime/claude/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/claude/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/claude/egregore_runtime/identity.py +734 -0
- package/runtime/claude/egregore_runtime/identity_cli.py +91 -0
- package/runtime/claude/egregore_runtime/ingest.py +575 -0
- package/runtime/claude/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/claude/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/claude/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/claude/egregore_runtime/invitations.py +116 -0
- package/runtime/claude/egregore_runtime/issue_cli.py +305 -0
- package/runtime/claude/egregore_runtime/issues.py +359 -0
- package/runtime/claude/egregore_runtime/knowledge.py +376 -0
- package/runtime/claude/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/claude/egregore_runtime/lifecycle.py +888 -0
- package/runtime/claude/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/claude/egregore_runtime/notification_cli.py +125 -0
- package/runtime/claude/egregore_runtime/notifications.py +230 -0
- package/runtime/claude/egregore_runtime/observe.py +342 -0
- package/runtime/claude/egregore_runtime/onboarding.py +290 -0
- package/runtime/claude/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/claude/egregore_runtime/policy.py +144 -0
- package/runtime/claude/egregore_runtime/profile.py +193 -0
- package/runtime/claude/egregore_runtime/quest_cli.py +216 -0
- package/runtime/claude/egregore_runtime/question_cli.py +180 -0
- package/runtime/claude/egregore_runtime/questions.py +304 -0
- package/runtime/claude/egregore_runtime/quests.py +419 -0
- package/runtime/claude/egregore_runtime/readiness.py +379 -0
- package/runtime/claude/egregore_runtime/research_ingest.py +256 -0
- package/runtime/claude/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/claude/egregore_runtime/runtime.py +464 -0
- package/runtime/claude/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/claude/egregore_runtime/scrolls.py +726 -0
- package/runtime/claude/egregore_runtime/status.py +412 -0
- package/runtime/claude/egregore_runtime/status_cli.py +174 -0
- package/runtime/claude/egregore_runtime/sync.py +218 -0
- package/runtime/claude/egregore_runtime/teamsync.py +139 -0
- package/runtime/claude/egregore_runtime/telemetry.py +640 -0
- package/runtime/claude/egregore_runtime/thread_cli.py +173 -0
- package/runtime/claude/egregore_runtime/threads.py +517 -0
- package/runtime/claude/egregore_runtime/todo_cli.py +142 -0
- package/runtime/claude/egregore_runtime/todos.py +244 -0
- package/runtime/claude/egregore_runtime/upgrade.py +770 -0
- package/runtime/claude/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/claude/egregore_runtime/writeback.py +391 -0
- package/runtime/claude/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/claude/manifest.json +284 -0
- package/runtime/codex/.codex/hooks/search-hint.js +21 -52
- package/runtime/codex/.codex/hooks.json +3 -3
- package/runtime/codex/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/codex/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/codex/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/codex/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/codex/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/codex/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/codex/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/codex/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/codex/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/codex/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/codex/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/codex/.codex/skills/note/SKILL.md +30 -25
- package/runtime/codex/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/codex/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/codex/.codex/skills/save/SKILL.md +2 -2
- package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/codex/.codex/skills/view/SKILL.md +115 -111
- package/runtime/codex/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/codex/.codex/spec-manifest.json +9 -9
- package/runtime/codex/AGENTS.md +62 -58
- package/runtime/codex/bin/activity-action.sh +92 -0
- package/runtime/codex/bin/activity-data.sh +12 -233
- package/runtime/codex/bin/agent.sh +84 -100
- package/runtime/codex/bin/artifact-register.sh +164 -0
- package/runtime/codex/bin/artifact-writeback.sh +53 -0
- package/runtime/codex/bin/artifacts.sh +288 -0
- package/runtime/codex/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/codex/bin/capture-run.sh +18 -2
- package/runtime/codex/bin/codex-render-spec.mjs +41 -16
- package/runtime/codex/bin/codex-session-start.sh +14 -4
- package/runtime/codex/bin/codex-skill-render.mjs +9 -7
- package/runtime/codex/bin/corpus_map.py +806 -0
- package/runtime/codex/bin/corpus_survey.py +304 -0
- package/runtime/codex/bin/dashboard-data.sh +11 -171
- package/runtime/codex/bin/github-auth.sh +121 -0
- package/runtime/codex/bin/graph-batch.sh +7 -0
- package/runtime/codex/bin/graph-op.sh +4 -0
- package/runtime/codex/bin/graph-projection.sh +54 -0
- package/runtime/codex/bin/graph-wal.sh +13 -0
- package/runtime/codex/bin/graph.sh +44 -0
- package/runtime/codex/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/codex/bin/handoff-lifecycle.sh +280 -0
- package/runtime/codex/bin/handoff-preview.sh +169 -0
- package/runtime/codex/bin/handoff-run.sh +42 -26
- package/runtime/codex/bin/ingest-graph.sh +6 -0
- package/runtime/codex/bin/ingest-item.sh +10 -0
- package/runtime/codex/bin/ingest.sh +59 -30
- package/runtime/codex/bin/invite.sh +6 -0
- package/runtime/codex/bin/issue.sh +10 -0
- package/runtime/codex/bin/knowledge.sh +10 -0
- package/runtime/codex/bin/lib/config.sh +20 -0
- package/runtime/codex/bin/lib/context.sh +46 -25
- package/runtime/codex/bin/lib/git-sync.sh +70 -6
- package/runtime/codex/bin/lib/greeting.sh +34 -5
- package/runtime/codex/bin/lib/handoff-meta.sh +97 -0
- package/runtime/codex/bin/lib/worktree-links.sh +6 -0
- package/runtime/codex/bin/node-run.sh +42 -0
- package/runtime/codex/bin/notification.sh +6 -0
- package/runtime/codex/bin/observe-context.sh +14 -0
- package/runtime/codex/bin/onboarding.sh +6 -0
- package/runtime/codex/bin/person.py +4 -0
- package/runtime/codex/bin/person.sh +43 -10
- package/runtime/codex/bin/pi-render-spec.mjs +140 -0
- package/runtime/codex/bin/post-update.sh +37 -0
- package/runtime/codex/bin/prime-render-spec.mjs +147 -0
- package/runtime/codex/bin/publish-artifact.sh +55 -2
- package/runtime/codex/bin/quest.sh +9 -0
- package/runtime/codex/bin/question.sh +8 -0
- package/runtime/codex/bin/research-ingest.sh +7 -0
- package/runtime/codex/bin/restore-owned-skills.sh +67 -0
- package/runtime/codex/bin/retrieval_eval.py +385 -0
- package/runtime/codex/bin/runtime-identity.sh +70 -0
- package/runtime/codex/bin/runtime-upgrade.sh +43 -0
- package/runtime/codex/bin/scroll.sh +9 -0
- package/runtime/codex/bin/search.sh +231 -195
- package/runtime/codex/bin/settings.sh +174 -5
- package/runtime/codex/bin/startup-check.sh +136 -0
- package/runtime/codex/bin/telemetry.sh +522 -247
- package/runtime/codex/bin/test-changes.sh +344 -0
- package/runtime/codex/bin/thread.sh +9 -0
- package/runtime/codex/bin/todo.sh +9 -0
- package/runtime/codex/bin/view-render.sh +126 -0
- package/runtime/codex/bin/worktree-create.sh +19 -5
- package/runtime/codex/egregore_runtime/__init__.py +228 -0
- package/runtime/codex/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/codex/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/codex/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/codex/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/codex/egregore_runtime/admin_gate.py +102 -0
- package/runtime/codex/egregore_runtime/artifacts.py +523 -0
- package/runtime/codex/egregore_runtime/contracts.py +499 -0
- package/runtime/codex/egregore_runtime/entitlements.py +85 -0
- package/runtime/codex/egregore_runtime/errors.py +10 -0
- package/runtime/codex/egregore_runtime/graph.py +356 -0
- package/runtime/codex/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/codex/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/codex/egregore_runtime/identity.py +734 -0
- package/runtime/codex/egregore_runtime/identity_cli.py +91 -0
- package/runtime/codex/egregore_runtime/ingest.py +575 -0
- package/runtime/codex/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/codex/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/codex/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/codex/egregore_runtime/invitations.py +116 -0
- package/runtime/codex/egregore_runtime/issue_cli.py +305 -0
- package/runtime/codex/egregore_runtime/issues.py +359 -0
- package/runtime/codex/egregore_runtime/knowledge.py +376 -0
- package/runtime/codex/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/codex/egregore_runtime/lifecycle.py +888 -0
- package/runtime/codex/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/codex/egregore_runtime/notification_cli.py +125 -0
- package/runtime/codex/egregore_runtime/notifications.py +230 -0
- package/runtime/codex/egregore_runtime/observe.py +342 -0
- package/runtime/codex/egregore_runtime/onboarding.py +290 -0
- package/runtime/codex/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/codex/egregore_runtime/policy.py +144 -0
- package/runtime/codex/egregore_runtime/profile.py +193 -0
- package/runtime/codex/egregore_runtime/quest_cli.py +216 -0
- package/runtime/codex/egregore_runtime/question_cli.py +180 -0
- package/runtime/codex/egregore_runtime/questions.py +304 -0
- package/runtime/codex/egregore_runtime/quests.py +419 -0
- package/runtime/codex/egregore_runtime/readiness.py +379 -0
- package/runtime/codex/egregore_runtime/research_ingest.py +256 -0
- package/runtime/codex/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/codex/egregore_runtime/runtime.py +464 -0
- package/runtime/codex/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/codex/egregore_runtime/scrolls.py +726 -0
- package/runtime/codex/egregore_runtime/status.py +412 -0
- package/runtime/codex/egregore_runtime/status_cli.py +174 -0
- package/runtime/codex/egregore_runtime/sync.py +218 -0
- package/runtime/codex/egregore_runtime/teamsync.py +139 -0
- package/runtime/codex/egregore_runtime/telemetry.py +640 -0
- package/runtime/codex/egregore_runtime/thread_cli.py +173 -0
- package/runtime/codex/egregore_runtime/threads.py +517 -0
- package/runtime/codex/egregore_runtime/todo_cli.py +142 -0
- package/runtime/codex/egregore_runtime/todos.py +244 -0
- package/runtime/codex/egregore_runtime/upgrade.py +770 -0
- package/runtime/codex/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/codex/egregore_runtime/writeback.py +391 -0
- package/runtime/codex/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/codex/manifest.json +98 -1
- package/runtime/pi/.codex/hooks/search-hint.js +21 -52
- package/runtime/pi/.codex/hooks.json +3 -3
- package/runtime/pi/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/pi/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/pi/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/pi/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/pi/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/pi/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/pi/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/pi/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/pi/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/pi/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/pi/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/pi/.codex/skills/note/SKILL.md +30 -25
- package/runtime/pi/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/pi/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/pi/.codex/skills/save/SKILL.md +2 -2
- package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/pi/.codex/skills/view/SKILL.md +115 -111
- package/runtime/pi/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/pi/.codex/spec-manifest.json +9 -9
- package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -48
- package/runtime/pi/.pi/extensions/egregore.ts +7 -0
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +62 -58
- package/runtime/pi/bin/activity-action.sh +92 -0
- package/runtime/pi/bin/activity-data.sh +12 -233
- package/runtime/pi/bin/agent.sh +84 -100
- package/runtime/pi/bin/artifact-register.sh +164 -0
- package/runtime/pi/bin/artifact-writeback.sh +53 -0
- package/runtime/pi/bin/artifacts.sh +288 -0
- package/runtime/pi/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/pi/bin/capture-run.sh +18 -2
- package/runtime/pi/bin/codex-render-spec.mjs +41 -16
- package/runtime/pi/bin/codex-session-start.sh +14 -4
- package/runtime/pi/bin/codex-skill-render.mjs +9 -7
- package/runtime/pi/bin/corpus_map.py +806 -0
- package/runtime/pi/bin/corpus_survey.py +304 -0
- package/runtime/pi/bin/dashboard-data.sh +11 -171
- package/runtime/pi/bin/github-auth.sh +121 -0
- package/runtime/pi/bin/graph-batch.sh +7 -0
- package/runtime/pi/bin/graph-op.sh +4 -0
- package/runtime/pi/bin/graph-projection.sh +54 -0
- package/runtime/pi/bin/graph-wal.sh +13 -0
- package/runtime/pi/bin/graph.sh +44 -0
- package/runtime/pi/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/pi/bin/handoff-lifecycle.sh +280 -0
- package/runtime/pi/bin/handoff-preview.sh +169 -0
- package/runtime/pi/bin/handoff-run.sh +42 -26
- package/runtime/pi/bin/ingest-graph.sh +6 -0
- package/runtime/pi/bin/ingest-item.sh +10 -0
- package/runtime/pi/bin/ingest.sh +59 -30
- package/runtime/pi/bin/invite.sh +6 -0
- package/runtime/pi/bin/issue.sh +10 -0
- package/runtime/pi/bin/knowledge.sh +10 -0
- package/runtime/pi/bin/lib/config.sh +20 -0
- package/runtime/pi/bin/lib/context.sh +46 -25
- package/runtime/pi/bin/lib/git-sync.sh +70 -6
- package/runtime/pi/bin/lib/greeting.sh +34 -5
- package/runtime/pi/bin/lib/handoff-meta.sh +97 -0
- package/runtime/pi/bin/lib/worktree-links.sh +6 -0
- package/runtime/pi/bin/node-run.sh +42 -0
- package/runtime/pi/bin/notification.sh +6 -0
- package/runtime/pi/bin/observe-context.sh +14 -0
- package/runtime/pi/bin/onboarding.sh +6 -0
- package/runtime/pi/bin/person.py +4 -0
- package/runtime/pi/bin/person.sh +43 -10
- package/runtime/pi/bin/pi-observe-context.mjs +93 -0
- package/runtime/pi/bin/pi-product-workflows.mjs +1 -1
- package/runtime/pi/bin/pi-render-spec.mjs +1 -1
- package/runtime/pi/bin/post-update.sh +37 -0
- package/runtime/pi/bin/prime-render-spec.mjs +147 -0
- package/runtime/pi/bin/publish-artifact.sh +55 -2
- package/runtime/pi/bin/quest.sh +9 -0
- package/runtime/pi/bin/question.sh +8 -0
- package/runtime/pi/bin/research-ingest.sh +7 -0
- package/runtime/pi/bin/restore-owned-skills.sh +67 -0
- package/runtime/pi/bin/retrieval_eval.py +385 -0
- package/runtime/pi/bin/runtime-identity.sh +70 -0
- package/runtime/pi/bin/runtime-upgrade.sh +43 -0
- package/runtime/pi/bin/scroll.sh +9 -0
- package/runtime/pi/bin/search.sh +231 -195
- package/runtime/pi/bin/settings.sh +174 -5
- package/runtime/pi/bin/startup-check.sh +136 -0
- package/runtime/pi/bin/telemetry.sh +522 -247
- package/runtime/pi/bin/test-changes.sh +344 -0
- package/runtime/pi/bin/thread.sh +9 -0
- package/runtime/pi/bin/todo.sh +9 -0
- package/runtime/pi/bin/view-render.sh +126 -0
- package/runtime/pi/bin/worktree-create.sh +19 -5
- package/runtime/pi/egregore_runtime/__init__.py +228 -0
- package/runtime/pi/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/pi/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/pi/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/pi/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/pi/egregore_runtime/admin_gate.py +102 -0
- package/runtime/pi/egregore_runtime/artifacts.py +523 -0
- package/runtime/pi/egregore_runtime/contracts.py +499 -0
- package/runtime/pi/egregore_runtime/entitlements.py +85 -0
- package/runtime/pi/egregore_runtime/errors.py +10 -0
- package/runtime/pi/egregore_runtime/graph.py +356 -0
- package/runtime/pi/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/pi/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/pi/egregore_runtime/identity.py +734 -0
- package/runtime/pi/egregore_runtime/identity_cli.py +91 -0
- package/runtime/pi/egregore_runtime/ingest.py +575 -0
- package/runtime/pi/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/pi/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/pi/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/pi/egregore_runtime/invitations.py +116 -0
- package/runtime/pi/egregore_runtime/issue_cli.py +305 -0
- package/runtime/pi/egregore_runtime/issues.py +359 -0
- package/runtime/pi/egregore_runtime/knowledge.py +376 -0
- package/runtime/pi/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/pi/egregore_runtime/lifecycle.py +888 -0
- package/runtime/pi/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/pi/egregore_runtime/notification_cli.py +125 -0
- package/runtime/pi/egregore_runtime/notifications.py +230 -0
- package/runtime/pi/egregore_runtime/observe.py +342 -0
- package/runtime/pi/egregore_runtime/onboarding.py +290 -0
- package/runtime/pi/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/pi/egregore_runtime/policy.py +144 -0
- package/runtime/pi/egregore_runtime/profile.py +193 -0
- package/runtime/pi/egregore_runtime/quest_cli.py +216 -0
- package/runtime/pi/egregore_runtime/question_cli.py +180 -0
- package/runtime/pi/egregore_runtime/questions.py +304 -0
- package/runtime/pi/egregore_runtime/quests.py +419 -0
- package/runtime/pi/egregore_runtime/readiness.py +379 -0
- package/runtime/pi/egregore_runtime/research_ingest.py +256 -0
- package/runtime/pi/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/pi/egregore_runtime/runtime.py +464 -0
- package/runtime/pi/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/pi/egregore_runtime/scrolls.py +726 -0
- package/runtime/pi/egregore_runtime/status.py +412 -0
- package/runtime/pi/egregore_runtime/status_cli.py +174 -0
- package/runtime/pi/egregore_runtime/sync.py +218 -0
- package/runtime/pi/egregore_runtime/teamsync.py +139 -0
- package/runtime/pi/egregore_runtime/telemetry.py +640 -0
- package/runtime/pi/egregore_runtime/thread_cli.py +173 -0
- package/runtime/pi/egregore_runtime/threads.py +517 -0
- package/runtime/pi/egregore_runtime/todo_cli.py +142 -0
- package/runtime/pi/egregore_runtime/todos.py +244 -0
- package/runtime/pi/egregore_runtime/upgrade.py +770 -0
- package/runtime/pi/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/pi/egregore_runtime/writeback.py +391 -0
- package/runtime/pi/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/pi/manifest.json +98 -1
- package/runtime/prime/.codex/hooks/search-hint.js +21 -52
- package/runtime/prime/.codex/hooks.json +3 -3
- package/runtime/prime/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/prime/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/prime/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/prime/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/prime/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/prime/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/prime/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/prime/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/prime/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/prime/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/prime/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/prime/.codex/skills/note/SKILL.md +30 -25
- package/runtime/prime/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/prime/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/prime/.codex/skills/save/SKILL.md +2 -2
- package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/prime/.codex/skills/view/SKILL.md +115 -111
- package/runtime/prime/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/prime/.codex/spec-manifest.json +9 -9
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +57 -48
- package/runtime/prime/.prime/agent/extensions/egregore.ts +7 -0
- package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
- package/runtime/prime/AGENTS.md +62 -58
- package/runtime/prime/bin/activity-action.sh +92 -0
- package/runtime/prime/bin/activity-data.sh +12 -233
- package/runtime/prime/bin/agent.sh +84 -100
- package/runtime/prime/bin/artifact-register.sh +164 -0
- package/runtime/prime/bin/artifact-writeback.sh +53 -0
- package/runtime/prime/bin/artifacts.sh +288 -0
- package/runtime/prime/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/prime/bin/capture-run.sh +18 -2
- package/runtime/prime/bin/codex-render-spec.mjs +41 -16
- package/runtime/prime/bin/codex-session-start.sh +14 -4
- package/runtime/prime/bin/codex-skill-render.mjs +9 -7
- package/runtime/prime/bin/corpus_map.py +806 -0
- package/runtime/prime/bin/corpus_survey.py +304 -0
- package/runtime/prime/bin/dashboard-data.sh +11 -171
- package/runtime/prime/bin/github-auth.sh +121 -0
- package/runtime/prime/bin/graph-batch.sh +7 -0
- package/runtime/prime/bin/graph-op.sh +4 -0
- package/runtime/prime/bin/graph-projection.sh +54 -0
- package/runtime/prime/bin/graph-wal.sh +13 -0
- package/runtime/prime/bin/graph.sh +44 -0
- package/runtime/prime/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/prime/bin/handoff-lifecycle.sh +280 -0
- package/runtime/prime/bin/handoff-preview.sh +169 -0
- package/runtime/prime/bin/handoff-run.sh +42 -26
- package/runtime/prime/bin/ingest-graph.sh +6 -0
- package/runtime/prime/bin/ingest-item.sh +10 -0
- package/runtime/prime/bin/ingest.sh +59 -30
- package/runtime/prime/bin/invite.sh +6 -0
- package/runtime/prime/bin/issue.sh +10 -0
- package/runtime/prime/bin/knowledge.sh +10 -0
- package/runtime/prime/bin/lib/config.sh +20 -0
- package/runtime/prime/bin/lib/context.sh +46 -25
- package/runtime/prime/bin/lib/git-sync.sh +70 -6
- package/runtime/prime/bin/lib/greeting.sh +34 -5
- package/runtime/prime/bin/lib/handoff-meta.sh +97 -0
- package/runtime/prime/bin/lib/worktree-links.sh +6 -0
- package/runtime/prime/bin/node-run.sh +42 -0
- package/runtime/prime/bin/notification.sh +6 -0
- package/runtime/prime/bin/observe-context.sh +14 -0
- package/runtime/prime/bin/onboarding.sh +6 -0
- package/runtime/prime/bin/person.py +4 -0
- package/runtime/prime/bin/person.sh +43 -10
- package/runtime/prime/bin/pi-observe-context.mjs +93 -0
- package/runtime/prime/bin/pi-product-workflows.mjs +1 -1
- package/runtime/prime/bin/pi-render-spec.mjs +140 -0
- package/runtime/prime/bin/post-update.sh +37 -0
- package/runtime/prime/bin/prime-render-spec.mjs +1 -1
- package/runtime/prime/bin/publish-artifact.sh +55 -2
- package/runtime/prime/bin/quest.sh +9 -0
- package/runtime/prime/bin/question.sh +8 -0
- package/runtime/prime/bin/research-ingest.sh +7 -0
- package/runtime/prime/bin/restore-owned-skills.sh +67 -0
- package/runtime/prime/bin/retrieval_eval.py +385 -0
- package/runtime/prime/bin/runtime-identity.sh +70 -0
- package/runtime/prime/bin/runtime-upgrade.sh +43 -0
- package/runtime/prime/bin/scroll.sh +9 -0
- package/runtime/prime/bin/search.sh +231 -195
- package/runtime/prime/bin/settings.sh +174 -5
- package/runtime/prime/bin/startup-check.sh +136 -0
- package/runtime/prime/bin/telemetry.sh +522 -247
- package/runtime/prime/bin/test-changes.sh +344 -0
- package/runtime/prime/bin/thread.sh +9 -0
- package/runtime/prime/bin/todo.sh +9 -0
- package/runtime/prime/bin/view-render.sh +126 -0
- package/runtime/prime/bin/worktree-create.sh +19 -5
- package/runtime/prime/egregore_runtime/__init__.py +228 -0
- package/runtime/prime/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/prime/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/prime/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/prime/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/prime/egregore_runtime/admin_gate.py +102 -0
- package/runtime/prime/egregore_runtime/artifacts.py +523 -0
- package/runtime/prime/egregore_runtime/contracts.py +499 -0
- package/runtime/prime/egregore_runtime/entitlements.py +85 -0
- package/runtime/prime/egregore_runtime/errors.py +10 -0
- package/runtime/prime/egregore_runtime/graph.py +356 -0
- package/runtime/prime/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/prime/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/prime/egregore_runtime/identity.py +734 -0
- package/runtime/prime/egregore_runtime/identity_cli.py +91 -0
- package/runtime/prime/egregore_runtime/ingest.py +575 -0
- package/runtime/prime/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/prime/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/prime/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/prime/egregore_runtime/invitations.py +116 -0
- package/runtime/prime/egregore_runtime/issue_cli.py +305 -0
- package/runtime/prime/egregore_runtime/issues.py +359 -0
- package/runtime/prime/egregore_runtime/knowledge.py +376 -0
- package/runtime/prime/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/prime/egregore_runtime/lifecycle.py +888 -0
- package/runtime/prime/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/prime/egregore_runtime/notification_cli.py +125 -0
- package/runtime/prime/egregore_runtime/notifications.py +230 -0
- package/runtime/prime/egregore_runtime/observe.py +342 -0
- package/runtime/prime/egregore_runtime/onboarding.py +290 -0
- package/runtime/prime/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/prime/egregore_runtime/policy.py +144 -0
- package/runtime/prime/egregore_runtime/profile.py +193 -0
- package/runtime/prime/egregore_runtime/quest_cli.py +216 -0
- package/runtime/prime/egregore_runtime/question_cli.py +180 -0
- package/runtime/prime/egregore_runtime/questions.py +304 -0
- package/runtime/prime/egregore_runtime/quests.py +419 -0
- package/runtime/prime/egregore_runtime/readiness.py +379 -0
- package/runtime/prime/egregore_runtime/research_ingest.py +256 -0
- package/runtime/prime/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/prime/egregore_runtime/runtime.py +464 -0
- package/runtime/prime/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/prime/egregore_runtime/scrolls.py +726 -0
- package/runtime/prime/egregore_runtime/status.py +412 -0
- package/runtime/prime/egregore_runtime/status_cli.py +174 -0
- package/runtime/prime/egregore_runtime/sync.py +218 -0
- package/runtime/prime/egregore_runtime/teamsync.py +139 -0
- package/runtime/prime/egregore_runtime/telemetry.py +640 -0
- package/runtime/prime/egregore_runtime/thread_cli.py +173 -0
- package/runtime/prime/egregore_runtime/threads.py +517 -0
- package/runtime/prime/egregore_runtime/todo_cli.py +142 -0
- package/runtime/prime/egregore_runtime/todos.py +244 -0
- package/runtime/prime/egregore_runtime/upgrade.py +770 -0
- package/runtime/prime/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/prime/egregore_runtime/writeback.py +391 -0
- package/runtime/prime/egregore_runtime/writeback_cli.py +114 -0
- 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.
|