@pantion/dialogs 0.2.1 → 0.3.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 (126) hide show
  1. package/dialogs/router/convergence-rules.md +160 -0
  2. package/dialogs/router/dialog.json +12 -0
  3. package/dialogs/router/translate.md +21 -0
  4. package/dialogs/software/convergence-rules.md +202 -15
  5. package/dialogs/software/prompts/convergence-intro.md +27 -15
  6. package/dist/core/feedback/aggregator.d.ts +7 -0
  7. package/dist/core/feedback/aggregator.d.ts.map +1 -0
  8. package/dist/core/feedback/aggregator.js +119 -0
  9. package/dist/core/feedback/aggregator.js.map +1 -0
  10. package/dist/core/feedback/store.d.ts +20 -0
  11. package/dist/core/feedback/store.d.ts.map +1 -0
  12. package/dist/core/feedback/store.js +111 -0
  13. package/dist/core/feedback/store.js.map +1 -0
  14. package/dist/core/feedback/suggestions.d.ts +5 -0
  15. package/dist/core/feedback/suggestions.d.ts.map +1 -0
  16. package/dist/core/feedback/suggestions.js +60 -0
  17. package/dist/core/feedback/suggestions.js.map +1 -0
  18. package/dist/core/feedback/types.d.ts +26 -0
  19. package/dist/core/feedback/types.d.ts.map +1 -0
  20. package/dist/core/feedback/types.js +2 -0
  21. package/dist/core/feedback/types.js.map +1 -0
  22. package/dist/core/index.d.ts +16 -3
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +10 -2
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/protocol/loader.d.ts +4 -0
  27. package/dist/core/protocol/loader.d.ts.map +1 -1
  28. package/dist/core/protocol/loader.js +16 -0
  29. package/dist/core/protocol/loader.js.map +1 -1
  30. package/dist/core/protocol/stamp-parser.d.ts.map +1 -1
  31. package/dist/core/protocol/stamp-parser.js +2 -1
  32. package/dist/core/protocol/stamp-parser.js.map +1 -1
  33. package/dist/core/protocol/system-prompt.d.ts +17 -0
  34. package/dist/core/protocol/system-prompt.d.ts.map +1 -1
  35. package/dist/core/protocol/system-prompt.js +63 -5
  36. package/dist/core/protocol/system-prompt.js.map +1 -1
  37. package/dist/core/router/classifier.d.ts +29 -0
  38. package/dist/core/router/classifier.d.ts.map +1 -0
  39. package/dist/core/router/classifier.js +160 -0
  40. package/dist/core/router/classifier.js.map +1 -0
  41. package/dist/core/router/context.d.ts +28 -0
  42. package/dist/core/router/context.d.ts.map +1 -0
  43. package/dist/core/router/context.js +65 -0
  44. package/dist/core/router/context.js.map +1 -0
  45. package/dist/core/router/menu.d.ts +18 -0
  46. package/dist/core/router/menu.d.ts.map +1 -0
  47. package/dist/core/router/menu.js +109 -0
  48. package/dist/core/router/menu.js.map +1 -0
  49. package/dist/core/router/next-actions.d.ts +17 -0
  50. package/dist/core/router/next-actions.d.ts.map +1 -0
  51. package/dist/core/router/next-actions.js +153 -0
  52. package/dist/core/router/next-actions.js.map +1 -0
  53. package/dist/core/router/types.d.ts +49 -0
  54. package/dist/core/router/types.d.ts.map +1 -0
  55. package/dist/core/router/types.js +8 -0
  56. package/dist/core/router/types.js.map +1 -0
  57. package/dist/core/types.d.ts +2 -0
  58. package/dist/core/types.d.ts.map +1 -1
  59. package/dist/core/utils/datetime.d.ts +13 -0
  60. package/dist/core/utils/datetime.d.ts.map +1 -0
  61. package/dist/core/utils/datetime.js +17 -0
  62. package/dist/core/utils/datetime.js.map +1 -0
  63. package/dist/feature-set.d.ts.map +1 -1
  64. package/dist/feature-set.js +4 -0
  65. package/dist/feature-set.js.map +1 -1
  66. package/dist/index.js +3 -3
  67. package/dist/index.js.map +1 -1
  68. package/dist/prompts/workflow-prompts.d.ts.map +1 -1
  69. package/dist/prompts/workflow-prompts.js +81 -1
  70. package/dist/prompts/workflow-prompts.js.map +1 -1
  71. package/dist/server.d.ts.map +1 -1
  72. package/dist/server.js +6 -0
  73. package/dist/server.js.map +1 -1
  74. package/dist/tools/amend.d.ts.map +1 -1
  75. package/dist/tools/amend.js +2 -2
  76. package/dist/tools/amend.js.map +1 -1
  77. package/dist/tools/approve.d.ts.map +1 -1
  78. package/dist/tools/approve.js +2 -2
  79. package/dist/tools/approve.js.map +1 -1
  80. package/dist/tools/build.d.ts +4 -0
  81. package/dist/tools/build.d.ts.map +1 -0
  82. package/dist/tools/build.js +200 -0
  83. package/dist/tools/build.js.map +1 -0
  84. package/dist/tools/check-convergence.d.ts.map +1 -1
  85. package/dist/tools/check-convergence.js +15 -1
  86. package/dist/tools/check-convergence.js.map +1 -1
  87. package/dist/tools/feedback.d.ts +4 -0
  88. package/dist/tools/feedback.d.ts.map +1 -0
  89. package/dist/tools/feedback.js +51 -0
  90. package/dist/tools/feedback.js.map +1 -0
  91. package/dist/tools/index.d.ts.map +1 -1
  92. package/dist/tools/index.js +9 -1
  93. package/dist/tools/index.js.map +1 -1
  94. package/dist/tools/learn.d.ts +4 -0
  95. package/dist/tools/learn.d.ts.map +1 -0
  96. package/dist/tools/learn.js +38 -0
  97. package/dist/tools/learn.js.map +1 -0
  98. package/dist/tools/reflect.d.ts.map +1 -1
  99. package/dist/tools/reflect.js +68 -1
  100. package/dist/tools/reflect.js.map +1 -1
  101. package/dist/tools/reject.d.ts.map +1 -1
  102. package/dist/tools/reject.js +2 -2
  103. package/dist/tools/reject.js.map +1 -1
  104. package/dist/tools/router.d.ts +10 -0
  105. package/dist/tools/router.d.ts.map +1 -0
  106. package/dist/tools/router.js +315 -0
  107. package/dist/tools/router.js.map +1 -0
  108. package/dist/tools/save-canon.d.ts.map +1 -1
  109. package/dist/tools/save-canon.js +28 -12
  110. package/dist/tools/save-canon.js.map +1 -1
  111. package/dist/tools/start.d.ts.map +1 -1
  112. package/dist/tools/start.js +20 -7
  113. package/dist/tools/start.js.map +1 -1
  114. package/dist/tools/translate.d.ts.map +1 -1
  115. package/dist/tools/translate.js +21 -4
  116. package/dist/tools/translate.js.map +1 -1
  117. package/package.json +1 -1
  118. package/protocol/commands/dialog-post.md +46 -0
  119. package/protocol/commands/dialog-stamps.md +67 -0
  120. package/protocol/commands/dialog.md +4 -98
  121. package/protocol/commands/start-post.md +53 -0
  122. package/protocol/commands/start-stamps.md +133 -0
  123. package/protocol/commands/start.md +20 -167
  124. package/protocol/core-save.md +102 -0
  125. package/protocol/core-stamps.md +97 -0
  126. package/protocol/core.md +4 -191
@@ -0,0 +1,102 @@
1
+ # Pantion DialogSpec — Canon Structure & Translation
2
+
3
+ > Deferred protocol section. Loaded when saving canons or translating to project files.
4
+ > See `core.md` for core knowledge loaded during questioning.
5
+
6
+ ## Canon Structure: Dialog is the Canon
7
+
8
+ The canon is the **verbatim dialog** (chronological Q/A log) between HUMAN and ASSISTENT. This is the only source of truth.
9
+
10
+ ### File structure per canon:
11
+
12
+ ```
13
+ canon/
14
+ ├── index.md ← Overview of all canons
15
+ ├── {naam}/
16
+ │ ├── dialog.md ← THE CANON (verbatim dialog)
17
+ │ ├── summary.md ← DERIVED: structured summary for navigation
18
+ │ ├── traceability.md ← DERIVED: canon → spec traceability
19
+ │ └── spec/ ← DERIVED: project specification files
20
+ │ ├── requirements.md
21
+ │ ├── constraints.md
22
+ │ └── ...
23
+ ```
24
+
25
+ ### Why the dialog is the canon, not the summary:
26
+
27
+ 1. **The dialog preserves nuance**: rejected options, hesitations, the order of discovery — information that a summary loses
28
+ 2. **Future-proof**: a smarter model can re-read the dialog and conduct a redialog (`/pantion-redialog`) — identifying gaps the original model missed and conducting a supplementary dialog to fill them. Additionally, better models can re-derive better summaries and project files from the same dialog
29
+ 3. **The summary is a convenience**: it helps humans and agents navigate, but it is never authoritative
30
+ 4. **Traceability is richer**: derived files can point to specific dialog passages (turns), not just summary sections
31
+
32
+ ### Rules:
33
+
34
+ - The dialog is ALWAYS saved verbatim (no editing, no cherry-picking)
35
+ - The summary is regenerated when the dialog changes (resume, amend)
36
+ - If the summary and dialog conflict, the dialog wins
37
+ - Traceability points to dialog passages where possible
38
+
39
+ ## Canon Index
40
+
41
+ Each project has a `canon/index.md` as an overview page:
42
+ - Which canons exist, with type and status
43
+ - For each canon: reference to both the dialog file (canon) and the summary file (derived)
44
+ - Open Questions backlog (all unanswered questions collected)
45
+ - Last modified + amendments per canon
46
+
47
+ The index is updated with EVERY canon change (start, resume, amend, decompose).
48
+
49
+ ## Canon → File Translation
50
+
51
+ After convergence, the canon is the primary instruction set for any connected agent (served via MCP resources). Additionally, project specification files may be derived. The source for translation is the dialog (canon). The summary is used for navigation but never as authoritative source.
52
+
53
+ ### Primary Path (MCP-native)
54
+
55
+ Any MCP client reads the canon directly via:
56
+ - `pantion://canons/{name}/dialog` — the full dialog (source of truth)
57
+ - `pantion://canons/{name}/summary` — derived summary (for navigation)
58
+ - `pantion://dialogs/{name}/rules` — dialog-specific rules and translation instructions
59
+
60
+ No agent-specific intermediate files are needed. The canon IS the instruction set.
61
+
62
+ ### Project Specification Files (via translate)
63
+
64
+ The translate step produces project-specific deliverables (not agent-specific instruction files):
65
+
66
+ | Canon element | Project specification file |
67
+ |--------------|--------------------------|
68
+ | System intent, requirements, success criteria | canon/{naam}/spec/requirements.md |
69
+ | HARD constraints, forbidden actions, data policies | canon/{naam}/spec/constraints.md |
70
+ | Success criteria, failure behavior | canon/{naam}/spec/success-criteria.md |
71
+ | API behavior (if applicable) | canon/{naam}/spec/api-spec.md |
72
+ | Data entities and retention (if applicable) | canon/{naam}/spec/data-model.md |
73
+ | Component structure (if applicable) | canon/{naam}/spec/architecture.md |
74
+ | Interfaces (if decomposed) | canon/{naam}/spec/interfaces/interface-*.md |
75
+
76
+ All derived files are generated from the dialog. The summary is itself a derived file.
77
+
78
+ ## Traceability (always-on)
79
+
80
+ Traceability is not just a step in `/pantion-translate`. It is a discipline:
81
+
82
+ - With EVERY generation or regeneration of derived files → update `canon/{naam}/traceability.md`
83
+ - With EVERY amendment → update traceability for affected files
84
+ - During decomposition → traceability covers all canon levels
85
+
86
+ Each derived file contains a comment: `<!-- Derived from: canon/{naam}/dialog.md, [date] -->`
87
+ The summary file also contains this comment, as it is itself derived from the dialog.
88
+
89
+ ## Phase Transitions
90
+
91
+ The transition from convergence to building is ALWAYS a deliberate moment:
92
+
93
+ 1. Convergence reached → verification table produced
94
+ 2. All 12 categories ✅ → stamp set
95
+ 3. Checklist completed → all ✅
96
+ 4. **HUMAN STAMP authorized** → human approves (`pantion_approve`) or auto-approved in dialog mode
97
+ 5. Files generated → traceable to canon via Canon Anchors
98
+ 6. ONLY THEN → build mode (following `protocol/commands/build.md`)
99
+
100
+ In full mode (the default), all steps require explicit completion. In dialog mode, steps 2-4 are accelerated: conservative assumptions are made and the canon is auto-approved.
101
+
102
+ Large projects may remain in DRAFT across multiple sessions. Use `/pantion-resume` to continue converging later.
@@ -0,0 +1,97 @@
1
+ # Pantion DialogSpec — Stamps & Lifecycle
2
+
3
+ > Deferred protocol section. Loaded when checking convergence or producing stamps.
4
+ > See `core.md` for core knowledge loaded during questioning.
5
+
6
+ ## Canon Lifecycle
7
+
8
+ A canon progresses through these statuses:
9
+
10
+ - **DRAFT**: dialog has started but has not yet converged (OPEN QUESTIONS exist)
11
+ - **CONVERGED**: all questions answered, stamp set, ready for translation/building
12
+ - **CONVERGED (DIALOG)**: converged in dialog mode with conservative assumptions (⚡ marked) — the fast variant
13
+ - **CONVERGED (QUICK)**: legacy name for CONVERGED (DIALOG), kept for backward compatibility
14
+ - **CONVERGED (REVERSE)**: intent reconstructed from existing code
15
+ - **AMENDED**: converged and later modified via amendment
16
+ - **RECONVERGED**: a converged canon re-evaluated by a newer/better model that identified and explored gaps in the original convergence
17
+
18
+ Large projects often span multiple sessions: DRAFT → resume → resume → CONVERGED. This is normal and expected. A RECONVERGED canon may be reconverged again as models improve (iterative deepening).
19
+
20
+ ## Convergence Verification Table
21
+
22
+ Before setting the DIALOGSPEC STAMP, the converger produces a Convergence Verification Table as proof that all 12 categories have been treated. This table is part of the last assistant message in the dialog, directly before the stamp.
23
+
24
+ Format (12 rows matching the Readiness Checklist categories):
25
+
26
+ | Criterium | Status |
27
+ |-----------|--------|
28
+ | Canon status | ✅ / ❌ |
29
+ | Intent clarity | ✅ / ❌ |
30
+ | Observable success | ✅ / ❌ |
31
+ | Inputs complete | ✅ / ❌ |
32
+ | Outputs unambiguous | ✅ / ❌ |
33
+ | Failure specified | ✅ / ❌ |
34
+ | Constraints absolute | ✅ / ❌ |
35
+ | Non-goals documented | ✅ / ❌ |
36
+ | Ambiguity handled | ✅ / ❌ |
37
+ | Authority Budget | ✅ / ❌ |
38
+ | Inference Policy | ✅ / ❌ |
39
+ | Dialog stability | ✅ / ❌ |
40
+
41
+ For quick mode: use ⚡ ASSUMPTION for items handled by conservative defaults.
42
+
43
+ The table concludes with: "A competent coding agent can, without further interaction, build a functionally equivalent system." (or the reason why not).
44
+
45
+ ## DIALOGSPEC STAMP — Required Fields
46
+
47
+ Every converged dialog ends with a machine-readable `=== DIALOGSPEC STAMP ===` block. The stamp contains at minimum:
48
+
49
+ - **STATUS**: CONVERGED | CONVERGED (DIALOG) | CONVERGED (QUICK) | CONVERGED (REVERSE) | AMENDED | RECONVERGED | DRAFT
50
+ - **DATE**: YYYY-MM-DD
51
+ - **MODEL**: model-id and display name, format: `model-id (Display Name)` (e.g. `claude-opus-4-6 (Claude Opus 4.6)`, `gpt-4o-2025-01 (GPT-4o)`)
52
+ - **CANON TYPE**: standalone | architect | interface | component
53
+ - **PARENT**: canonical name or "none"
54
+ - **OPEN QUESTIONS**: "none" for converged stamps, list otherwise
55
+ - **INFERENCE POLICY**: conservative | strict
56
+ - **STABILITY ZONES**: HARD constraints (list)
57
+ - **FLEX ZONES**: FLEX defaults (list)
58
+
59
+ Additional fields depend on status and command (see command-specific documentation). The MODEL field enables reconvergence decisions: which canons were produced by older models that might benefit from redialog with a newer model.
60
+
61
+ A canon cannot be saved without a valid stamp. The server enforces this structurally.
62
+
63
+ ## HUMAN STAMP — Authorization Gate
64
+
65
+ Every saved canon includes a `=== HUMAN STAMP ===` block that tracks human authorization. This is a mandatory gate between convergence and translation/building.
66
+
67
+ ### Structure
68
+
69
+ ```
70
+ === HUMAN STAMP ===
71
+ DATE: [not set]
72
+ ROLE: [not set]
73
+ STATUS: PENDING
74
+ NOTE: [not set]
75
+ === /HUMAN STAMP ===
76
+ ```
77
+
78
+ ### Status values
79
+
80
+ - **PENDING**: default for new canons in full mode — awaiting human review
81
+ - **APPROVED**: human has reviewed and authorized the canon for translation/building
82
+ - **REJECTED**: human has reviewed and rejected the canon — needs changes
83
+ - **AUTO-APPROVED**: automatically approved in dialog mode — the canon is immediately ready for translation
84
+
85
+ ### Rules
86
+
87
+ 1. A canon with STATUS other than APPROVED or AUTO-APPROVED may NOT be translated (`pantion_translate` blocks)
88
+ 2. The HUMAN STAMP is set via `pantion_approve` or `pantion_reject`, or automatically to AUTO-APPROVED in dialog mode
89
+ 3. When a canon is amended (`pantion_amend`) or reconverged (`pantion_redialog`), the HUMAN STAMP resets to PENDING
90
+ 4. Existing canons without a HUMAN STAMP block are treated as PENDING
91
+ 5. The HUMAN STAMP is the only allowed in-place mutation of a saved dialog file (all other changes are append-only)
92
+ 6. `pantion_check` reports HUMAN STAMP status as a warning if not APPROVED or AUTO-APPROVED
93
+ 7. `pantion_list-canons` includes the HUMAN STAMP status for each canon
94
+
95
+ ### Design rationale
96
+
97
+ The HUMAN STAMP ensures that no canon proceeds to translation or building without authorization. In full mode (the default), this requires explicit human approval (`pantion_approve`). In dialog mode, canons are auto-approved for fast iteration. The fill-in-place design (rather than append-only) avoids cluttering the dialog with administrative stamps.
package/protocol/core.md CHANGED
@@ -22,64 +22,6 @@ Pantion is a protocol that lets natural-language dialogs converge into an unambi
22
22
  6. All derived artifacts (summaries, project files, tests) may NEVER override the canon
23
23
  7. The dialog is always saved — this enables future models to re-derive better artifacts from the same canon
24
24
 
25
- ## Canon Structure: Dialog is the Canon
26
-
27
- The canon is the **verbatim dialog** (chronological Q/A log) between HUMAN and ASSISTENT. This is the only source of truth.
28
-
29
- ### File structure per canon:
30
-
31
- ```
32
- canon/
33
- ├── index.md ← Overview of all canons
34
- ├── {naam}/
35
- │ ├── dialog.md ← THE CANON (verbatim dialog)
36
- │ ├── summary.md ← DERIVED: structured summary for navigation
37
- │ ├── traceability.md ← DERIVED: canon → spec traceability
38
- │ └── spec/ ← DERIVED: project specification files
39
- │ ├── requirements.md
40
- │ ├── constraints.md
41
- │ └── ...
42
- ```
43
-
44
- ### Why the dialog is the canon, not the summary:
45
-
46
- 1. **The dialog preserves nuance**: rejected options, hesitations, the order of discovery — information that a summary loses
47
- 2. **Future-proof**: a smarter model can re-read the dialog and conduct a redialog (`/pantion-redialog`) — identifying gaps the original model missed and conducting a supplementary dialog to fill them. Additionally, better models can re-derive better summaries and project files from the same dialog
48
- 3. **The summary is a convenience**: it helps humans and agents navigate, but it is never authoritative
49
- 4. **Traceability is richer**: derived files can point to specific dialog passages (turns), not just summary sections
50
-
51
- ### Rules:
52
-
53
- - The dialog is ALWAYS saved verbatim (no editing, no cherry-picking)
54
- - The summary is regenerated when the dialog changes (resume, amend)
55
- - If the summary and dialog conflict, the dialog wins
56
- - Traceability points to dialog passages where possible
57
-
58
- ## Canon Lifecycle
59
-
60
- A canon progresses through these statuses:
61
-
62
- - **DRAFT**: dialog has started but has not yet converged (OPEN QUESTIONS exist)
63
- - **CONVERGED**: all questions answered, stamp set, ready for translation/building
64
- - **CONVERGED (DIALOG)**: converged in dialog mode with conservative assumptions (⚡ marked) — the fast variant
65
- - **CONVERGED (QUICK)**: legacy name for CONVERGED (DIALOG), kept for backward compatibility
66
- - **CONVERGED (REVERSE)**: intent reconstructed from existing code
67
- - **AMENDED**: converged and later modified via amendment
68
- - **RECONVERGED**: a converged canon re-evaluated by a newer/better model that identified and explored gaps in the original convergence
69
-
70
-
71
- Large projects often span multiple sessions: DRAFT → resume → resume → CONVERGED. This is normal and expected. A RECONVERGED canon may be reconverged again as models improve (iterative deepening).
72
-
73
- ## Canon Index
74
-
75
- Each project has a `canon/index.md` as an overview page:
76
- - Which canons exist, with type and status
77
- - For each canon: reference to both the dialog file (canon) and the summary file (derived)
78
- - Open Questions backlog (all unanswered questions collected)
79
- - Last modified + amendments per canon
80
-
81
- The index is updated with EVERY canon change (start, resume, amend, decompose).
82
-
83
25
  ## HARD vs FLEX
84
26
 
85
27
  - **HARD**: invariants that must never change — recognize by: "must", "never", "always", security, privacy, cost, retention, isolation
@@ -138,137 +80,8 @@ Signals that decomposition is needed (Decompose Score 0–5):
138
80
 
139
81
  Score 0–1: probably standalone. Score 2–3: discuss with the user. Score 4–5: actively propose decomposition.
140
82
 
141
- ## Canon File Translation
142
-
143
- After convergence, the canon is the primary instruction set for any connected agent (served via MCP resources). Additionally, project specification files may be derived. The source for translation is the dialog (canon). The summary is used for navigation but never as authoritative source.
144
-
145
- ### Primary Path (MCP-native)
146
-
147
- Any MCP client reads the canon directly via:
148
- - `pantion://canons/{name}/dialog` — the full dialog (source of truth)
149
- - `pantion://canons/{name}/summary` — derived summary (for navigation)
150
- - `pantion://dialogs/{name}/rules` — dialog-specific rules and translation instructions
151
-
152
- No agent-specific intermediate files are needed. The canon IS the instruction set.
153
-
154
- ### Project Specification Files (via translate)
155
-
156
- The translate step produces project-specific deliverables (not agent-specific instruction files):
157
-
158
- | Canon element | Project specification file |
159
- |--------------|--------------------------|
160
- | System intent, requirements, success criteria | canon/{naam}/spec/requirements.md |
161
- | HARD constraints, forbidden actions, data policies | canon/{naam}/spec/constraints.md |
162
- | Success criteria, failure behavior | canon/{naam}/spec/success-criteria.md |
163
- | API behavior (if applicable) | canon/{naam}/spec/api-spec.md |
164
- | Data entities and retention (if applicable) | canon/{naam}/spec/data-model.md |
165
- | Component structure (if applicable) | canon/{naam}/spec/architecture.md |
166
- | Interfaces (if decomposed) | canon/{naam}/spec/interfaces/interface-*.md |
167
-
168
- All derived files are generated from the dialog. The summary is itself a derived file.
169
-
170
- ## Traceability (always-on)
171
-
172
- Traceability is not just a step in `/pantion-translate`. It is a discipline:
173
-
174
- - With EVERY generation or regeneration of derived files → update `canon/{naam}/traceability.md`
175
- - With EVERY amendment → update traceability for affected files
176
- - During decomposition → traceability covers all canon levels
177
-
178
- Each derived file contains a comment: `<!-- Derived from: canon/{naam}/dialog.md, [date] -->`
179
- The summary file also contains this comment, as it is itself derived from the dialog.
180
-
181
- ## Convergence Verification Table
182
-
183
- Before setting the DIALOGSPEC STAMP, the converger produces a Convergence Verification Table as proof that all 12 categories have been treated. This table is part of the last assistant message in the dialog, directly before the stamp.
184
-
185
- Format (12 rows matching the Readiness Checklist categories):
186
-
187
- | Criterium | Status |
188
- |-----------|--------|
189
- | Canon status | ✅ / ❌ |
190
- | Intent clarity | ✅ / ❌ |
191
- | Observable success | ✅ / ❌ |
192
- | Inputs complete | ✅ / ❌ |
193
- | Outputs unambiguous | ✅ / ❌ |
194
- | Failure specified | ✅ / ❌ |
195
- | Constraints absolute | ✅ / ❌ |
196
- | Non-goals documented | ✅ / ❌ |
197
- | Ambiguity handled | ✅ / ❌ |
198
- | Authority Budget | ✅ / ❌ |
199
- | Inference Policy | ✅ / ❌ |
200
- | Dialog stability | ✅ / ❌ |
201
-
202
- For quick mode: use ⚡ ASSUMPTION for items handled by conservative defaults.
203
-
204
- The table concludes with: "A competent coding agent can, without further interaction, build a functionally equivalent system." (or the reason why not).
205
-
206
- ## DIALOGSPEC STAMP — Required Fields
207
-
208
- Every converged dialog ends with a machine-readable `=== DIALOGSPEC STAMP ===` block. The stamp contains at minimum:
209
-
210
- - **STATUS**: CONVERGED | CONVERGED (DIALOG) | CONVERGED (QUICK) | CONVERGED (REVERSE) | AMENDED | RECONVERGED | DRAFT
211
- - **DATE**: YYYY-MM-DD
212
- - **MODEL**: model-id and display name, format: `model-id (Display Name)` (e.g. `claude-opus-4-6 (Claude Opus 4.6)`, `gpt-4o-2025-01 (GPT-4o)`)
213
- - **CANON TYPE**: standalone | architect | interface | component
214
- - **PARENT**: canonical name or "none"
215
- - **OPEN QUESTIONS**: "none" for converged stamps, list otherwise
216
- - **INFERENCE POLICY**: conservative | strict
217
- - **STABILITY ZONES**: HARD constraints (list)
218
- - **FLEX ZONES**: FLEX defaults (list)
219
-
220
- Additional fields depend on status and command (see command-specific documentation). The MODEL field enables reconvergence decisions: which canons were produced by older models that might benefit from redialog with a newer model.
221
-
222
- A canon cannot be saved without a valid stamp. The server enforces this structurally.
223
-
224
- ## HUMAN STAMP — Authorization Gate
225
-
226
- Every saved canon includes a `=== HUMAN STAMP ===` block that tracks human authorization. This is a mandatory gate between convergence and translation/building.
227
-
228
- ### Structure
229
-
230
- ```
231
- === HUMAN STAMP ===
232
- DATE: [not set]
233
- ROLE: [not set]
234
- STATUS: PENDING
235
- NOTE: [not set]
236
- === /HUMAN STAMP ===
237
- ```
238
-
239
- ### Status values
240
-
241
- - **PENDING**: default for new canons in full mode — awaiting human review
242
- - **APPROVED**: human has reviewed and authorized the canon for translation/building
243
- - **REJECTED**: human has reviewed and rejected the canon — needs changes
244
- - **AUTO-APPROVED**: automatically approved in dialog mode — the canon is immediately ready for translation
245
-
246
- ### Rules
247
-
248
- 1. A canon with STATUS other than APPROVED or AUTO-APPROVED may NOT be translated (`pantion_translate` blocks)
249
- 2. The HUMAN STAMP is set via `pantion_approve` or `pantion_reject`, or automatically to AUTO-APPROVED in dialog mode
250
- 3. When a canon is amended (`pantion_amend`) or reconverged (`pantion_redialog`), the HUMAN STAMP resets to PENDING
251
- 4. Existing canons without a HUMAN STAMP block are treated as PENDING
252
- 5. The HUMAN STAMP is the only allowed in-place mutation of a saved dialog file (all other changes are append-only)
253
- 6. `pantion_check` reports HUMAN STAMP status as a warning if not APPROVED or AUTO-APPROVED
254
- 7. `pantion_list-canons` includes the HUMAN STAMP status for each canon
255
-
256
- ### Design rationale
257
-
258
- The HUMAN STAMP ensures that no canon proceeds to translation or building without authorization. In full mode (the default), this requires explicit human approval (`pantion_approve`). In dialog mode, canons are auto-approved for fast iteration. The fill-in-place design (rather than append-only) avoids cluttering the dialog with administrative stamps.
259
-
260
- ## Phase Transitions
261
-
262
- The transition from convergence to building is ALWAYS a deliberate moment:
263
-
264
- 1. Convergence reached → verification table produced
265
- 2. All 12 categories ✅ → stamp set
266
- 3. Checklist completed → all ✅
267
- 4. **HUMAN STAMP authorized** → human approves (`pantion_approve`) or auto-approved in dialog mode
268
- 5. Files generated → traceable to canon via Canon Anchors
269
- 6. ONLY THEN → build mode (following `protocol/commands/build.md`)
270
-
271
- In full mode (the default), all steps require explicit completion. In dialog mode, steps 2-4 are accelerated: conservative assumptions are made and the canon is auto-approved.
272
-
273
- Large projects may remain in DRAFT across multiple sessions. Use `/pantion-resume` to continue converging later.
83
+ ## Deferred Protocol Sections
274
84
 
85
+ The following sections are loaded at the appropriate phase — not during questioning:
86
+ - **Stamps & Lifecycle** → loaded when checking convergence (see `core-stamps.md`)
87
+ - **Canon Structure & Translation** → loaded when saving/translating (see `core-save.md`)