ai-collab-open-system 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/.aict/START_HERE.md +127 -0
  2. package/.aict/WORKSPACE_MANIFEST.json +91 -0
  3. package/.aict/acceptance/EXAMPLE.synthetic.md +49 -0
  4. package/.aict/acceptance/FAILURE_MODES.md +40 -0
  5. package/.aict/acceptance/PROMPT.md +47 -0
  6. package/.aict/acceptance/README.md +44 -0
  7. package/.aict/acceptance/TEMPLATE.md +57 -0
  8. package/.aict/adapters/SHARED_CORE_CONTRACT.md +106 -0
  9. package/.aict/adapters/claude-code/ADAPTER.md +28 -0
  10. package/.aict/adapters/cline/ADAPTER.md +28 -0
  11. package/.aict/adapters/codex/ADAPTER.md +28 -0
  12. package/.aict/adapters/copilot/ADAPTER.md +28 -0
  13. package/.aict/adapters/cursor/ADAPTER.md +28 -0
  14. package/.aict/adapters/windsurf/ADAPTER.md +28 -0
  15. package/.aict/context/EXAMPLE.synthetic.md +53 -0
  16. package/.aict/context/FAILURE_MODES.md +40 -0
  17. package/.aict/context/PROMPT.md +47 -0
  18. package/.aict/context/README.md +44 -0
  19. package/.aict/context/TEMPLATE.md +63 -0
  20. package/.aict/cookbook/README.md +8 -0
  21. package/.aict/cookbook/bridge-to-a-second-family.md +103 -0
  22. package/.aict/cookbook/connect-a-tool.md +67 -0
  23. package/.aict/cookbook/review-a-half-product.md +79 -0
  24. package/.aict/cookbook/run-a-first-loop.md +81 -0
  25. package/.aict/examples/README.md +21 -0
  26. package/.aict/examples/ai-coding-long-task/CASE.md +161 -0
  27. package/.aict/examples/ai-coding-long-task/artifacts/acceptance-card.md +36 -0
  28. package/.aict/examples/ai-coding-long-task/artifacts/context-package.md +30 -0
  29. package/.aict/examples/ai-coding-long-task/artifacts/execution-prompt.md +30 -0
  30. package/.aict/examples/ai-coding-long-task/artifacts/first-ai-output.md +109 -0
  31. package/.aict/examples/ai-coding-long-task/artifacts/guard-review.md +40 -0
  32. package/.aict/examples/ai-coding-long-task/artifacts/handoff-note.md +28 -0
  33. package/.aict/examples/ai-coding-long-task/artifacts/harvest-seed.md +28 -0
  34. package/.aict/examples/ai-coding-long-task/artifacts/revised-output.md +62 -0
  35. package/.aict/examples/content-production-harvest/CASE.md +87 -0
  36. package/.aict/examples/content-production-harvest/artifacts/acceptance-card.md +28 -0
  37. package/.aict/examples/content-production-harvest/artifacts/context-package.md +28 -0
  38. package/.aict/examples/content-production-harvest/artifacts/execution-prompt.md +30 -0
  39. package/.aict/examples/content-production-harvest/artifacts/guard-review.md +28 -0
  40. package/.aict/examples/content-production-harvest/artifacts/handoff-note.md +28 -0
  41. package/.aict/examples/content-production-harvest/artifacts/harvest-seed.md +28 -0
  42. package/.aict/examples/multi-tool-collaboration/CASE.md +87 -0
  43. package/.aict/examples/multi-tool-collaboration/artifacts/acceptance-card.md +28 -0
  44. package/.aict/examples/multi-tool-collaboration/artifacts/context-package.md +28 -0
  45. package/.aict/examples/multi-tool-collaboration/artifacts/execution-prompt.md +30 -0
  46. package/.aict/examples/multi-tool-collaboration/artifacts/guard-review.md +28 -0
  47. package/.aict/examples/multi-tool-collaboration/artifacts/handoff-note.md +28 -0
  48. package/.aict/examples/multi-tool-collaboration/artifacts/harvest-seed.md +28 -0
  49. package/.aict/examples/personal-judgment-growth-assistant/CASE.md +87 -0
  50. package/.aict/examples/personal-judgment-growth-assistant/artifacts/acceptance-card.md +28 -0
  51. package/.aict/examples/personal-judgment-growth-assistant/artifacts/context-package.md +28 -0
  52. package/.aict/examples/personal-judgment-growth-assistant/artifacts/execution-prompt.md +30 -0
  53. package/.aict/examples/personal-judgment-growth-assistant/artifacts/guard-review.md +28 -0
  54. package/.aict/examples/personal-judgment-growth-assistant/artifacts/handoff-note.md +28 -0
  55. package/.aict/examples/personal-judgment-growth-assistant/artifacts/harvest-seed.md +28 -0
  56. package/.aict/examples/research-knowledge-synthesis/CASE.md +87 -0
  57. package/.aict/examples/research-knowledge-synthesis/artifacts/acceptance-card.md +28 -0
  58. package/.aict/examples/research-knowledge-synthesis/artifacts/context-package.md +28 -0
  59. package/.aict/examples/research-knowledge-synthesis/artifacts/execution-prompt.md +30 -0
  60. package/.aict/examples/research-knowledge-synthesis/artifacts/guard-review.md +28 -0
  61. package/.aict/examples/research-knowledge-synthesis/artifacts/handoff-note.md +28 -0
  62. package/.aict/examples/research-knowledge-synthesis/artifacts/harvest-seed.md +28 -0
  63. package/.aict/guard/EXAMPLE.synthetic.md +51 -0
  64. package/.aict/guard/FAILURE_MODES.md +40 -0
  65. package/.aict/guard/PROMPT.md +47 -0
  66. package/.aict/guard/README.md +44 -0
  67. package/.aict/guard/TEMPLATE.md +60 -0
  68. package/.aict/handoff/EXAMPLE.synthetic.md +51 -0
  69. package/.aict/handoff/FAILURE_MODES.md +40 -0
  70. package/.aict/handoff/PROMPT.md +47 -0
  71. package/.aict/handoff/README.md +44 -0
  72. package/.aict/handoff/TEMPLATE.md +60 -0
  73. package/.aict/harvest/EXAMPLE.synthetic.md +51 -0
  74. package/.aict/harvest/FAILURE_MODES.md +40 -0
  75. package/.aict/harvest/PROMPT.md +47 -0
  76. package/.aict/harvest/README.md +44 -0
  77. package/.aict/harvest/TEMPLATE.md +60 -0
  78. package/.aict/mechanisms/README.md +34 -0
  79. package/.aict/mechanisms/anti-drift-partner/EXAMPLE.synthetic.md +46 -0
  80. package/.aict/mechanisms/anti-drift-partner/FAILURE_MODES.md +25 -0
  81. package/.aict/mechanisms/anti-drift-partner/PROMPT.md +75 -0
  82. package/.aict/mechanisms/anti-drift-partner/README.md +82 -0
  83. package/.aict/mechanisms/anti-drift-partner/TEMPLATE.md +74 -0
  84. package/.aict/mechanisms/blind-spot-scan/EXAMPLE.synthetic.md +39 -0
  85. package/.aict/mechanisms/blind-spot-scan/FAILURE_MODES.md +25 -0
  86. package/.aict/mechanisms/blind-spot-scan/PROMPT.md +72 -0
  87. package/.aict/mechanisms/blind-spot-scan/README.md +79 -0
  88. package/.aict/mechanisms/blind-spot-scan/TEMPLATE.md +70 -0
  89. package/.aict/mechanisms/collaboration-coach/EXAMPLE.synthetic.md +40 -0
  90. package/.aict/mechanisms/collaboration-coach/FAILURE_MODES.md +25 -0
  91. package/.aict/mechanisms/collaboration-coach/PROMPT.md +72 -0
  92. package/.aict/mechanisms/collaboration-coach/README.md +79 -0
  93. package/.aict/mechanisms/collaboration-coach/TEMPLATE.md +61 -0
  94. package/.aict/mechanisms/do-not-handle-yet/EXAMPLE.synthetic.md +15 -0
  95. package/.aict/mechanisms/do-not-handle-yet/FAILURE_MODES.md +16 -0
  96. package/.aict/mechanisms/do-not-handle-yet/PROMPT.md +41 -0
  97. package/.aict/mechanisms/do-not-handle-yet/README.md +30 -0
  98. package/.aict/mechanisms/do-not-handle-yet/TEMPLATE.md +38 -0
  99. package/.aict/mechanisms/dual-guard/EXAMPLE.synthetic.md +54 -0
  100. package/.aict/mechanisms/dual-guard/FAILURE_MODES.md +25 -0
  101. package/.aict/mechanisms/dual-guard/PROMPT.md +76 -0
  102. package/.aict/mechanisms/dual-guard/README.md +81 -0
  103. package/.aict/mechanisms/dual-guard/TEMPLATE.md +73 -0
  104. package/.aict/mechanisms/feedback-absorption-ledger/EXAMPLE.synthetic.md +49 -0
  105. package/.aict/mechanisms/feedback-absorption-ledger/FAILURE_MODES.md +25 -0
  106. package/.aict/mechanisms/feedback-absorption-ledger/PROMPT.md +74 -0
  107. package/.aict/mechanisms/feedback-absorption-ledger/README.md +81 -0
  108. package/.aict/mechanisms/feedback-absorption-ledger/TEMPLATE.md +69 -0
  109. package/.aict/mechanisms/half-product-review/EXAMPLE.synthetic.md +15 -0
  110. package/.aict/mechanisms/half-product-review/FAILURE_MODES.md +16 -0
  111. package/.aict/mechanisms/half-product-review/PROMPT.md +41 -0
  112. package/.aict/mechanisms/half-product-review/README.md +30 -0
  113. package/.aict/mechanisms/half-product-review/TEMPLATE.md +38 -0
  114. package/.aict/mechanisms/handoff-abc/EXAMPLE.synthetic.md +47 -0
  115. package/.aict/mechanisms/handoff-abc/FAILURE_MODES.md +25 -0
  116. package/.aict/mechanisms/handoff-abc/PROMPT.md +75 -0
  117. package/.aict/mechanisms/handoff-abc/README.md +82 -0
  118. package/.aict/mechanisms/handoff-abc/TEMPLATE.md +60 -0
  119. package/.aict/mechanisms/harvest-and-erc/EXAMPLE.synthetic.md +43 -0
  120. package/.aict/mechanisms/harvest-and-erc/FAILURE_MODES.md +25 -0
  121. package/.aict/mechanisms/harvest-and-erc/PROMPT.md +74 -0
  122. package/.aict/mechanisms/harvest-and-erc/README.md +81 -0
  123. package/.aict/mechanisms/harvest-and-erc/TEMPLATE.md +60 -0
  124. package/.aict/mechanisms/honest-calibration/EXAMPLE.synthetic.md +43 -0
  125. package/.aict/mechanisms/honest-calibration/FAILURE_MODES.md +25 -0
  126. package/.aict/mechanisms/honest-calibration/PROMPT.md +74 -0
  127. package/.aict/mechanisms/honest-calibration/README.md +81 -0
  128. package/.aict/mechanisms/honest-calibration/TEMPLATE.md +66 -0
  129. package/.aict/mechanisms/one-click-dispatch/EXAMPLE.synthetic.md +15 -0
  130. package/.aict/mechanisms/one-click-dispatch/FAILURE_MODES.md +16 -0
  131. package/.aict/mechanisms/one-click-dispatch/PROMPT.md +41 -0
  132. package/.aict/mechanisms/one-click-dispatch/README.md +30 -0
  133. package/.aict/mechanisms/one-click-dispatch/TEMPLATE.md +38 -0
  134. package/.aict/mechanisms/plain-language-first-screen/EXAMPLE.synthetic.md +15 -0
  135. package/.aict/mechanisms/plain-language-first-screen/FAILURE_MODES.md +16 -0
  136. package/.aict/mechanisms/plain-language-first-screen/PROMPT.md +41 -0
  137. package/.aict/mechanisms/plain-language-first-screen/README.md +30 -0
  138. package/.aict/mechanisms/plain-language-first-screen/TEMPLATE.md +38 -0
  139. package/.aict/mechanisms/root-cause-brake/EXAMPLE.synthetic.md +55 -0
  140. package/.aict/mechanisms/root-cause-brake/FAILURE_MODES.md +25 -0
  141. package/.aict/mechanisms/root-cause-brake/PROMPT.md +73 -0
  142. package/.aict/mechanisms/root-cause-brake/README.md +79 -0
  143. package/.aict/mechanisms/root-cause-brake/TEMPLATE.md +74 -0
  144. package/.aict/mechanisms/scout-review-controller/EXAMPLE.synthetic.md +15 -0
  145. package/.aict/mechanisms/scout-review-controller/FAILURE_MODES.md +16 -0
  146. package/.aict/mechanisms/scout-review-controller/PROMPT.md +41 -0
  147. package/.aict/mechanisms/scout-review-controller/README.md +30 -0
  148. package/.aict/mechanisms/scout-review-controller/TEMPLATE.md +38 -0
  149. package/.aict/mechanisms/single-tool-guard/EXAMPLE.synthetic.md +54 -0
  150. package/.aict/mechanisms/single-tool-guard/FAILURE_MODES.md +25 -0
  151. package/.aict/mechanisms/single-tool-guard/PROMPT.md +76 -0
  152. package/.aict/mechanisms/single-tool-guard/README.md +83 -0
  153. package/.aict/mechanisms/single-tool-guard/TEMPLATE.md +75 -0
  154. package/.aict/mechanisms/task-splitting/EXAMPLE.synthetic.md +53 -0
  155. package/.aict/mechanisms/task-splitting/FAILURE_MODES.md +25 -0
  156. package/.aict/mechanisms/task-splitting/PROMPT.md +72 -0
  157. package/.aict/mechanisms/task-splitting/README.md +79 -0
  158. package/.aict/mechanisms/task-splitting/TEMPLATE.md +76 -0
  159. package/.aict/modes/README.md +11 -0
  160. package/.aict/modes/execute.md +31 -0
  161. package/.aict/modes/handoff.md +29 -0
  162. package/.aict/modes/harvest.md +30 -0
  163. package/.aict/modes/review.md +28 -0
  164. package/.aict/modes/shape.md +34 -0
  165. package/.aict/privacy/COMMERCIAL_BOUNDARY.md +34 -0
  166. package/.aict/privacy/PRIVACY.md +36 -0
  167. package/.aict/privacy/REDACTION_CHECKLIST.md +12 -0
  168. package/.aict/profile/CANDIDATES.md +44 -0
  169. package/.aict/profile/EXAMPLE.synthetic.md +49 -0
  170. package/.aict/profile/FAILURE_MODES.md +40 -0
  171. package/.aict/profile/PROMPT.md +47 -0
  172. package/.aict/profile/README.md +44 -0
  173. package/.aict/profile/TEMPLATE.md +57 -0
  174. package/.aict/prompts/acceptance-definition.md +109 -0
  175. package/.aict/prompts/guard-review.md +116 -0
  176. package/.aict/prompts/handoff-generation.md +110 -0
  177. package/.aict/prompts/harvest-extraction.md +110 -0
  178. package/.aict/prompts/mode-switching.md +66 -0
  179. package/.aict/prompts/profile-creation.md +66 -0
  180. package/.aict/prompts/profile-refinement.md +66 -0
  181. package/.aict/prompts/project-context-packaging.md +113 -0
  182. package/.aict/prompts/red-team-challenge.md +106 -0
  183. package/.aict/prompts/rule-update-proposal.md +114 -0
  184. package/.aict/prompts/workflow-reset.md +109 -0
  185. package/.aict/roles/README.md +18 -0
  186. package/.aict/roles/executor.md +34 -0
  187. package/.aict/roles/harvester.md +33 -0
  188. package/.aict/roles/owner-controller.md +38 -0
  189. package/.aict/roles/scout.md +33 -0
  190. package/.aict/roles/supervisor.md +34 -0
  191. package/.aict/roles/system-guardian.md +34 -0
  192. package/.aict/skills/acceptance/SKILL.md +43 -0
  193. package/.aict/skills/context/SKILL.md +44 -0
  194. package/.aict/skills/evidence-pack/SKILL.md +42 -0
  195. package/.aict/skills/guard/SKILL.md +46 -0
  196. package/.aict/skills/handoff/SKILL.md +44 -0
  197. package/.aict/skills/harvest/SKILL.md +44 -0
  198. package/.aict/skills/mode-switch/SKILL.md +42 -0
  199. package/.aict/skills/profile/SKILL.md +42 -0
  200. package/.aict/skills/red-team/SKILL.md +42 -0
  201. package/.aict/skills/single-tool-guard/SKILL.md +42 -0
  202. package/.aict/state/CURRENT_STATE.md +13 -0
  203. package/.aict/state/DECISIONS.md +7 -0
  204. package/.aict/state/TASK_LOG.md +7 -0
  205. package/.aict/state/evidence.jsonl +2 -0
  206. package/.aict/state/learning-ledger.jsonl +1 -0
  207. package/.aict/state/receipts.jsonl +1 -0
  208. package/.aict/state/runs.jsonl +1 -0
  209. package/.aict/state/tasks.jsonl +1 -0
  210. package/.aict/walkthroughs/10-minute-your-task.md +107 -0
  211. package/.aict/walkthroughs/10-minute.md +43 -0
  212. package/.aict/walkthroughs/30-minute.md +22 -0
  213. package/.aict/walkthroughs/60-minute.md +27 -0
  214. package/.aict/walkthroughs/synthetic-loop-transcript.md +43 -0
  215. package/CHANGELOG.md +23 -0
  216. package/CODE_OF_CONDUCT.md +20 -0
  217. package/CONTRIBUTING.md +30 -0
  218. package/KNOWN_LIMITATIONS.md +54 -0
  219. package/LICENSE +199 -0
  220. package/PRODUCT_CONTRACT.md +446 -0
  221. package/README.md +245 -0
  222. package/RELEASE_CHECKLIST.md +78 -0
  223. package/SECURITY.md +56 -0
  224. package/START_HERE.md +89 -0
  225. package/bin/ai-collab.js +2 -0
  226. package/docs/DOGFOOD.md +85 -0
  227. package/docs/FEEDBACK.md +61 -0
  228. package/docs/FIRST_EXPERIENCE_SPEC.md +32 -0
  229. package/docs/FREE_VS_PAID.md +53 -0
  230. package/docs/PUBLIC_BOUNDARY.md +36 -0
  231. package/docs/PUBLIC_MAPPING.md +178 -0
  232. package/docs/RELEASE_PRIORITY.md +23 -0
  233. package/docs/WHY_THIS_EXISTS.md +36 -0
  234. package/docs/open-system/00-start-here.md +60 -0
  235. package/docs/open-system/01-ai-collaboration-os.md +33 -0
  236. package/docs/open-system/02-six-layer-architecture.md +45 -0
  237. package/docs/open-system/03-role-system.md +33 -0
  238. package/docs/open-system/04-core-mechanisms.md +34 -0
  239. package/docs/open-system/05-failure-patterns.md +31 -0
  240. package/docs/open-system/06-how-to-adapt-to-your-workflow.md +31 -0
  241. package/package.json +69 -0
  242. package/privacy-manifest.json +78 -0
  243. package/privacy-scan.local.json.example +18 -0
  244. package/scripts/lib/forbidden-in-pack.js +55 -0
  245. package/scripts/pack-check.js +154 -0
  246. package/scripts/privacy-scan.js +487 -0
  247. package/scripts/validate-contract.js +160 -0
  248. package/src/adapters.js +590 -0
  249. package/src/bootstrap.js +1184 -0
  250. package/src/catalog.js +2723 -0
  251. package/src/cli.js +2899 -0
  252. package/src/dialogue.js +470 -0
  253. package/src/i18n.js +1034 -0
  254. package/src/ledger.js +2011 -0
  255. package/src/render.js +1381 -0
  256. package/src/sendmodel.js +452 -0
  257. package/src/validate.js +1307 -0
  258. package/src/workspace.js +1679 -0
  259. package/tests/contract.test.js +8514 -0
@@ -0,0 +1,79 @@
1
+ # Collaboration Coach
2
+
3
+ Part of the AI Collaboration Open System. This is a local-first, public-safe mechanism package you can copy into Claude Code, Codex, Cursor, Cline, Windsurf, or Copilot.
4
+
5
+ ## Purpose
6
+
7
+ Make the assistant proactively remind the user of the matching collaboration step at six recurring moments — define done, review a completion claim, hand off, harvest, update the profile — instead of waiting to be asked, so the workspace teaches itself while the user works rather than sitting unused behind a manual. The hard constraint is restraint: prompt at key moments only, once per moment, never every turn, because over-prompting is the fastest way to get the whole system uninstalled.
8
+
9
+ ## When to use
10
+
11
+ Run it as a standing behavior the moment a collaboration moment fires: a new task or vague idea arrives, the assistant is about to act before 'done' is defined, it just claimed completion, the thread is getting long or work is moving to another tool, a reusable judgment or lesson surfaced, or the same preference has shown up several times. The point is that the assistant raises the matching step on its own at that moment, not three turns later when the user finally remembers to ask.
12
+
13
+ ## When not to use
14
+
15
+ Do not prompt on low-stakes, fast-turn work: a quick fact lookup, a one-line edit, a yes/no confirmation, a casual exchange, or any moment where the user clearly just wants the answer. Do not re-fire a reminder the user already acted on or explicitly waved off. A reminder on trivial work is noise, and noise on every turn trains the user to mute the coach exactly when a real high-stakes moment arrives — so the failure here is not 'missed a prompt', it is 'prompted so often the user turned it off'.
16
+
17
+ ## Input shape
18
+
19
+ The live collaboration moment (which of the six nodes is firing, and the signal that tripped it). The current restraint tier (light / standard / strict), defaulting to standard. Whether this exact reminder has already fired or been dismissed in this thread, so it is not repeated. For the completion-claim node: how many model families are available, so the right guard depth is named (one family -> single-tool-guard; a second different family -> dual-guard; multi-tool -> full fusion review). The matching concrete next action for whichever node fired, so the prompt hands the user a step, not a lecture.
20
+
21
+ ## Input materials
22
+
23
+ - The firing node (1 task start, 2 pre-execution, 3 completion claim, 4 long thread / tool switch, 5 reusable insight, 6 repeated preference) and the signal that tripped it.
24
+ - Restraint tier: light (nodes 3 and 4 only), standard (default — fire at nodes 1, 3, 4, 6; fold node 2 into the task-start reminder and node 5 into a natural pause; count once-per-moment by task phase not by node), or strict (all six, every time they fire); default standard.
25
+ - Already-fired / dismissed memory for this thread, so a reminder is not repeated after the user has acted on it or waved it off.
26
+ - Model-family count at the completion-claim node, so the guard depth is named correctly (one -> single-tool-guard, two different -> dual-guard, multi-tool -> full fusion).
27
+ - The concrete next action attached to the firing node, so the prompt offers a step (write the acceptance card, open single-tool-guard, write the handoff) rather than an abstract nudge.
28
+ - User restraint command, if any (`coach: light` / `coach: standard` / `coach: strict`), which changes how often the coach speaks up.
29
+
30
+ ## Process
31
+
32
+ 1. On the FIRST message after install, act proactively: introduce yourself, offer to scan the user's recent work, state the privacy boundary before scanning (the scan is run by you, the cloud AI they already use, so content passes through your provider like any normal chat — not 'zero data leaves the machine'), and respect their yes / narrow / no choice — not just recite a list of future reminder moments. Then say reminders are restrained by default and switchable with `coach: light` / `coach: strict`. Do this once, then stop.
33
+ 2. Map each firing moment to its node and reminder. 1 Task start -> set a context boundary and acceptance before building. 2 Pre-execution -> define the acceptance card first. 3 Completion claim -> run a guard review before trusting it. 4 Long thread / tool switch -> generate a handoff instead of relying on chat memory. 5 Reusable insight -> harvest it into a card. 6 Repeated preference -> offer it as a profile-update candidate.
34
+ 3. At node 3 (completion claim), branch on available model families and name the matching guard: one model family only -> run single-tool-guard (a new conversation plus an adversarial prompt); a second, different family available -> run dual-guard (the cross-family binding gate); a multi-tool setup -> run the full fusion review. Do not silently skip the branch and just say 'looks good'.
35
+ 4. Apply the restraint tier before speaking. Light: only fire at nodes 3 and 4. Standard (default): fire at nodes 1, 3, 4, 6 — fold node 2 into the task-start reminder (skip it entirely if node 1 already landed an acceptance card) and node 5 into a natural pause, not a separate interruption; count "once per moment" by task phase, not by node, so the opening of one task is a single moment even if nodes 1 and 2 both trip — never stack reminders on back-to-back turns at a task's start, and never re-raise a reminder already acted on. Strict: fire at all six every time they trip. If a tier would make you repeat a just-given reminder, stay silent instead.
36
+ 5. Keep each reminder to one or two sentences that hand over the concrete next step, then continue the actual work. Do not pause to explain the philosophy of the layer, do not stack multiple reminders into a wall, and do not lecture — a prompt the user cannot act on in one move is noise.
37
+ 6. Honor a restraint switch immediately. When the user says `coach: light` / `coach: standard` / `coach: strict`, change tier for the rest of the session without arguing, and confirm the new tier in a few words.
38
+
39
+ ## Output shape
40
+
41
+ - First-run promise: on the first reply, the assistant proactively introduces itself, offers to scan the user's recent work, states the privacy boundary before scanning, and respects the user's yes / narrow / no choice — rather than passively reciting a list of future reminder moments.
42
+ - Per-moment reminder: the firing node named, plus the one-or-two-sentence concrete next step it hands over.
43
+ - Completion-claim branch: which guard was named (single-tool-guard / dual-guard / full fusion) based on available model families.
44
+ - Restraint state: the current tier and a note that the reminder respected it (and was not a repeat of one already acted on).
45
+ - Tier change acknowledgement: when the user switches, the new tier confirmed in a few words.
46
+ - Continuation: the reminder is followed by getting on with the actual task, not by a paragraph of theory.
47
+
48
+ ## Pass bar (what counts as done / safe to trust)
49
+
50
+ - On the first reply the assistant acted proactively: it introduced itself, offered to scan recent work, stated the privacy boundary before scanning, respected the user's yes / narrow / no choice, and did not repeat the intro afterward.
51
+ - Each reminder fired at the right node with a concrete next step the user can act on in one move.
52
+ - The completion-claim node named the correct guard depth for the number of model families available.
53
+ - Restraint held: standard by default, once per moment, no reminder the user already acted on was re-raised, and a `coach:` switch was honored immediately.
54
+ - Reminders stayed short and the assistant got back to the work instead of lecturing about the layer.
55
+
56
+ ## Reject bar (what sends it back)
57
+
58
+ - A reminder fires every turn, or the same reminder is repeated after the user already acted on it (over-prompting — the uninstall path).
59
+ - The completion-claim node says 'looks good' or skips the guard branch instead of naming single-tool-guard / dual-guard / full fusion.
60
+ - A reminder hands over a lecture or a vague nudge instead of a concrete next step.
61
+ - The default silently runs at strict (all six, every time) when the user never asked for it, burying the signal.
62
+ - A `coach:` restraint switch is ignored or argued with instead of applied for the rest of the session.
63
+
64
+ ## Common misuse
65
+
66
+ - Turning every turn into a reminder so the user mutes the coach — the most common way this mechanism gets the whole system uninstalled, and the exact opposite of thoroughness.
67
+ - Naming a step but not the action: 'you should probably guard this' with no pointer to single-tool-guard or dual-guard, so the user is reminded but not moved.
68
+ - Skipping the completion-claim branch and rubber-stamping 'done' as 'looks good', which is the one node that exists to stop a fluent false completion.
69
+ - Lecturing the theory of the coaching layer mid-task instead of handing over one concrete step and continuing.
70
+ - Defaulting to strict (or to silent) instead of standard, so the user either drowns in prompts or never gets the reminder that mattered.
71
+ - Re-firing a reminder the user already dismissed, which reads as nagging and trains them to ignore the next one.
72
+
73
+ ## Package files
74
+
75
+ - `README.md` explains the mechanism.
76
+ - `PROMPT.md` gives the copy-paste prompt.
77
+ - `TEMPLATE.md` gives the blank operating card.
78
+ - `EXAMPLE.synthetic.md` shows a public-safe run.
79
+ - `FAILURE_MODES.md` names common ways this mechanism fails.
@@ -0,0 +1,61 @@
1
+ # Collaboration Coach Template
2
+
3
+ AI Collaboration Open System mechanism card. Fill this in a local-first workflow with public-safe or redacted material.
4
+
5
+ ## Purpose
6
+
7
+ Make the assistant proactively remind the user of the matching collaboration step at six recurring moments — define done, review a completion claim, hand off, harvest, update the profile — instead of waiting to be asked, so the workspace teaches itself while the user works rather than sitting unused behind a manual. The hard constraint is restraint: prompt at key moments only, once per moment, never every turn, because over-prompting is the fastest way to get the whole system uninstalled.
8
+
9
+ ## Template
10
+
11
+ ### First-run promise (first reply, proactive — introduce + offer to scan + state the privacy boundary + respect yes / narrow / no):
12
+
13
+
14
+ ### Firing node (1-6) and the signal that tripped it:
15
+
16
+
17
+ ### Restraint tier in effect (light / standard / strict; default standard):
18
+
19
+
20
+ ### Already fired or dismissed this thread? (if yes, stay silent):
21
+
22
+
23
+ ### Matching reminder (one or two sentences, hands over the concrete next step):
24
+
25
+
26
+ ### Completion-claim branch (one family -> single-tool-guard / two different -> dual-guard / multi-tool -> full fusion):
27
+
28
+
29
+ ### Tier change to acknowledge (if the user said coach: light / standard / strict):
30
+
31
+
32
+ ### Continue the actual task:
33
+
34
+
35
+
36
+ ## Pass bar (tick before you trust the result)
37
+
38
+ - On the first reply the assistant acted proactively: it introduced itself, offered to scan recent work, stated the privacy boundary before scanning, respected the user's yes / narrow / no choice, and did not repeat the intro afterward.
39
+ - Each reminder fired at the right node with a concrete next step the user can act on in one move.
40
+ - The completion-claim node named the correct guard depth for the number of model families available.
41
+ - Restraint held: standard by default, once per moment, no reminder the user already acted on was re-raised, and a `coach:` switch was honored immediately.
42
+ - Reminders stayed short and the assistant got back to the work instead of lecturing about the layer.
43
+
44
+ ## Reject bar (send it back if any of these is true)
45
+
46
+ - A reminder fires every turn, or the same reminder is repeated after the user already acted on it (over-prompting — the uninstall path).
47
+ - The completion-claim node says 'looks good' or skips the guard branch instead of naming single-tool-guard / dual-guard / full fusion.
48
+ - A reminder hands over a lecture or a vague nudge instead of a concrete next step.
49
+ - The default silently runs at strict (all six, every time) when the user never asked for it, burying the signal.
50
+ - A `coach:` restraint switch is ignored or argued with instead of applied for the rest of the session.
51
+
52
+ ## Worked example
53
+
54
+ See `EXAMPLE.synthetic.md` for this same card filled out end to end on a public-safe synthetic task.
55
+
56
+ ## Completion check
57
+
58
+ - The mechanism has a named trigger.
59
+ - The next action is concrete.
60
+ - Private details are redacted or rewritten as synthetic examples.
61
+ - The result can be handed to another AI tool without extra chat history.
@@ -0,0 +1,15 @@
1
+ # Do Not Handle Yet Synthetic Example
2
+
3
+ This is a public-safe synthetic example for the AI Collaboration Open System. It is local-first and contains no private account, customer, route, hook, or conversation material.
4
+
5
+ ## Synthetic example
6
+
7
+ During CLI init work, visual branding polish is parked until init, demo, check, privacy scan, and package dry-run are green.
8
+
9
+ ## How the mechanism changes the outcome
10
+
11
+ Without this mechanism, a single assistant can produce a smooth answer while hiding uncertainty. With this mechanism, the workflow records trigger, evidence, decision, residual risk, and next action.
12
+
13
+ ## Reuse note
14
+
15
+ Copy the shape, not the synthetic facts. Adapt the template to your own redacted task.
@@ -0,0 +1,16 @@
1
+ # Do Not Handle Yet Failure Modes
2
+
3
+ AI Collaboration Open System failure checklist. Use it in a local-first workflow before trusting a mechanism run, and rewrite any public example into public-safe language.
4
+
5
+ ## Failure modes
6
+
7
+ - Parking becomes deletion because no revisit condition exists.
8
+ - The assistant handles the parked item anyway.
9
+ - The parking note hides a true blocker.
10
+
11
+ ## Guard questions
12
+
13
+ 1. Did this mechanism change the decision, or just add ceremony?
14
+ 2. Is any private material copied instead of summarized or synthesized?
15
+ 3. Are blockers, residual risks, and next actions separated?
16
+ 4. Could a new session continue from this file alone?
@@ -0,0 +1,41 @@
1
+ # Do Not Handle Yet Prompt
2
+
3
+ This prompt belongs to the AI Collaboration Open System. Use it in a local-first workflow with public-safe or redacted material.
4
+
5
+ ## Purpose
6
+
7
+ Protect the main line by explicitly parking tempting but lower-priority work.
8
+
9
+ ## Copy-paste prompt
10
+
11
+ ```text
12
+ Use the Do Not Handle Yet mechanism from my local AI Collaboration Open System workspace.
13
+
14
+ Purpose:
15
+ Protect the main line by explicitly parking tempting but lower-priority work.
16
+
17
+ Trigger:
18
+ Use when a task reveals adjacent bugs, polish ideas, product questions, or architecture tangents.
19
+
20
+ Input:
21
+ [paste redacted task material, context package, and acceptance card here]
22
+
23
+ Process:
24
+ 1. Name the current slice and completion standard.
25
+ 2. Write the adjacent item in a parking note.
26
+ 3. Explain why handling it now would harm the main line.
27
+ 4. Define when to revisit it.
28
+
29
+ Return:
30
+ - Decision-changing findings only
31
+ - Evidence used
32
+ - Required fixes
33
+ - Residual risk
34
+ - Next action
35
+
36
+ Rules:
37
+ - Work from provided material only.
38
+ - Keep private material local.
39
+ - Use public-safe synthetic wording for examples.
40
+ - Label assumptions and unverified claims.
41
+ ```
@@ -0,0 +1,30 @@
1
+ # Do Not Handle Yet
2
+
3
+ Part of the AI Collaboration Open System. This is a local-first, public-safe mechanism package you can copy into Claude Code, Codex, Cursor, Cline, Windsurf, or Copilot.
4
+
5
+ ## Purpose
6
+
7
+ Protect the main line by explicitly parking tempting but lower-priority work.
8
+
9
+ ## When to use
10
+
11
+ Use when a task reveals adjacent bugs, polish ideas, product questions, or architecture tangents.
12
+
13
+ ## Input shape
14
+
15
+ Main goal, current slice, tempting adjacent item, risk if handled now, and revisit condition.
16
+
17
+ ## Process
18
+
19
+ 1. Name the current slice and completion standard.
20
+ 2. Write the adjacent item in a parking note.
21
+ 3. Explain why handling it now would harm the main line.
22
+ 4. Define when to revisit it.
23
+
24
+ ## Package files
25
+
26
+ - `README.md` explains the mechanism.
27
+ - `PROMPT.md` gives the copy-paste prompt.
28
+ - `TEMPLATE.md` gives the blank operating card.
29
+ - `EXAMPLE.synthetic.md` shows a public-safe run.
30
+ - `FAILURE_MODES.md` names common ways this mechanism fails.
@@ -0,0 +1,38 @@
1
+ # Do Not Handle Yet Template
2
+
3
+ AI Collaboration Open System mechanism card. Fill this in a local-first workflow with public-safe or redacted material.
4
+
5
+ ## Purpose
6
+
7
+ Protect the main line by explicitly parking tempting but lower-priority work.
8
+
9
+ ## Template
10
+
11
+ ### Current slice:
12
+
13
+
14
+ ### Parked item:
15
+
16
+
17
+ ### Reason not now:
18
+
19
+
20
+ ### Risk if handled now:
21
+
22
+
23
+ ### Revisit condition:
24
+
25
+
26
+ ### Owner decision needed:
27
+
28
+
29
+ ### Storage target:
30
+
31
+
32
+
33
+ ## Completion check
34
+
35
+ - The mechanism has a named trigger.
36
+ - The next action is concrete.
37
+ - Private details are redacted or rewritten as synthetic examples.
38
+ - The result can be handed to another AI tool without extra chat history.
@@ -0,0 +1,54 @@
1
+ # Dual Guard Synthetic Example
2
+
3
+ This is a public-safe synthetic example for the AI Collaboration Open System. It is local-first and contains no private account, customer, route, hook, or conversation material.
4
+
5
+ ## Synthetic example
6
+
7
+ A synthetic release note passes product clarity but the cross-family binding guard blocks it because the text claims a smoke test that did not run. By layered strictness the merged result is reject until the command output exists.
8
+
9
+ ## Full worked example (filled end to end)
10
+
11
+ An execution AI was asked to add a feature to a small synthetic task board and report when it was done. It returned a confident 'done, implemented and tested' message. The owner runs Dual Guard before trusting that claim.
12
+
13
+ ### Artifact under review
14
+ A short completion report plus a code block from the execution AI (call it the drafter, from model family X). The report says: "Done. I implemented the new task-reordering feature with both mouse drag and keyboard arrow-key support, and I added tests; everything passes." The code block is given with line numbers so a guard can cite exact lines.
15
+
16
+ ### Acceptance source / definition of done
17
+ AC1: a task can be reordered with the mouse. AC2: a task can be reordered with the keyboard arrow keys (accessibility requirement). AC3: both paths have an automated test that fails before the change and passes after. AC4: existing task data survives. AC5: visual restyling is out of scope and must be reported as unverified, not done.
18
+
19
+ ### Drafting model family
20
+ Family X (the same assistant that wrote the code). So the binding guard must come from a different family, Family Y.
21
+
22
+ ### Binding guard (different family) findings
23
+ The Family-Y guard reads the code against the acceptance card and reports, each tied to a line:
24
+ - AC2 FAIL. The keyboard handler at the cited lines only logs the key press and never calls the reorder function, so arrow keys move nothing. The completion claim says keyboard reordering 'is supported' — the code does not back that claim.
25
+ - AC3 FAIL. There is one test, and it only covers the mouse path. There is no keyboard test, so 'I added tests; everything passes' overstates the evidence.
26
+ - AC1 PASS with evidence: the mouse path calls the reorder function and the single test exercises it.
27
+ - AC4 PASS: the reorder operates on the existing data shape; no migration.
28
+ - Verdict from the binding guard: reject. The claim asserts more than the code and tests prove.
29
+
30
+ ### Reference guard (same family) focus and findings (advisory only)
31
+ A second Family-X guard is run for an extra angle. It agrees the keyboard path looks thin and adds one advisory note: even once arrow keys work, focus has to land on the right item first, so a focus-order check would be worth adding later. This is recorded as advisory input — it does not clear or block the gate by itself.
32
+
33
+ ### Merge rule = layered strictness
34
+ Not a vote. The drafter said 'done', and a reader skimming the fluent report might have accepted it. But the cross-family binding guard pointed to two concrete, evidence-grounded blockers (AC2 and AC3). One real blocker is enough; two settle it. The reference guard's agreement is consistent but is not what decides the verdict.
35
+
36
+ ### Verdict
37
+ Reject (blocker: keyboard reorder is claimed but neither implemented nor tested).
38
+
39
+ ### Required fixes
40
+ 1. Make the keyboard handler call the reorder function for ArrowUp / ArrowDown. 2. Add a keyboard reorder test that fails against the current stub and passes after the fix. 3. Either implement AC2/AC3 or move keyboard support out of scope explicitly and correct the completion claim to match — do not leave the claim broader than the code.
41
+
42
+ ### Residual risk and who accepted it
43
+ Visual restyling (AC5) stays out of scope and is carried as named residual risk, accepted by the owner for this slice. The advisory focus-order check is logged for a future pass, not blocking now.
44
+
45
+ ### Next action
46
+ Send the two required fixes back to the drafter. Re-run only the binding (cross-family) guard on the revised output; it clears the gate once the keyboard test fails-then-passes and the claim matches the code. Then the result can be trusted by the next session.
47
+
48
+ ## How the mechanism changes the outcome
49
+
50
+ Without this mechanism, a single assistant can produce a smooth answer while hiding uncertainty. With this mechanism, the workflow records trigger, evidence, decision, residual risk, and next action.
51
+
52
+ ## Reuse note
53
+
54
+ Copy the shape, not the synthetic facts. Adapt the template to your own redacted task.
@@ -0,0 +1,25 @@
1
+ # Dual Guard Failure Modes
2
+
3
+ AI Collaboration Open System failure checklist. Use it in a local-first workflow before trusting a mechanism run, and rewrite any public example into public-safe language.
4
+
5
+ ## Failure modes
6
+
7
+ - Both guards review the same surface and miss the real risk.
8
+ - The controller copies every comment instead of merging decision-changing findings.
9
+ - A warning is treated as a pass without naming residual risk.
10
+
11
+ ## Common misuse (operator errors that look fine but break the mechanism)
12
+
13
+ - Treating it as a vote: two approvals and one blocker get tallied as 'pass'. It is not a poll; one concrete, evidence-grounded blocker is enough to reject.
14
+ - Using two guards from the SAME model family and calling it dual-guard. Same-family reviewers tend to miss the same things; same-family passes catch fewer real problems than a cross-family pass, so without the cross-family binding guard the structure's whole point is gone.
15
+ - Letting the binding guard 'review' with no acceptance card or evidence, so it grades tone and fluency instead of checking claims against proof.
16
+ - Copying every comment from both guards into the merge instead of keeping only the decision-changing findings, which buries the real blocker in noise.
17
+ - Accepting a warning as a pass without writing down the residual risk or who accepted it, so the next session inherits a hidden gap.
18
+ - Skipping the whole mechanism on a genuinely high-stakes artifact because it 'reads fine' which is exactly the fluent-but-wrong case the cross-family guard exists to catch.
19
+
20
+ ## Guard questions
21
+
22
+ 1. Did this mechanism change the decision, or just add ceremony?
23
+ 2. Is any private material copied instead of summarized or synthesized?
24
+ 3. Are blockers, residual risks, and next actions separated?
25
+ 4. Could a new session continue from this file alone?
@@ -0,0 +1,76 @@
1
+ # Dual Guard Prompt
2
+
3
+ This prompt belongs to the AI Collaboration Open System. Use it in a local-first workflow with public-safe or redacted material.
4
+
5
+ ## Purpose
6
+
7
+ Cancel shared blind spots with structure instead of a stronger model: a guard from a different model family is the binding gate, and a same-family guard is a non-binding reference, so a fluent answer cannot be trusted just because it reads well.
8
+
9
+ Don't have a second model family yet? See the cookbook recipe `../../cookbook/bridge-to-a-second-family.md` for how to set one up (manual copy-paste or an optional auto bridge) and route this review across it. The `[paste ... here]` slot below assumes you already have that second, different-family AI to paste into.
10
+
11
+ ## Copy-paste prompt
12
+
13
+ ```text
14
+ Use the Dual Guard mechanism from my local AI Collaboration Open System workspace.
15
+
16
+ Purpose:
17
+ Cancel shared blind spots with structure instead of a stronger model: a guard from a different model family is the binding gate, and a same-family guard is a non-binding reference, so a fluent answer cannot be trusted just because it reads well.
18
+
19
+ Trigger:
20
+ Use before you trust an artifact that another session, another tool, or another person will build on: a release candidate, a public document, a high-risk plan, a completion claim that says work is done, or any output where a wrong 'looks fine' would propagate.
21
+
22
+ Do not use when:
23
+ Skip it for low-stakes, easily reversible, or already-verified work: a quick fact lookup, a one-line wording tweak, a throwaway scratch draft, or a step a human is about to fully re-check anyway. Running the full two-layer review on trivial work is pure ceremony cost, and ceremony you pay for nothing trains people to skip the review when it actually matters.
24
+
25
+ Input:
26
+ [paste redacted task material, context package, and acceptance card here]
27
+
28
+ Process:
29
+ 1. Pick a binding guard from a DIFFERENT model family than the one that drafted the artifact. It does not share the drafter's context window, recent training nudges, or eagerness to please, so it is the pass most likely to see a problem the author cannot. This is the hard gate.
30
+ 2. Give the binding guard the artifact plus acceptance card, context boundary, and the evidence list. Ask it to check, in order: does each completion claim have evidence that actually backs it; does the work meet the acceptance criteria; did scope drift past the stated non-goals; is anything private leaking; what is asserted but unproven. Require every finding to point to a specific line, section, or missing piece of evidence.
31
+ 3. Optionally run a same-family guard as a REFERENCE pass for a second angle (style, an alternate user path, a missed edge case). Treat its output as input only: it never substitutes for the cross-family pass and never alone clears the gate.
32
+ 4. Merge by layered strictness, not by majority vote. This is not a poll. If ANY guard names a real, evidence-grounded blocker, the artifact does not pass, even if the other guard liked it. One concrete defect outweighs two fluent approvals.
33
+ 5. Resolve each blocker one of two ways: fix it and re-show the evidence, or carry it explicitly as named residual risk that the human owner accepts on the record. Silent 'good enough' is not allowed.
34
+ 6. Record the outcome so a later session can trust it without re-litigating: what was reviewed, which guard was binding vs reference, the findings, the fixes, the residual risk, and the next action.
35
+
36
+ Output shape:
37
+ - Verdict: one of the four standard states — pass / reject / insufficient_evidence / pass_with_risk.
38
+ - Guard level: this is the L3 path (a structured evidence pack reviewed by a different model family), so it can return pass; an L4 pass additionally requires the binding guard to have independently re-run the key evidence and shown that rerun output.
39
+ - Binding guard (cross-family) findings: each tied to a line, section, or missing evidence.
40
+ - Reference guard (same-family) findings: labeled as advisory, not gate-clearing.
41
+ - Merge decision: which findings were decision-changing and why the verdict follows from layered strictness.
42
+ - Required fixes: the concrete change each blocker needs.
43
+ - Residual risk: what stays unverified and who accepted it (a pass_with_risk needs an explicit owner sign-off, not the guard's own say-so).
44
+ - Next action: the exact next step (re-review after fix, hand off, or release).
45
+
46
+ Return:
47
+ - Decision-changing findings only
48
+ - Evidence used
49
+ - Required fixes
50
+ - Residual risk
51
+ - Next action
52
+
53
+ Pass bar (do not pass unless all hold):
54
+ - Every completion claim in the artifact is backed by evidence the binding guard could actually point to.
55
+ - All acceptance criteria are met, or the unmet ones are named as accepted residual risk, not hidden.
56
+ - The binding guard came from a different model family than the drafter, and its pass is on the record.
57
+ - No private material leaked and scope stayed inside the stated boundary.
58
+ - A later session could trust the result from the record alone, without re-running the whole review.
59
+
60
+ Reject bar (send back if any holds):
61
+ - A completion claim asserts more than the evidence shows (the classic 'said it was done but it was not').
62
+ - An acceptance criterion is unmet and is being quietly skipped instead of named as residual risk.
63
+ - Only a same-family reference pass was run; no cross-family binding guard cleared the gate.
64
+ - A finding points to a real, evidence-grounded defect anywhere, even if another guard approved (layered strictness overrides the 'majority liked it' instinct).
65
+ - Private detail leaks, or the work expanded past the stated non-goals.
66
+
67
+ Rules:
68
+ - Work from provided material only.
69
+ - Keep private material local.
70
+ - Use public-safe synthetic wording for examples.
71
+ - Label assumptions and unverified claims.
72
+ ```
73
+
74
+ ## Full worked example
75
+
76
+ See `EXAMPLE.synthetic.md` for this prompt run from start to finish on a public-safe synthetic task.
@@ -0,0 +1,81 @@
1
+ # Dual Guard
2
+
3
+ Part of the AI Collaboration Open System. This is a local-first, public-safe mechanism package you can copy into Claude Code, Codex, Cursor, Cline, Windsurf, or Copilot.
4
+
5
+ ## Purpose
6
+
7
+ Cancel shared blind spots with structure instead of a stronger model: a guard from a different model family is the binding gate, and a same-family guard is a non-binding reference, so a fluent answer cannot be trusted just because it reads well.
8
+
9
+ ## When to use
10
+
11
+ Use before you trust an artifact that another session, another tool, or another person will build on: a release candidate, a public document, a high-risk plan, a completion claim that says work is done, or any output where a wrong 'looks fine' would propagate.
12
+
13
+ ## When not to use
14
+
15
+ Skip it for low-stakes, easily reversible, or already-verified work: a quick fact lookup, a one-line wording tweak, a throwaway scratch draft, or a step a human is about to fully re-check anyway. Running the full two-layer review on trivial work is pure ceremony cost, and ceremony you pay for nothing trains people to skip the review when it actually matters.
16
+
17
+ ## Input shape
18
+
19
+ The artifact under review (with stable line or section references the guards can point to). The acceptance card or definition of done it claims to meet. The context boundary (goal, scope, non-goals). The verification evidence that supposedly backs the completion claim (command output, test results, a reproduced result). The list of areas the author already knows are unverified. A note of which model family drafted the artifact, so you can pick a guard from a different family for the binding pass.
20
+
21
+ ## Input materials
22
+
23
+ - Artifact under review, with line numbers or section anchors so a finding can cite an exact spot, not a vibe.
24
+ - Acceptance card / definition of done: the checkable criteria the artifact claims to satisfy.
25
+ - Context boundary: goal, in-scope, and explicit non-goals, so the guards can catch scope drift.
26
+ - Verification evidence: the actual command output, test result, or reproduced behavior the completion claim rests on (or a clear note that none exists).
27
+ - Known-unverified list from the author: what they already flagged as not yet checked.
28
+ - Drafting model family: which family produced the artifact, so the binding guard can be chosen from a different family.
29
+
30
+ ## Process
31
+
32
+ 1. Pick a binding guard from a DIFFERENT model family than the one that drafted the artifact. It does not share the drafter's context window, recent training nudges, or eagerness to please, so it is the pass most likely to see a problem the author cannot. This is the hard gate.
33
+ 2. Give the binding guard the artifact plus acceptance card, context boundary, and the evidence list. Ask it to check, in order: does each completion claim have evidence that actually backs it; does the work meet the acceptance criteria; did scope drift past the stated non-goals; is anything private leaking; what is asserted but unproven. Require every finding to point to a specific line, section, or missing piece of evidence.
34
+ 3. Optionally run a same-family guard as a REFERENCE pass for a second angle (style, an alternate user path, a missed edge case). Treat its output as input only: it never substitutes for the cross-family pass and never alone clears the gate.
35
+ 4. Merge by layered strictness, not by majority vote. This is not a poll. If ANY guard names a real, evidence-grounded blocker, the artifact does not pass, even if the other guard liked it. One concrete defect outweighs two fluent approvals.
36
+ 5. Resolve each blocker one of two ways: fix it and re-show the evidence, or carry it explicitly as named residual risk that the human owner accepts on the record. Silent 'good enough' is not allowed.
37
+ 6. Record the outcome so a later session can trust it without re-litigating: what was reviewed, which guard was binding vs reference, the findings, the fixes, the residual risk, and the next action.
38
+
39
+ ## Output shape
40
+
41
+ - Verdict: one of the four standard states — pass / reject / insufficient_evidence / pass_with_risk.
42
+ - Guard level: this is the L3 path (a structured evidence pack reviewed by a different model family), so it can return pass; an L4 pass additionally requires the binding guard to have independently re-run the key evidence and shown that rerun output.
43
+ - Binding guard (cross-family) findings: each tied to a line, section, or missing evidence.
44
+ - Reference guard (same-family) findings: labeled as advisory, not gate-clearing.
45
+ - Merge decision: which findings were decision-changing and why the verdict follows from layered strictness.
46
+ - Required fixes: the concrete change each blocker needs.
47
+ - Residual risk: what stays unverified and who accepted it (a pass_with_risk needs an explicit owner sign-off, not the guard's own say-so).
48
+ - Next action: the exact next step (re-review after fix, hand off, or release).
49
+
50
+ ## Pass bar (what counts as done / safe to trust)
51
+
52
+ - Every completion claim in the artifact is backed by evidence the binding guard could actually point to.
53
+ - All acceptance criteria are met, or the unmet ones are named as accepted residual risk, not hidden.
54
+ - The binding guard came from a different model family than the drafter, and its pass is on the record.
55
+ - No private material leaked and scope stayed inside the stated boundary.
56
+ - A later session could trust the result from the record alone, without re-running the whole review.
57
+
58
+ ## Reject bar (what sends it back)
59
+
60
+ - A completion claim asserts more than the evidence shows (the classic 'said it was done but it was not').
61
+ - An acceptance criterion is unmet and is being quietly skipped instead of named as residual risk.
62
+ - Only a same-family reference pass was run; no cross-family binding guard cleared the gate.
63
+ - A finding points to a real, evidence-grounded defect anywhere, even if another guard approved (layered strictness overrides the 'majority liked it' instinct).
64
+ - Private detail leaks, or the work expanded past the stated non-goals.
65
+
66
+ ## Common misuse
67
+
68
+ - Treating it as a vote: two approvals and one blocker get tallied as 'pass'. It is not a poll; one concrete, evidence-grounded blocker is enough to reject.
69
+ - Using two guards from the SAME model family and calling it dual-guard. Same-family reviewers tend to miss the same things; same-family passes catch fewer real problems than a cross-family pass, so without the cross-family binding guard the structure's whole point is gone.
70
+ - Letting the binding guard 'review' with no acceptance card or evidence, so it grades tone and fluency instead of checking claims against proof.
71
+ - Copying every comment from both guards into the merge instead of keeping only the decision-changing findings, which buries the real blocker in noise.
72
+ - Accepting a warning as a pass without writing down the residual risk or who accepted it, so the next session inherits a hidden gap.
73
+ - Skipping the whole mechanism on a genuinely high-stakes artifact because it 'reads fine' which is exactly the fluent-but-wrong case the cross-family guard exists to catch.
74
+
75
+ ## Package files
76
+
77
+ - `README.md` explains the mechanism.
78
+ - `PROMPT.md` gives the copy-paste prompt.
79
+ - `TEMPLATE.md` gives the blank operating card.
80
+ - `EXAMPLE.synthetic.md` shows a public-safe run.
81
+ - `FAILURE_MODES.md` names common ways this mechanism fails.
@@ -0,0 +1,73 @@
1
+ # Dual Guard Template
2
+
3
+ AI Collaboration Open System mechanism card. Fill this in a local-first workflow with public-safe or redacted material.
4
+
5
+ ## Purpose
6
+
7
+ Cancel shared blind spots with structure instead of a stronger model: a guard from a different model family is the binding gate, and a same-family guard is a non-binding reference, so a fluent answer cannot be trusted just because it reads well.
8
+
9
+ ## Template
10
+
11
+ ### Artifact under review (with line/section refs):
12
+
13
+
14
+ ### Acceptance source / definition of done:
15
+
16
+
17
+ ### Drafting model family:
18
+
19
+
20
+ ### Binding guard (different family) focus:
21
+
22
+
23
+ ### Binding guard findings (each cites a line/section/missing evidence):
24
+
25
+
26
+ ### Reference guard (same family) focus and findings (advisory only):
27
+
28
+
29
+ ### Merge rule = layered strictness (any evidence-grounded blocker = reject; not majority vote):
30
+
31
+
32
+ ### Guard level reached (L3 cross-family pack, or L4 if the binding guard re-ran the key evidence):
33
+
34
+
35
+ ### Verdict (pass / reject / insufficient_evidence / pass_with_risk):
36
+
37
+
38
+ ### Required fixes:
39
+
40
+
41
+ ### Residual risk and who accepted it (pass_with_risk needs an explicit owner sign-off):
42
+
43
+
44
+ ### Next action:
45
+
46
+
47
+
48
+ ## Pass bar (tick before you trust the result)
49
+
50
+ - Every completion claim in the artifact is backed by evidence the binding guard could actually point to.
51
+ - All acceptance criteria are met, or the unmet ones are named as accepted residual risk, not hidden.
52
+ - The binding guard came from a different model family than the drafter, and its pass is on the record.
53
+ - No private material leaked and scope stayed inside the stated boundary.
54
+ - A later session could trust the result from the record alone, without re-running the whole review.
55
+
56
+ ## Reject bar (send it back if any of these is true)
57
+
58
+ - A completion claim asserts more than the evidence shows (the classic 'said it was done but it was not').
59
+ - An acceptance criterion is unmet and is being quietly skipped instead of named as residual risk.
60
+ - Only a same-family reference pass was run; no cross-family binding guard cleared the gate.
61
+ - A finding points to a real, evidence-grounded defect anywhere, even if another guard approved (layered strictness overrides the 'majority liked it' instinct).
62
+ - Private detail leaks, or the work expanded past the stated non-goals.
63
+
64
+ ## Worked example
65
+
66
+ See `EXAMPLE.synthetic.md` for this same card filled out end to end on a public-safe synthetic task.
67
+
68
+ ## Completion check
69
+
70
+ - The mechanism has a named trigger.
71
+ - The next action is concrete.
72
+ - Private details are redacted or rewritten as synthetic examples.
73
+ - The result can be handed to another AI tool without extra chat history.