perttool 0.9.3 → 0.10.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 (233) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/README.md +63 -31
  3. package/dist/application/cli-facade.d.ts +33 -8
  4. package/dist/application/cli-facade.d.ts.map +1 -1
  5. package/dist/application/cli-facade.js +1 -2
  6. package/dist/application/cli-facade.js.map +1 -1
  7. package/dist/application/contract9-assurance-mutation.d.ts +35 -0
  8. package/dist/application/contract9-assurance-mutation.d.ts.map +1 -0
  9. package/dist/application/contract9-assurance-mutation.js +146 -0
  10. package/dist/application/contract9-assurance-mutation.js.map +1 -0
  11. package/dist/application/contract9-assurance.d.ts +23 -0
  12. package/dist/application/contract9-assurance.d.ts.map +1 -0
  13. package/dist/application/contract9-assurance.js +114 -0
  14. package/dist/application/contract9-assurance.js.map +1 -0
  15. package/dist/application/contract9-candidate.d.ts +33 -0
  16. package/dist/application/contract9-candidate.d.ts.map +1 -0
  17. package/dist/application/contract9-candidate.js +39 -0
  18. package/dist/application/contract9-candidate.js.map +1 -0
  19. package/dist/application/contract9-format-migration.d.ts +22 -0
  20. package/dist/application/contract9-format-migration.d.ts.map +1 -0
  21. package/dist/application/contract9-format-migration.js +52 -0
  22. package/dist/application/contract9-format-migration.js.map +1 -0
  23. package/dist/application/contract9-mixed-mutation.d.ts +14 -0
  24. package/dist/application/contract9-mixed-mutation.d.ts.map +1 -0
  25. package/dist/application/contract9-mixed-mutation.js +88 -0
  26. package/dist/application/contract9-mixed-mutation.js.map +1 -0
  27. package/dist/application/contract9-project.d.ts +15 -0
  28. package/dist/application/contract9-project.d.ts.map +1 -0
  29. package/dist/application/contract9-project.js +24 -0
  30. package/dist/application/contract9-project.js.map +1 -0
  31. package/dist/application/contract9-projection.d.ts +23 -0
  32. package/dist/application/contract9-projection.d.ts.map +1 -0
  33. package/dist/application/contract9-projection.js +89 -0
  34. package/dist/application/contract9-projection.js.map +1 -0
  35. package/dist/application/contract9-runtime.d.ts +43 -0
  36. package/dist/application/contract9-runtime.d.ts.map +1 -0
  37. package/dist/application/contract9-runtime.js +36 -0
  38. package/dist/application/contract9-runtime.js.map +1 -0
  39. package/dist/application/contract9-temporal-context.d.ts +15 -0
  40. package/dist/application/contract9-temporal-context.d.ts.map +1 -0
  41. package/dist/application/contract9-temporal-context.js +127 -0
  42. package/dist/application/contract9-temporal-context.js.map +1 -0
  43. package/dist/application/contract9-temporal-mutation.d.ts +20 -0
  44. package/dist/application/contract9-temporal-mutation.d.ts.map +1 -0
  45. package/dist/application/contract9-temporal-mutation.js +78 -0
  46. package/dist/application/contract9-temporal-mutation.js.map +1 -0
  47. package/dist/application/contract9-temporal.d.ts +17 -0
  48. package/dist/application/contract9-temporal.d.ts.map +1 -0
  49. package/dist/application/contract9-temporal.js +65 -0
  50. package/dist/application/contract9-temporal.js.map +1 -0
  51. package/dist/application/contract9-write.d.ts +28 -0
  52. package/dist/application/contract9-write.d.ts.map +1 -0
  53. package/dist/application/contract9-write.js +25 -0
  54. package/dist/application/contract9-write.js.map +1 -0
  55. package/dist/application/editor-milestone-acceptance.d.ts +4 -0
  56. package/dist/application/editor-milestone-acceptance.d.ts.map +1 -1
  57. package/dist/application/editor-milestone-acceptance.js +90 -0
  58. package/dist/application/editor-milestone-acceptance.js.map +1 -1
  59. package/dist/application/editor-repair.d.ts +12 -0
  60. package/dist/application/editor-repair.d.ts.map +1 -0
  61. package/dist/application/editor-repair.js +74 -0
  62. package/dist/application/editor-repair.js.map +1 -0
  63. package/dist/application/target-postdue-analysis.d.ts +18 -0
  64. package/dist/application/target-postdue-analysis.d.ts.map +1 -0
  65. package/dist/application/target-postdue-analysis.js +26 -0
  66. package/dist/application/target-postdue-analysis.js.map +1 -0
  67. package/dist/application/target-postdue-check.d.ts +10 -0
  68. package/dist/application/target-postdue-check.d.ts.map +1 -0
  69. package/dist/application/target-postdue-check.js +18 -0
  70. package/dist/application/target-postdue-check.js.map +1 -0
  71. package/dist/application/target-postdue-next.d.ts +10 -0
  72. package/dist/application/target-postdue-next.d.ts.map +1 -0
  73. package/dist/application/target-postdue-next.js +13 -0
  74. package/dist/application/target-postdue-next.js.map +1 -0
  75. package/dist/application/target-postdue-projection.d.ts +11 -0
  76. package/dist/application/target-postdue-projection.d.ts.map +1 -0
  77. package/dist/application/target-postdue-projection.js +17 -0
  78. package/dist/application/target-postdue-projection.js.map +1 -0
  79. package/dist/assurance/canonical.d.ts +3 -3
  80. package/dist/assurance/canonical.d.ts.map +1 -1
  81. package/dist/assurance/canonical.js +19 -6
  82. package/dist/assurance/canonical.js.map +1 -1
  83. package/dist/assurance/evaluate.d.ts.map +1 -1
  84. package/dist/assurance/evaluate.js +10 -2
  85. package/dist/assurance/evaluate.js.map +1 -1
  86. package/dist/assurance/types.d.ts +11 -1
  87. package/dist/assurance/types.d.ts.map +1 -1
  88. package/dist/cli.js +215 -92
  89. package/dist/cli.js.map +1 -1
  90. package/dist/command/contract9-discovery.d.ts +17 -0
  91. package/dist/command/contract9-discovery.d.ts.map +1 -0
  92. package/dist/command/contract9-discovery.js +126 -0
  93. package/dist/command/contract9-discovery.js.map +1 -0
  94. package/dist/command/contract9-usage.d.ts +24 -0
  95. package/dist/command/contract9-usage.d.ts.map +1 -0
  96. package/dist/command/contract9-usage.js +23 -0
  97. package/dist/command/contract9-usage.js.map +1 -0
  98. package/dist/core/index.d.ts +4 -3
  99. package/dist/core/index.d.ts.map +1 -1
  100. package/dist/core/index.js +1 -1
  101. package/dist/editor/repair.d.ts +95 -0
  102. package/dist/editor/repair.d.ts.map +1 -0
  103. package/dist/editor/repair.js +232 -0
  104. package/dist/editor/repair.js.map +1 -0
  105. package/dist/editor/semantic-fingerprint.d.ts +8 -0
  106. package/dist/editor/semantic-fingerprint.d.ts.map +1 -0
  107. package/dist/editor/semantic-fingerprint.js +177 -0
  108. package/dist/editor/semantic-fingerprint.js.map +1 -0
  109. package/dist/help/assurance-guide.js +7 -7
  110. package/dist/help/assurance-guide.js.map +1 -1
  111. package/dist/help/contract9-guide.d.ts +10 -0
  112. package/dist/help/contract9-guide.d.ts.map +1 -0
  113. package/dist/help/contract9-guide.js +32 -0
  114. package/dist/help/contract9-guide.js.map +1 -0
  115. package/dist/help/guide.d.ts +1 -1
  116. package/dist/help/guide.d.ts.map +1 -1
  117. package/dist/index.d.ts +10 -8
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +4 -4
  120. package/dist/index.js.map +1 -1
  121. package/dist/milestone-acceptance/advance.js +1 -1
  122. package/dist/milestone-acceptance/advance.js.map +1 -1
  123. package/dist/mutation/advance.d.ts.map +1 -1
  124. package/dist/mutation/advance.js.map +1 -1
  125. package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
  126. package/dist/recommendation/override-types.d.ts +2 -2
  127. package/dist/recommendation/override.js +2 -2
  128. package/dist/schema/registry.d.ts +1 -1
  129. package/dist/schema/registry.js +8 -8
  130. package/dist/session/document-session.d.ts +23 -0
  131. package/dist/session/document-session.d.ts.map +1 -1
  132. package/dist/session/document-session.js +104 -2
  133. package/dist/session/document-session.js.map +1 -1
  134. package/dist/temporal-schedule/alert-types.d.ts +109 -0
  135. package/dist/temporal-schedule/alert-types.d.ts.map +1 -0
  136. package/dist/temporal-schedule/alert-types.js +2 -0
  137. package/dist/temporal-schedule/alert-types.js.map +1 -0
  138. package/dist/temporal-schedule/alert.d.ts +4 -0
  139. package/dist/temporal-schedule/alert.d.ts.map +1 -0
  140. package/dist/temporal-schedule/alert.js +214 -0
  141. package/dist/temporal-schedule/alert.js.map +1 -0
  142. package/dist/temporal-schedule/calendar-mutation.d.ts +11 -0
  143. package/dist/temporal-schedule/calendar-mutation.d.ts.map +1 -0
  144. package/dist/temporal-schedule/calendar-mutation.js +59 -0
  145. package/dist/temporal-schedule/calendar-mutation.js.map +1 -0
  146. package/dist/temporal-schedule/calendar.d.ts +16 -0
  147. package/dist/temporal-schedule/calendar.d.ts.map +1 -0
  148. package/dist/temporal-schedule/calendar.js +179 -0
  149. package/dist/temporal-schedule/calendar.js.map +1 -0
  150. package/dist/temporal-schedule/constraint-types.d.ts +47 -0
  151. package/dist/temporal-schedule/constraint-types.d.ts.map +1 -0
  152. package/dist/temporal-schedule/constraint-types.js +2 -0
  153. package/dist/temporal-schedule/constraint-types.js.map +1 -0
  154. package/dist/temporal-schedule/constraint.d.ts +7 -0
  155. package/dist/temporal-schedule/constraint.d.ts.map +1 -0
  156. package/dist/temporal-schedule/constraint.js +224 -0
  157. package/dist/temporal-schedule/constraint.js.map +1 -0
  158. package/dist/temporal-schedule/entity-mutation.d.ts +31 -0
  159. package/dist/temporal-schedule/entity-mutation.d.ts.map +1 -0
  160. package/dist/temporal-schedule/entity-mutation.js +107 -0
  161. package/dist/temporal-schedule/entity-mutation.js.map +1 -0
  162. package/dist/temporal-schedule/format.d.ts +9 -0
  163. package/dist/temporal-schedule/format.d.ts.map +1 -0
  164. package/dist/temporal-schedule/format.js +183 -0
  165. package/dist/temporal-schedule/format.js.map +1 -0
  166. package/dist/temporal-schedule/required-types.d.ts +68 -0
  167. package/dist/temporal-schedule/required-types.d.ts.map +1 -0
  168. package/dist/temporal-schedule/required-types.js +2 -0
  169. package/dist/temporal-schedule/required-types.js.map +1 -0
  170. package/dist/temporal-schedule/required.d.ts +5 -0
  171. package/dist/temporal-schedule/required.d.ts.map +1 -0
  172. package/dist/temporal-schedule/required.js +183 -0
  173. package/dist/temporal-schedule/required.js.map +1 -0
  174. package/dist/temporal-schedule/schedule-graph.d.ts +8 -0
  175. package/dist/temporal-schedule/schedule-graph.d.ts.map +1 -0
  176. package/dist/temporal-schedule/schedule-graph.js +33 -0
  177. package/dist/temporal-schedule/schedule-graph.js.map +1 -0
  178. package/dist/temporal-schedule/scheduler-types.d.ts +115 -0
  179. package/dist/temporal-schedule/scheduler-types.d.ts.map +1 -0
  180. package/dist/temporal-schedule/scheduler-types.js +2 -0
  181. package/dist/temporal-schedule/scheduler-types.js.map +1 -0
  182. package/dist/temporal-schedule/scheduler.d.ts +12 -0
  183. package/dist/temporal-schedule/scheduler.d.ts.map +1 -0
  184. package/dist/temporal-schedule/scheduler.js +584 -0
  185. package/dist/temporal-schedule/scheduler.js.map +1 -0
  186. package/dist/temporal-schedule/source-lexical.d.ts +30 -0
  187. package/dist/temporal-schedule/source-lexical.d.ts.map +1 -0
  188. package/dist/temporal-schedule/source-lexical.js +166 -0
  189. package/dist/temporal-schedule/source-lexical.js.map +1 -0
  190. package/dist/temporal-schedule/source-types.d.ts +124 -0
  191. package/dist/temporal-schedule/source-types.d.ts.map +1 -0
  192. package/dist/temporal-schedule/source-types.js +2 -0
  193. package/dist/temporal-schedule/source-types.js.map +1 -0
  194. package/dist/temporal-schedule/source-values.d.ts +17 -0
  195. package/dist/temporal-schedule/source-values.d.ts.map +1 -0
  196. package/dist/temporal-schedule/source-values.js +138 -0
  197. package/dist/temporal-schedule/source-values.js.map +1 -0
  198. package/dist/temporal-schedule/source.d.ts +17 -0
  199. package/dist/temporal-schedule/source.d.ts.map +1 -0
  200. package/dist/temporal-schedule/source.js +520 -0
  201. package/dist/temporal-schedule/source.js.map +1 -0
  202. package/dist/temporal-schedule/tzdb-2026c.d.ts +7 -0
  203. package/dist/temporal-schedule/tzdb-2026c.d.ts.map +1 -0
  204. package/dist/temporal-schedule/tzdb-2026c.js +611 -0
  205. package/dist/temporal-schedule/tzdb-2026c.js.map +1 -0
  206. package/dist/version.d.ts +1 -1
  207. package/dist/version.d.ts.map +1 -1
  208. package/dist/version.js +1 -1
  209. package/dist/version.js.map +1 -1
  210. package/package.json +6 -2
  211. package/schemas/Perttool.AdvanceResult.v3.schema.json +1 -1
  212. package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +1 -1
  213. package/schemas/{Perttool.AnalysisResult.v6.schema.json → Perttool.AnalysisResult.v7.schema.json} +178 -6
  214. package/schemas/{Perttool.CheckResult.v5.schema.json → Perttool.CheckResult.v6.schema.json} +10 -6
  215. package/schemas/Perttool.CliError.v1.schema.json +1 -1
  216. package/schemas/Perttool.CommandHelpResult.v1.schema.json +2 -2
  217. package/schemas/Perttool.ExportResult.v1.schema.json +1 -1
  218. package/schemas/Perttool.FormatResult.v1.schema.json +1 -1
  219. package/schemas/Perttool.GuideResult.v1.schema.json +1 -1
  220. package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +1 -1
  221. package/schemas/Perttool.ImportResult.v1.schema.json +1 -1
  222. package/schemas/Perttool.InitResult.v1.schema.json +1 -1
  223. package/schemas/Perttool.MilestoneAcceptanceMigrationResult.v1.schema.json +1 -1
  224. package/schemas/Perttool.MilestoneAcceptanceResult.v1.schema.json +1 -1
  225. package/schemas/{Perttool.MutationResult.v5.schema.json → Perttool.MutationResult.v6.schema.json} +4 -4
  226. package/schemas/{Perttool.NextResult.v7.schema.json → Perttool.NextResult.v8.schema.json} +10 -6
  227. package/schemas/Perttool.OverrideDecision.v1.schema.json +1 -1
  228. package/schemas/{Perttool.PlanAssuranceResult.v1.schema.json → Perttool.PlanAssuranceResult.v2.schema.json} +5 -5
  229. package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +1 -1
  230. package/schemas/{Perttool.ProjectResult.v4.schema.json → Perttool.ProjectResult.v5.schema.json} +70 -7
  231. package/schemas/Perttool.SchemaResult.v1.schema.json +1 -1
  232. package/schemas/{Perttool.UnitMigrationResult.v3.schema.json → Perttool.UnitMigrationResult.v4.schema.json} +5 -5
  233. package/schemas/Perttool.VelocityObservationResult.v1.schema.json +1 -1
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const TOOL_VERSION = "0.9.3";
1
+ export declare const TOOL_VERSION = "0.10.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,WAAW,CAAC"}
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const TOOL_VERSION = "0.9.3";
1
+ export const TOOL_VERSION = "0.10.0";
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "perttool",
3
- "version": "0.9.3",
3
+ "version": "0.10.0",
4
4
  "description": "Document-based PERT/CPM and resource scheduling CLI",
5
5
  "keywords": [
6
6
  "pert",
@@ -61,6 +61,9 @@
61
61
  "typecheck": "tsc -p tsconfig.json --noEmit && npm run typecheck --workspace perttool-language-server-private && npm run typecheck --workspace perttool-vscode-private && npm run typecheck --workspace perttool-mcp-private",
62
62
  "test": "npm run build && node --test test/*.test.mjs",
63
63
  "test:e2e": "npm run build && node --test test/e2e.test.mjs",
64
+ "check:duplication": "node scripts/check-duplication.mjs",
65
+ "check:complexity": "node scripts/check-complexity.mjs",
66
+ "check:static": "npm run typecheck && npm run check:duplication && npm run check:complexity",
64
67
  "check:english": "node scripts/check-english-baseline.mjs",
65
68
  "check:docs": "bash scripts/check-docs.sh",
66
69
  "check:lsp-package": "bash scripts/check-lsp-package.sh",
@@ -69,11 +72,12 @@
69
72
  "check:link": "bash scripts/check-npm-link.sh",
70
73
  "check:package": "bash scripts/check-package.sh",
71
74
  "check:self-use": "bash scripts/check-self-use.sh",
72
- "check": "npm run typecheck && npm test && npm run check:english && npm run check:docs && npm run check:self-use && npm run check:lsp-package && npm run check:mcp-package && npm run check:vsix-shell && npm run check:link && npm run check:package"
75
+ "check": "npm run check:static && npm test && npm run check:english && npm run check:docs && npm run check:self-use && npm run check:lsp-package && npm run check:mcp-package && npm run check:vsix-shell && npm run check:link && npm run check:package"
73
76
  },
74
77
  "devDependencies": {
75
78
  "@types/node": "22.20.1",
76
79
  "ajv": "^8.20.0",
80
+ "jscpd": "5.0.15",
77
81
  "typescript": "7.0.2"
78
82
  }
79
83
  }
@@ -33,7 +33,7 @@
33
33
  "const": "Perttool.AdvanceResult.v3"
34
34
  },
35
35
  "cli_contract_version": {
36
- "const": 8
36
+ "const": 9
37
37
  },
38
38
  "tool_version": {
39
39
  "type": "string"
@@ -451,7 +451,7 @@
451
451
  "const": "Perttool.AgentGuidanceResult.v1"
452
452
  },
453
453
  "cli_contract_version": {
454
- "const": 8
454
+ "const": 9
455
455
  },
456
456
  "guidance_interface_version": {
457
457
  "const": 1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/mako10k/perttool/schemas/Perttool.AnalysisResult.v6.schema.json",
4
- "title": "Perttool.AnalysisResult.v6",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.AnalysisResult.v7.schema.json",
4
+ "title": "Perttool.AnalysisResult.v7",
5
5
  "$defs": {
6
6
  "taskStatus": {
7
7
  "enum": [
@@ -637,6 +637,42 @@
637
637
  }
638
638
  },
639
639
  "additionalProperties": false
640
+ },
641
+ "calendarProfile": {
642
+ "type": "object", "required": ["state", "algorithm", "makespan_seconds", "tasks", "milestones", "utilization", "unavailable_causes"],
643
+ "properties": {
644
+ "state": { "enum": ["available", "unavailable", "not_applicable"] },
645
+ "algorithm": { "type": "object", "required": ["id", "version", "optimal"], "properties": {
646
+ "id": { "enum": ["perttool.temporal-precedence-earliest", "perttool.temporal-parallel-sgs"] }, "version": { "const": 2 }, "optimal": { "enum": [false, null] }
647
+ }, "additionalProperties": false },
648
+ "makespan_seconds": { "oneOf": [{ "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, { "type": "null" }] },
649
+ "tasks": { "type": "array", "items": { "type": "object", "required": ["id", "status", "expected_work_seconds", "remaining_work_seconds", "start", "finish", "segments", "requirements", "resource_wait_seconds", "conditional_blocked"], "properties": {
650
+ "id": { "type": "string" }, "status": { "enum": ["planned", "active", "blocked", "done"] },
651
+ "expected_work_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "remaining_work_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" },
652
+ "start": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "finish": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" },
653
+ "segments": { "type": "array", "items": { "type": "object", "required": ["start", "end"], "properties": { "start": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "end": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" } }, "additionalProperties": false } },
654
+ "requirements": { "type": "array", "items": { "type": "object", "required": ["resource_id", "units"], "properties": { "resource_id": { "type": "string" }, "units": { "type": "number", "exclusiveMinimum": 0 } }, "additionalProperties": false } },
655
+ "resource_wait_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "conditional_blocked": { "type": "boolean" }
656
+ }, "additionalProperties": false } },
657
+ "milestones": { "type": "array", "items": { "type": "object", "required": ["id", "reach"], "properties": { "id": { "type": "string" }, "reach": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" } }, "additionalProperties": false } },
658
+ "utilization": { "type": "array", "items": { "type": "object", "required": ["resource_id", "allocated_unit_seconds", "available_unit_seconds", "utilization"], "properties": {
659
+ "resource_id": { "type": "string" }, "allocated_unit_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "available_unit_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" },
660
+ "utilization": { "oneOf": [{ "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, { "type": "null" }] }
661
+ }, "additionalProperties": false } },
662
+ "unavailable_causes": { "type": "array", "items": { "type": "object", "required": ["code", "task_ids", "resource_ids", "limit"], "properties": {
663
+ "code": { "enum": ["calendar_profile_absent", "zone_range_exceeded", "workday_relationship_missing", "no_feasible_window", "calendar_search_limit", "active_capacity_conflict"] },
664
+ "task_ids": { "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" }, "resource_ids": { "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" }, "limit": { "type": ["integer", "null"], "minimum": 0 }
665
+ }, "additionalProperties": false } }
666
+ }, "additionalProperties": false
667
+ },
668
+ "requiredComparison": {
669
+ "type": "object", "required": ["state", "classification", "optimal", "events"], "properties": {
670
+ "state": { "enum": ["available", "unavailable"] }, "classification": { "enum": ["feasible", "precedence_infeasible", "resource_heuristic_late", null] }, "optimal": { "enum": [false, null] },
671
+ "events": { "type": "array", "items": { "type": "object", "required": ["entity_kind", "entity_id", "event", "required", "projected", "signed_slack_seconds"], "properties": {
672
+ "entity_kind": { "enum": ["task", "milestone"] }, "entity_id": { "type": "string" }, "event": { "enum": ["start", "finish", "reach"] },
673
+ "required": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "projected": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "signed_slack_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }
674
+ }, "additionalProperties": false } }
675
+ }, "additionalProperties": false
640
676
  }
641
677
  },
642
678
  "type": "object",
@@ -659,14 +695,16 @@
659
695
  "resource",
660
696
  "temporal",
661
697
  "assurance",
662
- "acceptance"
698
+ "acceptance",
699
+ "temporal_schedule",
700
+ "schedule_alerts"
663
701
  ],
664
702
  "properties": {
665
703
  "schema_version": {
666
- "const": "Perttool.AnalysisResult.v6"
704
+ "const": "Perttool.AnalysisResult.v7"
667
705
  },
668
706
  "cli_contract_version": {
669
- "const": 8
707
+ "const": 9
670
708
  },
671
709
  "tool_version": {
672
710
  "type": "string"
@@ -698,7 +736,7 @@
698
736
  "null"
699
737
  ],
700
738
  "minimum": 1,
701
- "maximum": 6
739
+ "maximum": 8
702
740
  },
703
741
  "task_actuals": {
704
742
  "type": "array",
@@ -790,6 +828,140 @@
790
828
  "assurance": {
791
829
  "$ref": "Perttool.Common.v1.schema.json#/$defs/nullablePlanAssuranceProjection"
792
830
  },
831
+ "temporal_schedule": {
832
+ "oneOf": [
833
+ {
834
+ "type": "object", "required": ["precedence", "resource", "required"],
835
+ "properties": {
836
+ "precedence": { "$ref": "#/$defs/calendarProfile" }, "resource": { "$ref": "#/$defs/calendarProfile" },
837
+ "required": {
838
+ "type": "object", "required": ["model_version", "document_id", "source", "state", "algorithm", "anchor", "tasks", "milestones", "precedence_comparison", "resource_comparison", "unavailable_causes"],
839
+ "properties": {
840
+ "model_version": { "const": 1 }, "document_id": { "type": "string" },
841
+ "source": { "type": "object", "required": ["ok", "grammar_version", "document_id", "model", "diagnostics", "diagnostic_counts", "diagnostics_truncated"], "properties": {
842
+ "ok": { "type": "boolean" }, "grammar_version": { "type": ["integer", "null"], "minimum": 1, "maximum": 8 }, "document_id": { "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString" },
843
+ "model": { "oneOf": [{ "$ref": "Perttool.ProjectResult.v5.schema.json#/$defs/temporalSchedule" }, { "type": "null" }] }, "diagnostics": { "$ref": "Perttool.Common.v1.schema.json#/$defs/diagnostics" },
844
+ "diagnostic_counts": { "type": "object", "required": ["errors", "warnings", "info"], "properties": { "errors": { "type": "integer", "minimum": 0 }, "warnings": { "type": "integer", "minimum": 0 }, "info": { "type": "integer", "minimum": 0 } }, "additionalProperties": false },
845
+ "diagnostics_truncated": { "type": "boolean" }
846
+ }, "additionalProperties": false },
847
+ "state": { "enum": ["available", "absent", "unavailable", "not_applicable"] },
848
+ "algorithm": { "type": "object", "required": ["id", "version", "optimal"], "properties": { "id": { "const": "perttool.required-precedence-backward" }, "version": { "const": 1 }, "optimal": { "type": "null" } }, "additionalProperties": false },
849
+ "anchor": { "oneOf": [{ "type": "object", "required": ["source", "instant"], "properties": { "source": { "enum": ["latest_bound", "advisory_deadline", "coincident"] }, "instant": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" } }, "additionalProperties": false }, { "type": "null" }] },
850
+ "tasks": { "type": "array", "items": { "type": "object", "required": ["id", "required_start", "required_finish", "segments", "driver_ids"], "properties": {
851
+ "id": { "type": "string" }, "required_start": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "required_finish": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" },
852
+ "segments": { "type": "array", "items": { "type": "object", "required": ["start", "end"], "properties": { "start": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "end": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" } }, "additionalProperties": false } }, "driver_ids": { "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" }
853
+ }, "additionalProperties": false } },
854
+ "milestones": { "type": "array", "items": { "type": "object", "required": ["id", "required_reach", "driver_ids"], "properties": { "id": { "type": "string" }, "required_reach": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, "driver_ids": { "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" } }, "additionalProperties": false } },
855
+ "precedence_comparison": { "$ref": "#/$defs/requiredComparison" }, "resource_comparison": { "$ref": "#/$defs/requiredComparison" },
856
+ "unavailable_causes": { "type": "array", "items": { "type": "object", "required": ["code", "entity_ids"], "properties": { "code": { "enum": ["required_anchor_absent", "forward_schedule_unavailable", "calendar_subtraction_unavailable"] }, "entity_ids": { "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" } }, "additionalProperties": false } }
857
+ }, "additionalProperties": false
858
+ }
859
+ }, "additionalProperties": false
860
+ },
861
+ { "type": "null" }
862
+ ]
863
+ },
864
+ "schedule_alerts": {
865
+ "oneOf": [
866
+ {
867
+ "type": "object",
868
+ "required": ["evaluator", "state", "summary", "occurrences", "truncation", "unavailable_causes"],
869
+ "properties": {
870
+ "evaluator": {
871
+ "type": "object",
872
+ "required": ["id", "version", "optimal"],
873
+ "properties": {
874
+ "id": { "const": "perttool.schedule-alert" },
875
+ "version": { "const": 1 },
876
+ "optimal": { "type": "null" }
877
+ },
878
+ "additionalProperties": false
879
+ },
880
+ "state": { "enum": ["available", "unavailable", "not_applicable"] },
881
+ "summary": {
882
+ "type": "object",
883
+ "required": ["postdue", "postdue_forecast", "total"],
884
+ "properties": {
885
+ "postdue": { "type": "integer", "minimum": 0 },
886
+ "postdue_forecast": { "type": "integer", "minimum": 0 },
887
+ "total": { "type": "integer", "minimum": 0 }
888
+ },
889
+ "additionalProperties": false
890
+ },
891
+ "occurrences": {
892
+ "type": "array",
893
+ "items": {
894
+ "type": "object",
895
+ "required": ["alert_id", "kind", "subject", "event", "target", "comparison", "proof", "driver", "source_digest", "source_range"],
896
+ "properties": {
897
+ "alert_id": { "type": "string" },
898
+ "kind": { "enum": ["POSTDUE", "POSTDUE_FORECAST"] },
899
+ "subject": {
900
+ "type": "object",
901
+ "required": ["kind", "id"],
902
+ "properties": { "kind": { "enum": ["task", "milestone"] }, "id": { "type": "string" } },
903
+ "additionalProperties": false
904
+ },
905
+ "event": { "enum": ["start", "finish", "reach"] },
906
+ "target": {
907
+ "type": "object",
908
+ "required": ["subject_kind", "subject_id", "event", "target_kind", "temporal_kind", "instant", "source_text", "source_range"],
909
+ "properties": {
910
+ "subject_kind": { "enum": ["task", "milestone"] }, "subject_id": { "type": "string" },
911
+ "event": { "enum": ["start", "finish", "reach"] }, "target_kind": { "enum": ["deadline", "latest"] },
912
+ "temporal_kind": { "enum": ["instant", "date"] },
913
+ "instant": { "oneOf": [{ "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" }, { "type": "null" }] },
914
+ "source_text": { "type": "string" }, "source_range": { "$ref": "Perttool.Common.v1.schema.json#/$defs/span" }
915
+ },
916
+ "additionalProperties": false
917
+ },
918
+ "comparison": {
919
+ "type": "object", "required": ["snapshot_or_projection", "signed_difference_seconds", "relation"],
920
+ "properties": {
921
+ "snapshot_or_projection": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" },
922
+ "signed_difference_seconds": { "$ref": "Perttool.Common.v1.schema.json#/$defs/rational" },
923
+ "relation": { "const": "after" }
924
+ }, "additionalProperties": false
925
+ },
926
+ "proof": {
927
+ "type": "object", "required": ["kind", "optimal"],
928
+ "properties": { "kind": { "enum": ["current_snapshot", "precedence_infeasible", "resource_heuristic_late"] }, "optimal": { "enum": [false, null] } },
929
+ "additionalProperties": false
930
+ },
931
+ "driver": {
932
+ "type": "object", "required": ["state", "path_id", "scope", "steps", "truncated", "total_steps", "analysis_argv", "cause"],
933
+ "properties": {
934
+ "state": { "enum": ["available", "not_computed", "unavailable"] }, "path_id": { "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString" },
935
+ "scope": { "enum": ["project_finish", "target"] },
936
+ "steps": { "type": "array", "items": { "type": "object", "required": ["kind", "id", "source_milestone_id", "target_milestone_id"], "properties": {
937
+ "kind": { "enum": ["task", "gate", "resource_wait"] }, "id": { "type": "string" },
938
+ "source_milestone_id": { "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString" }, "target_milestone_id": { "$ref": "Perttool.Common.v1.schema.json#/$defs/nullableString" }
939
+ }, "additionalProperties": false } },
940
+ "truncated": { "type": "boolean" }, "total_steps": { "type": ["integer", "null"], "minimum": 0 },
941
+ "analysis_argv": { "oneOf": [{ "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" }, { "type": "null" }] },
942
+ "cause": { "enum": ["driver_not_computed", "driver_unavailable", null] }
943
+ }, "additionalProperties": false
944
+ },
945
+ "source_digest": { "$ref": "Perttool.Common.v1.schema.json#/$defs/digest" },
946
+ "source_range": { "$ref": "Perttool.Common.v1.schema.json#/$defs/span" }
947
+ },
948
+ "additionalProperties": false
949
+ }
950
+ },
951
+ "truncation": {
952
+ "type": "object", "required": ["truncated", "emitted", "total", "total_known"],
953
+ "properties": { "truncated": { "type": "boolean" }, "emitted": { "type": "integer", "minimum": 0 }, "total": { "type": ["integer", "null"], "minimum": 0 }, "total_known": { "type": "boolean" } },
954
+ "additionalProperties": false
955
+ },
956
+ "unavailable_causes": { "type": "array", "items": { "type": "object", "required": ["code", "entity_ids"], "properties": {
957
+ "code": { "type": "string" }, "entity_ids": { "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray" }
958
+ }, "additionalProperties": false } }
959
+ },
960
+ "additionalProperties": false
961
+ },
962
+ { "type": "null" }
963
+ ]
964
+ },
793
965
  "acceptance": {
794
966
  "oneOf": [
795
967
  { "$ref": "Perttool.MilestoneAcceptanceResult.v1.schema.json#/$defs/acceptanceModel" },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/mako10k/perttool/schemas/Perttool.CheckResult.v5.schema.json",
4
- "title": "Perttool.CheckResult.v5",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.CheckResult.v6.schema.json",
4
+ "title": "Perttool.CheckResult.v6",
5
5
  "type": "object",
6
6
  "required": [
7
7
  "schema_version",
@@ -20,14 +20,15 @@
20
20
  "actuals_inputs",
21
21
  "assurance",
22
22
  "assurance_state_counts",
23
- "acceptance"
23
+ "acceptance",
24
+ "schedule_alerts"
24
25
  ],
25
26
  "properties": {
26
27
  "schema_version": {
27
- "const": "Perttool.CheckResult.v5"
28
+ "const": "Perttool.CheckResult.v6"
28
29
  },
29
30
  "cli_contract_version": {
30
- "const": 8
31
+ "const": 9
31
32
  },
32
33
  "tool_version": {
33
34
  "type": "string"
@@ -59,7 +60,10 @@
59
60
  "null"
60
61
  ],
61
62
  "minimum": 1,
62
- "maximum": 6
63
+ "maximum": 8
64
+ },
65
+ "schedule_alerts": {
66
+ "$ref": "Perttool.AnalysisResult.v7.schema.json#/properties/schedule_alerts"
63
67
  },
64
68
  "summary": {
65
69
  "type": "object",
@@ -16,7 +16,7 @@
16
16
  "const": "Perttool.CliError.v1"
17
17
  },
18
18
  "cli_contract_version": {
19
- "const": 8
19
+ "const": 9
20
20
  },
21
21
  "tool_version": {
22
22
  "type": "string"
@@ -19,7 +19,7 @@
19
19
  "const": "Perttool.CommandHelpResult.v1"
20
20
  },
21
21
  "cli_contract_version": {
22
- "const": 8
22
+ "const": 9
23
23
  },
24
24
  "tool_version": {
25
25
  "type": "string"
@@ -90,7 +90,7 @@
90
90
  ],
91
91
  "properties": {
92
92
  "cli_contract_version": {
93
- "const": 8
93
+ "const": 9
94
94
  },
95
95
  "path": {
96
96
  "type": "array",
@@ -29,7 +29,7 @@
29
29
  "const": "Perttool.ExportResult.v1"
30
30
  },
31
31
  "cli_contract_version": {
32
- "const": 8
32
+ "const": 9
33
33
  },
34
34
  "tool_version": {
35
35
  "type": "string"
@@ -27,7 +27,7 @@
27
27
  "const": "Perttool.FormatResult.v1"
28
28
  },
29
29
  "cli_contract_version": {
30
- "const": 8
30
+ "const": 9
31
31
  },
32
32
  "tool_version": {
33
33
  "type": "string"
@@ -25,7 +25,7 @@
25
25
  "const": "Perttool.GuideResult.v1"
26
26
  },
27
27
  "cli_contract_version": {
28
- "const": 8
28
+ "const": 9
29
29
  },
30
30
  "tool_version": {
31
31
  "type": "string"
@@ -677,7 +677,7 @@
677
677
  "required": ["schema_version", "cli_contract_version", "tool_version", "operation", "ok", "document_id", "source", "source_digest", "diagnostics", "diagnostics_truncated", "model", "model_version", "transition_model_version", "status", "request", "evidence", "effective_checkpoint_id", "selected_snapshot_commit_id", "checkpoints", "snapshot", "lineage", "timeline", "milestone_acceptance_history", "analysis", "source_bindings", "causes", "limits"],
678
678
  "properties": {
679
679
  "schema_version": { "const": "Perttool.HistoricalGraphResult.v1" },
680
- "cli_contract_version": { "const": 8 },
680
+ "cli_contract_version": { "const": 9 },
681
681
  "tool_version": { "type": "string" },
682
682
  "operation": { "const": "dag.history" },
683
683
  "ok": { "type": "boolean" },
@@ -29,7 +29,7 @@
29
29
  "const": "Perttool.ImportResult.v1"
30
30
  },
31
31
  "cli_contract_version": {
32
- "const": 8
32
+ "const": 9
33
33
  },
34
34
  "tool_version": {
35
35
  "type": "string"
@@ -24,7 +24,7 @@
24
24
  "const": "Perttool.InitResult.v1"
25
25
  },
26
26
  "cli_contract_version": {
27
- "const": 8
27
+ "const": 9
28
28
  },
29
29
  "tool_version": {
30
30
  "type": "string"
@@ -6,7 +6,7 @@
6
6
  "required": ["schema_version", "cli_contract_version", "tool_version", "operation", "ok", "model_version", "changed", "source_grammar_version", "target_grammar_version", "source_digest", "candidate_digest", "grandfathered_milestone_ids", "candidate_text", "diagnostics"],
7
7
  "properties": {
8
8
  "schema_version": { "const": "Perttool.MilestoneAcceptanceMigrationResult.v1" },
9
- "cli_contract_version": { "const": 8 },
9
+ "cli_contract_version": { "const": 9 },
10
10
  "tool_version": { "type": "string" },
11
11
  "operation": { "const": "document.migrate" },
12
12
  "ok": { "type": "boolean" },
@@ -6,7 +6,7 @@
6
6
  "required": ["schema_version", "cli_contract_version", "tool_version", "operation", "ok", "milestones", "diagnostics"],
7
7
  "properties": {
8
8
  "schema_version": { "const": "Perttool.MilestoneAcceptanceResult.v1" },
9
- "cli_contract_version": { "const": 8 },
9
+ "cli_contract_version": { "const": 9 },
10
10
  "tool_version": { "type": "string" },
11
11
  "operation": { "const": "milestone-acceptance.show" },
12
12
  "ok": { "type": "boolean" },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/mako10k/perttool/schemas/Perttool.MutationResult.v5.schema.json",
4
- "title": "Perttool.MutationResult.v5",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.MutationResult.v6.schema.json",
4
+ "title": "Perttool.MutationResult.v6",
5
5
  "type": "object",
6
6
  "required": [
7
7
  "schema_version",
@@ -27,10 +27,10 @@
27
27
  ],
28
28
  "properties": {
29
29
  "schema_version": {
30
- "const": "Perttool.MutationResult.v5"
30
+ "const": "Perttool.MutationResult.v6"
31
31
  },
32
32
  "cli_contract_version": {
33
- "const": 8
33
+ "const": 9
34
34
  },
35
35
  "tool_version": {
36
36
  "type": "string"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/mako10k/perttool/schemas/Perttool.NextResult.v7.schema.json",
4
- "title": "Perttool.NextResult.v7",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.NextResult.v8.schema.json",
4
+ "title": "Perttool.NextResult.v8",
5
5
  "$defs": {
6
6
  "tier": {
7
7
  "enum": [
@@ -1154,14 +1154,15 @@
1154
1154
  "grammar_version",
1155
1155
  "temporal",
1156
1156
  "assurance",
1157
- "acceptance"
1157
+ "acceptance",
1158
+ "schedule_alerts"
1158
1159
  ],
1159
1160
  "properties": {
1160
1161
  "schema_version": {
1161
- "const": "Perttool.NextResult.v7"
1162
+ "const": "Perttool.NextResult.v8"
1162
1163
  },
1163
1164
  "cli_contract_version": {
1164
- "const": 8
1165
+ "const": 9
1165
1166
  },
1166
1167
  "recommendation_interface_version": {
1167
1168
  "const": 1
@@ -1196,7 +1197,7 @@
1196
1197
  "null"
1197
1198
  ],
1198
1199
  "minimum": 1,
1199
- "maximum": 6
1200
+ "maximum": 8
1200
1201
  },
1201
1202
  "precision": {
1202
1203
  "type": "integer",
@@ -1305,6 +1306,9 @@
1305
1306
  "assurance": {
1306
1307
  "$ref": "Perttool.Common.v1.schema.json#/$defs/nullablePlanAssuranceProjection"
1307
1308
  },
1309
+ "schedule_alerts": {
1310
+ "$ref": "Perttool.AnalysisResult.v7.schema.json#/properties/schedule_alerts"
1311
+ },
1308
1312
  "acceptance": {
1309
1313
  "oneOf": [
1310
1314
  { "$ref": "Perttool.MilestoneAcceptanceResult.v1.schema.json#/$defs/acceptanceModel" },
@@ -306,7 +306,7 @@
306
306
  ],
307
307
  "properties": {
308
308
  "schema_version": {
309
- "const": "Perttool.NextResult.v7"
309
+ "const": "Perttool.NextResult.v8"
310
310
  },
311
311
  "tool_version": {
312
312
  "type": "string"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/mako10k/perttool/schemas/Perttool.PlanAssuranceResult.v1.schema.json",
4
- "title": "Perttool.PlanAssuranceResult.v1",
3
+ "$id": "https://github.com/mako10k/perttool/schemas/Perttool.PlanAssuranceResult.v2.schema.json",
4
+ "title": "Perttool.PlanAssuranceResult.v2",
5
5
  "type": "object",
6
6
  "required": [
7
7
  "schema_version",
@@ -23,10 +23,10 @@
23
23
  ],
24
24
  "properties": {
25
25
  "schema_version": {
26
- "const": "Perttool.PlanAssuranceResult.v1"
26
+ "const": "Perttool.PlanAssuranceResult.v2"
27
27
  },
28
28
  "cli_contract_version": {
29
- "const": 8
29
+ "const": 9
30
30
  },
31
31
  "tool_version": {
32
32
  "type": "string"
@@ -55,7 +55,7 @@
55
55
  "grammar_version": {
56
56
  "type": ["integer", "null"],
57
57
  "minimum": 1,
58
- "maximum": 6
58
+ "maximum": 8
59
59
  },
60
60
  "selected_task_ids": {
61
61
  "$ref": "Perttool.Common.v1.schema.json#/$defs/stringArray"
@@ -225,7 +225,7 @@
225
225
  "const": "Perttool.ProjectHistoryResult.v1"
226
226
  },
227
227
  "cli_contract_version": {
228
- "const": 8
228
+ "const": 9
229
229
  },
230
230
  "tool_version": {
231
231
  "type": "string"