agentera 0.0.0 → 3.0.0-dev.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 (252) hide show
  1. package/README.md +6 -45
  2. package/bundle/.agentera-npx-bundle.json +4 -0
  3. package/bundle/references/adapters/cursor.md +213 -0
  4. package/bundle/references/adapters/opencode.md +530 -0
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +337 -0
  6. package/bundle/references/adapters/package-registry.yaml +247 -0
  7. package/bundle/references/adapters/package-surface-characterization.md +48 -0
  8. package/bundle/references/adapters/runtime-adapter-characterization.md +79 -0
  9. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +200 -0
  10. package/bundle/references/adapters/runtime-adapter-registry.yaml +548 -0
  11. package/bundle/references/adapters/runtime-feature-parity.md +189 -0
  12. package/bundle/references/analysis/benchmark.md +267 -0
  13. package/bundle/references/analysis/startup-measurement-contract.yaml +424 -0
  14. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +288 -0
  15. package/bundle/references/cli/agent-ready-state-contract.yaml +950 -0
  16. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +233 -0
  17. package/bundle/references/cli/audience-namespace-cli-migration.yaml +355 -0
  18. package/bundle/references/cli/bundle-skill-vocabulary.yaml +278 -0
  19. package/bundle/references/cli/capability-instruction-contract.yaml +123 -0
  20. package/bundle/references/cli/capability-tool-classification.yaml +53 -0
  21. package/bundle/references/cli/routing-execution-vocabulary.yaml +281 -0
  22. package/bundle/references/cli/update-channels.yaml +120 -0
  23. package/bundle/references/cli/vocabulary-index.yaml +160 -0
  24. package/bundle/references/cli/vocabulary.md +562 -0
  25. package/bundle/references/meta/documentation-inventory.md +43 -0
  26. package/bundle/references/v1-section-mapping.md +47 -0
  27. package/bundle/registry.json +39 -0
  28. package/bundle/skills/agentera/.claude-plugin/plugin.json +27 -0
  29. package/bundle/skills/agentera/SKILL.md +470 -0
  30. package/bundle/skills/agentera/agents/dokumentera.toml +6 -0
  31. package/bundle/skills/agentera/agents/hej.toml +6 -0
  32. package/bundle/skills/agentera/agents/inspektera.toml +6 -0
  33. package/bundle/skills/agentera/agents/inspirera.toml +6 -0
  34. package/bundle/skills/agentera/agents/optimera.toml +6 -0
  35. package/bundle/skills/agentera/agents/orkestrera.toml +6 -0
  36. package/bundle/skills/agentera/agents/planera.toml +6 -0
  37. package/bundle/skills/agentera/agents/profilera.toml +6 -0
  38. package/bundle/skills/agentera/agents/realisera.toml +6 -0
  39. package/bundle/skills/agentera/agents/resonera.toml +6 -0
  40. package/bundle/skills/agentera/agents/visionera.toml +6 -0
  41. package/bundle/skills/agentera/agents/visualisera.toml +6 -0
  42. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +428 -0
  43. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +73 -0
  44. package/bundle/skills/agentera/capabilities/dokumentera/schemas/exit.yaml +35 -0
  45. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +35 -0
  46. package/bundle/skills/agentera/capabilities/dokumentera/schemas/validation.yaml +139 -0
  47. package/bundle/skills/agentera/capabilities/hej/instructions.md +331 -0
  48. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +69 -0
  49. package/bundle/skills/agentera/capabilities/hej/schemas/exit.yaml +32 -0
  50. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +58 -0
  51. package/bundle/skills/agentera/capabilities/hej/schemas/validation.yaml +55 -0
  52. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +514 -0
  53. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +76 -0
  54. package/bundle/skills/agentera/capabilities/inspektera/schemas/exit.yaml +36 -0
  55. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +38 -0
  56. package/bundle/skills/agentera/capabilities/inspektera/schemas/validation.yaml +113 -0
  57. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +280 -0
  58. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +24 -0
  59. package/bundle/skills/agentera/capabilities/inspirera/schemas/exit.yaml +33 -0
  60. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +34 -0
  61. package/bundle/skills/agentera/capabilities/inspirera/schemas/validation.yaml +58 -0
  62. package/bundle/skills/agentera/capabilities/optimera/instructions.md +437 -0
  63. package/bundle/skills/agentera/capabilities/optimera/schemas/artifacts.yaml +69 -0
  64. package/bundle/skills/agentera/capabilities/optimera/schemas/exit.yaml +35 -0
  65. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +39 -0
  66. package/bundle/skills/agentera/capabilities/optimera/schemas/validation.yaml +91 -0
  67. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +433 -0
  68. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +64 -0
  69. package/bundle/skills/agentera/capabilities/orkestrera/schemas/exit.yaml +34 -0
  70. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +42 -0
  71. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +107 -0
  72. package/bundle/skills/agentera/capabilities/planera/instructions.md +368 -0
  73. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +62 -0
  74. package/bundle/skills/agentera/capabilities/planera/schemas/exit.yaml +33 -0
  75. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +34 -0
  76. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +61 -0
  77. package/bundle/skills/agentera/capabilities/profilera/instructions.md +419 -0
  78. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +18 -0
  79. package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +34 -0
  80. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +45 -0
  81. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +57 -0
  82. package/bundle/skills/agentera/capabilities/realisera/instructions.md +403 -0
  83. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +80 -0
  84. package/bundle/skills/agentera/capabilities/realisera/schemas/exit.yaml +35 -0
  85. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +39 -0
  86. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +110 -0
  87. package/bundle/skills/agentera/capabilities/resonera/instructions.md +329 -0
  88. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +47 -0
  89. package/bundle/skills/agentera/capabilities/resonera/schemas/exit.yaml +35 -0
  90. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +46 -0
  91. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +77 -0
  92. package/bundle/skills/agentera/capabilities/visionera/instructions.md +309 -0
  93. package/bundle/skills/agentera/capabilities/visionera/schemas/artifacts.yaml +57 -0
  94. package/bundle/skills/agentera/capabilities/visionera/schemas/exit.yaml +35 -0
  95. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +41 -0
  96. package/bundle/skills/agentera/capabilities/visionera/schemas/validation.yaml +74 -0
  97. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +400 -0
  98. package/bundle/skills/agentera/capabilities/visualisera/schemas/artifacts.yaml +44 -0
  99. package/bundle/skills/agentera/capabilities/visualisera/schemas/exit.yaml +34 -0
  100. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +33 -0
  101. package/bundle/skills/agentera/capabilities/visualisera/schemas/validation.yaml +80 -0
  102. package/bundle/skills/agentera/capability_schema_contract.yaml +385 -0
  103. package/bundle/skills/agentera/protocol.yaml +463 -0
  104. package/bundle/skills/agentera/references/contract.md +1039 -0
  105. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +60 -0
  106. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +461 -0
  107. package/bundle/skills/agentera/schemas/artifacts/design.yaml +55 -0
  108. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +402 -0
  109. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +373 -0
  110. package/bundle/skills/agentera/schemas/artifacts/health.yaml +484 -0
  111. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +399 -0
  112. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +342 -0
  113. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +325 -0
  114. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +110 -0
  115. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +262 -0
  116. package/bundle/skills/hej/.claude-plugin/plugin.json +6 -0
  117. package/bundle/skills/hej/SKILL.md +69 -0
  118. package/bundle/skills/hej/agents/hej.toml +11 -0
  119. package/bundle/skills/hej/agents/openai.yaml +8 -0
  120. package/dist/analytics/extractCorpus.js +1791 -0
  121. package/dist/analytics/extractCorpus.js.map +1 -0
  122. package/dist/analytics/usageStats.js +487 -0
  123. package/dist/analytics/usageStats.js.map +1 -0
  124. package/dist/bin/agentera.js +4 -0
  125. package/dist/bin/agentera.js.map +1 -0
  126. package/dist/cli/appContext.js +226 -0
  127. package/dist/cli/appContext.js.map +1 -0
  128. package/dist/cli/argvalidate.js +41 -0
  129. package/dist/cli/argvalidate.js.map +1 -0
  130. package/dist/cli/capabilityContext.js +2421 -0
  131. package/dist/cli/capabilityContext.js.map +1 -0
  132. package/dist/cli/commands/backfill.js +84 -0
  133. package/dist/cli/commands/backfill.js.map +1 -0
  134. package/dist/cli/commands/capability.js +44 -0
  135. package/dist/cli/commands/capability.js.map +1 -0
  136. package/dist/cli/commands/compact.js +148 -0
  137. package/dist/cli/commands/compact.js.map +1 -0
  138. package/dist/cli/commands/doctor.js +180 -0
  139. package/dist/cli/commands/doctor.js.map +1 -0
  140. package/dist/cli/commands/lint.js +179 -0
  141. package/dist/cli/commands/lint.js.map +1 -0
  142. package/dist/cli/commands/prime.js +545 -0
  143. package/dist/cli/commands/prime.js.map +1 -0
  144. package/dist/cli/commands/query.js +346 -0
  145. package/dist/cli/commands/query.js.map +1 -0
  146. package/dist/cli/commands/report.js +210 -0
  147. package/dist/cli/commands/report.js.map +1 -0
  148. package/dist/cli/commands/schema.js +306 -0
  149. package/dist/cli/commands/schema.js.map +1 -0
  150. package/dist/cli/commands/state.js +1012 -0
  151. package/dist/cli/commands/state.js.map +1 -0
  152. package/dist/cli/commands/upgrade.js +49 -0
  153. package/dist/cli/commands/upgrade.js.map +1 -0
  154. package/dist/cli/commands/validate.js +519 -0
  155. package/dist/cli/commands/validate.js.map +1 -0
  156. package/dist/cli/commands/verify.js +204 -0
  157. package/dist/cli/commands/verify.js.map +1 -0
  158. package/dist/cli/dispatch.js +962 -0
  159. package/dist/cli/dispatch.js.map +1 -0
  160. package/dist/cli/orientation.js +595 -0
  161. package/dist/cli/orientation.js.map +1 -0
  162. package/dist/cli/prime-blob.js +3 -0
  163. package/dist/cli/prime-blob.js.map +1 -0
  164. package/dist/cli/stateQuery.js +292 -0
  165. package/dist/cli/stateQuery.js.map +1 -0
  166. package/dist/cli/structured.js +18 -0
  167. package/dist/cli/structured.js.map +1 -0
  168. package/dist/core/difflib.js +274 -0
  169. package/dist/core/difflib.js.map +1 -0
  170. package/dist/core/git.js +43 -0
  171. package/dist/core/git.js.map +1 -0
  172. package/dist/core/paths.js +50 -0
  173. package/dist/core/paths.js.map +1 -0
  174. package/dist/core/pyjson.js +101 -0
  175. package/dist/core/pyjson.js.map +1 -0
  176. package/dist/core/sourceRoot.js +72 -0
  177. package/dist/core/sourceRoot.js.map +1 -0
  178. package/dist/core/toml.js +11 -0
  179. package/dist/core/toml.js.map +1 -0
  180. package/dist/core/yaml.js +25 -0
  181. package/dist/core/yaml.js.map +1 -0
  182. package/dist/eval/evalSkills.js +258 -0
  183. package/dist/eval/evalSkills.js.map +1 -0
  184. package/dist/eval/semanticEval.js +148 -0
  185. package/dist/eval/semanticEval.js.map +1 -0
  186. package/dist/eval/semanticFixtures.js +227 -0
  187. package/dist/eval/semanticFixtures.js.map +1 -0
  188. package/dist/hooks/common.js +160 -0
  189. package/dist/hooks/common.js.map +1 -0
  190. package/dist/hooks/compaction.js +935 -0
  191. package/dist/hooks/compaction.js.map +1 -0
  192. package/dist/hooks/cursorPreToolUse.js +19 -0
  193. package/dist/hooks/cursorPreToolUse.js.map +1 -0
  194. package/dist/hooks/cursorSessionStart.js +71 -0
  195. package/dist/hooks/cursorSessionStart.js.map +1 -0
  196. package/dist/hooks/sessionStart.js +209 -0
  197. package/dist/hooks/sessionStart.js.map +1 -0
  198. package/dist/hooks/sessionStop.js +212 -0
  199. package/dist/hooks/sessionStop.js.map +1 -0
  200. package/dist/hooks/validateArtifact.js +933 -0
  201. package/dist/hooks/validateArtifact.js.map +1 -0
  202. package/dist/registries/artifactRegistry.js +206 -0
  203. package/dist/registries/artifactRegistry.js.map +1 -0
  204. package/dist/registries/capabilityContract.js +310 -0
  205. package/dist/registries/capabilityContract.js.map +1 -0
  206. package/dist/registries/packageRegistry.js +641 -0
  207. package/dist/registries/packageRegistry.js.map +1 -0
  208. package/dist/registries/runtimeAdapterRegistry.js +315 -0
  209. package/dist/registries/runtimeAdapterRegistry.js.map +1 -0
  210. package/dist/setup/codex.js +1052 -0
  211. package/dist/setup/codex.js.map +1 -0
  212. package/dist/setup/copilot.js +227 -0
  213. package/dist/setup/copilot.js.map +1 -0
  214. package/dist/setup/cursor.js +127 -0
  215. package/dist/setup/cursor.js.map +1 -0
  216. package/dist/setup/doctor.js +1269 -0
  217. package/dist/setup/doctor.js.map +1 -0
  218. package/dist/state/installRoot.js +279 -0
  219. package/dist/state/installRoot.js.map +1 -0
  220. package/dist/state/progressCommit.js +289 -0
  221. package/dist/state/progressCommit.js.map +1 -0
  222. package/dist/state/startupAnalysis.js +1953 -0
  223. package/dist/state/startupAnalysis.js.map +1 -0
  224. package/dist/upgrade/appModel.js +189 -0
  225. package/dist/upgrade/appModel.js.map +1 -0
  226. package/dist/upgrade/channels.js +197 -0
  227. package/dist/upgrade/channels.js.map +1 -0
  228. package/dist/upgrade/compatibility.js +197 -0
  229. package/dist/upgrade/compatibility.js.map +1 -0
  230. package/dist/upgrade/doctor.js +368 -0
  231. package/dist/upgrade/doctor.js.map +1 -0
  232. package/dist/upgrade/migrateArtifactsV2ToV3.js +412 -0
  233. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -0
  234. package/dist/upgrade/upgradeCommands.js +40 -0
  235. package/dist/upgrade/upgradeCommands.js.map +1 -0
  236. package/dist/upgrade/upgradeOrchestrator.js +280 -0
  237. package/dist/upgrade/upgradeOrchestrator.js.map +1 -0
  238. package/dist/validate/appHomeContract.js +150 -0
  239. package/dist/validate/appHomeContract.js.map +1 -0
  240. package/dist/validate/capability.js +412 -0
  241. package/dist/validate/capability.js.map +1 -0
  242. package/dist/validate/crossCapability.js +145 -0
  243. package/dist/validate/crossCapability.js.map +1 -0
  244. package/dist/validate/lifecycleAdapters.js +772 -0
  245. package/dist/validate/lifecycleAdapters.js.map +1 -0
  246. package/dist/validate/selfAudit.js +107 -0
  247. package/dist/validate/selfAudit.js.map +1 -0
  248. package/package.json +28 -8
  249. package/LICENSE +0 -201
  250. package/bin/agentera.mjs +0 -50
  251. package/lib/exec.mjs +0 -116
  252. package/lib/resolve.mjs +0 -129
@@ -0,0 +1,342 @@
1
+ # Plan Artifact Schema
2
+ #
3
+ # Active work plan maintained by planera. Each plan captures what will be built,
4
+ # why, constraints, scope boundaries, design approach, tasks with dependencies
5
+ # and acceptance criteria, overall acceptance, and surprises.
6
+ #
7
+ # Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
8
+ # following capability_schema_contract.yaml and protocol.yaml conventions.
9
+ #
10
+ # ── Field-by-field mapping: v1 PLAN.md → v2 plan.yaml ──
11
+ #
12
+ # v1 Field v2 Field v2 ID
13
+ # ─────────────────────────────────────────────────────────────────────
14
+ # <!-- Level: light/full --> HEADER.level PL1
15
+ # <!-- Created: date --> HEADER.created PL2
16
+ # <!-- Status: active/completed --> HEADER.status PL3
17
+ # <!-- Reviewed: date --> HEADER.reviewed PL4
18
+ # <!-- Critic issues: N found... --> HEADER.critic_issues PL5
19
+ # <!-- Revised: description --> HEADER.revised PL6
20
+ # # Plan: <title> HEADER.title PL7
21
+ # ## What PLAN.what PL8
22
+ # ## Why PLAN.why PL9
23
+ # ## Constraints PLAN.constraints PL10
24
+ # ## Scope / **In**: <list> SCOPE.included PL11
25
+ # ## Scope / **Out**: <list> SCOPE.excluded PL12
26
+ # ## Scope / **Deferred**: <list> SCOPE.deferred PL13
27
+ # ## Design PLAN.design PL14
28
+ # ### Task N: <name> TASK.number PL15
29
+ # (task name from heading) TASK.name PL16
30
+ # **Depends on**: <text> TASK.depends_on PL17
31
+ # **Status**: <status> TASK.status PL18
32
+ # **Acceptance**: <criteria list> TASK.acceptance PL19
33
+ # ## Overall Acceptance PLAN.overall_acceptance PL20
34
+ # ## Surprises PLAN.surprises PL21
35
+ #
36
+ # Protocol references:
37
+ # status visual tokens: VT1-VT4 (protocol.yaml VISUAL_TOKENS)
38
+ # list item marker: VT15 (protocol.yaml VISUAL_TOKENS)
39
+
40
+ meta:
41
+ name: plan
42
+ version: "1.0.0"
43
+ description: >-
44
+ Active work plan. Produced by planera and updated by plan executors.
45
+ Consumed by capabilities that inspect or execute plan state.
46
+ artifact_type: agent_facing
47
+ path: ".agentera/plan.yaml"
48
+ producer: [orkestrera, planera, realisera]
49
+ consumers: [hej, inspektera, orkestrera, planera, realisera]
50
+ format: yaml
51
+
52
+ GROUP_PREFIXES:
53
+ BUDGET: PB
54
+ HEADER: PH
55
+ PLAN: PL
56
+ SCOPE: PS
57
+ TASK: PT
58
+ VALIDATION: PV
59
+
60
+ BUDGET:
61
+ 1:
62
+ id: PB1
63
+ scope: per_task_entry
64
+ max_words: 100
65
+ description: >-
66
+ Maximum words per task entry. Budgets are guidelines, not hard
67
+ blockers.
68
+ 2:
69
+ id: PB2
70
+ scope: full_file
71
+ max_words: 2500
72
+ description: >-
73
+ Maximum words for the full file. If a write would exceed this
74
+ budget, compact the plan (merge completed tasks, defer scope).
75
+
76
+ HEADER:
77
+ 1:
78
+ id: PH1
79
+ field: level
80
+ type: string
81
+ required: true
82
+ description: >-
83
+ Plan detail level. 'light' for small scoped work; 'full' for
84
+ multi-task plans with explicit acceptance criteria and review.
85
+ validation:
86
+ - "Must be one of: light, full"
87
+ 2:
88
+ id: PH2
89
+ field: created
90
+ type: string
91
+ format: "YYYY-MM-DD"
92
+ required: true
93
+ description: "Date the plan was created."
94
+ validation:
95
+ - "Must match YYYY-MM-DD format"
96
+ 3:
97
+ id: PH3
98
+ field: status
99
+ type: string
100
+ required: true
101
+ description: >-
102
+ Plan lifecycle status. Active plans are being executed; complete
103
+ plans are candidates for archival.
104
+ validation:
105
+ - "Must be one of: active, complete"
106
+ 4:
107
+ id: PH4
108
+ field: reviewed
109
+ type: string
110
+ format: "YYYY-MM-DD"
111
+ required: false
112
+ description: >-
113
+ Date the plan was last reviewed via adversarial critic pass.
114
+ Absent for light-level plans that skip review.
115
+ 5:
116
+ id: PH5
117
+ field: critic_issues
118
+ type: string
119
+ required: false
120
+ description: >-
121
+ Summary of critic review findings. Format: 'N found, M addressed,
122
+ K dismissed'. Absent for light-level plans or pre-review state.
123
+ 6:
124
+ id: PH6
125
+ field: revised
126
+ type: string
127
+ required: false
128
+ description: >-
129
+ Description of what was revised after critic review. Absent for
130
+ light-level plans or pre-review state.
131
+ 7:
132
+ id: PH7
133
+ field: title
134
+ type: string
135
+ required: true
136
+ description: >-
137
+ Short plan title. Used in archive naming and plan listing.
138
+ Format: 'Plan: <descriptive name>'.
139
+ validation:
140
+ - "Non-empty string"
141
+
142
+ PLAN:
143
+ 1:
144
+ id: PL8
145
+ field: what
146
+ type: string
147
+ required: true
148
+ description: >-
149
+ What the plan will build or accomplish. Plain-language summary
150
+ of the plan's scope and deliverables.
151
+ validation:
152
+ - "Non-empty string"
153
+ 2:
154
+ id: PL9
155
+ field: why
156
+ type: string
157
+ required: true
158
+ description: >-
159
+ Why this plan exists. References decisions, vision, or constraints
160
+ that motivate the work.
161
+ validation:
162
+ - "Non-empty string"
163
+ 3:
164
+ id: PL10
165
+ field: constraints
166
+ type: string
167
+ required: false
168
+ description: >-
169
+ Hard constraints governing plan execution. References decision
170
+ labels (firm/provisional/exploratory) and project-level rules.
171
+ 4:
172
+ id: PL14
173
+ field: design
174
+ type: string
175
+ required: false
176
+ description: >-
177
+ Design approach for the plan. Describes the strategy, patterns,
178
+ and structural decisions. Required for full-level plans.
179
+ 5:
180
+ id: PL20
181
+ field: overall_acceptance
182
+ type: string
183
+ required: false
184
+ description: >-
185
+ Plan-level acceptance criteria. Criteria that span multiple tasks
186
+ and must hold when the entire plan is complete.
187
+ 6:
188
+ id: PL21
189
+ field: surprises
190
+ type: string
191
+ required: false
192
+ description: >-
193
+ Runtime surprises discovered during plan execution. Populated
194
+ by realisera when reality diverges from plan. Default: empty.
195
+ 7:
196
+ id: PL22
197
+ field: previous_plan_archived
198
+ type: string
199
+ required: false
200
+ description: >-
201
+ Path to the previous active plan archived when this plan was created.
202
+ Preserves plan lineage without changing lifecycle status.
203
+
204
+ SCOPE:
205
+ 1:
206
+ id: PS11
207
+ field: included
208
+ type: list[string]
209
+ required: true
210
+ description: >-
211
+ Work items and surfaces in scope. Each entry names a deliverable,
212
+ file, or system boundary that the plan covers.
213
+ validation:
214
+ - "At least one entry required"
215
+ 2:
216
+ id: PS12
217
+ field: excluded
218
+ type: list[string]
219
+ required: true
220
+ description: >-
221
+ Work items explicitly out of scope. Prevents scope creep by
222
+ recording what was considered and deferred.
223
+ 3:
224
+ id: PS13
225
+ field: deferred
226
+ type: list[string]
227
+ required: false
228
+ description: >-
229
+ Work items deferred to a future plan. Distinguished from
230
+ excluded items by having acknowledged future intent.
231
+
232
+ TASK:
233
+ 1:
234
+ id: PT15
235
+ field: number
236
+ type: integer
237
+ required: true
238
+ description: >-
239
+ Task number within the plan. Sequential, starting from 1.
240
+ May include a descriptive name (e.g., 'Task 2: Shared Protocol').
241
+ validation:
242
+ - "Must be a positive integer"
243
+ - "Must be unique within the plan"
244
+ 2:
245
+ id: PT16
246
+ field: name
247
+ type: string
248
+ required: true
249
+ description: >-
250
+ Short descriptive name for the task. Appears in task headings
251
+ and progress tracking.
252
+ validation:
253
+ - "Non-empty string"
254
+ 3:
255
+ id: PT17
256
+ field: depends_on
257
+ type: list[string]
258
+ required: false
259
+ description: >-
260
+ Task dependencies. References task numbers or names that must
261
+ complete before this task can start. Empty for root tasks.
262
+ 4:
263
+ id: PT18
264
+ field: status
265
+ type: string
266
+ required: true
267
+ description: >-
268
+ Task execution status. Uses visual tokens from protocol.yaml
269
+ VISUAL_TOKENS (VT1-VT4) for display.
270
+ validation:
271
+ - "Must be one of: complete, in_progress, pending, blocked"
272
+ 5:
273
+ id: PT19
274
+ field: acceptance
275
+ type: list[string]
276
+ required: false
277
+ description: >-
278
+ Acceptance criteria for this task. Each entry is a GIVEN/WHEN/THEN
279
+ statement that must hold for the task to be considered complete.
280
+ Required for full-level plans.
281
+
282
+ VALIDATION:
283
+ 1:
284
+ id: PV1
285
+ rule: unique_task_numbers
286
+ severity: error
287
+ description: >-
288
+ Task numbers must be unique within a plan and sequential.
289
+ checks:
290
+ - "All task numbers are unique"
291
+ - "Task numbers are sequential starting from 1"
292
+ 2:
293
+ id: PV2
294
+ rule: required_fields
295
+ severity: error
296
+ description: >-
297
+ The plan must have: level, created, status, title, what, why,
298
+ scope.included, scope.excluded, and at least one task. Each task
299
+ must have number, name, and status.
300
+ checks:
301
+ - "level is present and is 'light' or 'full'"
302
+ - "created is present and matches YYYY-MM-DD"
303
+ - "status is present and is 'active' or 'completed'"
304
+ - "title is present and non-empty"
305
+ - "what is present and non-empty"
306
+ - "why is present and non-empty"
307
+ - "scope.included has at least one entry"
308
+ - "scope.excluded is present (may be empty list)"
309
+ - "tasks has at least one entry"
310
+ - "each task has number, name, and status"
311
+ 3:
312
+ id: PV3
313
+ rule: full_level_requirements
314
+ severity: error
315
+ description: >-
316
+ Full-level plans must have: design, reviewed, parseable non-zero
317
+ critic_issues, and acceptance criteria on each task.
318
+ checks:
319
+ - "design is present for full-level plans"
320
+ - "reviewed is present for full-level plans"
321
+ - "critic_issues is present and records at least one found issue for full-level plans"
322
+ - "each task has acceptance criteria for full-level plans"
323
+ 4:
324
+ id: PV4
325
+ rule: dependency_references
326
+ severity: error
327
+ description: >-
328
+ Task depends_on references must point to valid task numbers
329
+ within the same plan.
330
+ checks:
331
+ - "Each dependency references an existing task number"
332
+ - "No circular dependency chains"
333
+ 5:
334
+ id: PV5
335
+ rule: word_budget
336
+ severity: advisory
337
+ description: >-
338
+ Advisory check. Per-task entry should be <=100 words; full file
339
+ should be <=2500 words.
340
+ checks:
341
+ - "Per-task word count <= 100"
342
+ - "Total file word count <= 2500"
@@ -0,0 +1,325 @@
1
+ # Progress Artifact Schema
2
+ #
3
+ # Cycle-by-cycle operational log for realisera. Each entry records what happened
4
+ # in one development cycle: phase, work done, commit, discoveries, verification,
5
+ # next steps, and context envelope.
6
+ #
7
+ # Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
8
+ # following capability_schema_contract.yaml and protocol.yaml conventions.
9
+ #
10
+ # ── Field-by-field mapping: v1 PROGRESS.md → v2 progress.yaml ──
11
+ #
12
+ # v1 Field v2 Field v2 ID
13
+ # ─────────────────────────────────────────────────────────────────────
14
+ # ## Cycle N · date · type-prefix CYCLE.number PR1
15
+ # (date from heading) CYCLE.timestamp PR2
16
+ # (type-prefix from heading) CYCLE.type PR3
17
+ # **Phase**: <phase> CYCLE.phase PR4
18
+ # **What**: <text> CYCLE.what PR5
19
+ # **Commit**: <hash/N/A> CYCLE.commit PR6
20
+ # **Inspiration**: <text> CYCLE.inspiration PR7
21
+ # **Discovered**: <text> CYCLE.discovered PR8
22
+ # **Verified**: <text> CYCLE.verified PR9
23
+ # **Next**: <text> CYCLE.next PR10
24
+ # **Context**: <text> CYCLE.context PR11
25
+ # (intent from Context) CONTEXT.intent PT1
26
+ # (constraints from Context) CONTEXT.constraints PT2
27
+ # (unknowns from Context) CONTEXT.unknowns PT3
28
+ # (scope from Context) CONTEXT.scope PT4
29
+ # ## Archived Cycles (implicit section) —
30
+ # - Cycle N (date): summary ARCHIVE.summary PA1
31
+ #
32
+ # Protocol references:
33
+ # phase: PH1-PH5 (protocol.yaml PHASES)
34
+ # type: conventional commit prefix (feat/fix/docs/refactor/chore/test)
35
+
36
+ meta:
37
+ name: progress
38
+ version: "1.0.0"
39
+ description: >-
40
+ Cycle-by-cycle operational log. Produced by realisera. Consumed by
41
+ capabilities that need recent work history and verification evidence.
42
+ artifact_type: agent_facing
43
+ path: ".agentera/progress.yaml"
44
+ producer: realisera
45
+ consumers: [dokumentera, hej, inspektera, optimera, orkestrera, planera, realisera, visionera, visualisera]
46
+ format: yaml
47
+
48
+ GROUP_PREFIXES:
49
+ BUDGET: PB
50
+ COMPACTION: PX
51
+ CYCLE: PR
52
+ CONTEXT: PT
53
+ ARCHIVE: PA
54
+ VALIDATION: PV
55
+
56
+ BUDGET:
57
+ 1:
58
+ id: PB1
59
+ scope: per_cycle_entry
60
+ max_words: 500
61
+ description: >-
62
+ Maximum words per cycle entry. Budgets are guidelines, not hard
63
+ blockers; a 510-word entry is fine, a 1200-word entry signals
64
+ missing output constraints.
65
+ 2:
66
+ id: PB2
67
+ scope: full_file
68
+ max_words: 3000
69
+ description: >-
70
+ Maximum words for the full file. If a write would exceed this
71
+ budget, compact first (see COMPACTION group).
72
+
73
+ COMPACTION:
74
+ 1:
75
+ id: PX1
76
+ rule: uniform_10_40_50
77
+ description: >-
78
+ Growing artifacts follow a uniform 10/40/50 rule: 10 full-detail
79
+ entries, 40 one-line archive entries, drop beyond 50 total.
80
+ 2:
81
+ id: PX2
82
+ full_detail:
83
+ max_entries: 10
84
+ selection: "10 most recent cycles"
85
+ format: "Standard cycle entry format (all fields)"
86
+ description: >-
87
+ The 10 most recent cycles are kept in full detail with all fields.
88
+ 3:
89
+ id: PX3
90
+ one_line_archive:
91
+ max_entries: 40
92
+ selection: "Cycles 11 through 50"
93
+ format: "Cycle N (YYYY-MM-DD): <=15-word summary"
94
+ fields: [number, timestamp, summary]
95
+ description: >-
96
+ Cycles 11 through 50 are collapsed to one-line format under the
97
+ archive section. One-line summaries preserve cycle number, date,
98
+ and work-type, enough for trend analysis by consuming skills.
99
+ 4:
100
+ id: PX4
101
+ dropped:
102
+ threshold: 50
103
+ action: "Removed entirely"
104
+ description: >-
105
+ Cycles older than 50 are dropped entirely.
106
+ 5:
107
+ id: PX5
108
+ trigger: "When realisera writes a new cycle entry"
109
+ description: >-
110
+ Compaction runs when the producing skill writes a new entry.
111
+ If >10 full-detail entries exist, collapse the oldest to one-line.
112
+ If >40 one-line entries exist, drop the oldest.
113
+ 6:
114
+ id: PX6
115
+ archive_section:
116
+ heading: "Archived Cycles"
117
+ placement: "Below recent cycles"
118
+ description: >-
119
+ Archive entries sit below the recent cycles section.
120
+
121
+ CYCLE:
122
+ 1:
123
+ id: PR1
124
+ field: number
125
+ type: integer
126
+ required: true
127
+ description: >-
128
+ Monotonically increasing cycle number. One greater than the
129
+ highest cycle number in active and archived entries. Do not
130
+ reuse or renumber except when repairing artifact corruption.
131
+ validation:
132
+ - "Must be a positive integer"
133
+ - "Must be unique across active and archived entries"
134
+ - "Must be one greater than the previous highest"
135
+ 2:
136
+ id: PR2
137
+ field: timestamp
138
+ type: string
139
+ format: "YYYY-MM-DD HH:MM"
140
+ required: true
141
+ description: "When the cycle was recorded."
142
+ validation:
143
+ - "Must match YYYY-MM-DD HH:MM format"
144
+ 3:
145
+ id: PR3
146
+ field: type
147
+ type: string
148
+ required: true
149
+ description: >-
150
+ Conventional commit prefix extracted from the work done.
151
+ One of: feat, fix, docs, refactor, chore, test.
152
+ validation:
153
+ - "Must be one of: feat, fix, docs, refactor, chore, test"
154
+ 4:
155
+ id: PR4
156
+ field: phase
157
+ type: string
158
+ required: true
159
+ description: >-
160
+ Which ISS-19 phase the cycle belongs to. References protocol.yaml
161
+ PHASES (PH1-PH5).
162
+ protocol_ref: PHASES
163
+ validation:
164
+ - "Must be one of: envision, deliberate, plan, build, audit"
165
+ 5:
166
+ id: PR5
167
+ field: what
168
+ type: string
169
+ required: true
170
+ description: "What was done in this cycle. Prose summary of work performed."
171
+ validation:
172
+ - "Non-empty string"
173
+ 6:
174
+ id: PR6
175
+ field: commit
176
+ type: string
177
+ required: true
178
+ description: >-
179
+ Git commit that contains the product change for this cycle—not the commit
180
+ that last edited progress metadata. Use `pending` until that hash is known;
181
+ then the product commit hash, optionally with subject (e.g.
182
+ `abc1234 Speed up pytest suite`). Use `N/A: …` when no product commit was
183
+ made.
184
+ validation:
185
+ - "Non-empty string"
186
+ - "Use `pending` until the product-change commit hash is known; do not amend solely to backfill this field"
187
+ - >-
188
+ Hashes that do not resolve as commit objects in the local clone (another
189
+ machine's copy, shallow CI checkout, or not yet fetched) are intentionally
190
+ not flagged by progress validation or `agentera check backfill`; reconcile
191
+ with a full clone or forward-fill once the product commit exists locally
192
+ 7:
193
+ id: PR7
194
+ field: inspiration
195
+ type: string
196
+ required: false
197
+ description: >-
198
+ What prompted this cycle. References to active plan tasks,
199
+ decisions, or conventions that drove the work.
200
+ 8:
201
+ id: PR8
202
+ field: discovered
203
+ type: string
204
+ required: false
205
+ description: >-
206
+ Unexpected findings during the cycle. Things learned that were
207
+ not known before starting.
208
+ 9:
209
+ id: PR9
210
+ field: verified
211
+ type: string
212
+ required: false
213
+ description: >-
214
+ Evidence that the work was verified. Test commands run, validation
215
+ passed, manual checks performed.
216
+ 10:
217
+ id: PR10
218
+ field: next
219
+ type: string
220
+ required: false
221
+ description: >-
222
+ What should happen next. Guidance for subsequent cycles.
223
+ Explicit about scope boundaries to prevent scope creep.
224
+ 11:
225
+ id: PR11
226
+ field: context
227
+ type: map
228
+ required: true
229
+ description: >-
230
+ Context envelope capturing intent, constraints, unknowns, and
231
+ scope for this cycle. Contains sub-fields defined in CONTEXT group.
232
+
233
+ CONTEXT:
234
+ 1:
235
+ id: PT1
236
+ field: intent
237
+ parent: CYCLE.context
238
+ type: string
239
+ required: true
240
+ description: "What this cycle set out to accomplish."
241
+ 2:
242
+ id: PT2
243
+ field: constraints
244
+ parent: CYCLE.context
245
+ type: string
246
+ required: false
247
+ description: "Boundaries: what was explicitly out of scope or constrained."
248
+ 3:
249
+ id: PT3
250
+ field: unknowns
251
+ parent: CYCLE.context
252
+ type: string
253
+ required: false
254
+ description: "Things not known at cycle start. May be 'none'."
255
+ 4:
256
+ id: PT4
257
+ field: scope
258
+ parent: CYCLE.context
259
+ type: string
260
+ required: false
261
+ description: "Files and surfaces modified or affected."
262
+
263
+ ARCHIVE:
264
+ 1:
265
+ id: PA1
266
+ field: summary
267
+ type: string
268
+ required: true
269
+ description: >-
270
+ One-line archive entry for a compacted cycle. Format:
271
+ 'Cycle N (YYYY-MM-DD): <=15-word summary'.
272
+ Preserves cycle number, date, and work-type for trend analysis.
273
+ validation:
274
+ - "Must include cycle number"
275
+ - "Must include date in YYYY-MM-DD format"
276
+ - "Summary portion must be <=15 words"
277
+
278
+ VALIDATION:
279
+ 1:
280
+ id: PV1
281
+ rule: unique_cycle_numbers
282
+ severity: error
283
+ description: >-
284
+ Active cycle entries must have unique numbers and remain descending
285
+ by cycle number, newest first. Do not reuse or renumber except when
286
+ repairing artifact corruption.
287
+ checks:
288
+ - "All cycle numbers are unique across active and archived entries"
289
+ - "Active entries are in descending order by cycle number"
290
+ 2:
291
+ id: PV2
292
+ rule: required_fields
293
+ severity: error
294
+ description: >-
295
+ Each full-detail cycle entry must have: number, timestamp, type,
296
+ phase, what, commit, and context (with intent).
297
+ checks:
298
+ - "number is present and is a positive integer"
299
+ - "timestamp is present and matches YYYY-MM-DD HH:MM"
300
+ - "type is present and is a valid commit prefix"
301
+ - "phase is present and is a valid phase name"
302
+ - "what is present and non-empty"
303
+ - "commit is present"
304
+ - "context is present with intent sub-field"
305
+ 3:
306
+ id: PV3
307
+ rule: compaction_thresholds
308
+ severity: warning
309
+ description: >-
310
+ Warn if the file exceeds compaction thresholds: >10 full-detail
311
+ entries or >40 one-line archive entries.
312
+ checks:
313
+ - "Full-detail entries <= 10"
314
+ - "One-line archive entries <= 40"
315
+ - "Total entries <= 50"
316
+ 4:
317
+ id: PV4
318
+ rule: word_budget
319
+ severity: advisory
320
+ description: >-
321
+ Advisory check. Per-cycle entry should be <=500 words; full file
322
+ should be <=3000 words. Budgets are guidelines, not hard blockers.
323
+ checks:
324
+ - "Per-cycle word count <= 500"
325
+ - "Total file word count <= 3000"