perttool 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -33
- package/README.md +206 -111
- package/dist/analysis/temporal-deadline.d.ts +59 -0
- package/dist/analysis/temporal-deadline.d.ts.map +1 -0
- package/dist/analysis/temporal-deadline.js +387 -0
- package/dist/analysis/temporal-deadline.js.map +1 -0
- package/dist/analysis/temporal-precedence.d.ts +45 -0
- package/dist/analysis/temporal-precedence.d.ts.map +1 -0
- package/dist/analysis/temporal-precedence.js +123 -0
- package/dist/analysis/temporal-precedence.js.map +1 -0
- package/dist/analysis/temporal-resource.d.ts +66 -0
- package/dist/analysis/temporal-resource.d.ts.map +1 -0
- package/dist/analysis/temporal-resource.js +292 -0
- package/dist/analysis/temporal-resource.js.map +1 -0
- package/dist/application/analyze.js +5 -5
- package/dist/application/analyze.js.map +1 -1
- package/dist/application/check.d.ts +16 -0
- package/dist/application/check.d.ts.map +1 -1
- package/dist/application/check.js +51 -0
- package/dist/application/check.js.map +1 -1
- package/dist/application/contract4.d.ts +17 -0
- package/dist/application/contract4.d.ts.map +1 -0
- package/dist/application/contract4.js +27 -0
- package/dist/application/contract4.js.map +1 -0
- package/dist/application/init.d.ts +43 -0
- package/dist/application/init.d.ts.map +1 -0
- package/dist/application/init.js +226 -0
- package/dist/application/init.js.map +1 -0
- package/dist/application/mutate.d.ts +19 -0
- package/dist/application/mutate.d.ts.map +1 -1
- package/dist/application/mutate.js +47 -25
- package/dist/application/mutate.js.map +1 -1
- package/dist/application/next.d.ts +2 -0
- package/dist/application/next.d.ts.map +1 -1
- package/dist/application/next.js +7 -1
- package/dist/application/next.js.map +1 -1
- package/dist/application/project.d.ts +3 -1
- package/dist/application/project.d.ts.map +1 -1
- package/dist/application/project.js +2 -1
- package/dist/application/project.js.map +1 -1
- package/dist/application/target-check.d.ts +34 -0
- package/dist/application/target-check.d.ts.map +1 -0
- package/dist/application/target-check.js +90 -0
- package/dist/application/target-check.js.map +1 -0
- package/dist/application/target-grammar-boundary.d.ts +22 -0
- package/dist/application/target-grammar-boundary.d.ts.map +1 -0
- package/dist/application/target-grammar-boundary.js +91 -0
- package/dist/application/target-grammar-boundary.js.map +1 -0
- package/dist/application/target-mutate.d.ts +8 -0
- package/dist/application/target-mutate.d.ts.map +1 -0
- package/dist/application/target-mutate.js +56 -0
- package/dist/application/target-mutate.js.map +1 -0
- package/dist/application/target-project.d.ts +28 -0
- package/dist/application/target-project.d.ts.map +1 -0
- package/dist/application/target-project.js +60 -0
- package/dist/application/target-project.js.map +1 -0
- package/dist/application/target-temporal-analysis.d.ts +138 -0
- package/dist/application/target-temporal-analysis.d.ts.map +1 -0
- package/dist/application/target-temporal-analysis.js +409 -0
- package/dist/application/target-temporal-analysis.js.map +1 -0
- package/dist/application/target-temporal-input.d.ts +86 -0
- package/dist/application/target-temporal-input.d.ts.map +1 -0
- package/dist/application/target-temporal-input.js +238 -0
- package/dist/application/target-temporal-input.js.map +1 -0
- package/dist/application/target-unit-migration-candidate.d.ts +60 -0
- package/dist/application/target-unit-migration-candidate.d.ts.map +1 -0
- package/dist/application/target-unit-migration-candidate.js +290 -0
- package/dist/application/target-unit-migration-candidate.js.map +1 -0
- package/dist/application/target-unit-migration-request.d.ts +35 -0
- package/dist/application/target-unit-migration-request.d.ts.map +1 -0
- package/dist/application/target-unit-migration-request.js +68 -0
- package/dist/application/target-unit-migration-request.js.map +1 -0
- package/dist/application/target-unit-migration-result.d.ts +66 -0
- package/dist/application/target-unit-migration-result.d.ts.map +1 -0
- package/dist/application/target-unit-migration-result.js +86 -0
- package/dist/application/target-unit-migration-result.js.map +1 -0
- package/dist/application/unit-migration.d.ts +13 -0
- package/dist/application/unit-migration.d.ts.map +1 -0
- package/dist/application/unit-migration.js +9 -0
- package/dist/application/unit-migration.js.map +1 -0
- package/dist/cli.js +494 -383
- package/dist/cli.js.map +1 -1
- package/dist/command/discovery.d.ts +30 -0
- package/dist/command/discovery.d.ts.map +1 -0
- package/dist/command/discovery.js +752 -0
- package/dist/command/discovery.js.map +1 -0
- package/dist/command/registry.d.ts +84 -0
- package/dist/command/registry.d.ts.map +1 -0
- package/dist/command/registry.js +964 -0
- package/dist/command/registry.js.map +1 -0
- package/dist/command/usage.d.ts +42 -0
- package/dist/command/usage.d.ts.map +1 -0
- package/dist/command/usage.js +337 -0
- package/dist/command/usage.js.map +1 -0
- package/dist/conversion/mermaid-import.js +56 -56
- package/dist/conversion/mermaid-import.js.map +1 -1
- package/dist/conversion/mermaid.js +1 -1
- package/dist/conversion/mermaid.js.map +1 -1
- package/dist/formatter/source-formatter.d.ts +12 -0
- package/dist/formatter/source-formatter.d.ts.map +1 -1
- package/dist/formatter/source-formatter.js +48 -6
- package/dist/formatter/source-formatter.js.map +1 -1
- package/dist/formatter/target-source-formatter.d.ts +8 -0
- package/dist/formatter/target-source-formatter.d.ts.map +1 -0
- package/dist/formatter/target-source-formatter.js +36 -0
- package/dist/formatter/target-source-formatter.js.map +1 -0
- package/dist/help/guide.d.ts +12 -0
- package/dist/help/guide.d.ts.map +1 -0
- package/dist/help/guide.js +103 -0
- package/dist/help/guide.js.map +1 -0
- package/dist/help/registry.d.ts +0 -6
- package/dist/help/registry.d.ts.map +1 -1
- package/dist/help/registry.js +186 -86
- package/dist/help/registry.js.map +1 -1
- package/dist/index.d.ts +20 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/io/safe-write.d.ts +7 -0
- package/dist/io/safe-write.d.ts.map +1 -1
- package/dist/io/safe-write.js +36 -27
- package/dist/io/safe-write.js.map +1 -1
- package/dist/io/target-safe-write.d.ts +7 -0
- package/dist/io/target-safe-write.d.ts.map +1 -0
- package/dist/io/target-safe-write.js +33 -0
- package/dist/io/target-safe-write.js.map +1 -0
- package/dist/migration/conversion.d.ts +40 -0
- package/dist/migration/conversion.d.ts.map +1 -0
- package/dist/migration/conversion.js +106 -0
- package/dist/migration/conversion.js.map +1 -0
- package/dist/migration/grammar-boundary.d.ts +20 -0
- package/dist/migration/grammar-boundary.d.ts.map +1 -0
- package/dist/migration/grammar-boundary.js +92 -0
- package/dist/migration/grammar-boundary.js.map +1 -0
- package/dist/migration/request.d.ts +79 -0
- package/dist/migration/request.d.ts.map +1 -0
- package/dist/migration/request.js +308 -0
- package/dist/migration/request.js.map +1 -0
- package/dist/model/calendar-arithmetic.d.ts +46 -0
- package/dist/model/calendar-arithmetic.d.ts.map +1 -0
- package/dist/model/calendar-arithmetic.js +236 -0
- package/dist/model/calendar-arithmetic.js.map +1 -0
- package/dist/model/calendar.d.ts +22 -0
- package/dist/model/calendar.d.ts.map +1 -0
- package/dist/model/calendar.js +83 -0
- package/dist/model/calendar.js.map +1 -0
- package/dist/model/declaration-fields.d.ts +15 -0
- package/dist/model/declaration-fields.d.ts.map +1 -0
- package/dist/model/declaration-fields.js +54 -0
- package/dist/model/declaration-fields.js.map +1 -0
- package/dist/model/exact-duration-source.d.ts +10 -0
- package/dist/model/exact-duration-source.d.ts.map +1 -0
- package/dist/model/exact-duration-source.js +69 -0
- package/dist/model/exact-duration-source.js.map +1 -0
- package/dist/model/rational.d.ts +2 -2
- package/dist/model/rational.d.ts.map +1 -1
- package/dist/model/rational.js +3 -1
- package/dist/model/rational.js.map +1 -1
- package/dist/model/syntax.d.ts +9 -2
- package/dist/model/syntax.d.ts.map +1 -1
- package/dist/model/syntax.js +20 -4
- package/dist/model/syntax.js.map +1 -1
- package/dist/model/target-calendar.d.ts +25 -0
- package/dist/model/target-calendar.d.ts.map +1 -0
- package/dist/model/target-calendar.js +56 -0
- package/dist/model/target-calendar.js.map +1 -0
- package/dist/mutation/advance.d.ts.map +1 -1
- package/dist/mutation/advance.js +21 -4
- package/dist/mutation/advance.js.map +1 -1
- package/dist/mutation/gate.d.ts +5 -0
- package/dist/mutation/gate.d.ts.map +1 -0
- package/dist/mutation/gate.js +156 -0
- package/dist/mutation/gate.js.map +1 -0
- package/dist/mutation/milestone.d.ts +10 -1
- package/dist/mutation/milestone.d.ts.map +1 -1
- package/dist/mutation/milestone.js +104 -48
- package/dist/mutation/milestone.js.map +1 -1
- package/dist/mutation/project.d.ts +7 -1
- package/dist/mutation/project.d.ts.map +1 -1
- package/dist/mutation/project.js +32 -19
- package/dist/mutation/project.js.map +1 -1
- package/dist/mutation/resource.js +22 -22
- package/dist/mutation/resource.js.map +1 -1
- package/dist/mutation/target-types.d.ts +42 -0
- package/dist/mutation/target-types.d.ts.map +1 -0
- package/dist/mutation/target-types.js +2 -0
- package/dist/mutation/target-types.js.map +1 -0
- package/dist/mutation/task.d.ts +12 -1
- package/dist/mutation/task.d.ts.map +1 -1
- package/dist/mutation/task.js +148 -89
- package/dist/mutation/task.js.map +1 -1
- package/dist/mutation/types.d.ts +34 -3
- package/dist/mutation/types.d.ts.map +1 -1
- package/dist/parser/document-parser.d.ts +14 -0
- package/dist/parser/document-parser.d.ts.map +1 -1
- package/dist/parser/document-parser.js +159 -55
- package/dist/parser/document-parser.js.map +1 -1
- package/dist/recommendation/override-types.d.ts +2 -2
- package/dist/recommendation/override.d.ts +2 -2
- package/dist/recommendation/override.d.ts.map +1 -1
- package/dist/recommendation/override.js +49 -12
- package/dist/recommendation/override.js.map +1 -1
- package/dist/semantic/target-validator.d.ts +36 -0
- package/dist/semantic/target-validator.d.ts.map +1 -0
- package/dist/semantic/target-validator.js +87 -0
- package/dist/semantic/target-validator.js.map +1 -0
- package/dist/semantic/validator.d.ts +2 -0
- package/dist/semantic/validator.d.ts.map +1 -1
- package/dist/semantic/validator.js +90 -45
- package/dist/semantic/validator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,70 +1,149 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This project records its notable changes here. The format is based on [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/lang/ja/).
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.3.0] - 2026-07-26
|
|
8
|
+
|
|
9
|
+
Contract 4 beta release. This version atomically publishes temporal and
|
|
10
|
+
deadline-aware planning, exact unit migration, and Grammar 3. It intentionally
|
|
11
|
+
changes public result identities and extends the CLI surface while retaining
|
|
12
|
+
suffix-free `0.x.x` beta product maturity.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Added Grammar 2 project `as_of`, milestone `deadline`, and task
|
|
17
|
+
`not_before`/`deadline` fields, plus Grammar 3 exact reduced Fraction
|
|
18
|
+
Durations alongside ordinary Decimals.
|
|
19
|
+
- Added exact release-aware precedence and heuristic resource schedules,
|
|
20
|
+
deterministic calendar projection, and separate task, milestone, and
|
|
21
|
+
project deadline evidence in `Perttool.AnalysisResult.v3`.
|
|
22
|
+
- Added preview-first `project migrate-unit` with complete Duration inventory,
|
|
23
|
+
exact Point/hour/day conversion, Decimal-or-Fraction output, coordinated
|
|
24
|
+
grammar upgrades, velocity disposition, no-op/repeat behavior, qualified
|
|
25
|
+
inverse results, and digest-locked safe writes through
|
|
26
|
+
`Perttool.UnitMigrationResult.v2`.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- Activated CLI Contract 4 through one 28-command registry that drives
|
|
31
|
+
dispatch, option validation, text/JSON help, structured recovery, temporal
|
|
32
|
+
entity mutation, Guide, README, and installed-package behavior.
|
|
33
|
+
- Replaced the public check, project, analysis, and next projections with
|
|
34
|
+
their accepted Contract 4 identities. `Perttool.NextResult.v4` preserves
|
|
35
|
+
Recommendation v1 ranking and adds fail-closed temporal start authority;
|
|
36
|
+
temporal eligibility gates the recommended set without substituting the
|
|
37
|
+
heuristic scheduler's runnable set.
|
|
38
|
+
- Extended the isolated installed-package file-first workflow through Grammar
|
|
39
|
+
3 reads and writes, temporal/deadline analysis, complete NextResult v4,
|
|
40
|
+
forward/repeated/inverse exact migration, and public Core export checks.
|
|
41
|
+
- Promoted the accepted `perttool@0.2.0` Contract 3 beta to npm `latest`
|
|
42
|
+
through a separate, explicitly authorized post-acceptance dist-tag
|
|
43
|
+
operation. Contract 4 publication itself keeps `latest` at `0.2.0`.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- Preserved every Contract 3 `task set --clear` value when adding temporal
|
|
48
|
+
task fields to the Contract 4 descriptor.
|
|
49
|
+
- Preserved Recommendation set authority when its selected task differs from
|
|
50
|
+
the heuristic resource scheduler's first runnable task.
|
|
51
|
+
|
|
52
|
+
## [0.2.0] - 2026-07-25
|
|
53
|
+
|
|
54
|
+
Contract 3 beta release. This version intentionally replaces the Contract 2
|
|
55
|
+
command names and JSON envelope while retaining suffix-free `0.x.x` beta
|
|
56
|
+
product maturity.
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
|
|
60
|
+
- Activated CLI Contract 3 as one breaking source-level cutover: `document
|
|
61
|
+
check|format`, `guide`, and `batch apply` replace the Contract 2 `dsl` and
|
|
62
|
+
`mutation` spellings; every CLI JSON envelope now identifies contract 3;
|
|
63
|
+
command dispatch, validation, and text/JSON help share the active typed
|
|
64
|
+
registry; and obsolete spellings fail with structured usage recovery.
|
|
65
|
+
- Accepted the complete file-first Contract 3 workflow from an isolated
|
|
66
|
+
installed tarball, covering initialization, direct file inspection, every
|
|
67
|
+
project/task/gate/milestone/resource field, analysis, recommendation,
|
|
68
|
+
completion, advance, and final validation without manual `.pert` rewriting.
|
|
69
|
+
- Selected suffix-free beta `0.2.0` as the first Contract 3 package target and
|
|
70
|
+
added a gated release plan that separates local preparation from explicitly
|
|
71
|
+
authorized Git, GitHub, and npm distribution; package, lockfile, and CLI
|
|
72
|
+
identity are prepared as `0.2.0`.
|
|
73
|
+
- Promoted the accepted `perttool@0.1.0` beta to npm `latest` through an explicit post-release dist-tag operation. This changes the default install target without changing beta product maturity.
|
|
74
|
+
- Lowered the source and next-release runtime baseline from Node.js 24 to maintained Node.js 22, with CI coverage for Node.js 22 and 24.
|
|
75
|
+
- Reworked the root README as a user guide with `npx` and `npm exec` examples, and moved repository setup and verification to `docs/development.md`.
|
|
76
|
+
- Recorded the complete English-surface inventory, Unicode allowlist, CLI/LLM surface review, and the structured-help, project-init, and gate-mutation backlog.
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
|
|
80
|
+
- Public `help` command discovery, separate `guide` domain topics,
|
|
81
|
+
preview-first `project init`, and direct source-preserving
|
|
82
|
+
`gate add|set|remove` commands.
|
|
83
|
+
|
|
7
84
|
## [0.1.0] - 2026-07-23
|
|
8
85
|
|
|
9
86
|
First beta release. This suffix-free `0.x.x` series remains prerelease product maturity, permits intentional alpha incompatibility, and publishes through the npm `beta` dist-tag without moving `latest`.
|
|
10
87
|
|
|
11
88
|
### Added
|
|
12
89
|
|
|
13
|
-
- Codex
|
|
14
|
-
-
|
|
15
|
-
-
|
|
90
|
+
- Read-only `agent help`, which exposes offline profiles for Codex, GitHub Copilot, Claude Code, Grok Build, and Antigravity from the same Core as index/quick/detail text/JSON
|
|
91
|
+
- `project show`, which retrieves complete project metadata including velocity as text/JSON; preview-first `project set` for localized updates; and `project.set` for atomic batches
|
|
92
|
+
- An explicit independent post-first-beta backlog for an LSP server, a VSIX with syntax highlighting/LSP client, and an MCP server
|
|
16
93
|
|
|
17
94
|
### Changed
|
|
18
95
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
96
|
+
- Defined the first beta as suffix-free `0.1.0` and subsequent `0.x.x` releases as beta, removing strict compatibility from alpha and additional soak time from the beta gate
|
|
97
|
+
- Added the read-only AI Agent Guidance Registry from Issue #2 to beta acceptance criteria and macro/detail plans
|
|
21
98
|
- Adopted English as the canonical repository language without i18n and added a phased, post-beta migration plan for legacy Japanese surfaces
|
|
22
99
|
|
|
23
100
|
## [0.1.0-alpha.2] - 2026-07-23
|
|
24
101
|
|
|
25
|
-
|
|
102
|
+
Second public development preview. Adds safe editing and advance operations, Mermaid round trips, and explainable task recommendations, and distributes the same artifact to GitHub Releases and npm's `alpha` tag.
|
|
26
103
|
|
|
27
104
|
### Added
|
|
28
105
|
|
|
29
|
-
- `dsl format
|
|
30
|
-
-
|
|
31
|
-
- `exportMermaid` Core
|
|
32
|
-
- `importMermaid` Core
|
|
33
|
-
- canonical keep/remove
|
|
34
|
-
- exact typed
|
|
35
|
-
-
|
|
36
|
-
- feasible
|
|
37
|
-
- complete
|
|
38
|
-
- npm publish normalization
|
|
106
|
+
- `dsl format`; atomic `--write` for task/milestone/resource/batch mutation; exclusive `--out`; and `--expect-digest`
|
|
107
|
+
- Semantic records, integrity digests, fail-closed import design contracts, and normative artifacts for `Perttool.MermaidProfile.v1`
|
|
108
|
+
- `exportMermaid` Core and lossless/plain profiles, analysis annotations, strict loss, and exclusive `--out` for `dag render --to mermaid`
|
|
109
|
+
- `importMermaid` Core and fail-closed profile restoration, plain loss reports, strict loss, and exclusive `--out` for `dag import --from mermaid`
|
|
110
|
+
- Pure `planAdvance` Core guaranteeing canonical keep/remove sets, partial joins, and idempotence, plus preview-first `dag advance` CLI
|
|
111
|
+
- Complete recommendation graph with exact typed facts, comparisons, decision traces, and canonical descriptions, plus the public `NextResultV3` Core type
|
|
112
|
+
- Recommendation shadow gate and golden tests that inspect the v3 contract, byte determinism, operational compatibility, and structured why-not across five self-use plans
|
|
113
|
+
- Read-only `validateOverride` Core returning feasible replacements, `PTOVR-101` through `PTOVR-106`, caller-asserted human reasons, normal-trace references, and deterministic `Perttool.OverrideDecision.v1`
|
|
114
|
+
- Shared instructions, help, and unknown-version safe-stop dry run that adopt complete, known `NextResult.v3` as the normal AI task-selection authority
|
|
115
|
+
- Package preflight that checks npm publish normalization, a maintainer script that fail-closed publishes the identical tarball, and fixed `alpha` dist-tag
|
|
39
116
|
|
|
40
117
|
### Changed
|
|
41
118
|
|
|
42
|
-
-
|
|
43
|
-
-
|
|
119
|
+
- Changed the default `dag next` JSON from `Perttool.NextResult.v2` to `Perttool.NextResult.v3` as a pre-release breaking change, publishing Core, CLI JSON/text, help, and package atomically
|
|
120
|
+
- Corrected `bin.perttool` to canonical `dist/cli.js` so npm does not remove the CLI entry point
|
|
44
121
|
|
|
45
122
|
## [0.1.0-alpha.1] - 2026-07-21
|
|
46
123
|
|
|
47
|
-
|
|
124
|
+
First public development preview. Intended to evaluate the DSL and CLI, read-only plan checking and analysis, and next-task selection. It is not a stable MVP and may include incompatible changes.
|
|
48
125
|
|
|
49
126
|
### Added
|
|
50
127
|
|
|
51
|
-
- Activity-on-Arrow DSL
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- `active
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
- `npm link
|
|
128
|
+
- Activity-on-Arrow DSL parser, semantic/graph validation, and multiple-error recovery
|
|
129
|
+
- PERT/CPM precedence analysis and critical-path enumeration using exact Rational values
|
|
130
|
+
- Deterministic `parallel-sgs` heuristic schedule handling renewable resource capacity
|
|
131
|
+
- Mechanical determination of `active`, `ready`, `runnable_now`, `blocked_now`, and `upcoming`
|
|
132
|
+
- Day/hour forecasts from point estimates and project-wide velocity
|
|
133
|
+
- Text/JSON CLI, structured help, stable diagnostic codes, and source spans
|
|
134
|
+
- CLI installation through `npm link` and GitHub Release tarballs
|
|
58
135
|
|
|
59
136
|
### Known limitations
|
|
60
137
|
|
|
61
|
-
- `dsl format
|
|
62
|
-
- Mermaid import/export
|
|
63
|
-
-
|
|
64
|
-
- npm registry
|
|
65
|
-
- Node.js 24
|
|
138
|
+
- `dsl format`, task/milestone/resource mutation, and `dag advance` are unimplemented
|
|
139
|
+
- Mermaid import/export is unimplemented
|
|
140
|
+
- The resource schedule is a heuristic with `optimal=false`, not an exact optimum
|
|
141
|
+
- Not published to the npm registry; use the GitHub Release asset
|
|
142
|
+
- Requires Node.js 24 or later
|
|
66
143
|
|
|
67
|
-
[Unreleased]: https://github.com/mako10k/perttool/compare/v0.
|
|
144
|
+
[Unreleased]: https://github.com/mako10k/perttool/compare/v0.3.0...HEAD
|
|
145
|
+
[0.3.0]: https://github.com/mako10k/perttool/compare/v0.2.0...v0.3.0
|
|
146
|
+
[0.2.0]: https://github.com/mako10k/perttool/compare/v0.1.0...v0.2.0
|
|
68
147
|
[0.1.0]: https://github.com/mako10k/perttool/compare/v0.1.0-alpha.2...v0.1.0
|
|
69
148
|
[0.1.0-alpha.2]: https://github.com/mako10k/perttool/compare/v0.1.0-alpha.1...v0.1.0-alpha.2
|
|
70
149
|
[0.1.0-alpha.1]: https://github.com/mako10k/perttool/releases/tag/v0.1.0-alpha.1
|
package/README.md
CHANGED
|
@@ -1,150 +1,245 @@
|
|
|
1
1
|
# perttool
|
|
2
2
|
|
|
3
|
-
PERT
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`0.1.0` is the first beta release. Suffix-free `0.x.x` versions are the beta series, and strict compatibility with the alpha series is not guaranteed. This release includes the read-only AI Agent Guidance Registry from Issue #2.
|
|
8
|
-
|
|
9
|
-
- [要件定義](docs/requirements.md)
|
|
10
|
-
- [基本設計](docs/basic-design.md)
|
|
11
|
-
- [DSL 文法仕様](docs/specs/dsl-grammar.md)
|
|
12
|
-
- [Graph Semantics 仕様](docs/specs/graph-semantics.md)
|
|
13
|
-
- [Analysis 仕様](docs/specs/analysis.md)
|
|
14
|
-
- [Mutation Semantics 仕様](docs/specs/mutation.md)
|
|
15
|
-
- [Mermaid Profile 仕様](docs/specs/mermaid-profile.md)
|
|
16
|
-
- [Recommendation Semantics 仕様](docs/specs/recommendation.md)
|
|
17
|
-
- [Recommendation Ranking Policy 仕様](docs/specs/recommendation-ranking.md)
|
|
18
|
-
- [Recommendation Reason Taxonomy 仕様](docs/specs/recommendation-reasons.md)
|
|
19
|
-
- [Recommendation Structured Explanation 仕様](docs/specs/recommendation-explanation.md)
|
|
20
|
-
- [Recommendation Interface Contract 仕様](docs/specs/recommendation-interface.md)
|
|
21
|
-
- [Recommendation Human Override Contract 仕様](docs/specs/recommendation-override.md)
|
|
22
|
-
- [Recommendation 規範例](docs/examples/recommendation.md)
|
|
23
|
-
- [AI Agent Guidance Registry 仕様](docs/specs/agent-guidance.md)
|
|
24
|
-
- [AI Agent Guidance Registry 規範例](docs/examples/agent-guidance.md)
|
|
25
|
-
- [Mermaid Profile 規範例](docs/examples/mermaid-profile.md)
|
|
26
|
-
- [Recommendation 実装・自己利用migration](docs/process/recommendation-migration.md)
|
|
27
|
-
- [NextResult.v3 consumer migration guide](docs/process/next-v3-consumer-migration.md)
|
|
28
|
-
- [Recommendation 設計受け入れレビュー](docs/process/recommendation-design-review.md)
|
|
29
|
-
- [MVP release readiness監査](docs/process/mvp-release-readiness.md)
|
|
30
|
-
- [Beta versioning ADR](docs/adr/0003-beta-versioning.md)
|
|
31
|
-
- [Beta release手順](docs/process/beta-release.md)
|
|
32
|
-
- [English repository baseline ADR](docs/adr/0004-english-repository-baseline.md)
|
|
33
|
-
- [CLI Interface 仕様](docs/specs/interfaces.md)
|
|
34
|
-
- [Architecture Decision Records](docs/adr/0001-activity-on-arrow.md)
|
|
35
|
-
- [DSL サンプル](docs/examples/README.md)
|
|
36
|
-
- [自己利用計画](docs/process/self-use.md)
|
|
37
|
-
- [MVPからbetaへのmacro計画](plans/mvp.pert)
|
|
38
|
-
- [現在の文法作業計画](plans/grammar.pert)
|
|
39
|
-
- [AI工程制御設計計画](plans/control-plane.pert)
|
|
40
|
-
- [操作系M1-M4実装計画](plans/operations.pert)
|
|
41
|
-
- [Recommendation実装計画](plans/recommendation.pert)
|
|
42
|
-
- [AI Agent Guidance実装計画](plans/agent-guidance.pert)
|
|
43
|
-
- [English baseline migration plan](plans/english-baseline.pert)
|
|
44
|
-
- [AI 開発ガイド](docs/process/ai-development.md)
|
|
45
|
-
|
|
46
|
-
基本方針は次のとおりです。
|
|
47
|
-
|
|
48
|
-
- Activity-on-Arrow とし、タスクを DAG のエッジ、マイルストーンをノードとして扱う
|
|
49
|
-
- 独自 DSL 文書をプロジェクト状態の正本とする
|
|
50
|
-
- PERT/CPM 計算と「次のタスク」の判定を機械的かつ決定的に行う
|
|
51
|
-
- 相対見積り`p`を基準に保持し、明示したproject-wide velocityで`d`または`h`の予測へexact換算する
|
|
52
|
-
- 共有resourceのcapacityから排他実行と並列実行可能数を扱う
|
|
53
|
-
- Mermaid との相互変換、CLI、構造化ヘルプ、AI向けJSON操作導線を同じ共通コア上に提供する
|
|
54
|
-
- MVPはCLIをprimary interfaceとし、LSP server、コードハイライト/LSP clientを持つVSIX、MCP serverは最初のbeta後の独立backlogとして追加する
|
|
55
|
-
- 現行文書は現在と未来を表し、過去は Git 履歴で追跡する
|
|
56
|
-
- parser・check・analyze・next が安定した時点で、文法作業の計画から自己利用を開始する
|
|
3
|
+
`perttool` is a local CLI for keeping PERT/CPM plans in reviewable text files.
|
|
4
|
+
It validates an Activity-on-Arrow plan, calculates precedence and
|
|
5
|
+
resource-constrained schedules, recommends the next task, and applies
|
|
6
|
+
source-preserving changes through preview-first commands.
|
|
57
7
|
|
|
58
|
-
|
|
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`.
|
|
11
|
+
|
|
12
|
+
## Run without installing
|
|
59
13
|
|
|
60
|
-
|
|
14
|
+
Use `npx` for an occasional invocation and select Contract 4 explicitly:
|
|
61
15
|
|
|
62
16
|
```sh
|
|
63
|
-
|
|
64
|
-
perttool --
|
|
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
|
|
65
21
|
```
|
|
66
22
|
|
|
67
|
-
|
|
23
|
+
The equivalent explicit `npm exec` form is:
|
|
68
24
|
|
|
69
25
|
```sh
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
npm
|
|
73
|
-
npm
|
|
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
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`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.
|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
Install the CLI globally when it is used regularly:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
npm install --global perttool@0.3.0
|
|
74
42
|
perttool --version
|
|
75
43
|
```
|
|
76
44
|
|
|
77
|
-
`
|
|
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.
|
|
48
|
+
|
|
49
|
+
## Plan files
|
|
50
|
+
|
|
51
|
+
A `.pert` file is the source of truth and is intended to remain directly
|
|
52
|
+
readable. This temporal plan has one one-day task:
|
|
78
53
|
|
|
79
|
-
|
|
54
|
+
```text
|
|
55
|
+
project EXAMPLE:
|
|
56
|
+
version 2
|
|
57
|
+
title "Example plan"
|
|
58
|
+
as_of 2026-07-26
|
|
59
|
+
duration_unit day
|
|
60
|
+
finish DONE
|
|
80
61
|
|
|
81
|
-
|
|
62
|
+
milestone NOW:
|
|
63
|
+
title "Current frontier"
|
|
64
|
+
state reached
|
|
65
|
+
|
|
66
|
+
milestone DONE:
|
|
67
|
+
title "Done"
|
|
68
|
+
deadline 2026-07-28
|
|
69
|
+
|
|
70
|
+
task WORK NOW -> DONE:
|
|
71
|
+
title "Do the work"
|
|
72
|
+
duration 1d
|
|
73
|
+
not_before 2026-07-26
|
|
74
|
+
deadline 2026-07-27
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Save it as `PLAN.pert`, then inspect it with:
|
|
82
78
|
|
|
83
79
|
```sh
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
perttool document check PLAN.pert
|
|
81
|
+
perttool project show PLAN.pert
|
|
82
|
+
perttool dag analyze PLAN.pert
|
|
83
|
+
perttool dag next PLAN.pert --format json
|
|
86
84
|
```
|
|
87
85
|
|
|
88
|
-
|
|
86
|
+
Task duration can use deterministic `day`, `hour`, or relative `point` units.
|
|
87
|
+
Point plans declare a project-wide velocity such as `20p/10d`. Analysis keeps
|
|
88
|
+
the exact point result and reports the time conversion separately as a velocity
|
|
89
|
+
forecast. Grammar version 3 also accepts an exact Fraction such as `1/3d`;
|
|
90
|
+
versions 1 and 2 continue to accept Decimal duration tokens.
|
|
91
|
+
|
|
92
|
+
## Maintain a plan through the CLI
|
|
93
|
+
|
|
94
|
+
Read the file for its complete human-facing state. Use CLI maintenance commands
|
|
95
|
+
so that each candidate is parsed and semantically checked before it can be
|
|
96
|
+
written. To bootstrap a plan without hand-authoring syntax, preview the
|
|
97
|
+
smallest valid document and then create a new file exclusively:
|
|
89
98
|
|
|
90
99
|
```sh
|
|
91
|
-
|
|
100
|
+
perttool project init EXAMPLE \
|
|
101
|
+
--title "Example plan" \
|
|
102
|
+
--duration-unit day \
|
|
103
|
+
--initial-milestone NOW \
|
|
104
|
+
--initial-milestone-title "Current frontier" \
|
|
105
|
+
--finish NOW
|
|
106
|
+
|
|
107
|
+
perttool project init EXAMPLE \
|
|
108
|
+
--title "Example plan" \
|
|
109
|
+
--duration-unit day \
|
|
110
|
+
--initial-milestone NOW \
|
|
111
|
+
--initial-milestone-title "Current frontier" \
|
|
112
|
+
--finish NOW \
|
|
113
|
+
--out PLAN.pert
|
|
92
114
|
```
|
|
93
115
|
|
|
94
|
-
|
|
116
|
+
For an existing plan:
|
|
95
117
|
|
|
96
118
|
```sh
|
|
97
|
-
|
|
98
|
-
perttool
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
perttool dsl format PLAN.pert --diff
|
|
102
|
-
perttool dsl format PLAN.pert --write --expect-digest "$EXPECTED_DIGEST"
|
|
103
|
-
perttool dsl help syntax estimate --level detail --format json
|
|
104
|
-
perttool dsl help syntax velocity --level detail --format json
|
|
105
|
-
perttool agent help
|
|
106
|
-
perttool agent help codex enforcement --level detail --format json
|
|
119
|
+
# Preview a source-preserving change.
|
|
120
|
+
perttool task set PLAN.pert WORK --status active --diff
|
|
121
|
+
|
|
122
|
+
# Obtain the current digest for optimistic locking.
|
|
107
123
|
perttool project show PLAN.pert --format json
|
|
108
|
-
perttool project set PLAN.pert --velocity 20p/1d --diff
|
|
109
|
-
perttool project set PLAN.pert --velocity 20p/1d --write --expect-digest "$EXPECTED_DIGEST"
|
|
110
|
-
perttool dag analyze docs/examples/point-velocity.pert --format json
|
|
111
|
-
perttool dag analyze docs/examples/parallel.pert
|
|
112
|
-
perttool dag analyze docs/examples/parallel.pert --capacity DEVELOPERS=3 --capacity TEST_ENV=2 --format json
|
|
113
|
-
perttool dag next docs/examples/parallel.pert
|
|
114
|
-
perttool dag next docs/examples/parallel.pert --capacity DEVELOPERS=3 --format json
|
|
115
|
-
perttool dag advance docs/examples/advance-partial-before.pert --diff
|
|
116
|
-
perttool dag advance PLAN.pert --write --expect-digest "$EXPECTED_DIGEST"
|
|
117
|
-
perttool dag render docs/examples/parallel.pert --to mermaid --analysis both
|
|
118
|
-
perttool dag render docs/examples/parallel.pert --to mermaid --analysis resource --capacity TEST_ENV=2 --out parallel.mmd
|
|
119
|
-
perttool dag import parallel.mmd --from mermaid
|
|
120
|
-
perttool dag import parallel.mmd --from mermaid --strict-loss --out parallel.pert
|
|
121
|
-
perttool task set docs/examples/minimal.pert WORK --status active --diff
|
|
122
|
-
perttool task set PLAN.pert WORK --status active --write --expect-digest "$EXPECTED_DIGEST"
|
|
123
|
-
perttool resource set docs/examples/parallel.pert TEST_ENV --capacity 2 --format json
|
|
124
|
-
perttool mutation apply docs/examples/minimal.pert --request changes.json --diff
|
|
125
|
-
perttool mutation apply PLAN.pert --request changes.json --out UPDATED.pert
|
|
126
|
-
```
|
|
127
124
|
|
|
128
|
-
|
|
125
|
+
# Apply the reviewed change atomically.
|
|
126
|
+
perttool task set PLAN.pert WORK \
|
|
127
|
+
--status active \
|
|
128
|
+
--not-before 2026-07-26 \
|
|
129
|
+
--deadline 2026-07-27 \
|
|
130
|
+
--write \
|
|
131
|
+
--expect-digest 'sha256:...'
|
|
132
|
+
|
|
133
|
+
# Finish a task, inspect the new frontier, then remove completed history.
|
|
134
|
+
perttool task finish PLAN.pert WORK --diff
|
|
135
|
+
perttool dag next PLAN.pert --format json
|
|
136
|
+
perttool dag advance PLAN.pert --diff
|
|
137
|
+
```
|
|
129
138
|
|
|
130
|
-
|
|
139
|
+
All formatter and mutation commands preview by default. `--write` replaces the
|
|
140
|
+
input through the safe-write path, while `--out` exclusively creates a new
|
|
141
|
+
file. Gate maintenance uses the same controls:
|
|
131
142
|
|
|
132
|
-
|
|
143
|
+
```sh
|
|
144
|
+
perttool gate add PLAN.pert APPROVAL NOW DONE \
|
|
145
|
+
--reason "Approval required" \
|
|
146
|
+
--diff
|
|
147
|
+
```
|
|
133
148
|
|
|
134
|
-
|
|
149
|
+
Use `batch apply` when several changes must become valid atomically:
|
|
135
150
|
|
|
136
|
-
|
|
151
|
+
```sh
|
|
152
|
+
perttool batch apply PLAN.pert --request changes.json --diff
|
|
153
|
+
perttool batch apply PLAN.pert \
|
|
154
|
+
--request changes.json \
|
|
155
|
+
--write \
|
|
156
|
+
--expect-digest 'sha256:...'
|
|
157
|
+
```
|
|
137
158
|
|
|
138
|
-
|
|
159
|
+
Use the dedicated migration route for exact whole-document conversion between
|
|
160
|
+
Point and time units. Preview before writing; the result inventories every
|
|
161
|
+
converted field and reports grammar upgrades and reversibility:
|
|
139
162
|
|
|
140
|
-
|
|
163
|
+
```sh
|
|
164
|
+
perttool project migrate-unit PLAN.pert --to-unit day --diff
|
|
165
|
+
perttool project migrate-unit PLAN.pert \
|
|
166
|
+
--to-unit day \
|
|
167
|
+
--write \
|
|
168
|
+
--expect-digest 'sha256:...'
|
|
169
|
+
|
|
170
|
+
# A time-to-Point conversion requires an explicit relationship when needed.
|
|
171
|
+
perttool project migrate-unit PLAN.pert \
|
|
172
|
+
--to-unit point \
|
|
173
|
+
--replacement-velocity 20p/10d \
|
|
174
|
+
--diff
|
|
175
|
+
```
|
|
141
176
|
|
|
142
|
-
|
|
177
|
+
Migration is not a `batch apply` member. Re-read and reanalyze the written
|
|
178
|
+
candidate before making a separate mutation.
|
|
179
|
+
|
|
180
|
+
## Command map
|
|
181
|
+
|
|
182
|
+
| Goal | Command |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| Discover commands | `perttool help [resource [action]]` |
|
|
185
|
+
| Read domain guidance | `perttool guide [topic [subtopic]]` |
|
|
186
|
+
| Validate a document | `perttool document check <file>` |
|
|
187
|
+
| Canonically format it | `perttool document format <file>` |
|
|
188
|
+
| Initialize a project | `perttool project init ...` |
|
|
189
|
+
| Read project metadata | `perttool project show <file>` |
|
|
190
|
+
| Change project metadata | `perttool project set <file> ...` |
|
|
191
|
+
| Migrate project units exactly | `perttool project migrate-unit <file> ...` |
|
|
192
|
+
| Analyze schedules | `perttool dag analyze <file>` |
|
|
193
|
+
| Select next work | `perttool dag next <file>` |
|
|
194
|
+
| Remove completed history | `perttool dag advance <file>` |
|
|
195
|
+
| Export or import Mermaid | `perttool dag render`, `perttool dag import` |
|
|
196
|
+
| Maintain tasks | `perttool task add|set|remove|finish` |
|
|
197
|
+
| Maintain gates | `perttool gate add|set|remove` |
|
|
198
|
+
| Maintain milestones | `perttool milestone add|set|remove` |
|
|
199
|
+
| Maintain resources | `perttool resource add|set|remove` |
|
|
200
|
+
| Apply an atomic batch | `perttool batch apply` |
|
|
201
|
+
| Read coding-agent guidance | `perttool agent help` |
|
|
202
|
+
|
|
203
|
+
Run `perttool --help` for the text command catalog. `help` is the complete
|
|
204
|
+
command contract for humans and machine consumers, while `guide` explains
|
|
205
|
+
domain concepts. Both run without a document:
|
|
143
206
|
|
|
144
|
-
|
|
207
|
+
```sh
|
|
208
|
+
perttool task set --help
|
|
209
|
+
perttool help dag next --format json
|
|
210
|
+
perttool guide editing --level detail --format json
|
|
211
|
+
```
|
|
145
212
|
|
|
146
|
-
|
|
213
|
+
## LLM and automation use
|
|
214
|
+
|
|
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
|
|
219
|
+
`recommendation_v1_plus_release_gate` is required. Start only task IDs in
|
|
220
|
+
`temporal.authority.startable_recommended_task_ids`; do not infer start
|
|
221
|
+
authority from the raw recommended set, the text summary, or `ready` alone.
|
|
222
|
+
|
|
223
|
+
Mutation JSON returns the candidate text, unified diff, UTF-16 text edits,
|
|
224
|
+
source digest, updated digest, diagnostics, and write result in one envelope.
|
|
225
|
+
Unknown schema versions, incomplete recommendation traces, `PTREC-*`
|
|
226
|
+
diagnostics, and future or unavailable temporal eligibility must fail closed.
|
|
227
|
+
|
|
228
|
+
## Documentation
|
|
229
|
+
|
|
230
|
+
- [Temporal and Unit Interface Contract (CLI Contract 4)](docs/specs/temporal-unit-interface.md)
|
|
231
|
+
- [CLI Contract 3 compatibility baseline](docs/specs/cli-contract-3.md)
|
|
232
|
+
- [DSL grammar](docs/specs/dsl-grammar.md)
|
|
233
|
+
- [Graph semantics](docs/specs/graph-semantics.md)
|
|
234
|
+
- [Analysis semantics](docs/specs/analysis.md)
|
|
235
|
+
- [Mutation semantics](docs/specs/mutation.md)
|
|
236
|
+
- [Recommendation semantics](docs/specs/recommendation.md)
|
|
237
|
+
- [Examples](docs/examples/README.md)
|
|
238
|
+
- [Developer guide](docs/development.md)
|
|
239
|
+
- [Product backlog](docs/backlog.md)
|
|
147
240
|
|
|
148
241
|
## Security and license
|
|
149
242
|
|
|
150
|
-
|
|
243
|
+
Report vulnerabilities privately according to [SECURITY.md](SECURITY.md).
|
|
244
|
+
perttool is released under the [MIT License](LICENSE). See
|
|
245
|
+
[CHANGELOG.md](CHANGELOG.md) for release changes and known limitations.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { TargetCalendarDifference, TargetTemporalExactValue, TargetTemporalInputProjection } from "../application/target-temporal-input.js";
|
|
2
|
+
import { type CalendarUnavailableCause } from "../model/calendar-arithmetic.js";
|
|
3
|
+
import type { TargetCalendarValue } from "../model/target-calendar.js";
|
|
4
|
+
import type { TargetGrammar3ValidatedDocument } from "../semantic/target-validator.js";
|
|
5
|
+
import type { TemporalPrecedenceSchedule } from "./temporal-precedence.js";
|
|
6
|
+
import type { TemporalResourceSchedule } from "./temporal-resource.js";
|
|
7
|
+
export declare const DEADLINE_EVALUATION_IDENTITY: Readonly<{
|
|
8
|
+
id: "perttool.deadline-evaluation";
|
|
9
|
+
version: 1;
|
|
10
|
+
}>;
|
|
11
|
+
export type DeadlineCause = CalendarUnavailableCause | "complete_actual_time_unavailable" | "release_bound_unavailable" | "precedence_projection_unavailable" | "resource_projection_unavailable" | "margin_unit_unavailable";
|
|
12
|
+
export interface DeadlineUnavailableCause {
|
|
13
|
+
readonly cause: DeadlineCause;
|
|
14
|
+
readonly underlyingCause: string | null;
|
|
15
|
+
readonly subjectKind: "task" | "milestone" | null;
|
|
16
|
+
readonly subjectId: string | null;
|
|
17
|
+
readonly taskId: string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface DeadlineCurrentState {
|
|
20
|
+
readonly state: "not_due" | "due_now" | "overdue" | "not_applicable" | "unavailable";
|
|
21
|
+
readonly signedWindow: TargetCalendarDifference | null;
|
|
22
|
+
readonly baseUnitWindow: TargetTemporalExactValue | null;
|
|
23
|
+
readonly unavailableCauses: readonly DeadlineUnavailableCause[];
|
|
24
|
+
}
|
|
25
|
+
export interface DeadlineView {
|
|
26
|
+
readonly state: "not_applicable" | "unavailable" | "available";
|
|
27
|
+
readonly projectedCompletion: TargetCalendarValue | null;
|
|
28
|
+
readonly forecastRelation: "before_deadline" | "on_deadline" | "after_deadline" | null;
|
|
29
|
+
readonly signedMargin: TargetCalendarDifference | null;
|
|
30
|
+
readonly baseUnitMargin: TargetTemporalExactValue | null;
|
|
31
|
+
readonly remainingMargin: TargetTemporalExactValue | null;
|
|
32
|
+
readonly lateness: TargetTemporalExactValue | null;
|
|
33
|
+
readonly assessment: "lower_bound_on_time" | "lower_bound_late" | "heuristic_on_time" | "heuristic_late" | null;
|
|
34
|
+
readonly optimal: boolean | null;
|
|
35
|
+
readonly conditionalOnBlocksResolved: boolean;
|
|
36
|
+
readonly blockedTaskIds: readonly string[];
|
|
37
|
+
readonly unavailableCauses: readonly DeadlineUnavailableCause[];
|
|
38
|
+
}
|
|
39
|
+
export interface DeadlineEvaluation {
|
|
40
|
+
readonly subject: {
|
|
41
|
+
readonly kind: "task" | "milestone";
|
|
42
|
+
readonly id: string;
|
|
43
|
+
readonly roles: readonly ("task" | "milestone" | "project_finish")[];
|
|
44
|
+
};
|
|
45
|
+
readonly deadline: TargetCalendarValue;
|
|
46
|
+
readonly completionState: "incomplete" | "complete_actual_time_unavailable";
|
|
47
|
+
readonly current: DeadlineCurrentState;
|
|
48
|
+
readonly precedence: DeadlineView;
|
|
49
|
+
readonly resource: DeadlineView;
|
|
50
|
+
readonly combinedAssessment: "overdue" | "forecast_infeasible" | "at_risk" | "forecast_on_time" | "not_proven_late" | "not_applicable" | "unavailable";
|
|
51
|
+
readonly conditionalOnBlocksResolved: boolean;
|
|
52
|
+
readonly blockedTaskIds: readonly string[];
|
|
53
|
+
readonly destinationRelationship: {
|
|
54
|
+
readonly milestoneId: string;
|
|
55
|
+
readonly relation: "task_deadline_before_milestone" | "same_deadline" | "task_deadline_after_milestone" | "unavailable" | "deadline_absent";
|
|
56
|
+
} | null;
|
|
57
|
+
}
|
|
58
|
+
export declare function evaluateTemporalDeadlines(validated: TargetGrammar3ValidatedDocument, inputs: TargetTemporalInputProjection, precedenceSchedule: TemporalPrecedenceSchedule, resourceSchedule: TemporalResourceSchedule): readonly DeadlineEvaluation[];
|
|
59
|
+
//# sourceMappingURL=temporal-deadline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal-deadline.d.ts","sourceRoot":"","sources":["../../src/analysis/temporal-deadline.ts"],"names":[],"mappings":"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"}
|