@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.
- package/dialogs/router/convergence-rules.md +160 -0
- package/dialogs/router/dialog.json +12 -0
- package/dialogs/router/translate.md +21 -0
- package/dialogs/software/convergence-rules.md +202 -15
- package/dialogs/software/prompts/convergence-intro.md +27 -15
- package/dist/core/feedback/aggregator.d.ts +7 -0
- package/dist/core/feedback/aggregator.d.ts.map +1 -0
- package/dist/core/feedback/aggregator.js +119 -0
- package/dist/core/feedback/aggregator.js.map +1 -0
- package/dist/core/feedback/store.d.ts +20 -0
- package/dist/core/feedback/store.d.ts.map +1 -0
- package/dist/core/feedback/store.js +111 -0
- package/dist/core/feedback/store.js.map +1 -0
- package/dist/core/feedback/suggestions.d.ts +5 -0
- package/dist/core/feedback/suggestions.d.ts.map +1 -0
- package/dist/core/feedback/suggestions.js +60 -0
- package/dist/core/feedback/suggestions.js.map +1 -0
- package/dist/core/feedback/types.d.ts +26 -0
- package/dist/core/feedback/types.d.ts.map +1 -0
- package/dist/core/feedback/types.js +2 -0
- package/dist/core/feedback/types.js.map +1 -0
- package/dist/core/index.d.ts +16 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +10 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/protocol/loader.d.ts +4 -0
- package/dist/core/protocol/loader.d.ts.map +1 -1
- package/dist/core/protocol/loader.js +16 -0
- package/dist/core/protocol/loader.js.map +1 -1
- package/dist/core/protocol/stamp-parser.d.ts.map +1 -1
- package/dist/core/protocol/stamp-parser.js +2 -1
- package/dist/core/protocol/stamp-parser.js.map +1 -1
- package/dist/core/protocol/system-prompt.d.ts +17 -0
- package/dist/core/protocol/system-prompt.d.ts.map +1 -1
- package/dist/core/protocol/system-prompt.js +63 -5
- package/dist/core/protocol/system-prompt.js.map +1 -1
- package/dist/core/router/classifier.d.ts +29 -0
- package/dist/core/router/classifier.d.ts.map +1 -0
- package/dist/core/router/classifier.js +160 -0
- package/dist/core/router/classifier.js.map +1 -0
- package/dist/core/router/context.d.ts +28 -0
- package/dist/core/router/context.d.ts.map +1 -0
- package/dist/core/router/context.js +65 -0
- package/dist/core/router/context.js.map +1 -0
- package/dist/core/router/menu.d.ts +18 -0
- package/dist/core/router/menu.d.ts.map +1 -0
- package/dist/core/router/menu.js +109 -0
- package/dist/core/router/menu.js.map +1 -0
- package/dist/core/router/next-actions.d.ts +17 -0
- package/dist/core/router/next-actions.d.ts.map +1 -0
- package/dist/core/router/next-actions.js +153 -0
- package/dist/core/router/next-actions.js.map +1 -0
- package/dist/core/router/types.d.ts +49 -0
- package/dist/core/router/types.d.ts.map +1 -0
- package/dist/core/router/types.js +8 -0
- package/dist/core/router/types.js.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/utils/datetime.d.ts +13 -0
- package/dist/core/utils/datetime.d.ts.map +1 -0
- package/dist/core/utils/datetime.js +17 -0
- package/dist/core/utils/datetime.js.map +1 -0
- package/dist/feature-set.d.ts.map +1 -1
- package/dist/feature-set.js +4 -0
- package/dist/feature-set.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts/workflow-prompts.d.ts.map +1 -1
- package/dist/prompts/workflow-prompts.js +81 -1
- package/dist/prompts/workflow-prompts.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/amend.d.ts.map +1 -1
- package/dist/tools/amend.js +2 -2
- package/dist/tools/amend.js.map +1 -1
- package/dist/tools/approve.d.ts.map +1 -1
- package/dist/tools/approve.js +2 -2
- package/dist/tools/approve.js.map +1 -1
- package/dist/tools/build.d.ts +4 -0
- package/dist/tools/build.d.ts.map +1 -0
- package/dist/tools/build.js +200 -0
- package/dist/tools/build.js.map +1 -0
- package/dist/tools/check-convergence.d.ts.map +1 -1
- package/dist/tools/check-convergence.js +15 -1
- package/dist/tools/check-convergence.js.map +1 -1
- package/dist/tools/feedback.d.ts +4 -0
- package/dist/tools/feedback.d.ts.map +1 -0
- package/dist/tools/feedback.js +51 -0
- package/dist/tools/feedback.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/learn.d.ts +4 -0
- package/dist/tools/learn.d.ts.map +1 -0
- package/dist/tools/learn.js +38 -0
- package/dist/tools/learn.js.map +1 -0
- package/dist/tools/reflect.d.ts.map +1 -1
- package/dist/tools/reflect.js +68 -1
- package/dist/tools/reflect.js.map +1 -1
- package/dist/tools/reject.d.ts.map +1 -1
- package/dist/tools/reject.js +2 -2
- package/dist/tools/reject.js.map +1 -1
- package/dist/tools/router.d.ts +10 -0
- package/dist/tools/router.d.ts.map +1 -0
- package/dist/tools/router.js +315 -0
- package/dist/tools/router.js.map +1 -0
- package/dist/tools/save-canon.d.ts.map +1 -1
- package/dist/tools/save-canon.js +28 -12
- package/dist/tools/save-canon.js.map +1 -1
- package/dist/tools/start.d.ts.map +1 -1
- package/dist/tools/start.js +20 -7
- package/dist/tools/start.js.map +1 -1
- package/dist/tools/translate.d.ts.map +1 -1
- package/dist/tools/translate.js +21 -4
- package/dist/tools/translate.js.map +1 -1
- package/package.json +1 -1
- package/protocol/commands/dialog-post.md +46 -0
- package/protocol/commands/dialog-stamps.md +67 -0
- package/protocol/commands/dialog.md +4 -98
- package/protocol/commands/start-post.md +53 -0
- package/protocol/commands/start-stamps.md +133 -0
- package/protocol/commands/start.md +20 -167
- package/protocol/core-save.md +102 -0
- package/protocol/core-stamps.md +97 -0
- 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
|
-
##
|
|
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`)
|