perttool 0.3.0 → 0.5.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 (286) hide show
  1. package/CHANGELOG.md +78 -1
  2. package/README.md +134 -24
  3. package/dist/actuals/lifecycle.d.ts +101 -0
  4. package/dist/actuals/lifecycle.d.ts.map +1 -0
  5. package/dist/actuals/lifecycle.js +329 -0
  6. package/dist/actuals/lifecycle.js.map +1 -0
  7. package/dist/actuals/source.d.ts +36 -0
  8. package/dist/actuals/source.d.ts.map +1 -0
  9. package/dist/actuals/source.js +119 -0
  10. package/dist/actuals/source.js.map +1 -0
  11. package/dist/analysis/temporal-deadline.d.ts +2 -2
  12. package/dist/analysis/temporal-deadline.d.ts.map +1 -1
  13. package/dist/analysis/temporal-deadline.js.map +1 -1
  14. package/dist/analysis/temporal-precedence.d.ts +2 -2
  15. package/dist/analysis/temporal-precedence.d.ts.map +1 -1
  16. package/dist/analysis/temporal-precedence.js +2 -0
  17. package/dist/analysis/temporal-precedence.js.map +1 -1
  18. package/dist/analysis/temporal-resource.d.ts +2 -2
  19. package/dist/analysis/temporal-resource.d.ts.map +1 -1
  20. package/dist/analysis/temporal-resource.js +2 -0
  21. package/dist/analysis/temporal-resource.js.map +1 -1
  22. package/dist/application/analyze.d.ts +1 -0
  23. package/dist/application/analyze.d.ts.map +1 -1
  24. package/dist/application/analyze.js +38 -29
  25. package/dist/application/analyze.js.map +1 -1
  26. package/dist/application/check.d.ts +3 -0
  27. package/dist/application/check.d.ts.map +1 -1
  28. package/dist/application/check.js +17 -1
  29. package/dist/application/check.js.map +1 -1
  30. package/dist/application/contract4.js +3 -3
  31. package/dist/application/contract5-governance.d.ts +8 -0
  32. package/dist/application/contract5-governance.d.ts.map +1 -0
  33. package/dist/application/contract5-governance.js +12 -0
  34. package/dist/application/contract5-governance.js.map +1 -0
  35. package/dist/application/contract6-actuals.d.ts +24 -0
  36. package/dist/application/contract6-actuals.d.ts.map +1 -0
  37. package/dist/application/contract6-actuals.js +51 -0
  38. package/dist/application/contract6-actuals.js.map +1 -0
  39. package/dist/application/contract6-mutation.d.ts +18 -0
  40. package/dist/application/contract6-mutation.d.ts.map +1 -0
  41. package/dist/application/contract6-mutation.js +173 -0
  42. package/dist/application/contract6-mutation.js.map +1 -0
  43. package/dist/application/contract6-projection.d.ts +9 -0
  44. package/dist/application/contract6-projection.d.ts.map +1 -0
  45. package/dist/application/contract6-projection.js +105 -0
  46. package/dist/application/contract6-projection.js.map +1 -0
  47. package/dist/application/init.d.ts +3 -12
  48. package/dist/application/init.d.ts.map +1 -1
  49. package/dist/application/init.js +16 -138
  50. package/dist/application/init.js.map +1 -1
  51. package/dist/application/project.d.ts +4 -24
  52. package/dist/application/project.d.ts.map +1 -1
  53. package/dist/application/project.js +3 -52
  54. package/dist/application/project.js.map +1 -1
  55. package/dist/application/target-actuals-advance.d.ts +12 -0
  56. package/dist/application/target-actuals-advance.d.ts.map +1 -0
  57. package/dist/application/target-actuals-advance.js +113 -0
  58. package/dist/application/target-actuals-advance.js.map +1 -0
  59. package/dist/application/target-actuals-analysis.d.ts +76 -0
  60. package/dist/application/target-actuals-analysis.d.ts.map +1 -0
  61. package/dist/application/target-actuals-analysis.js +250 -0
  62. package/dist/application/target-actuals-analysis.js.map +1 -0
  63. package/dist/application/target-actuals-mutation.d.ts +28 -0
  64. package/dist/application/target-actuals-mutation.d.ts.map +1 -0
  65. package/dist/application/target-actuals-mutation.js +404 -0
  66. package/dist/application/target-actuals-mutation.js.map +1 -0
  67. package/dist/application/target-actuals-write.d.ts +7 -0
  68. package/dist/application/target-actuals-write.d.ts.map +1 -0
  69. package/dist/application/target-actuals-write.js +37 -0
  70. package/dist/application/target-actuals-write.js.map +1 -0
  71. package/dist/application/target-governance-init.d.ts +36 -0
  72. package/dist/application/target-governance-init.d.ts.map +1 -0
  73. package/dist/application/target-governance-init.js +195 -0
  74. package/dist/application/target-governance-init.js.map +1 -0
  75. package/dist/application/target-governance-mutation.d.ts +20 -0
  76. package/dist/application/target-governance-mutation.d.ts.map +1 -0
  77. package/dist/application/target-governance-mutation.js +175 -0
  78. package/dist/application/target-governance-mutation.js.map +1 -0
  79. package/dist/application/target-governance-project.d.ts +34 -0
  80. package/dist/application/target-governance-project.d.ts.map +1 -0
  81. package/dist/application/target-governance-project.js +82 -0
  82. package/dist/application/target-governance-project.js.map +1 -0
  83. package/dist/application/target-governance-projection.d.ts +18 -0
  84. package/dist/application/target-governance-projection.d.ts.map +1 -0
  85. package/dist/application/target-governance-projection.js +248 -0
  86. package/dist/application/target-governance-projection.js.map +1 -0
  87. package/dist/application/target-governance-write.d.ts +25 -0
  88. package/dist/application/target-governance-write.d.ts.map +1 -0
  89. package/dist/application/target-governance-write.js +55 -0
  90. package/dist/application/target-governance-write.js.map +1 -0
  91. package/dist/application/target-mutate.d.ts +6 -2
  92. package/dist/application/target-mutate.d.ts.map +1 -1
  93. package/dist/application/target-mutate.js +59 -2
  94. package/dist/application/target-mutate.js.map +1 -1
  95. package/dist/application/target-project-history.d.ts +18 -0
  96. package/dist/application/target-project-history.d.ts.map +1 -0
  97. package/dist/application/target-project-history.js +279 -0
  98. package/dist/application/target-project-history.js.map +1 -0
  99. package/dist/application/target-temporal-analysis.d.ts +13 -5
  100. package/dist/application/target-temporal-analysis.d.ts.map +1 -1
  101. package/dist/application/target-temporal-analysis.js +18 -11
  102. package/dist/application/target-temporal-analysis.js.map +1 -1
  103. package/dist/application/target-temporal-input.d.ts +8 -6
  104. package/dist/application/target-temporal-input.d.ts.map +1 -1
  105. package/dist/application/target-temporal-input.js +14 -3
  106. package/dist/application/target-temporal-input.js.map +1 -1
  107. package/dist/application/target-unit-migration-candidate.d.ts +2 -2
  108. package/dist/application/target-unit-migration-candidate.d.ts.map +1 -1
  109. package/dist/application/target-unit-migration-candidate.js +21 -6
  110. package/dist/application/target-unit-migration-candidate.js.map +1 -1
  111. package/dist/application/target-unit-migration-request.d.ts +4 -4
  112. package/dist/application/target-unit-migration-request.d.ts.map +1 -1
  113. package/dist/application/target-unit-migration-request.js +6 -2
  114. package/dist/application/target-unit-migration-request.js.map +1 -1
  115. package/dist/application/target-unit-migration-result.d.ts +5 -5
  116. package/dist/application/target-unit-migration-result.d.ts.map +1 -1
  117. package/dist/application/target-unit-migration-result.js +1 -1
  118. package/dist/application/target-unit-migration-result.js.map +1 -1
  119. package/dist/application/target-velocity-observation.d.ts +11 -0
  120. package/dist/application/target-velocity-observation.d.ts.map +1 -0
  121. package/dist/application/target-velocity-observation.js +201 -0
  122. package/dist/application/target-velocity-observation.js.map +1 -0
  123. package/dist/application/unit-migration.d.ts +4 -1
  124. package/dist/application/unit-migration.d.ts.map +1 -1
  125. package/dist/application/unit-migration.js +5 -3
  126. package/dist/application/unit-migration.js.map +1 -1
  127. package/dist/cli.js +390 -137
  128. package/dist/cli.js.map +1 -1
  129. package/dist/command/actuals-discovery.d.ts +26 -0
  130. package/dist/command/actuals-discovery.d.ts.map +1 -0
  131. package/dist/command/actuals-discovery.js +271 -0
  132. package/dist/command/actuals-discovery.js.map +1 -0
  133. package/dist/command/actuals-usage.d.ts +22 -0
  134. package/dist/command/actuals-usage.d.ts.map +1 -0
  135. package/dist/command/actuals-usage.js +122 -0
  136. package/dist/command/actuals-usage.js.map +1 -0
  137. package/dist/command/registry.d.ts +7 -1
  138. package/dist/command/registry.d.ts.map +1 -1
  139. package/dist/command/registry.js.map +1 -1
  140. package/dist/command/target-governance-discovery.d.ts +31 -0
  141. package/dist/command/target-governance-discovery.d.ts.map +1 -0
  142. package/dist/command/target-governance-discovery.js +390 -0
  143. package/dist/command/target-governance-discovery.js.map +1 -0
  144. package/dist/command/target-governance-usage.d.ts +22 -0
  145. package/dist/command/target-governance-usage.d.ts.map +1 -0
  146. package/dist/command/target-governance-usage.js +116 -0
  147. package/dist/command/target-governance-usage.js.map +1 -0
  148. package/dist/command/usage.d.ts +2 -0
  149. package/dist/command/usage.d.ts.map +1 -1
  150. package/dist/command/usage.js +43 -25
  151. package/dist/command/usage.js.map +1 -1
  152. package/dist/conversion/mermaid-import.d.ts.map +1 -1
  153. package/dist/conversion/mermaid-import.js +3 -2
  154. package/dist/conversion/mermaid-import.js.map +1 -1
  155. package/dist/conversion/mermaid.d.ts.map +1 -1
  156. package/dist/conversion/mermaid.js +27 -0
  157. package/dist/conversion/mermaid.js.map +1 -1
  158. package/dist/formatter/source-formatter.d.ts +3 -3
  159. package/dist/formatter/source-formatter.d.ts.map +1 -1
  160. package/dist/formatter/source-formatter.js +64 -5
  161. package/dist/formatter/source-formatter.js.map +1 -1
  162. package/dist/formatter/target-source-formatter.d.ts +3 -1
  163. package/dist/formatter/target-source-formatter.d.ts.map +1 -1
  164. package/dist/formatter/target-source-formatter.js +34 -2
  165. package/dist/formatter/target-source-formatter.js.map +1 -1
  166. package/dist/governance/authority.d.ts +25 -0
  167. package/dist/governance/authority.d.ts.map +1 -0
  168. package/dist/governance/authority.js +206 -0
  169. package/dist/governance/authority.js.map +1 -0
  170. package/dist/governance/guidance.d.ts +2 -0
  171. package/dist/governance/guidance.d.ts.map +1 -0
  172. package/dist/governance/guidance.js +2 -0
  173. package/dist/governance/guidance.js.map +1 -0
  174. package/dist/governance/source.d.ts +37 -0
  175. package/dist/governance/source.d.ts.map +1 -0
  176. package/dist/governance/source.js +103 -0
  177. package/dist/governance/source.js.map +1 -0
  178. package/dist/governance/types.d.ts +41 -0
  179. package/dist/governance/types.d.ts.map +1 -0
  180. package/dist/governance/types.js +2 -0
  181. package/dist/governance/types.js.map +1 -0
  182. package/dist/help/actuals-guide.d.ts +10 -0
  183. package/dist/help/actuals-guide.d.ts.map +1 -0
  184. package/dist/help/actuals-guide.js +23 -0
  185. package/dist/help/actuals-guide.js.map +1 -0
  186. package/dist/help/guide.d.ts +8 -5
  187. package/dist/help/guide.d.ts.map +1 -1
  188. package/dist/help/guide.js.map +1 -1
  189. package/dist/help/registry.d.ts.map +1 -1
  190. package/dist/help/registry.js +98 -8
  191. package/dist/help/registry.js.map +1 -1
  192. package/dist/help/target-governance-guide.d.ts +10 -0
  193. package/dist/help/target-governance-guide.d.ts.map +1 -0
  194. package/dist/help/target-governance-guide.js +57 -0
  195. package/dist/help/target-governance-guide.js.map +1 -0
  196. package/dist/history/git-probe.d.ts +52 -0
  197. package/dist/history/git-probe.d.ts.map +1 -0
  198. package/dist/history/git-probe.js +565 -0
  199. package/dist/history/git-probe.js.map +1 -0
  200. package/dist/history/project-history.d.ts +112 -0
  201. package/dist/history/project-history.d.ts.map +1 -0
  202. package/dist/history/project-history.js +786 -0
  203. package/dist/history/project-history.js.map +1 -0
  204. package/dist/history/velocity-observation.d.ts +69 -0
  205. package/dist/history/velocity-observation.d.ts.map +1 -0
  206. package/dist/history/velocity-observation.js +604 -0
  207. package/dist/history/velocity-observation.js.map +1 -0
  208. package/dist/index.d.ts +28 -14
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +11 -7
  211. package/dist/index.js.map +1 -1
  212. package/dist/io/safe-write.d.ts +4 -0
  213. package/dist/io/safe-write.d.ts.map +1 -1
  214. package/dist/io/safe-write.js +22 -1
  215. package/dist/io/safe-write.js.map +1 -1
  216. package/dist/io/target-safe-write.d.ts +8 -2
  217. package/dist/io/target-safe-write.d.ts.map +1 -1
  218. package/dist/io/target-safe-write.js +38 -2
  219. package/dist/io/target-safe-write.js.map +1 -1
  220. package/dist/migration/conversion.d.ts +1 -1
  221. package/dist/migration/conversion.d.ts.map +1 -1
  222. package/dist/migration/grammar-boundary.d.ts +1 -1
  223. package/dist/migration/grammar-boundary.d.ts.map +1 -1
  224. package/dist/migration/grammar-boundary.js +15 -4
  225. package/dist/migration/grammar-boundary.js.map +1 -1
  226. package/dist/migration/request.d.ts +5 -5
  227. package/dist/migration/request.d.ts.map +1 -1
  228. package/dist/migration/request.js +15 -2
  229. package/dist/migration/request.js.map +1 -1
  230. package/dist/model/calendar.d.ts +2 -0
  231. package/dist/model/calendar.d.ts.map +1 -1
  232. package/dist/model/calendar.js +19 -0
  233. package/dist/model/calendar.js.map +1 -1
  234. package/dist/model/declaration-fields.d.ts +15 -0
  235. package/dist/model/declaration-fields.d.ts.map +1 -1
  236. package/dist/model/declaration-fields.js +31 -0
  237. package/dist/model/declaration-fields.js.map +1 -1
  238. package/dist/model/exact-person-hours-source.d.ts +2 -0
  239. package/dist/model/exact-person-hours-source.d.ts.map +1 -0
  240. package/dist/model/exact-person-hours-source.js +10 -0
  241. package/dist/model/exact-person-hours-source.js.map +1 -0
  242. package/dist/model/syntax.d.ts +23 -8
  243. package/dist/model/syntax.d.ts.map +1 -1
  244. package/dist/model/syntax.js.map +1 -1
  245. package/dist/mutation/actuals.d.ts +17 -0
  246. package/dist/mutation/actuals.d.ts.map +1 -0
  247. package/dist/mutation/actuals.js +90 -0
  248. package/dist/mutation/actuals.js.map +1 -0
  249. package/dist/mutation/advance.d.ts +17 -0
  250. package/dist/mutation/advance.d.ts.map +1 -1
  251. package/dist/mutation/advance.js +56 -14
  252. package/dist/mutation/advance.js.map +1 -1
  253. package/dist/mutation/entity-editor.d.ts +2 -2
  254. package/dist/mutation/entity-editor.d.ts.map +1 -1
  255. package/dist/mutation/entity-editor.js.map +1 -1
  256. package/dist/mutation/project.d.ts +7 -1
  257. package/dist/mutation/project.d.ts.map +1 -1
  258. package/dist/mutation/project.js +108 -6
  259. package/dist/mutation/project.js.map +1 -1
  260. package/dist/mutation/source.d.ts +3 -3
  261. package/dist/mutation/source.d.ts.map +1 -1
  262. package/dist/mutation/source.js.map +1 -1
  263. package/dist/mutation/target-types.d.ts +18 -1
  264. package/dist/mutation/target-types.d.ts.map +1 -1
  265. package/dist/mutation/types.d.ts +8 -1
  266. package/dist/mutation/types.d.ts.map +1 -1
  267. package/dist/parser/document-parser.d.ts +15 -1
  268. package/dist/parser/document-parser.d.ts.map +1 -1
  269. package/dist/parser/document-parser.js +205 -22
  270. package/dist/parser/document-parser.js.map +1 -1
  271. package/dist/recommendation/override-types.d.ts +2 -2
  272. package/dist/recommendation/override.d.ts +2 -2
  273. package/dist/recommendation/override.d.ts.map +1 -1
  274. package/dist/recommendation/override.js +2 -2
  275. package/dist/recommendation/override.js.map +1 -1
  276. package/dist/semantic/target-validator.d.ts +23 -2
  277. package/dist/semantic/target-validator.d.ts.map +1 -1
  278. package/dist/semantic/target-validator.js +89 -2
  279. package/dist/semantic/target-validator.js.map +1 -1
  280. package/dist/semantic/validator.d.ts +5 -1
  281. package/dist/semantic/validator.d.ts.map +1 -1
  282. package/dist/semantic/validator.js +180 -6
  283. package/dist/semantic/validator.js.map +1 -1
  284. package/dist/version.d.ts +1 -1
  285. package/dist/version.js +1 -1
  286. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,81 @@ This project records its notable changes here. The format is based on [Keep a Ch
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.5.0] - 2026-07-29
8
+
9
+ Contract 6 beta release. This version atomically publishes Grammar 5,
10
+ explicit task lifecycle evidence, read-only Git history and velocity
11
+ observation, and the English repository baseline. It intentionally changes
12
+ every CLI JSON envelope and several result identities while retaining
13
+ suffix-free `0.x.x` beta product maturity.
14
+
15
+ ### Added
16
+
17
+ - Activated Grammar 5 task-owned work events and preview-first
18
+ `task start|suspend|resume` plus eventful `task finish` with explicit event
19
+ time, exact active time, exact person effort, deterministic event identity,
20
+ governance, and safe-write controls.
21
+ - Added read-only first-parent `project history` and
22
+ `project observe-velocity`, including explicit-event reconstruction,
23
+ qualified Git-recorded transitions, exact task summaries, and separate
24
+ elapsed-hour, active-date, effort-productivity, and recorded-evidence
25
+ candidates.
26
+ - Added public actuals/history/observation Core exports, Contract 6 command
27
+ discovery and Guide topics, Grammar 5 examples, and isolated installed
28
+ lifecycle/history/observation checks.
29
+
30
+ ### Changed
31
+
32
+ - Activated CLI Contract 6 in the current source. Every JSON envelope now
33
+ reports `cli_contract_version=6`; check, analysis, next, mutation/advance,
34
+ and unit migration use result versions 3, 4, 5, 3, and 3 respectively.
35
+ - Added suspended-state analysis and `groups.suspended`, while retaining the
36
+ Recommendation version 1 ranking and
37
+ `recommendation_v1_plus_release_gate` start-authority policy.
38
+ - Extended exact unit migration through Grammar 5
39
+ `work_event.planned_value` without changing event time, active time, effort,
40
+ or declared velocity. The prior `0.4.0` artifact remains available as the
41
+ Grammar 4 and CLI Contract 5 compatibility pin.
42
+
43
+ ### Fixed
44
+
45
+ - Merged adjacent zero-length task-status and work-event insertions so a
46
+ lifecycle mutation can atomically start a task whose declaration ends at
47
+ end of file.
48
+
49
+ ## [0.4.0] - 2026-07-28
50
+
51
+ Contract 5 beta release. This version atomically publishes Grammar 4 and
52
+ owner-aware goal and DAG mutation governance. It intentionally changes every
53
+ CLI JSON envelope and the project and mutation result identities while
54
+ retaining suffix-free `0.x.x` beta product maturity.
55
+
56
+ ### Added
57
+
58
+ - Added declared and effective goal/DAG owners and delegates, digest-bound
59
+ pre-change governance snapshots, deterministic actual-change
60
+ classification, normalized caller assertions, and stable pre-change
61
+ authority decisions.
62
+ - Added owner-aware persistent direct, batch, and advance operations,
63
+ `Perttool.GovernanceDecision.v1`, PTGOV diagnostics, generated direct-edit
64
+ guidance, and the Contract 5 editing Guide.
65
+
66
+ ### Changed
67
+
68
+ - Changed every CLI JSON envelope to `cli_contract_version=5`, project
69
+ metadata to `Perttool.ProjectResult.v3`, and mutation and advance results to
70
+ `Perttool.MutationResult.v2` with an embedded governance decision.
71
+ - Persistent goal or DAG changes now require `--actor`. An effective owner or
72
+ delegate has direct authority; another actor must supply repeatable
73
+ `--accepted-by-owner` caller assertions for every affected effective owner.
74
+ - Retained Grammar 1/2/3 compatibility through effective default owner
75
+ `user`, the complete Contract 4 temporal/deadline/unit-migration surface,
76
+ and NextResult v4 normal start authority.
77
+ - Accepted the `perttool@0.3.0` Contract 4 beta and promoted it to npm
78
+ `latest` through a separate, explicitly authorized post-acceptance dist-tag
79
+ operation. npm `beta` and `latest` now resolve to `0.3.0`; product maturity
80
+ remains beta.
81
+
7
82
  ## [0.3.0] - 2026-07-26
8
83
 
9
84
  Contract 4 beta release. This version atomically publishes temporal and
@@ -141,7 +216,9 @@ First public development preview. Intended to evaluate the DSL and CLI, read-onl
141
216
  - Not published to the npm registry; use the GitHub Release asset
142
217
  - Requires Node.js 24 or later
143
218
 
144
- [Unreleased]: https://github.com/mako10k/perttool/compare/v0.3.0...HEAD
219
+ [Unreleased]: https://github.com/mako10k/perttool/compare/v0.5.0...HEAD
220
+ [0.5.0]: https://github.com/mako10k/perttool/compare/v0.4.0...v0.5.0
221
+ [0.4.0]: https://github.com/mako10k/perttool/compare/v0.3.0...v0.4.0
145
222
  [0.3.0]: https://github.com/mako10k/perttool/compare/v0.2.0...v0.3.0
146
223
  [0.2.0]: https://github.com/mako10k/perttool/compare/v0.1.0...v0.2.0
147
224
  [0.1.0]: https://github.com/mako10k/perttool/compare/v0.1.0-alpha.2...v0.1.0
package/README.md CHANGED
@@ -5,46 +5,56 @@ It validates an Activity-on-Arrow plan, calculates precedence and
5
5
  resource-constrained schedules, recommends the next task, and applies
6
6
  source-preserving changes through preview-first commands.
7
7
 
8
- The current Contract 4 version is `0.3.0`. Beta releases may contain breaking
9
- CLI or schema changes. Version `0.3.0` requires Node.js 22 or later. Contract 3
10
- remains available by pinning `0.2.0`.
8
+ The prepared `0.5.0` source implements Grammar 5 and CLI Contract 6,
9
+ including explicit task work events, lifecycle commands, read-only Git
10
+ history, observed velocity, AnalysisResult v4, and NextResult v5. Publication
11
+ remains a gated operation; npm `beta` and `latest` still resolve to Contract 5
12
+ `0.4.0` until that operation completes. Beta releases may contain breaking
13
+ CLI or schema changes. Version `0.5.0` requires Node.js 22 or later. Contract
14
+ 5, Contract 4, and Contract 3 remain available by pinning `0.4.0`, `0.3.0`,
15
+ and `0.2.0`, respectively.
11
16
 
12
17
  ## Run without installing
13
18
 
14
- Use `npx` for an occasional invocation and select Contract 4 explicitly:
19
+ Use `npx` for an occasional invocation and select Contract 6 explicitly:
15
20
 
16
21
  ```sh
17
- npx --yes --package=perttool@0.3.0 -- perttool --version
18
- npx --yes --package=perttool@0.3.0 -- perttool document check PLAN.pert
19
- npx --yes --package=perttool@0.3.0 -- perttool dag next PLAN.pert --format json
20
- npx --yes --package=perttool@0.3.0 -- perttool project migrate-unit PLAN.pert --to-unit day --diff
22
+ npx --yes --package=perttool@0.5.0 -- perttool --version
23
+ npx --yes --package=perttool@0.5.0 -- perttool document check PLAN.pert
24
+ npx --yes --package=perttool@0.5.0 -- perttool dag next PLAN.pert --format json
25
+ npx --yes --package=perttool@0.5.0 -- perttool project history PLAN.pert --format json
21
26
  ```
22
27
 
23
28
  The equivalent explicit `npm exec` form is:
24
29
 
25
30
  ```sh
26
- npm exec --yes --package=perttool@0.3.0 -- perttool --version
27
- npm exec --yes --package=perttool@0.3.0 -- perttool document check PLAN.pert
28
- npm exec --yes --package=perttool@0.3.0 -- perttool dag analyze PLAN.pert
29
- npm exec --yes --package=perttool@0.3.0 -- perttool project migrate-unit PLAN.pert --to-unit day --diff
31
+ npm exec --yes --package=perttool@0.5.0 -- perttool --version
32
+ npm exec --yes --package=perttool@0.5.0 -- perttool document check PLAN.pert
33
+ npm exec --yes --package=perttool@0.5.0 -- perttool dag analyze PLAN.pert
34
+ npm exec --yes --package=perttool@0.5.0 -- perttool project history PLAN.pert --format json
30
35
  ```
31
36
 
32
37
  `npx` and `npm exec` may download the selected package version into the npm
33
- cache. Pinning `0.2.0` selects Contract 3 and therefore does not accept the
34
- temporal and migration surface in this README.
38
+ cache. The `0.5.0` registry commands become available only after the gated
39
+ publication. Pinning `0.4.0` selects Contract 5 and therefore omits Grammar 5
40
+ lifecycle and history; `0.3.0` selects Contract 4, and `0.2.0` selects
41
+ Contract 3.
35
42
 
36
43
  ## Install
37
44
 
38
45
  Install the CLI globally when it is used regularly:
39
46
 
40
47
  ```sh
41
- npm install --global perttool@0.3.0
48
+ npm install --global perttool@0.5.0
42
49
  perttool --version
43
50
  ```
44
51
 
45
- npm `beta` resolves to Contract 4 `0.3.0`. npm `latest` remains Contract 3
46
- `0.2.0`; publication does not promote it. Use `perttool@beta` as an alternative
47
- to the exact `0.3.0` pin.
52
+ The prepared release will move npm `beta` to Contract 6 `0.5.0` while leaving
53
+ `latest` on Contract 5 `0.4.0`. Before publication, both tags still resolve
54
+ to `0.4.0`, so use a locally packed `0.5.0` artifact for candidate testing.
55
+ After publication, `perttool@beta` follows Contract 6. Contract 5, Contract 4,
56
+ and Contract 3 remain available as exact pins `perttool@0.4.0`,
57
+ `perttool@0.3.0`, and `perttool@0.2.0`.
48
58
 
49
59
  ## Plan files
50
60
 
@@ -87,7 +97,8 @@ Task duration can use deterministic `day`, `hour`, or relative `point` units.
87
97
  Point plans declare a project-wide velocity such as `20p/10d`. Analysis keeps
88
98
  the exact point result and reports the time conversion separately as a velocity
89
99
  forecast. Grammar version 3 also accepts an exact Fraction such as `1/3d`;
90
- versions 1 and 2 continue to accept Decimal duration tokens.
100
+ versions 1 and 2 continue to accept Decimal duration tokens. Grammar version 5
101
+ adds explicit task-owned work events and the `suspended` lifecycle state.
91
102
 
92
103
  ## Maintain a plan through the CLI
93
104
 
@@ -156,6 +167,54 @@ perttool batch apply PLAN.pert \
156
167
  --expect-digest 'sha256:...'
157
168
  ```
158
169
 
170
+ ### Owner-aware governance
171
+
172
+ Moving from `0.3.0` Contract 4 to `0.4.0` Contract 5 changes every JSON
173
+ envelope to `cli_contract_version=5`. Project metadata changes from
174
+ `Perttool.ProjectResult.v2` to `Perttool.ProjectResult.v3`; mutation and
175
+ advance change from `Perttool.MutationResult.v1` to
176
+ `Perttool.MutationResult.v2` and include a
177
+ `Perttool.GovernanceDecision.v1`. Consumers must reject unknown identities
178
+ rather than treating the new fields as optional.
179
+
180
+ Grammar 4 adds declared goal/DAG owners and delegates. Persistent goal or DAG
181
+ changes require `--actor`; an effective owner or delegate has direct
182
+ authority, while another actor supplies repeatable `--accepted-by-owner`
183
+ caller assertions for every affected effective owner. The digest-bound
184
+ pre-change document determines owners and delegates, and an atomic batch must
185
+ satisfy every affected scope. These assertions are not authentication,
186
+ verified identity, signatures, or a durable approval audit.
187
+
188
+ Contract 5 previews may still omit actor and owner confirmation. A Contract 4
189
+ runtime fails closed on Grammar 4 and governance options; there is no
190
+ `--cli-contract 4` switch, compatibility alias, or environment toggle. Pin
191
+ `perttool@0.3.0` when a consumer is not ready to migrate. See the
192
+ [Contract 4-to-5 migration guide](docs/process/cli-contract-5-migration.md)
193
+ for the complete boundary.
194
+
195
+ For example, preview and then persist a DAG change as its effective owner:
196
+
197
+ ```sh
198
+ perttool gate add PLAN.pert APPROVAL NOW DONE \
199
+ --reason "Approval required" \
200
+ --diff
201
+ perttool gate add PLAN.pert APPROVAL NOW DONE \
202
+ --reason "Approval required" \
203
+ --actor user \
204
+ --write \
205
+ --expect-digest 'sha256:...'
206
+ ```
207
+
208
+ Generated Contract 6 source projects carry this maintenance warning:
209
+
210
+ ```pert
211
+ # Existing .pert plans should normally be maintained through perttool commands; direct DSL editing bypasses goal/DAG owner-confirmation checks.
212
+ ```
213
+
214
+ The warning is guidance, not technical prevention. A text editor, shell
215
+ command, or other program can bypass the tool-mediated check; Git and human
216
+ review remain external controls.
217
+
159
218
  Use the dedicated migration route for exact whole-document conversion between
160
219
  Point and time units. Preview before writing; the result inventories every
161
220
  converted field and reports grammar upgrades and reversibility:
@@ -177,6 +236,45 @@ perttool project migrate-unit PLAN.pert \
177
236
  Migration is not a `batch apply` member. Re-read and reanalyze the written
178
237
  candidate before making a separate mutation.
179
238
 
239
+ ### Task actuals and Git history
240
+
241
+ Grammar 5 records each lifecycle transition as a task state change and a
242
+ task-owned work event in one preview-first candidate. Event time is always an
243
+ explicit caller input; perttool does not substitute the system clock or Git
244
+ commit time.
245
+
246
+ ```sh
247
+ perttool task start PLAN.pert WORK \
248
+ --at 2026-07-29T09:00:00+09:00 --diff
249
+ perttool task suspend PLAN.pert WORK \
250
+ --at 2026-07-29T11:00:00+09:00 --reason "review" --diff
251
+ perttool task resume PLAN.pert WORK \
252
+ --at 2026-07-29T12:00:00+09:00 --diff
253
+ perttool task finish PLAN.pert WORK \
254
+ --at 2026-07-29T15:00:00+09:00 \
255
+ --active-time 5 --effort 6 --diff
256
+ ```
257
+
258
+ Use the ordinary governance, `--write`, and `--expect-digest` controls after
259
+ reviewing each candidate. `--active-time` is hours and `--effort` is
260
+ person-hours; suffix-free CLI values are normalized to `h` and `ph`.
261
+
262
+ History is a read-only first-parent Git reconstruction. It distinguishes
263
+ explicit actual event time from Git-recorded transition time and never changes
264
+ Git or declared project velocity:
265
+
266
+ ```sh
267
+ perttool project history PLAN.pert --task WORK --format json
268
+ perttool project observe-velocity PLAN.pert \
269
+ --task WORK --evidence declared --format json
270
+ ```
271
+
272
+ Observed candidates are evidence, not automatic project metadata changes.
273
+ Adoption, if desired, is a separate reviewed `project set --velocity` write.
274
+ See the [Contract 5-to-6 migration
275
+ guide](docs/process/cli-contract-6-migration.md) for schema and compatibility
276
+ details.
277
+
180
278
  ## Command map
181
279
 
182
280
  | Goal | Command |
@@ -187,13 +285,15 @@ candidate before making a separate mutation.
187
285
  | Canonically format it | `perttool document format <file>` |
188
286
  | Initialize a project | `perttool project init ...` |
189
287
  | Read project metadata | `perttool project show <file>` |
288
+ | Reconstruct task actuals | `perttool project history <file> ...` |
289
+ | Observe project performance | `perttool project observe-velocity <file> ...` |
190
290
  | Change project metadata | `perttool project set <file> ...` |
191
291
  | Migrate project units exactly | `perttool project migrate-unit <file> ...` |
192
292
  | Analyze schedules | `perttool dag analyze <file>` |
193
293
  | Select next work | `perttool dag next <file>` |
194
294
  | Remove completed history | `perttool dag advance <file>` |
195
295
  | Export or import Mermaid | `perttool dag render`, `perttool dag import` |
196
- | Maintain tasks | `perttool task add|set|remove|finish` |
296
+ | Maintain tasks | `perttool task add|set|remove|start|suspend|resume|finish` |
197
297
  | Maintain gates | `perttool gate add|set|remove` |
198
298
  | Maintain milestones | `perttool milestone add|set|remove` |
199
299
  | Maintain resources | `perttool resource add|set|remove` |
@@ -212,13 +312,18 @@ perttool guide editing --level detail --format json
212
312
 
213
313
  ## LLM and automation use
214
314
 
215
- Use `--format json` for machine consumers. Check both
216
- `cli_contract_version == 4` and the result-specific `schema_version` before
217
- reading the rest of a result. A complete, known, non-truncated
218
- `Perttool.NextResult.v4` with temporal policy
315
+ Use `--format json` for machine consumers. Prepared `0.5.0` consumers must
316
+ check `cli_contract_version == 6`; consumers of published `0.4.0` must
317
+ continue to require Contract 5, and consumers pinned to `0.3.0` must require
318
+ Contract 4.
319
+ In every case, check the result-specific `schema_version` before reading the
320
+ rest of a result.
321
+ A complete, known, non-truncated `Perttool.NextResult.v5` with temporal policy
219
322
  `recommendation_v1_plus_release_gate` is required. Start only task IDs in
220
323
  `temporal.authority.startable_recommended_task_ids`; do not infer start
221
324
  authority from the raw recommended set, the text summary, or `ready` alone.
325
+ Suspended tasks are reported separately and require an explicit `task resume`;
326
+ they are not new-start recommendations.
222
327
 
223
328
  Mutation JSON returns the candidate text, unified diff, UTF-16 text edits,
224
329
  source digest, updated digest, diagnostics, and write result in one envelope.
@@ -228,6 +333,11 @@ diagnostics, and future or unavailable temporal eligibility must fail closed.
228
333
  ## Documentation
229
334
 
230
335
  - [Temporal and Unit Interface Contract (CLI Contract 4)](docs/specs/temporal-unit-interface.md)
336
+ - [Owner-Aware Governance Interface Contract (CLI Contract 5)](docs/specs/governance-interface.md)
337
+ - [Project Actuals and Git History Contract (CLI Contract 6)](docs/specs/project-actuals.md)
338
+ - [Contract 5-to-6 migration](docs/process/cli-contract-6-migration.md)
339
+ - [Contract 4-to-5 migration](docs/process/cli-contract-5-migration.md)
340
+ - [Issue #4 governance implementation acceptance](docs/process/governance-acceptance.md)
231
341
  - [CLI Contract 3 compatibility baseline](docs/specs/cli-contract-3.md)
232
342
  - [DSL grammar](docs/specs/dsl-grammar.md)
233
343
  - [Graph semantics](docs/specs/graph-semantics.md)
@@ -0,0 +1,101 @@
1
+ import type { Diagnostic, SourceSpan } from "../model/diagnostics.js";
2
+ import { type Rational } from "../model/rational.js";
3
+ import type { DeclarationNode, TargetDeclarationKind, WorkEventKind } from "../model/syntax.js";
4
+ import { type ActualWorkEvent } from "./source.js";
5
+ import type { TargetGrammar5ValidatedDocument } from "../semantic/target-validator.js";
6
+ export type TaskLifecycleState = "planned" | "active" | "blocked" | "suspended" | "done";
7
+ export type ActualsCoverage = "complete" | "open" | "finish_only" | "unrecorded" | "unavailable";
8
+ export interface LifecycleEventInput {
9
+ readonly id?: string;
10
+ readonly occurredAt: string;
11
+ readonly reason?: string;
12
+ readonly activeTime?: string;
13
+ readonly effort?: string;
14
+ }
15
+ export interface FinishActualsMutation {
16
+ readonly kind: "task.finish.actual";
17
+ readonly taskId: string;
18
+ readonly event: LifecycleEventInput;
19
+ }
20
+ export interface StartActualsMutation {
21
+ readonly kind: "task.start";
22
+ readonly taskId: string;
23
+ readonly event: LifecycleEventInput;
24
+ }
25
+ export interface SuspendActualsMutation {
26
+ readonly kind: "task.suspend";
27
+ readonly taskId: string;
28
+ readonly event: LifecycleEventInput;
29
+ }
30
+ export interface ResumeActualsMutation {
31
+ readonly kind: "task.resume";
32
+ readonly taskId: string;
33
+ readonly event: LifecycleEventInput;
34
+ }
35
+ export type LifecycleMutation = StartActualsMutation | SuspendActualsMutation | ResumeActualsMutation | FinishActualsMutation;
36
+ export type LifecycleMutationKind = LifecycleMutation["kind"];
37
+ interface NormalizedLifecycleEventBase {
38
+ readonly id: string;
39
+ readonly occurredAt: string;
40
+ }
41
+ export type NormalizedLifecycleMutationRequest = {
42
+ readonly kind: "task.start";
43
+ readonly taskId: string;
44
+ readonly event: NormalizedLifecycleEventBase;
45
+ } | {
46
+ readonly kind: "task.suspend";
47
+ readonly taskId: string;
48
+ readonly event: NormalizedLifecycleEventBase & {
49
+ readonly reason: string | null;
50
+ };
51
+ } | {
52
+ readonly kind: "task.resume";
53
+ readonly taskId: string;
54
+ readonly event: NormalizedLifecycleEventBase;
55
+ } | {
56
+ readonly kind: "task.finish.actual";
57
+ readonly taskId: string;
58
+ readonly event: NormalizedLifecycleEventBase & {
59
+ readonly activeTime: string | null;
60
+ readonly effort: string | null;
61
+ };
62
+ };
63
+ export type NormalizedFinishActualsRequest = Extract<NormalizedLifecycleMutationRequest, {
64
+ readonly kind: "task.finish.actual";
65
+ }>;
66
+ export type NormalizedStartActualsRequest = Extract<NormalizedLifecycleMutationRequest, {
67
+ readonly kind: "task.start";
68
+ }>;
69
+ export type NormalizedSuspendActualsRequest = Extract<NormalizedLifecycleMutationRequest, {
70
+ readonly kind: "task.suspend";
71
+ }>;
72
+ export type NormalizedResumeActualsRequest = Extract<NormalizedLifecycleMutationRequest, {
73
+ readonly kind: "task.resume";
74
+ }>;
75
+ export interface LifecycleMutationRequestNormalization {
76
+ readonly ok: boolean;
77
+ readonly request: NormalizedLifecycleMutationRequest | null;
78
+ readonly diagnostics: readonly Diagnostic[];
79
+ }
80
+ export interface FinishActualsRequestNormalization {
81
+ readonly ok: boolean;
82
+ readonly request: NormalizedFinishActualsRequest | null;
83
+ readonly diagnostics: readonly Diagnostic[];
84
+ }
85
+ export interface LifecycleReduction {
86
+ readonly ok: boolean;
87
+ readonly coverage: ActualsCoverage;
88
+ readonly state: "active" | "suspended" | "done" | null;
89
+ readonly derivedActiveTime: Rational | null;
90
+ readonly diagnostics: readonly Diagnostic[];
91
+ }
92
+ export declare function actualsDiagnostic(code: "PTACT-104" | "PTACT-105" | "PTACT-106" | "PTACT-107" | "PTACT-108", message: string, cause: string, entityId: string | null, span?: SourceSpan, data?: Readonly<Record<string, unknown>>): Diagnostic;
93
+ export declare function deriveWorkEventId(taskId: string, kind: WorkEventKind, canonicalOccurredAt: string): string;
94
+ export declare function normalizeLifecycleMutationRequest(input: unknown): LifecycleMutationRequestNormalization;
95
+ export declare function normalizeFinishActualsRequest(input: unknown): FinishActualsRequestNormalization;
96
+ export declare function reduceTaskLifecycle(events: readonly ActualWorkEvent[]): LifecycleReduction;
97
+ export declare function taskStatus(task: DeclarationNode<TargetDeclarationKind>): TaskLifecycleState;
98
+ export declare function taskStatusSpan(task: DeclarationNode<TargetDeclarationKind>): SourceSpan;
99
+ export declare function validateStoredLifecycleState(validated: TargetGrammar5ValidatedDocument): readonly Diagnostic[];
100
+ export {};
101
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/actuals/lifecycle.ts"],"names":[],"mappings":"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"}