perttool 0.10.6 → 0.11.1
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 +56 -1
- package/README.md +273 -609
- package/dist/application/cli-facade.d.ts +4 -10
- package/dist/application/cli-facade.d.ts.map +1 -1
- package/dist/application/cli-facade.js +1 -1
- package/dist/application/cli-facade.js.map +1 -1
- package/dist/application/contract10-candidate.d.ts +33 -0
- package/dist/application/contract10-candidate.d.ts.map +1 -0
- package/dist/application/contract10-candidate.js +38 -0
- package/dist/application/contract10-candidate.js.map +1 -0
- package/dist/application/contract10-planning-history.d.ts +4 -0
- package/dist/application/contract10-planning-history.d.ts.map +1 -0
- package/dist/application/contract10-planning-history.js +28 -0
- package/dist/application/contract10-planning-history.js.map +1 -0
- package/dist/application/contract10-planning.d.ts +61 -0
- package/dist/application/contract10-planning.d.ts.map +1 -0
- package/dist/application/contract10-planning.js +165 -0
- package/dist/application/contract10-planning.js.map +1 -0
- package/dist/application/contract10-runtime.d.ts +185 -0
- package/dist/application/contract10-runtime.d.ts.map +1 -0
- package/dist/application/contract10-runtime.js +236 -0
- package/dist/application/contract10-runtime.js.map +1 -0
- package/dist/application/contract8-milestone-acceptance.d.ts +6 -22
- package/dist/application/contract8-milestone-acceptance.d.ts.map +1 -1
- package/dist/application/contract8-milestone-acceptance.js +21 -99
- package/dist/application/contract8-milestone-acceptance.js.map +1 -1
- package/dist/application/contract8-milestone-read.d.ts +25 -0
- package/dist/application/contract8-milestone-read.d.ts.map +1 -0
- package/dist/application/contract8-milestone-read.js +111 -0
- package/dist/application/contract8-milestone-read.js.map +1 -0
- package/dist/application/contract9-assurance-evaluate.d.ts +3 -0
- package/dist/application/contract9-assurance-evaluate.d.ts.map +1 -0
- package/dist/application/contract9-assurance-evaluate.js +75 -0
- package/dist/application/contract9-assurance-evaluate.js.map +1 -0
- package/dist/application/contract9-assurance.d.ts +1 -2
- package/dist/application/contract9-assurance.d.ts.map +1 -1
- package/dist/application/contract9-assurance.js +2 -56
- package/dist/application/contract9-assurance.js.map +1 -1
- package/dist/application/contract9-candidate.d.ts +8 -0
- package/dist/application/contract9-candidate.d.ts.map +1 -1
- package/dist/application/contract9-candidate.js +36 -11
- package/dist/application/contract9-candidate.js.map +1 -1
- package/dist/application/contract9-mixed-mutation.d.ts +3 -0
- package/dist/application/contract9-mixed-mutation.d.ts.map +1 -1
- package/dist/application/contract9-mixed-mutation.js +5 -4
- package/dist/application/contract9-mixed-mutation.js.map +1 -1
- package/dist/application/contract9-temporal.js +1 -1
- package/dist/application/contract9-temporal.js.map +1 -1
- package/dist/application/target-actuals-analysis.d.ts.map +1 -1
- package/dist/application/target-actuals-analysis.js +10 -6
- package/dist/application/target-actuals-analysis.js.map +1 -1
- package/dist/application/target-temporal-analysis.d.ts +1 -0
- package/dist/application/target-temporal-analysis.d.ts.map +1 -1
- package/dist/application/target-temporal-analysis.js +5 -1
- package/dist/application/target-temporal-analysis.js.map +1 -1
- package/dist/cli.js +761 -87
- package/dist/cli.js.map +1 -1
- package/dist/command/contract10-discovery.d.ts +17 -0
- package/dist/command/contract10-discovery.d.ts.map +1 -0
- package/dist/command/contract10-discovery.js +304 -0
- package/dist/command/contract10-discovery.js.map +1 -0
- package/dist/command/contract10-usage.d.ts +24 -0
- package/dist/command/contract10-usage.d.ts.map +1 -0
- package/dist/command/contract10-usage.js +49 -0
- package/dist/command/contract10-usage.js.map +1 -0
- package/dist/core/index.d.ts +11 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/help/assurance-guide.js +1 -1
- package/dist/help/assurance-guide.js.map +1 -1
- package/dist/help/contract10-guide.d.ts +10 -0
- package/dist/help/contract10-guide.d.ts.map +1 -0
- package/dist/help/contract10-guide.js +244 -0
- package/dist/help/contract10-guide.js.map +1 -0
- package/dist/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/milestone-acceptance/advance.d.ts +9 -0
- package/dist/milestone-acceptance/advance.d.ts.map +1 -1
- package/dist/milestone-acceptance/advance.js +29 -2
- package/dist/milestone-acceptance/advance.js.map +1 -1
- package/dist/milestone-acceptance/mutation.d.ts +2 -0
- package/dist/milestone-acceptance/mutation.d.ts.map +1 -1
- package/dist/milestone-acceptance/mutation.js +48 -12
- package/dist/milestone-acceptance/mutation.js.map +1 -1
- package/dist/model/source-result.d.ts +12 -0
- package/dist/model/source-result.d.ts.map +1 -0
- package/dist/model/source-result.js +16 -0
- package/dist/model/source-result.js.map +1 -0
- package/dist/mutation/advance-deletion.d.ts +1 -0
- package/dist/mutation/advance-deletion.d.ts.map +1 -1
- package/dist/mutation/advance-deletion.js +4 -1
- package/dist/mutation/advance-deletion.js.map +1 -1
- package/dist/mutation/validated-source.d.ts +30 -0
- package/dist/mutation/validated-source.d.ts.map +1 -0
- package/dist/mutation/validated-source.js +58 -0
- package/dist/mutation/validated-source.js.map +1 -0
- package/dist/node/planning-token-store.d.ts +3 -0
- package/dist/node/planning-token-store.d.ts.map +1 -0
- package/dist/node/planning-token-store.js +90 -0
- package/dist/node/planning-token-store.js.map +1 -0
- package/dist/parser/document-parser.d.ts +1 -0
- package/dist/parser/document-parser.d.ts.map +1 -1
- package/dist/parser/document-parser.js +1 -1
- package/dist/parser/document-parser.js.map +1 -1
- package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
- package/dist/planning-pool/advance.d.ts +10 -0
- package/dist/planning-pool/advance.d.ts.map +1 -0
- package/dist/planning-pool/advance.js +158 -0
- package/dist/planning-pool/advance.js.map +1 -0
- package/dist/planning-pool/format.d.ts +12 -0
- package/dist/planning-pool/format.d.ts.map +1 -0
- package/dist/planning-pool/format.js +199 -0
- package/dist/planning-pool/format.js.map +1 -0
- package/dist/planning-pool/history-guard.d.ts +19 -0
- package/dist/planning-pool/history-guard.d.ts.map +1 -0
- package/dist/planning-pool/history-guard.js +123 -0
- package/dist/planning-pool/history-guard.js.map +1 -0
- package/dist/planning-pool/history-types.d.ts +174 -0
- package/dist/planning-pool/history-types.d.ts.map +1 -0
- package/dist/planning-pool/history-types.js +2 -0
- package/dist/planning-pool/history-types.js.map +1 -0
- package/dist/planning-pool/history.d.ts +11 -0
- package/dist/planning-pool/history.d.ts.map +1 -0
- package/dist/planning-pool/history.js +977 -0
- package/dist/planning-pool/history.js.map +1 -0
- package/dist/planning-pool/human.d.ts +9 -0
- package/dist/planning-pool/human.d.ts.map +1 -0
- package/dist/planning-pool/human.js +305 -0
- package/dist/planning-pool/human.js.map +1 -0
- package/dist/planning-pool/intent-types.d.ts +76 -0
- package/dist/planning-pool/intent-types.d.ts.map +1 -0
- package/dist/planning-pool/intent-types.js +2 -0
- package/dist/planning-pool/intent-types.js.map +1 -0
- package/dist/planning-pool/intent.d.ts +7 -0
- package/dist/planning-pool/intent.d.ts.map +1 -0
- package/dist/planning-pool/intent.js +590 -0
- package/dist/planning-pool/intent.js.map +1 -0
- package/dist/planning-pool/observation-types.d.ts +143 -0
- package/dist/planning-pool/observation-types.d.ts.map +1 -0
- package/dist/planning-pool/observation-types.js +2 -0
- package/dist/planning-pool/observation-types.js.map +1 -0
- package/dist/planning-pool/observation.d.ts +8 -0
- package/dist/planning-pool/observation.d.ts.map +1 -0
- package/dist/planning-pool/observation.js +582 -0
- package/dist/planning-pool/observation.js.map +1 -0
- package/dist/planning-pool/projection.d.ts +28 -0
- package/dist/planning-pool/projection.d.ts.map +1 -0
- package/dist/planning-pool/projection.js +148 -0
- package/dist/planning-pool/projection.js.map +1 -0
- package/dist/planning-pool/public-core.d.ts +32 -0
- package/dist/planning-pool/public-core.d.ts.map +1 -0
- package/dist/planning-pool/public-core.js +122 -0
- package/dist/planning-pool/public-core.js.map +1 -0
- package/dist/planning-pool/reshape-normalize.d.ts +15 -0
- package/dist/planning-pool/reshape-normalize.d.ts.map +1 -0
- package/dist/planning-pool/reshape-normalize.js +688 -0
- package/dist/planning-pool/reshape-normalize.js.map +1 -0
- package/dist/planning-pool/reshape-token.d.ts +20 -0
- package/dist/planning-pool/reshape-token.d.ts.map +1 -0
- package/dist/planning-pool/reshape-token.js +193 -0
- package/dist/planning-pool/reshape-token.js.map +1 -0
- package/dist/planning-pool/reshape-types.d.ts +183 -0
- package/dist/planning-pool/reshape-types.d.ts.map +1 -0
- package/dist/planning-pool/reshape-types.js +2 -0
- package/dist/planning-pool/reshape-types.js.map +1 -0
- package/dist/planning-pool/reshape.d.ts +13 -0
- package/dist/planning-pool/reshape.d.ts.map +1 -0
- package/dist/planning-pool/reshape.js +1434 -0
- package/dist/planning-pool/reshape.js.map +1 -0
- package/dist/planning-pool/source-lexical.d.ts +30 -0
- package/dist/planning-pool/source-lexical.d.ts.map +1 -0
- package/dist/planning-pool/source-lexical.js +158 -0
- package/dist/planning-pool/source-lexical.js.map +1 -0
- package/dist/planning-pool/source-types.d.ts +169 -0
- package/dist/planning-pool/source-types.d.ts.map +1 -0
- package/dist/planning-pool/source-types.js +2 -0
- package/dist/planning-pool/source-types.js.map +1 -0
- package/dist/planning-pool/source-values.d.ts +16 -0
- package/dist/planning-pool/source-values.d.ts.map +1 -0
- package/dist/planning-pool/source-values.js +120 -0
- package/dist/planning-pool/source-values.js.map +1 -0
- package/dist/planning-pool/source.d.ts +18 -0
- package/dist/planning-pool/source.d.ts.map +1 -0
- package/dist/planning-pool/source.js +811 -0
- package/dist/planning-pool/source.js.map +1 -0
- package/dist/planning-pool/window-types.d.ts +133 -0
- package/dist/planning-pool/window-types.d.ts.map +1 -0
- package/dist/planning-pool/window-types.js +2 -0
- package/dist/planning-pool/window-types.js.map +1 -0
- package/dist/planning-pool/window.d.ts +6 -0
- package/dist/planning-pool/window.d.ts.map +1 -0
- package/dist/planning-pool/window.js +625 -0
- package/dist/planning-pool/window.js.map +1 -0
- package/dist/schema/registry.d.ts +1 -1
- package/dist/schema/registry.d.ts.map +1 -1
- package/dist/schema/registry.js +17 -3
- package/dist/schema/registry.js.map +1 -1
- package/dist/temporal-schedule/format.d.ts.map +1 -1
- package/dist/temporal-schedule/format.js +4 -54
- package/dist/temporal-schedule/format.js.map +1 -1
- package/dist/temporal-schedule/source-lexical.d.ts +9 -0
- package/dist/temporal-schedule/source-lexical.d.ts.map +1 -1
- package/dist/temporal-schedule/source-lexical.js +21 -10
- package/dist/temporal-schedule/source-lexical.js.map +1 -1
- package/dist/temporal-schedule/source.d.ts.map +1 -1
- package/dist/temporal-schedule/source.js +3 -13
- package/dist/temporal-schedule/source.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/schemas/{Perttool.AdvanceResult.v3.schema.json → Perttool.AdvanceResult.v4.schema.json} +42 -4
- package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +1 -1
- package/schemas/Perttool.AnalysisResult.v7.schema.json +1 -1
- package/schemas/Perttool.CheckResult.v6.schema.json +1 -1
- package/schemas/Perttool.CliError.v1.schema.json +1 -1
- package/schemas/Perttool.CommandHelpResult.v1.schema.json +2 -2
- package/schemas/Perttool.ExportResult.v1.schema.json +1 -1
- package/schemas/Perttool.FormatResult.v1.schema.json +1 -1
- package/schemas/Perttool.GuideResult.v1.schema.json +1 -1
- package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +1 -1
- package/schemas/Perttool.ImportResult.v1.schema.json +1 -1
- package/schemas/Perttool.InitResult.v1.schema.json +1 -1
- package/schemas/Perttool.MilestoneAcceptanceMigrationResult.v1.schema.json +1 -1
- package/schemas/Perttool.MilestoneAcceptanceResult.v1.schema.json +1 -1
- package/schemas/Perttool.MutationResult.v6.schema.json +1 -1
- package/schemas/Perttool.NextResult.v8.schema.json +7 -4
- package/schemas/Perttool.PlanAssuranceResult.v2.schema.json +1 -1
- package/schemas/Perttool.PlanningMutationResult.v1.schema.json +567 -0
- package/schemas/Perttool.PlanningObservationRequest.v1.schema.json +6 -0
- package/schemas/Perttool.PlanningPoolResult.v1.schema.json +469 -0
- package/schemas/Perttool.PlanningReshapePreflightResult.v1.schema.json +906 -0
- package/schemas/Perttool.PlanningReshapeRequest.v1.schema.json +19 -0
- package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +1 -1
- package/schemas/Perttool.ProjectResult.v5.schema.json +1 -1
- package/schemas/Perttool.SchemaResult.v1.schema.json +1 -1
- package/schemas/{Perttool.UnitMigrationResult.v4.schema.json → Perttool.UnitMigrationResult.v5.schema.json} +42 -17
- package/schemas/Perttool.VelocityObservationResult.v1.schema.json +1 -1
- package/schemas/Perttool.WindowMutationRequest.v1.schema.json +6 -0
package/README.md
CHANGED
|
@@ -1,241 +1,44 @@
|
|
|
1
1
|
# perttool
|
|
2
2
|
|
|
3
|
-
`perttool` is a local
|
|
4
|
-
It validates
|
|
5
|
-
resource-constrained schedules, recommends the next task, and
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Version `0.6.0` 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. It adds
|
|
11
|
-
complete Draft 2020-12 artifacts for every active Contract 6 result and the
|
|
12
|
-
public OverrideDecision result, selectable full and outline schema views,
|
|
13
|
-
Git 2.54 UTC compatibility, and scope-bound human-readable confirmation
|
|
14
|
-
guidance. It warns when an owner-confirmation assertion is supplied for a
|
|
15
|
-
governance-not-applicable candidate and when a governed preview already
|
|
16
|
-
carries one. It also protects destructive in-place `dag advance` writes with
|
|
17
|
-
exact `HEAD` and stage-0 evidence, returns `Perttool.AdvanceResult.v1`, and
|
|
18
|
-
keeps preview, separate output, and written candidates repository-clean and
|
|
19
|
-
byte-identical. It remains available as the exact Contract 6 compatibility
|
|
20
|
-
pin `perttool@0.6.0`.
|
|
21
|
-
Beta releases may contain breaking CLI or schema changes.
|
|
22
|
-
|
|
23
|
-
Version `0.7.0` beta atomically activates Grammar 6 and CLI Contract 7
|
|
24
|
-
conditional plan assurance. It exposes 44 commands, 20 root schemas,
|
|
25
|
-
`Perttool.PlanAssuranceResult.v1`, assurance-aware Check/Project/Analysis/Next/
|
|
26
|
-
Mutation/Advance results, `Perttool.GovernanceDecision.v2`, and Mermaid
|
|
27
|
-
semantic profile 2. Its package and CLI identity is `0.7.0`. At its publication
|
|
28
|
-
boundary, this release does not move npm `latest` from Contract 6 `0.6.0`;
|
|
29
|
-
one separately authorized post-publication operation later made
|
|
30
|
-
`beta=latest=0.7.0`. These Contract 6 and Contract 7 releases require Node.js
|
|
31
|
-
22 or later.
|
|
32
|
-
Version `0.7.1` is a backward-compatible Contract 7 patch that corrects the
|
|
33
|
-
installed Guide, command Help examples, and diagnostic navigation. It retains
|
|
34
|
-
all 44 command paths, 20 root schemas, result and payload identities,
|
|
35
|
-
package-root exports, and authority policies. Its beta publication does not
|
|
36
|
-
move npm `latest`; one separately authorized post-publication operation later
|
|
37
|
-
made `beta=latest=0.7.1`. Version `0.7.0` remains the exact rollback pin.
|
|
38
|
-
The complete-schema Contract 6 artifact remains available by pinning `0.5.2`,
|
|
39
|
-
and the first machine-schema Contract 6 artifact remains available by pinning
|
|
40
|
-
`0.5.1`; Contract 5, Contract 4, and Contract 3 remain available by pinning
|
|
41
|
-
`0.4.0`, `0.3.0`, and `0.2.0`, respectively. npm has no maintained `alpha`
|
|
42
|
-
dist-tag; historical `0.1.0-alpha.2` remains available by exact pin.
|
|
43
|
-
|
|
44
|
-
Version `0.8.0` adds the public `perttool/core` and `perttool/node` subpaths,
|
|
45
|
-
the read-only `dag history` command, `Perttool.HistoricalGraphResult.v1`, and
|
|
46
|
-
the declaration-identity correction without changing Grammar 6 or CLI
|
|
47
|
-
Contract 7. It exposes 45 commands, 21 root schemas, 122 reference-identical
|
|
48
|
-
root and Node runtime exports, and 45 portable Core runtime exports. Its beta
|
|
49
|
-
publication moved only npm `beta` and left independently managed
|
|
50
|
-
`latest=0.7.1`; one separately authorized post-acceptance operation later made
|
|
51
|
-
`beta=latest=0.8.0`. Use `0.7.1` as the exact rollback pin.
|
|
52
|
-
The repository-only VSIX also adds separately negotiated historical snapshot,
|
|
53
|
-
proved-lineage, and timeline views for trusted local Git workspaces plus
|
|
54
|
-
verified read-only immutable source navigation. Those adapter results are not
|
|
55
|
-
CLI schemas or public package exports, and no public VSIX release is selected.
|
|
56
|
-
The private DAG presentation additionally bundles a deterministic left-to-right
|
|
57
|
-
Dagre layout, one-step historical defaults, bounded zoom/fit/scroll/pan, and a
|
|
58
|
-
separately negotiated exact current-frontier and NextResult v6 start-authority
|
|
59
|
-
focus result. Compact `Mnn`/`Tnn`/`Gnn` graph labels link to original-identity
|
|
60
|
-
details, and exact residual, resource-remaining, and task-time summaries keep
|
|
61
|
-
qualified Point forecasts distinct. Layout never becomes project semantics.
|
|
62
|
-
|
|
63
|
-
Version `0.8.1` is a backward-compatible Contract 7 patch for `dag advance`.
|
|
64
|
-
It preserves assurance frontier receipts when all terminal work events belong
|
|
65
|
-
to removed tasks, while retaining the `0.8.0` command, schema, package-export,
|
|
66
|
-
and authority boundaries. It remains available by exact pin; use `0.8.0` as
|
|
67
|
-
the prior Contract 7 rollback pin.
|
|
68
|
-
|
|
69
|
-
Version `0.9.0` is the published Grammar 7 and CLI Contract 8
|
|
70
|
-
milestone-acceptance beta. It exposes 53
|
|
71
|
-
commands, 23 root schemas, 129 root and Node runtime exports,
|
|
72
|
-
`Perttool.CheckResult.v5`,
|
|
73
|
-
`Perttool.AnalysisResult.v6`, `Perttool.NextResult.v7`,
|
|
74
|
-
`Perttool.MutationResult.v5`, `Perttool.AdvanceResult.v3`, committed migration,
|
|
75
|
-
criterion-set replacement, caller-asserted receipts, and acceptance-aware
|
|
76
|
-
canonical advance. Its accepted release commit, annotated tag, GitHub
|
|
77
|
-
prerelease, and npm artifact agree, and npm reports the pre-publication
|
|
78
|
-
baseline `latest=beta=0.10.4` with no `alpha`. Version `0.10.0` is the
|
|
79
|
-
published Grammar 8 and CLI Contract 9 beta. The compatible `0.10.5` Issue #23
|
|
80
|
-
assurance-recovery patch is published. Source is prepared for the
|
|
81
|
-
compatible `0.10.6` Issue #36 milestone-acceptance delegate patch. Version
|
|
82
|
-
`0.8.1` remains the
|
|
83
|
-
exact Grammar 6 and CLI Contract 7 rollback pin.
|
|
84
|
-
|
|
85
|
-
Version `0.9.1` is the durably accepted compatible Contract 8 patch for
|
|
86
|
-
`ACT-003` and GitHub Issue #8. It makes declared velocity observation use the
|
|
87
|
-
exact current operand, including a just-written uncommitted finish, while
|
|
88
|
-
keeping Git-recorded evidence bound to the selected first-parent revision. It
|
|
89
|
-
retains all 53 commands, 23 root schemas, 129 root and Node exports, 45 Core
|
|
90
|
-
exports, result and schema identities, and authority. Release commit, peeled
|
|
91
|
-
tag, GitHub prerelease, npm artifact, and installed regression agree; Issue #8
|
|
92
|
-
is closed.
|
|
93
|
-
|
|
94
|
-
Version `0.9.2` is the durably accepted compatible Contract 8 emergency patch
|
|
95
|
-
for `ANALYSIS-001` and GitHub Issue #15. It keeps valid Point plans without a
|
|
96
|
-
declared velocity Point-valued through `dag analyze` and `dag next`, leaves
|
|
97
|
-
velocity forecasts null, and reports calendar conversion as unavailable
|
|
98
|
-
without inventing a rate. It retains all public identities and authority;
|
|
99
|
-
Issue #15 is closed, and `0.9.2` remains the exact rollback pin for `0.9.3`.
|
|
100
|
-
|
|
101
|
-
Version `0.9.3` is the published compatible Contract 8 emergency patch for
|
|
102
|
-
GitHub Issues #14, #16, and #17. It restores Grammar 7 `plan-assurance
|
|
103
|
-
show|hash`, composes acceptance-aware terminal deletions without weakening the
|
|
104
|
-
shared edit guard, and preserves complete criterion-set/receipt evidence for
|
|
105
|
-
retained reached milestones. It retains all public identities and authority.
|
|
106
|
-
The accepted release commit, annotated tag, GitHub prerelease, and npm
|
|
107
|
-
artifact agree; at its publication npm reported `beta=0.9.3`,
|
|
108
|
-
`latest=0.9.0`, and no `alpha`.
|
|
109
|
-
Issues #14, #16, and #17 are closed with release evidence. Plan advance,
|
|
110
|
-
public VSIX publication, and unrelated work remain separate.
|
|
111
|
-
|
|
112
|
-
Version `0.9.4` is the compatible Contract 8 emergency patch for GitHub Issue
|
|
113
|
-
#19. It is published and preserves criterion sets and receipts for every milestone retained by
|
|
114
|
-
`dag advance`, validates the complete final candidate before history or
|
|
115
|
-
persistence decisions, and projects deterministic candidate diagnostics. It
|
|
116
|
-
also makes pinned jscpd duplicate and Lizard complexity ratchets part of the
|
|
117
|
-
repository and CI static-analysis gate. Grammar 7, CLI Contract 8, all 53
|
|
118
|
-
commands, 23 root schemas, 129 root and Node exports, 45 Core exports, public
|
|
119
|
-
authority, and force semantics remain unchanged. Its release commit, peeled
|
|
120
|
-
tag, Node.js 22 and 24 CI, GitHub prerelease, npm artifact, and common
|
|
121
|
-
SHA-256 `63a12ddf...d6fe53b` agree. npm reports `beta=0.9.4`,
|
|
122
|
-
`latest=0.9.0`, and no `alpha`; Issue #19 is closed with release evidence.
|
|
123
|
-
The completed release plan was migrated with committed provenance, given six
|
|
124
|
-
artifact-bound criteria and receipts, and canonically advanced. Its residual
|
|
125
|
-
retains only accepted reached `RELEASE_094_ACCEPTED` and has no diagnostic or
|
|
126
|
-
task. Version `0.9.3` is the exact rollback pin.
|
|
127
|
-
|
|
128
|
-
The private adapters now project that same Contract 8 acceptance model without
|
|
129
|
-
adding write authority. The LSP negotiates a separate version-bound milestone
|
|
130
|
-
acceptance result, the VSIX presents criteria, blockers, and receipt provenance
|
|
131
|
-
with verified source navigation, and the MCP check, analysis, and Next tools
|
|
132
|
-
retain acceptance in their unchanged wire v1 envelopes. The public npm package
|
|
133
|
-
still excludes all three private adapter workspaces.
|
|
134
|
-
|
|
135
|
-
The complete milestone-acceptance cross-surface gate passes. All milestone criteria and
|
|
136
|
-
receipts were separately owner-confirmed, and the completed plan was
|
|
137
|
-
canonically advanced from its committed pre-advance snapshot. The residual
|
|
138
|
-
plan has no diagnostics, remaining task, recommendation, or startable task.
|
|
139
|
-
Candidate acceptance, publication, and remote writes remain separate.
|
|
140
|
-
|
|
141
|
-
## Run without installing
|
|
142
|
-
|
|
143
|
-
After beta publication, use `npx` for an occasional Contract 8 invocation and
|
|
144
|
-
select the version explicitly:
|
|
3
|
+
`perttool` is a local command-line tool for keeping PERT/CPM plans in
|
|
4
|
+
reviewable text files. It validates plans, calculates precedence and
|
|
5
|
+
resource-constrained schedules, recommends the next task, and previews every
|
|
6
|
+
change before writing it.
|
|
145
7
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
npx --yes --package=perttool@0.9.4 -- perttool plan-assurance show PLAN.pert --format json
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
The equivalent explicit `npm exec` form is:
|
|
154
|
-
|
|
155
|
-
```sh
|
|
156
|
-
npm exec --yes --package=perttool@0.9.4 -- perttool --version
|
|
157
|
-
npm exec --yes --package=perttool@0.9.4 -- perttool document check PLAN.pert
|
|
158
|
-
npm exec --yes --package=perttool@0.9.4 -- perttool dag analyze PLAN.pert
|
|
159
|
-
npm exec --yes --package=perttool@0.9.4 -- perttool plan-assurance hash PLAN.pert WORK --kind contract
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
`npx` and `npm exec` may download the selected package version into the npm
|
|
163
|
-
cache. Pinning `0.6.0` selects Contract 6 and omits Grammar 6 assurance;
|
|
164
|
-
`0.4.0` selects Contract 5, `0.3.0` selects Contract 4, and `0.2.0` selects
|
|
165
|
-
Contract 3.
|
|
8
|
+
The recommended npm `latest` release is `0.10.5`; npm `beta` is `0.11.1` with
|
|
9
|
+
Grammar 9 and CLI Contract 10 for the Work-centered Planning Pool. Both require
|
|
10
|
+
Node.js 22 or later. Exact `0.10.6` remains the compatible Grammar 8 and CLI
|
|
11
|
+
Contract 9 rollback pin that includes the Issue #36 correction.
|
|
166
12
|
|
|
167
13
|
## Install
|
|
168
14
|
|
|
169
|
-
Install the
|
|
170
|
-
regularly:
|
|
15
|
+
Install the current release for your user-managed Node.js environment:
|
|
171
16
|
|
|
172
17
|
```sh
|
|
173
|
-
npm install --global perttool@
|
|
18
|
+
npm install --global perttool@latest
|
|
174
19
|
perttool --version
|
|
175
20
|
```
|
|
176
21
|
|
|
177
|
-
|
|
178
|
-
`0.9.4` publication changes only npm `beta`; until an independent promotion is
|
|
179
|
-
authorized, an unqualified global installation continues to select `0.9.0`.
|
|
180
|
-
The exact `0.9.4` pin is the reproducible form for the Issue #19 correction.
|
|
181
|
-
Version `0.9.3` remains the rollback pin for the Issues #14, #16, and #17
|
|
182
|
-
corrections.
|
|
183
|
-
Contract 6 remains available by exact pinning `perttool@0.6.0`; the pre-schema
|
|
184
|
-
Contract 6 artifact remains available as
|
|
185
|
-
`perttool@0.5.0`. Contract 5,
|
|
186
|
-
Contract 4, and Contract 3 remain available as exact pins
|
|
187
|
-
`perttool@0.4.0`, `perttool@0.3.0`, and `perttool@0.2.0`. The retired alpha
|
|
188
|
-
preview remains installable only as the exact pin
|
|
189
|
-
`perttool@0.1.0-alpha.2`.
|
|
190
|
-
|
|
191
|
-
## Library subpaths in `0.8.0`
|
|
192
|
-
|
|
193
|
-
Version `0.8.0` provides two additive library boundaries:
|
|
194
|
-
|
|
195
|
-
```js
|
|
196
|
-
import {
|
|
197
|
-
analyzeDocumentSnapshot,
|
|
198
|
-
createDocumentSession,
|
|
199
|
-
createDocumentSnapshot,
|
|
200
|
-
documentOffsetToPosition,
|
|
201
|
-
documentPositionToOffset,
|
|
202
|
-
formatDocument,
|
|
203
|
-
getGuide,
|
|
204
|
-
parseDocument,
|
|
205
|
-
validateDocument,
|
|
206
|
-
} from "perttool/core";
|
|
207
|
-
import {
|
|
208
|
-
getJsonSchemaCatalog,
|
|
209
|
-
readDocumentFile,
|
|
210
|
-
} from "perttool/node";
|
|
211
|
-
```
|
|
22
|
+
Run it without installing:
|
|
212
23
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
cancellation-safe caches without filesystem or editor access. The caller
|
|
218
|
-
supplies the SHA-256 function. Its runtime closure has no Node builtin or
|
|
219
|
-
external package. `perttool/node` exposes the same 122 runtime values as the
|
|
220
|
-
existing `perttool` root, including file, schema, Git, hashing, and safe-write
|
|
221
|
-
APIs that still require Node.js 22 or later. Bundled JSON artifacts remain
|
|
222
|
-
available through `perttool/schemas/<schema-id>.schema.json`.
|
|
24
|
+
```sh
|
|
25
|
+
npx --yes --package=perttool@latest -- perttool --version
|
|
26
|
+
npx --yes --package=perttool@latest -- perttool document check PLAN.pert
|
|
27
|
+
```
|
|
223
28
|
|
|
224
|
-
|
|
225
|
-
[
|
|
226
|
-
|
|
227
|
-
[Document Session Core](docs/specs/document-session.md).
|
|
29
|
+
Use an exact version such as `perttool@0.11.1` when reproducibility matters.
|
|
30
|
+
See [CHANGELOG.md](CHANGELOG.md) and the [release records](docs/process/) for
|
|
31
|
+
older releases and rollback pins.
|
|
228
32
|
|
|
229
|
-
##
|
|
33
|
+
## Create your first plan
|
|
230
34
|
|
|
231
|
-
|
|
232
|
-
readable. This temporal plan has one one-day forecast from a one-Point task:
|
|
35
|
+
You can author the current canonical structure directly:
|
|
233
36
|
|
|
234
|
-
```
|
|
37
|
+
```pert
|
|
235
38
|
project EXAMPLE:
|
|
236
|
-
version
|
|
39
|
+
version 9
|
|
237
40
|
title "Example plan"
|
|
238
|
-
as_of 2026-
|
|
41
|
+
as_of 2026-08-21
|
|
239
42
|
duration_unit point
|
|
240
43
|
velocity 1p/1d
|
|
241
44
|
finish DONE
|
|
@@ -245,51 +48,24 @@ milestone NOW:
|
|
|
245
48
|
state reached
|
|
246
49
|
|
|
247
50
|
milestone DONE:
|
|
248
|
-
title "
|
|
249
|
-
deadline 2026-07-28
|
|
51
|
+
title "Work completed"
|
|
250
52
|
|
|
251
53
|
task WORK NOW -> DONE:
|
|
252
54
|
title "Do the work"
|
|
253
55
|
duration 1p
|
|
254
|
-
|
|
255
|
-
deadline 2026-07-27
|
|
56
|
+
status planned
|
|
256
57
|
```
|
|
257
58
|
|
|
258
|
-
Save it as `PLAN.pert`, then
|
|
59
|
+
Save it as `PLAN.pert`, then validate and canonically format it:
|
|
259
60
|
|
|
260
61
|
```sh
|
|
261
62
|
perttool document check PLAN.pert
|
|
262
|
-
perttool
|
|
263
|
-
perttool dag analyze PLAN.pert
|
|
264
|
-
perttool dag next PLAN.pert --format json
|
|
63
|
+
perttool document format PLAN.pert --diff
|
|
265
64
|
```
|
|
266
65
|
|
|
267
|
-
|
|
268
|
-
project-wide velocity such as `20p/10d`; analysis then keeps the exact Point
|
|
269
|
-
result and reports the time conversion separately as a velocity forecast.
|
|
270
|
-
Without velocity, Point analysis remains available without a time forecast.
|
|
271
|
-
The compatible `day` and `hour` units are deprecated and emit `PTSEM-114` with
|
|
272
|
-
`project migrate-unit --to-unit point` guidance. Grammar version 3 also accepts
|
|
273
|
-
an exact Fraction such as `1/3p`;
|
|
274
|
-
versions 1 and 2 continue to accept Decimal duration tokens. Grammar version 5
|
|
275
|
-
adds explicit task-owned work events and the `suspended` lifecycle state.
|
|
276
|
-
Grammar version 6 adds conditional plan assurance records and the separate
|
|
277
|
-
planning-dependency modes `both`, `execution_only`, and `planning_only`.
|
|
278
|
-
|
|
279
|
-
## Maintain a plan through the CLI
|
|
280
|
-
|
|
281
|
-
Read the file for its complete human-facing state. Use CLI maintenance commands
|
|
282
|
-
so that each candidate is parsed and semantically checked before it can be
|
|
283
|
-
written. To bootstrap a plan without hand-authoring syntax, preview the
|
|
284
|
-
smallest valid document and then create a new file exclusively:
|
|
66
|
+
Alternatively, `project init` can create the smallest valid starter file:
|
|
285
67
|
|
|
286
68
|
```sh
|
|
287
|
-
perttool project init EXAMPLE \
|
|
288
|
-
--title "Example plan" \
|
|
289
|
-
--initial-milestone NOW \
|
|
290
|
-
--initial-milestone-title "Current frontier" \
|
|
291
|
-
--finish NOW
|
|
292
|
-
|
|
293
69
|
perttool project init EXAMPLE \
|
|
294
70
|
--title "Example plan" \
|
|
295
71
|
--initial-milestone NOW \
|
|
@@ -298,445 +74,333 @@ perttool project init EXAMPLE \
|
|
|
298
74
|
--out PLAN.pert
|
|
299
75
|
```
|
|
300
76
|
|
|
301
|
-
For an existing plan
|
|
77
|
+
For an existing plan, preview a change, read the current source digest, and
|
|
78
|
+
repeat the reviewed command with `--write` and `--expect-digest`:
|
|
302
79
|
|
|
303
80
|
```sh
|
|
304
|
-
# Preview a source-preserving change.
|
|
305
81
|
perttool task set PLAN.pert WORK --status active --diff
|
|
306
|
-
|
|
307
|
-
# Obtain the current digest for optimistic locking.
|
|
308
82
|
perttool project show PLAN.pert --format json
|
|
309
83
|
|
|
310
|
-
# Apply the reviewed change atomically.
|
|
311
84
|
perttool task set PLAN.pert WORK \
|
|
312
85
|
--status active \
|
|
313
|
-
--not-before 2026-07-26 \
|
|
314
|
-
--deadline 2026-07-27 \
|
|
315
86
|
--write \
|
|
316
87
|
--expect-digest 'sha256:...'
|
|
88
|
+
```
|
|
317
89
|
|
|
318
|
-
|
|
319
|
-
|
|
90
|
+
`--out` creates a new file exclusively. `--write` atomically replaces the
|
|
91
|
+
input only when the supplied digest still matches. Existing files are never
|
|
92
|
+
silently overwritten.
|
|
93
|
+
|
|
94
|
+
## Inspect and schedule a plan
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
perttool document check PLAN.pert
|
|
98
|
+
perttool project show PLAN.pert
|
|
99
|
+
perttool dag analyze PLAN.pert
|
|
100
|
+
perttool dag next PLAN.pert
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Use JSON for scripts and agents:
|
|
104
|
+
|
|
105
|
+
```sh
|
|
320
106
|
perttool dag next PLAN.pert --format json
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Only `temporal.authority.startable_recommended_task_ids` grants new-start
|
|
110
|
+
authority. Every ID in that set is also in `groups.runnable_now`; a raw
|
|
111
|
+
recommendation outside that group is informational and non-executable in the
|
|
112
|
+
current result. Do not treat a raw recommendation or a ready task as
|
|
113
|
+
equivalent to permission to start it.
|
|
114
|
+
|
|
115
|
+
Task estimates use Point values by default. A plan can declare a velocity such
|
|
116
|
+
as `20p/10d` to add time forecasts. Point analysis still works when no velocity
|
|
117
|
+
is declared; only the time forecast is unavailable.
|
|
118
|
+
|
|
119
|
+
## Update work safely
|
|
120
|
+
|
|
121
|
+
Mutation commands preview by default:
|
|
122
|
+
|
|
123
|
+
```sh
|
|
124
|
+
perttool task set PLAN.pert WORK --status active --diff
|
|
125
|
+
perttool task finish PLAN.pert WORK --diff
|
|
321
126
|
perttool dag advance PLAN.pert --diff
|
|
322
|
-
perttool dag advance PLAN.pert \
|
|
323
|
-
--write \
|
|
324
|
-
--expect-digest 'sha256:...'
|
|
325
127
|
```
|
|
326
128
|
|
|
327
|
-
|
|
328
|
-
input through the safe-write path, while `--out` exclusively creates a new
|
|
329
|
-
file. A changed in-place `dag advance` additionally verifies removed or
|
|
330
|
-
replaced entity ranges against the target path in Git `HEAD` and the stage-0
|
|
331
|
-
index. Dirty ranges retained by the candidate are allowed; uncommitted
|
|
332
|
-
destructive overlap or unavailable proof returns `PTADV-101` without writing.
|
|
333
|
-
`Perttool.AdvanceResult.v3.history_guard` reports the status, modification
|
|
334
|
-
time, byte sizes, diff counts, and affected IDs before supplemental digests.
|
|
335
|
-
If the source, `HEAD`, or stage-0 index changes after assessment, `PTADV-102`
|
|
336
|
-
returns exit 5 without writing.
|
|
337
|
-
The exceptional `--force-history-loss` option bypasses only that initial
|
|
338
|
-
history block for the exact in-place request, emits `PTADV-103`, and does not
|
|
339
|
-
bypass governance, warnings-as-errors, expected digests, source/`HEAD`/index
|
|
340
|
-
rechecks, or atomic-write validation.
|
|
341
|
-
For a terminal sequence of removed tasks and task-owned work events, the same
|
|
342
|
-
candidate also removes only its newly orphaned blank separator prefixes. The
|
|
343
|
-
preview, separate output, and in-place write therefore remain byte-identical
|
|
344
|
-
and do not require a formatter or a second whitespace edit before
|
|
345
|
-
`git diff --check`. Consecutive terminal assurance records and work events are
|
|
346
|
-
processed in source order so each separator byte belongs to at most one
|
|
347
|
-
deletion range.
|
|
348
|
-
|
|
349
|
-
Gate maintenance uses the same base controls:
|
|
129
|
+
After review, apply the exact candidate with optimistic locking:
|
|
350
130
|
|
|
351
131
|
```sh
|
|
352
|
-
perttool
|
|
353
|
-
--
|
|
354
|
-
--
|
|
132
|
+
perttool task set PLAN.pert WORK \
|
|
133
|
+
--status active \
|
|
134
|
+
--write \
|
|
135
|
+
--expect-digest 'sha256:...'
|
|
355
136
|
```
|
|
356
137
|
|
|
138
|
+
`dag advance` also protects removed history with Git `HEAD` and index evidence.
|
|
139
|
+
Commit the plan before advancing it. If local changes overlap history that the
|
|
140
|
+
candidate would remove, the command fails without writing. The exceptional
|
|
141
|
+
`--force-history-loss` option bypasses only the initial history-loss block; it
|
|
142
|
+
does not bypass governance, digest, race, or atomic-write checks.
|
|
143
|
+
|
|
357
144
|
Use `batch apply` when several changes must become valid atomically:
|
|
358
145
|
|
|
359
146
|
```sh
|
|
360
147
|
perttool batch apply PLAN.pert --request changes.json --diff
|
|
361
|
-
perttool batch apply PLAN.pert \
|
|
362
|
-
--request changes.json \
|
|
363
|
-
--write \
|
|
364
|
-
--expect-digest 'sha256:...'
|
|
365
148
|
```
|
|
366
149
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
`Perttool.ProjectResult.v2` to `Perttool.ProjectResult.v3`; mutation and
|
|
372
|
-
advance change from `Perttool.MutationResult.v1` to
|
|
373
|
-
`Perttool.MutationResult.v2` and include a
|
|
374
|
-
`Perttool.GovernanceDecision.v1`. Consumers must reject unknown identities
|
|
375
|
-
rather than treating the new fields as optional.
|
|
376
|
-
|
|
377
|
-
Grammar 4 adds declared goal/DAG owners and delegates. Persistent goal or DAG
|
|
378
|
-
changes require `--actor`; an effective owner or delegate has direct
|
|
379
|
-
authority, while another actor supplies repeatable `--accepted-by-owner`
|
|
380
|
-
caller assertions for every affected effective owner. The digest-bound
|
|
381
|
-
pre-change document determines owners and delegates, and an atomic batch must
|
|
382
|
-
satisfy every affected scope. These assertions are not authentication,
|
|
383
|
-
verified identity, signatures, or a durable approval audit.
|
|
384
|
-
|
|
385
|
-
Treat each `--accepted-by-owner` value as a single-candidate, scope-bound
|
|
386
|
-
caller assertion rather than workstream or session authority. First preview
|
|
387
|
-
without it. Omit it when the result reports `governance.applicable=false`.
|
|
388
|
-
Before a non-direct governed write, identify the operation, affected scopes,
|
|
389
|
-
required owners, available modification time, byte size before and after, diff
|
|
390
|
-
counts, and semantic candidate summary. Keep source and candidate digests as
|
|
391
|
-
supplemental machine identity rather than the primary human explanation;
|
|
392
|
-
never copy the assertion to later maintenance, a changed candidate, or the
|
|
393
|
-
next `dag advance`. See the
|
|
394
|
-
[loose assertion scope experiment](docs/process/governance-assertion-scope-experiment.md).
|
|
395
|
-
If a valid candidate is not governance-applicable but still receives an owner
|
|
396
|
-
assertion, `PTGOV-103` makes that likely boilerplate visible. It is a warning
|
|
397
|
-
and does not change default write authority; `--warnings-as-errors` prevents
|
|
398
|
-
the write. If a governed preview already carries an owner assertion,
|
|
399
|
-
`PTGOV-104` directs the caller back to an assertion-free first preview. Its
|
|
400
|
-
default preview still succeeds; `--warnings-as-errors` exits 1 while retaining
|
|
401
|
-
the candidate and governance decision. Persistent governed authority is
|
|
402
|
-
unchanged.
|
|
403
|
-
|
|
404
|
-
Contract 5 previews may still omit actor and owner confirmation. A Contract 4
|
|
405
|
-
runtime fails closed on Grammar 4 and governance options; there is no
|
|
406
|
-
`--cli-contract 4` switch, compatibility alias, or environment toggle. Pin
|
|
407
|
-
`perttool@0.3.0` when a consumer is not ready to migrate. See the
|
|
408
|
-
[Contract 4-to-5 migration guide](docs/process/cli-contract-5-migration.md)
|
|
409
|
-
for the complete boundary.
|
|
410
|
-
|
|
411
|
-
For example, preview and then persist a DAG change as its effective owner:
|
|
150
|
+
## Record actual work
|
|
151
|
+
|
|
152
|
+
Lifecycle commands record explicit event times and can include active time and
|
|
153
|
+
effort:
|
|
412
154
|
|
|
413
155
|
```sh
|
|
414
|
-
perttool
|
|
415
|
-
--
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
--
|
|
420
|
-
|
|
421
|
-
--
|
|
156
|
+
perttool task start PLAN.pert WORK \
|
|
157
|
+
--at 2026-08-21T09:00:00+09:00 --diff
|
|
158
|
+
perttool task suspend PLAN.pert WORK \
|
|
159
|
+
--at 2026-08-21T11:00:00+09:00 --reason "review" --diff
|
|
160
|
+
perttool task resume PLAN.pert WORK \
|
|
161
|
+
--at 2026-08-21T12:00:00+09:00 --diff
|
|
162
|
+
perttool task finish PLAN.pert WORK \
|
|
163
|
+
--at 2026-08-21T15:00:00+09:00 \
|
|
164
|
+
--active-time 5 --effort 6 --diff
|
|
422
165
|
```
|
|
423
166
|
|
|
424
|
-
|
|
167
|
+
`perttool` never substitutes the system clock for a missing event time.
|
|
168
|
+
Project history is read-only:
|
|
425
169
|
|
|
426
|
-
```
|
|
427
|
-
|
|
170
|
+
```sh
|
|
171
|
+
perttool project history PLAN.pert --task WORK --format json
|
|
172
|
+
perttool project observe-velocity PLAN.pert \
|
|
173
|
+
--task WORK --evidence all --format json
|
|
174
|
+
perttool dag history PLAN.pert --view timeline --format json
|
|
428
175
|
```
|
|
429
176
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
review remain external controls.
|
|
177
|
+
Observed velocity is evidence only. Adopting it is a separate reviewed
|
|
178
|
+
`project set --velocity` change.
|
|
433
179
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
180
|
+
## Migrate an existing plan
|
|
181
|
+
|
|
182
|
+
Check the file first. Diagnostics include the applicable migration route:
|
|
437
183
|
|
|
438
184
|
```sh
|
|
439
|
-
perttool
|
|
440
|
-
|
|
441
|
-
|
|
185
|
+
perttool document check PLAN.pert
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Preview a complete migration to the current Grammar 9 form:
|
|
189
|
+
|
|
190
|
+
```sh
|
|
191
|
+
perttool document migrate PLAN.pert --target-grammar 9 --diff
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Then apply the reviewed candidate:
|
|
195
|
+
|
|
196
|
+
```sh
|
|
197
|
+
perttool document migrate PLAN.pert \
|
|
198
|
+
--target-grammar 9 \
|
|
442
199
|
--write \
|
|
443
200
|
--expect-digest 'sha256:...'
|
|
201
|
+
```
|
|
444
202
|
|
|
445
|
-
|
|
203
|
+
For deprecated `day` or `hour` plans, migrate duration values to Points
|
|
204
|
+
separately:
|
|
205
|
+
|
|
206
|
+
```sh
|
|
207
|
+
perttool project migrate-unit PLAN.pert --to-unit point --diff
|
|
446
208
|
perttool project migrate-unit PLAN.pert \
|
|
447
209
|
--to-unit point \
|
|
448
210
|
--replacement-velocity 20p/10d \
|
|
449
|
-
--
|
|
211
|
+
--write \
|
|
212
|
+
--expect-digest 'sha256:...'
|
|
450
213
|
```
|
|
451
214
|
|
|
452
|
-
|
|
453
|
-
|
|
215
|
+
Automatic migration is not required. You may edit a copy manually, then run
|
|
216
|
+
`perttool document format` and `perttool document check` to obtain and verify
|
|
217
|
+
the canonical target form. Detailed compatibility guidance is in the
|
|
218
|
+
[`0.9.4` to `0.10.0` migration guide](docs/process/0.9.4-to-0.10.0-migration.md)
|
|
219
|
+
and the built-in migration Guide:
|
|
220
|
+
|
|
221
|
+
```sh
|
|
222
|
+
perttool guide editing unit-migration --level detail
|
|
223
|
+
```
|
|
454
224
|
|
|
455
|
-
|
|
225
|
+
## Start a Planning Pool
|
|
456
226
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
explicit caller input; perttool does not substitute the system clock or Git
|
|
460
|
-
commit time.
|
|
227
|
+
The `0.11.0` Grammar 9 release adds Work and bounded planning Windows without
|
|
228
|
+
changing strict Task execution. Migrate a Grammar 8 document first:
|
|
461
229
|
|
|
462
230
|
```sh
|
|
463
|
-
perttool
|
|
464
|
-
|
|
465
|
-
perttool
|
|
466
|
-
--
|
|
467
|
-
perttool task resume PLAN.pert WORK \
|
|
468
|
-
--at 2026-07-29T12:00:00+09:00 --diff
|
|
469
|
-
perttool task finish PLAN.pert WORK \
|
|
470
|
-
--at 2026-07-29T15:00:00+09:00 \
|
|
471
|
-
--active-time 5 --effort 6 --diff
|
|
231
|
+
SOURCE_DIGEST=$(perttool document check PLAN.pert --format json | jq -r .source_digest)
|
|
232
|
+
perttool document migrate PLAN.pert --target-grammar 9 --diff
|
|
233
|
+
perttool document migrate PLAN.pert --target-grammar 9 \
|
|
234
|
+
--write --expect-digest "$SOURCE_DIGEST"
|
|
472
235
|
```
|
|
473
236
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
237
|
+
Exact `perttool@0.10.6` remains the rollback pin for Grammar 8 plans. It cannot
|
|
238
|
+
read Planning Pool declarations and there is no automatic Grammar 9 to 8
|
|
239
|
+
downgrade, so retain the pre-migration Git revision before adopting Work,
|
|
240
|
+
Event, Activity, or Window declarations.
|
|
477
241
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
242
|
+
Routine changes use one closed, source-bound intent request. They still run
|
|
243
|
+
through the same complete reshape preflight and opaque-token binding as a
|
|
244
|
+
low-level request:
|
|
481
245
|
|
|
482
246
|
```sh
|
|
483
|
-
perttool
|
|
484
|
-
|
|
485
|
-
|
|
247
|
+
perttool work reshape preflight PLAN.pert \
|
|
248
|
+
--intent-request intent.json --format json > preflight.json
|
|
249
|
+
perttool work reshape apply PLAN.pert \
|
|
250
|
+
--intent-request intent.json \
|
|
251
|
+
--preflight-hash "$(jq -r .preflight_hash preflight.json)" \
|
|
252
|
+
--preflight-token "$(jq -r .preflight_token preflight.json)" \
|
|
253
|
+
--diff
|
|
486
254
|
```
|
|
487
255
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
256
|
+
The intent builder never infers meaning, dependencies, projection, deferral,
|
|
257
|
+
or carry-over. Review the compiled `normalized_request` and the final candidate
|
|
258
|
+
before writing. The complete first-Work, first-Window, projection, deferral,
|
|
259
|
+
carry-over, and recovery workflow is in
|
|
260
|
+
[Planning Pool intent workflows](docs/examples/planning-pool-intents.md).
|
|
261
|
+
Low-level integrations can discover and validate the three closed request
|
|
262
|
+
contracts through `perttool schema`; complete valid documents are in
|
|
263
|
+
[Planning Pool request schema examples](docs/examples/planning-pool-requests.md).
|
|
264
|
+
|
|
265
|
+
Default text output is designed for human review: lists remain compact;
|
|
266
|
+
`work show`, `event show`, `activity show`, and `window show` expose their
|
|
267
|
+
semantic facts; observations split
|
|
268
|
+
refinement, execution, outcome, organization, temporal, and global-execution
|
|
269
|
+
facts, and reshape preflight ends with the required next action. Use
|
|
270
|
+
`--format json` when a script needs the complete stable result contract:
|
|
271
|
+
|
|
272
|
+
```sh
|
|
273
|
+
perttool work show PLAN.pert WORK_ID
|
|
274
|
+
perttool event show PLAN.pert EVENT_ID
|
|
275
|
+
perttool activity show PLAN.pert ACTIVITY_ID
|
|
276
|
+
perttool window observe PLAN.pert --request observation.json
|
|
277
|
+
perttool work reshape preflight PLAN.pert --intent-request intent.json
|
|
278
|
+
perttool schema Perttool.PlanningReshapeRequest.v1
|
|
279
|
+
```
|
|
493
280
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
281
|
+
Planning Pool retention is advisory. Remaining Work does not block
|
|
282
|
+
`project.finish`, and Work or Window observations do not prove Final Milestone
|
|
283
|
+
Goal obligation coverage, goal completion, or Window objective achievement.
|
|
284
|
+
Execution scope changes only through an explicit governed strict-DAG candidate.
|
|
285
|
+
The nontechnical retained-Work example is in
|
|
286
|
+
[Planning Pool intent workflows](docs/examples/planning-pool-intents.md);
|
|
287
|
+
[Issue #24](https://github.com/mako10k/perttool/issues/24) separately owns the
|
|
288
|
+
future Goal Obligation, Goal Coverage, and Goal Seal boundary.
|
|
499
289
|
|
|
500
|
-
|
|
290
|
+
## Plan assurance
|
|
501
291
|
|
|
502
|
-
|
|
503
|
-
|
|
292
|
+
Plan assurance is optional. Initial sealing records reviewed task contracts
|
|
293
|
+
and planning bases atomically:
|
|
504
294
|
|
|
505
295
|
```sh
|
|
506
296
|
perttool plan-assurance seal PLAN.pert \
|
|
507
297
|
--reason "Initial reviewed planning baseline" --diff
|
|
508
298
|
perttool plan-assurance show PLAN.pert --format json
|
|
509
|
-
perttool plan-assurance hash PLAN.pert WORK --kind computed-basis
|
|
510
299
|
```
|
|
511
300
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
execution-and-planning relation, or to add a planning-only relation:
|
|
301
|
+
After changing reviewed work, inspect the affected closure and reseal only the
|
|
302
|
+
selected tasks:
|
|
515
303
|
|
|
516
304
|
```sh
|
|
517
|
-
perttool plan-
|
|
518
|
-
--
|
|
519
|
-
|
|
520
|
-
--
|
|
305
|
+
perttool plan-assurance reseal PLAN.pert \
|
|
306
|
+
--task WORK \
|
|
307
|
+
--reason "Accepted the updated plan" \
|
|
308
|
+
--diff
|
|
521
309
|
```
|
|
522
310
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
new-start authority from unsealed, review-required, or unavailable plans.
|
|
311
|
+
In `0.10.5`, selected reseal also covers a newly added unsealed task when plan
|
|
312
|
+
assurance is already enabled. A plan with assurance entirely disabled still
|
|
313
|
+
uses the atomic `seal` command. Completed tasks require explicit
|
|
314
|
+
`task-outcome` records; status and Git history do not imply conformance.
|
|
528
315
|
|
|
529
|
-
##
|
|
316
|
+
## Ownership and review
|
|
530
317
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
| Discover or read JSON Schemas | `perttool schema [schema-id]` |
|
|
535
|
-
| Read domain guidance | `perttool guide [topic [subtopic]]` |
|
|
536
|
-
| Validate a document | `perttool document check <file>` |
|
|
537
|
-
| Canonically format it | `perttool document format <file>` |
|
|
538
|
-
| Initialize a project | `perttool project init ...` |
|
|
539
|
-
| Read project metadata | `perttool project show <file>` |
|
|
540
|
-
| Reconstruct task actuals | `perttool project history <file> ...` |
|
|
541
|
-
| Observe project performance | `perttool project observe-velocity <file> ...` |
|
|
542
|
-
| Change project metadata | `perttool project set <file> ...` |
|
|
543
|
-
| Migrate project units exactly | `perttool project migrate-unit <file> ...` |
|
|
544
|
-
| Analyze schedules | `perttool dag analyze <file>` |
|
|
545
|
-
| Select next work | `perttool dag next <file>` |
|
|
546
|
-
| Remove completed history | `perttool dag advance <file>` |
|
|
547
|
-
| Reconstruct committed DAG history | `perttool dag history <file> ...` |
|
|
548
|
-
| Inspect plan assurance | `perttool plan-assurance show|hash <file> ...` |
|
|
549
|
-
| Seal or reseal reviewed plans | `perttool plan-assurance seal|reseal <file> ...` |
|
|
550
|
-
| Maintain planning dependencies | `perttool plan-dependency add|set|remove` |
|
|
551
|
-
| Maintain task outcomes | `perttool task-outcome add|set|remove` |
|
|
552
|
-
| Export or import Mermaid | `perttool dag render`, `perttool dag import` |
|
|
553
|
-
| Maintain tasks | `perttool task add|set|remove|start|suspend|resume|finish` |
|
|
554
|
-
| Maintain gates | `perttool gate add|set|remove` |
|
|
555
|
-
| Maintain milestones | `perttool milestone add|set|remove` |
|
|
556
|
-
| Maintain milestone acceptance | `perttool milestone acceptance show|replace|verify|fail|unavailable|revoke|waive` |
|
|
557
|
-
| Maintain resources | `perttool resource add|set|remove` |
|
|
558
|
-
| Apply an atomic batch | `perttool batch apply` |
|
|
559
|
-
| Read coding-agent guidance | `perttool agent help` |
|
|
560
|
-
|
|
561
|
-
Run `perttool --help` for the text command catalog. `help` is the complete
|
|
562
|
-
command contract for humans and machine consumers, while `guide` explains
|
|
563
|
-
domain concepts. Both run without a document:
|
|
318
|
+
A plan may declare goal and DAG owners. Preview first without owner assertions.
|
|
319
|
+
If the result reports that governance applies, repeat the exact candidate with
|
|
320
|
+
`--actor` and any required `--accepted-by-owner` values:
|
|
564
321
|
|
|
565
322
|
```sh
|
|
566
|
-
perttool
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
perttool
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
323
|
+
perttool gate add PLAN.pert APPROVAL NOW DONE \
|
|
324
|
+
--reason "Approval required" \
|
|
325
|
+
--diff
|
|
326
|
+
|
|
327
|
+
perttool gate add PLAN.pert APPROVAL NOW DONE \
|
|
328
|
+
--reason "Approval required" \
|
|
329
|
+
--actor user \
|
|
330
|
+
--write \
|
|
331
|
+
--expect-digest 'sha256:...'
|
|
574
332
|
```
|
|
575
333
|
|
|
576
|
-
|
|
334
|
+
Owner confirmations are caller assertions, not authentication or durable
|
|
335
|
+
approval records. Treat each value as a single-candidate, scope-bound
|
|
336
|
+
assertion. It
|
|
337
|
+
applies only to the exact candidate being reviewed and must not be reused
|
|
338
|
+
automatically.
|
|
577
339
|
|
|
578
|
-
|
|
579
|
-
Supplying a schema identity returns its Draft 2020-12 artifact in the
|
|
580
|
-
`schema` field of `Perttool.SchemaResult.v1`:
|
|
340
|
+
Generated plans include this reminder:
|
|
581
341
|
|
|
582
|
-
```
|
|
583
|
-
|
|
342
|
+
```pert
|
|
343
|
+
# Existing .pert plans should normally be maintained through perttool commands; direct DSL editing bypasses goal/DAG owner-confirmation checks.
|
|
584
344
|
```
|
|
585
345
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
346
|
+
This warning is guidance, not technical prevention; Git and human review remain
|
|
347
|
+
external controls.
|
|
348
|
+
|
|
349
|
+
## Find commands and guidance
|
|
350
|
+
|
|
351
|
+
The CLI is the complete current command reference:
|
|
590
352
|
|
|
591
353
|
```sh
|
|
592
|
-
perttool
|
|
593
|
-
perttool
|
|
594
|
-
|
|
354
|
+
perttool --help
|
|
355
|
+
perttool task set --help
|
|
356
|
+
perttool help dag next
|
|
357
|
+
perttool help work reshape preflight
|
|
358
|
+
perttool guide workflows --level detail
|
|
359
|
+
perttool schema --format json
|
|
595
360
|
```
|
|
596
361
|
|
|
597
|
-
|
|
598
|
-
`perttool
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
`
|
|
611
|
-
|
|
612
|
-
`
|
|
613
|
-
`
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
`
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
rest of a result.
|
|
631
|
-
Version `0.8.0` adds `dag history`, `Perttool.HistoricalGraphResult.v1`, and
|
|
632
|
-
the Core and Node subpaths without changing CLI Contract 7; see the
|
|
633
|
-
[`0.7.1` to `0.8.0` migration](docs/process/0.7.1-to-0.8.0-migration.md).
|
|
634
|
-
Version `0.8.1` retains those interfaces and corrects assurance-receipt
|
|
635
|
-
placement in an advance-owned terminal deletion suffix. Versions `0.9.0`,
|
|
636
|
-
`0.9.1`, `0.9.2`, `0.9.3`, and `0.9.4` use CLI Contract 8.
|
|
637
|
-
A complete, known, non-truncated `Perttool.NextResult.v7` with policy
|
|
638
|
-
`recommendation_v1_plus_release_gate_plus_plan_assurance_v1` is required for
|
|
639
|
-
the current source. Start only task IDs in
|
|
640
|
-
`temporal.authority.startable_recommended_task_ids`; do not infer start
|
|
641
|
-
authority from the raw recommended set, the text summary, or `ready` alone.
|
|
642
|
-
Suspended tasks are reported separately and require an explicit `task resume`;
|
|
643
|
-
they are not new-start recommendations.
|
|
644
|
-
|
|
645
|
-
Mutation JSON returns the candidate text, unified diff, UTF-16 text edits,
|
|
646
|
-
source digest, updated digest, diagnostics, and write result in one envelope.
|
|
647
|
-
Direct, lifecycle, batch, and assurance mutations use
|
|
648
|
-
`Perttool.MutationResult.v5`; milestone acceptance mutations use that same
|
|
649
|
-
identity, and `dag advance` uses `Perttool.AdvanceResult.v3`. Current-source
|
|
650
|
-
advance requires Grammar 7; migrate a committed older document with
|
|
651
|
-
`perttool document migrate --target-grammar 7`, then declare criteria through
|
|
652
|
-
the milestone acceptance commands before relying on canonical advance.
|
|
653
|
-
Unknown schema versions, incomplete recommendation traces, `PTREC-*`
|
|
654
|
-
diagnostics, and future or unavailable temporal eligibility must fail closed.
|
|
655
|
-
|
|
656
|
-
## Documentation
|
|
657
|
-
|
|
658
|
-
- [Temporal and Unit Interface Contract (CLI Contract 4)](docs/specs/temporal-unit-interface.md)
|
|
659
|
-
- [Owner-Aware Governance Interface Contract (CLI Contract 5)](docs/specs/governance-interface.md)
|
|
660
|
-
- [Project Actuals and Git History Contract (CLI Contract 6)](docs/specs/project-actuals.md)
|
|
661
|
-
- [Advance History Safety Contract (ADV-001 target)](docs/specs/advance-history-safety.md)
|
|
662
|
-
- [Advance History Safety source acceptance](docs/process/advance-history-acceptance.md)
|
|
663
|
-
- [Conditional Plan Assurance Contract (retained Grammar 6 / CLI Contract 7 boundary)](docs/specs/plan-assurance.md)
|
|
664
|
-
- [Conditional Plan Assurance Interface Contract](docs/specs/plan-assurance-interface.md)
|
|
665
|
-
- [Milestone Acceptance Contract (active Grammar 7 / CLI Contract 8 source)](docs/specs/milestone-acceptance.md)
|
|
666
|
-
- [Conditional Plan Assurance public-contract acceptance](docs/process/plan-assurance-public-contract-acceptance.md)
|
|
667
|
-
- [`0.6.0` to `0.7.0` migration](docs/process/0.6.0-to-0.7.0-migration.md)
|
|
668
|
-
- [`v0.7.0` release procedure](docs/process/0.7.0-release.md)
|
|
669
|
-
- [`v0.7.1` Help and Guide consistency patch procedure](docs/process/0.7.1-release.md)
|
|
670
|
-
- [`0.7.1` to `0.8.0` migration](docs/process/0.7.1-to-0.8.0-migration.md)
|
|
671
|
-
- [`v0.8.0` release procedure](docs/process/0.8.0-release.md)
|
|
672
|
-
- [`v0.8.1` release procedure](docs/process/0.8.1-release.md)
|
|
673
|
-
- [`0.8.1` to `0.9.0` migration](docs/process/0.8.1-to-0.9.0-migration.md)
|
|
674
|
-
- [`v0.9.0` release procedure](docs/process/0.9.0-release.md)
|
|
675
|
-
- [`v0.9.1` release procedure](docs/process/0.9.1-release.md)
|
|
676
|
-
- [`v0.9.1` durable release acceptance](docs/process/0.9.1-release-acceptance.md)
|
|
677
|
-
- [`v0.9.2` release procedure](docs/process/0.9.2-release.md)
|
|
678
|
-
- [`v0.9.2` durable release acceptance](docs/process/0.9.2-release-acceptance.md)
|
|
679
|
-
- [`v0.9.3` release procedure](docs/process/0.9.3-release.md)
|
|
680
|
-
- [`v0.9.3` publication record](docs/process/0.9.3-publish.md)
|
|
681
|
-
- [`v0.9.3` durable release acceptance](docs/process/0.9.3-release-acceptance.md)
|
|
682
|
-
- [`v0.9.4` release procedure](docs/process/0.9.4-release.md)
|
|
683
|
-
- [`v0.10.2` release procedure](docs/process/0.10.2-release.md)
|
|
684
|
-
- [`v0.10.3` release procedure](docs/process/0.10.3-release.md)
|
|
685
|
-
- [`v0.10.4` release procedure](docs/process/0.10.4-release.md)
|
|
686
|
-
- [`v0.10.5` release procedure](docs/process/0.10.5-release.md)
|
|
687
|
-
- [Conditional Plan Assurance interface acceptance](docs/process/plan-assurance-interface-acceptance.md)
|
|
688
|
-
- [Shared Library Boundary](docs/specs/shared-library.md)
|
|
689
|
-
- [Editor Protocol Contract](docs/specs/editor-protocol.md)
|
|
690
|
-
- [Historical Editor Protocol Contract](docs/specs/historical-editor-protocol.md)
|
|
691
|
-
- [DAG Presentation and Focus Contract](docs/specs/dag-presentation.md)
|
|
692
|
-
- [DAG presentation and focus acceptance](docs/process/dag-presentation-acceptance.md)
|
|
693
|
-
- [DAG Compact Labels and Exact Time Summary Contract](docs/specs/dag-compact-presentation.md)
|
|
694
|
-
- [DAG compact presentation acceptance](docs/process/dag-compact-presentation-acceptance.md)
|
|
695
|
-
- [Document Session Core](docs/specs/document-session.md)
|
|
696
|
-
- [Conditional Plan Assurance internal hash Core acceptance](docs/process/plan-assurance-hash-core-acceptance.md)
|
|
697
|
-
- [Conditional Plan Assurance internal source Core acceptance](docs/process/plan-assurance-source-core-acceptance.md)
|
|
698
|
-
- [Conditional Plan Assurance internal mutation Core acceptance](docs/process/plan-assurance-mutation-core-acceptance.md)
|
|
699
|
-
- [Conditional Plan Assurance internal authority Core acceptance](docs/process/plan-assurance-authority-core-acceptance.md)
|
|
700
|
-
- [Conditional Plan Assurance internal advance contraction acceptance](docs/process/plan-assurance-advance-contraction-acceptance.md)
|
|
701
|
-
- [Conditional Plan Assurance internal compatibility acceptance](docs/process/plan-assurance-compatibility-acceptance.md)
|
|
702
|
-
- [Conditional Plan Assurance internal hash inspection acceptance](docs/process/plan-assurance-hash-inspection-acceptance.md)
|
|
703
|
-
- [Conditional Plan Assurance design review](docs/process/plan-assurance-design-review.md)
|
|
704
|
-
- [Conditional Plan Assurance implementation plan](plans/plan-assurance.pert)
|
|
705
|
-
- [Help and Guide consistency correction](docs/specs/help-guide-consistency.md)
|
|
706
|
-
- [Help and Guide consistency implementation plan](plans/help-guide-consistency.pert)
|
|
707
|
-
- [`v0.7.1` release plan](plans/release-0.7.1.pert)
|
|
708
|
-
- [`v0.8.0` release plan](plans/release-0.8.0.pert)
|
|
709
|
-
- [`v0.9.0` release plan](plans/release-0.9.0.pert)
|
|
710
|
-
- [`v0.9.1` release plan](plans/release-0.9.1.pert)
|
|
711
|
-
- [`v0.9.2` release plan](plans/release-0.9.2.pert)
|
|
712
|
-
- [`v0.9.3` release plan](plans/release-0.9.3.pert)
|
|
713
|
-
- [`v0.9.4` release plan](plans/release-0.9.4.pert)
|
|
714
|
-
- [`v0.10.6` release plan](plans/release-0.10.6.pert)
|
|
715
|
-
- [`v0.10.6` release procedure](docs/process/0.10.6-release.md)
|
|
716
|
-
- [JSON Schema Artifact Contract](docs/specs/json-schema.md)
|
|
717
|
-
- [JSON Schema source acceptance](docs/process/json-schema-acceptance.md)
|
|
718
|
-
- [Contract 5-to-6 migration](docs/process/cli-contract-6-migration.md)
|
|
719
|
-
- [Contract 4-to-5 migration](docs/process/cli-contract-5-migration.md)
|
|
720
|
-
- [Issue #4 governance implementation acceptance](docs/process/governance-acceptance.md)
|
|
721
|
-
- [CLI Contract 3 compatibility baseline](docs/specs/cli-contract-3.md)
|
|
722
|
-
- [DSL grammar](docs/specs/dsl-grammar.md)
|
|
723
|
-
- [Graph semantics](docs/specs/graph-semantics.md)
|
|
724
|
-
- [Analysis semantics](docs/specs/analysis.md)
|
|
725
|
-
- [Mutation semantics](docs/specs/mutation.md)
|
|
726
|
-
- [Recommendation semantics](docs/specs/recommendation.md)
|
|
362
|
+
Compound command Help accepts the same natural path segments as the command.
|
|
363
|
+
An incomplete prefix such as `perttool help work reshape` fails with
|
|
364
|
+
`PTHLP-003` and lists `apply` and `preflight`; structured callers that already
|
|
365
|
+
pass `reshape preflight` as one action argument remain compatible.
|
|
366
|
+
|
|
367
|
+
Common commands:
|
|
368
|
+
|
|
369
|
+
| Goal | Command |
|
|
370
|
+
| --- | --- |
|
|
371
|
+
| Validate or format | `document check`, `document format` |
|
|
372
|
+
| Create or inspect a project | `project init`, `project show` |
|
|
373
|
+
| Analyze or select work | `dag analyze`, `dag next` |
|
|
374
|
+
| Maintain the graph | `task`, `gate`, `milestone`, `resource` |
|
|
375
|
+
| Record lifecycle events | `task start`, `suspend`, `resume`, `finish` |
|
|
376
|
+
| Inspect history | `project history`, `dag history` |
|
|
377
|
+
| Maintain assurance | `plan-assurance`, `plan-dependency`, `task-outcome` |
|
|
378
|
+
| Migrate documents | `document migrate`, `project migrate-unit` |
|
|
379
|
+
| Discover machine contracts | `help --format json`, `schema` |
|
|
380
|
+
|
|
381
|
+
## Library use
|
|
382
|
+
|
|
383
|
+
The package exposes a platform-neutral `perttool/core` subpath and a Node.js
|
|
384
|
+
`perttool/node` subpath. JSON Schema artifacts are available through
|
|
385
|
+
`perttool/schemas/<schema-id>.schema.json`.
|
|
386
|
+
|
|
387
|
+
See the [Shared Library Boundary](docs/specs/shared-library.md),
|
|
388
|
+
[Document Session Core](docs/specs/document-session.md), and
|
|
389
|
+
[JSON Schema contract](docs/specs/json-schema.md) for API details. Automation
|
|
390
|
+
must check each result's `schema_version` and `cli_contract_version`; it must
|
|
391
|
+
not infer compatibility from `tool_version` alone.
|
|
392
|
+
|
|
393
|
+
## More documentation
|
|
394
|
+
|
|
727
395
|
- [Examples](docs/examples/README.md)
|
|
396
|
+
- [Current changelog and older versions](CHANGELOG.md)
|
|
397
|
+
- [Migration guides and release records](docs/process/)
|
|
398
|
+
- [Normative specifications](docs/specs/)
|
|
728
399
|
- [Developer guide](docs/development.md)
|
|
729
400
|
- [Product backlog](docs/backlog.md)
|
|
401
|
+
- [Security policy](SECURITY.md)
|
|
402
|
+
|
|
403
|
+
Repository setup, testing, architecture, contribution, and release procedures
|
|
404
|
+
belong in the developer and process documents rather than this user guide.
|
|
730
405
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
Report vulnerabilities privately according to [SECURITY.md](SECURITY.md).
|
|
734
|
-
perttool is released under the [MIT License](LICENSE). See
|
|
735
|
-
[CHANGELOG.md](CHANGELOG.md) for release changes and known limitations.
|
|
736
|
-
The current repository source identifies `0.10.6` and retains Grammar 8,
|
|
737
|
-
CLI Contract 9, 56 commands, and 23 root schemas. It makes canonical bracketed
|
|
738
|
-
DAG delegates effective for milestone criterion-set and acceptance-receipt
|
|
739
|
-
mutations without weakening fail-closed authority. Version `0.10.5` remains
|
|
740
|
-
the exact rollback pin.
|
|
741
|
-
Migration guidance is in
|
|
742
|
-
[`0.9.4-to-0.10.0-migration.md`](docs/process/0.9.4-to-0.10.0-migration.md).
|
|
406
|
+
perttool is released under the [MIT License](LICENSE).
|