easy-coding-harness 0.10.0-beta.7 → 0.10.0-beta.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-coding-harness",
3
- "version": "0.10.0-beta.7",
3
+ "version": "0.10.0-beta.9",
4
4
  "description": "CLI scaffold for installing Easy Coding harness files into agent-native directories.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -49,11 +49,15 @@ automatic edges. A validated read-only `doc` / `analysis` / `report` task also a
49
49
  from IMPLEMENT after its full deliverable is shown, without REVIEW, VERIFICATION, MEMORY, or
50
50
  task memory. Approval mode controls non-mechanical edge waiting: approve confirms each edge,
51
51
  guard confirms two critical gates, confirm waits only at ANALYSIS -> IMPLEMENT, and auto
52
- advances every legal edge after mechanical gates.
52
+ advances every legal edge after mechanical gates. After green VERIFICATION, Harness freezes an
53
+ acceptance checkpoint. A later code diff temporarily pauses every mode so the exact digest can be
54
+ accepted; unchanged `confirm`/`auto` tasks remain automatic.
53
55
  Workflow mode is independently configured as adaptive/fast/standard/strict; ANALYSIS freezes
54
56
  adaptive to a concrete mode, and every new code task still enters REVIEW. REVIEW evidence is
55
57
  bound to the final implementation fingerprint, VERIFICATION evidence is bound to implementation
56
- and config fingerprints, and MEMORY keeps the conditional long-memory threshold gate.
58
+ and config fingerprints, and an accepted post-checkpoint diff records its authorization plus
59
+ carry-forward/targeted/waived policy without forcing a second REVIEW. MEMORY keeps the conditional
60
+ long-memory threshold gate.
57
61
 
58
62
  Java TDD is a third independent, default-off control managed by `ec-config`. Session overrides
59
63
  project configuration; ANALYSIS freezes enabled state and the 1..100 changed-line threshold
@@ -78,7 +82,7 @@ stage in `task.json`; no data is lost. Each task folder is self-contained.
78
82
  Each task is a folder. `task.json` is metadata, including the current stage, workflow proposal,
79
83
  frozen concrete mode, and any `pending_transition`; `dev-spec.md` is the human-readable plan;
80
84
  `execution.jsonl` is an append-only plan-and-log (one `plan` record, then `dispatch`/`result`
81
- /`review`/`verify`/`handoff` records). Because plan and log live on disk, not in an agent's
85
+ /`review`/`verify`/`acceptance`/`handoff` records). Because plan and log live on disk, not in an agent's
82
86
  context window, a task survives session end and agent switches with zero information loss.
83
87
 
84
88
  ## Canonical Spec integration
@@ -98,7 +102,9 @@ and integration dependencies block end-to-end completion until evidence is recor
98
102
  keeps detailed evidence locally and projects cross-application Task/Step/dependency outcomes into
99
103
  `EDS:EXECUTION` through one CAS/idempotent writer. Static changes use revision + READY +
100
104
  `sync-spec-design`; agents never hand-edit the machine ledger. Explicit external locators are
101
- allowed and rebind only by exact Canonical identity.
105
+ allowed and rebind only by exact Canonical identity. Source tasks stay `implemented` after local
106
+ checks and become `verified` only when VERIFICATION -> MEMORY is applied under explicit or
107
+ standing approval-mode authorization; the shared event includes the acceptance digest.
102
108
 
103
109
  ## Memory system
104
110
 
@@ -33,6 +33,12 @@ Explain precedence as `session override > project config > defaults`. Defaults a
33
33
  task freezes its effective TDD values when ANALYSIS advances to IMPLEMENT; later project/session
34
34
  changes affect future tasks and ANALYSIS only.
35
35
 
36
+ Approval semantics stay independent from verification depth: `approve` waits at each
37
+ non-mechanical edge, `guard` waits at ANALYSIS -> IMPLEMENT and VERIFICATION -> MEMORY, `confirm`
38
+ waits only for the plan, and `auto` advances legal green edges immediately. Every mode temporarily
39
+ pauses only when code changes after the frozen VERIFICATION checkpoint, because the user must see
40
+ and accept that exact new diff; this exception does not convert `auto` into `guard`.
41
+
36
42
  ## Project configuration
37
43
 
38
44
  Use `easy-coding config` for project settings. The CLI confirms one atomic update of Approval,
@@ -40,7 +40,9 @@ Communicate with the user in the user's language.
40
40
  author value must be `<Current Agent Name> with Easy Coding`, for example
41
41
  `Codex with Easy Coding`. `Current Agent Name` means the user-facing host Agent (for example,
42
42
  Codex, Claude, or Qoder), never an implementation sub-agent role such as `ec-implementer`.
43
- Never copy a previous human or Agent name into newly authored code.
43
+ This value is display attribution only: never pass it to the workflow state API's `--agent`,
44
+ which accepts only `claude-code`, `codex`, or `qoder`. Never copy a previous human or Agent name
45
+ into newly authored code.
44
46
  9. Every newly added field in a data-bearing model must have a meaningful field-level comment.
45
47
  This includes new or extended entity/DO/DTO/VO/BO, request/response, configuration, and similar
46
48
  model types. Every new enum member and every new declared constant requires the same treatment.
@@ -35,6 +35,13 @@ Name it `{memory_id}_{YYYYMMDD}_{smart_name}.md` and set
35
35
  `.easy-coding/memory/short/`, then register it with
36
36
  `memory-short-complete`. Never invent test results or commit hashes.
37
37
 
38
+ Copy the final `acceptance` record from `execution.jsonl` into the checkpoint as a concise
39
+ decision fact: authorization source, decision summary, `diff_sha256`, review policy, verification
40
+ policy, changed files, and any Canonical source tasks that required targeted verification.
41
+ `memory-short-complete` rejects a checkpoint that omits any of those decision fields. This records
42
+ the user's accepted exception without re-reviewing or re-analyzing the code. Canonical writeback
43
+ already carries the same digest and authorization as shared `acceptance` evidence.
44
+
38
45
  When frozen TDD is enabled, add its threshold, lifecycle evidence, passed local unit-test result,
39
46
  and local changed-line result to the short memory's execution evidence. Remote CI status is not
40
47
  part of Harness acceptance or task memory. When TDD is off, omit TDD fields entirely so ordinary
@@ -15,7 +15,8 @@ Read-only tasks never enter this stage. Obtain fresh fingerprints before running
15
15
 
16
16
  - No completion claim without executed verification evidence.
17
17
  - Evidence is reusable only while both returned fingerprints remain unchanged.
18
- - Relevant code or config changes invalidate old evidence automatically.
18
+ - Relevant code or config changes invalidate old evidence automatically unless the exact
19
+ post-verification code diff is explicitly accepted under the checkpoint protocol below.
19
20
  - Failed or missing evidence never becomes acceptance because of approval mode.
20
21
 
21
22
  ## Verification depth
@@ -109,6 +110,38 @@ enable TDD; report the explicit `ec-config`/`easy-coding config` next step.
109
110
  user wait.
110
111
  - A reported in-scope problem returns to IMPLEMENT; out-of-scope work becomes a separate task.
111
112
 
113
+ After the final green evidence is recorded, freeze the acceptance baseline before presenting the
114
+ result or applying the boundary:
115
+
116
+ ```bash
117
+ {{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py verification-checkpoint \
118
+ --agent <agent-id> --session-file <P>
119
+ ```
120
+
121
+ Then request or auto-apply VERIFICATION -> MEMORY according to `approval_mode`. `auto` remains
122
+ automatic when the checkpoint is unchanged. If any in-scope code changed after the checkpoint,
123
+ the state API returns `action:"acceptance-drift"`, keeps the task in VERIFICATION, and includes
124
+ the exact unified patches or binary/mode-change descriptions plus a stable `diff_sha256`. This
125
+ exceptional drift pauses every approval mode, including `auto`; it does not permanently change
126
+ the configured mode.
127
+
128
+ Show the complete returned diff and ask whether to accept that exact digest. Do not re-enter
129
+ IMPLEMENT or rerun REVIEW merely because this drift exists. On acceptance, call
130
+ `confirm-transition --stage MEMORY --diff-sha256 <digest>` with exactly one policy:
131
+
132
+ - `carry-forward`: only when every changed hunk is confidently non-executable and existing
133
+ verification remains applicable;
134
+ - `targeted`: executable behavior changed; append passed current-fingerprint targeted verification
135
+ before confirming. Canonical tasks must cover every affected source task reported by the
136
+ acceptance record, without rerunning checks for unaffected source tasks;
137
+ - `waived`: the user explicitly accepts the stated unverified risk.
138
+
139
+ Include `--decision-summary` with the user's decision. A changed digest invalidates the pending
140
+ confirmation and must be shown again. Behavior config, execution plan, workflow, Canonical
141
+ design, or nested-repository metadata drift cannot use this shortcut; return to ANALYSIS or
142
+ IMPLEMENT as reported by the state API. The acceptance record bridges only the accepted
143
+ implementation fingerprints, so prior REVIEW evidence remains valid without a second REVIEW.
144
+
112
145
  For Canonical-backed tasks, run each repository's commands from `task.repo_paths[repo_id]` and
113
146
  cover every selected task's source test IDs. Report pending integration edges separately from
114
147
  local green checks. They do not block local implementation evidence, but the state API blocks
@@ -119,12 +152,15 @@ tasks remain separate evidence records. In `strict`, every involved repository i
119
152
  records all four check types; a repository-specific non-applicable record still needs its reason
120
153
  and source ownership.
121
154
 
122
- After all current-fingerprint local checks pass for a Canonical source task, call
123
- `writeback-spec-task --status verified`. Include passed `kind:"test"` evidence for every bound
124
- Canonical Test ID plus concise references to local review/build/coverage records. The subsequent
125
- VERIFICATION -> MEMORY application requires every selected shared task to be `verified` or
126
- `completed`; remote CI remains outside this acceptance gate. If writeback is interrupted, run
127
- `reconcile-spec-execution` before requesting the transition.
155
+ After implementation and local checks, each selected Canonical source task remains
156
+ `implemented`. Do not call `writeback-spec-task --status verified` from VERIFICATION. Applying
157
+ VERIFICATION -> MEMORY is the authoritative acceptance boundary: the state API writes each
158
+ still-implemented source task to `verified` through CAS/idempotent recoverable events with its
159
+ accepted test evidence and acceptance digest, then enters MEMORY only after every write is
160
+ confirmed. For `approve`/`guard`, that authority is the explicit boundary
161
+ confirmation; for `confirm`/`auto`, it is the standing approval-mode authorization when no new
162
+ drift exists. If writeback is interrupted, run `reconcile-spec-execution` before retrying the
163
+ transition. Remote CI remains outside this acceptance gate.
128
164
 
129
165
  Record the exact integration edge only after its evidence exists:
130
166
 
@@ -137,5 +173,5 @@ Record the exact integration edge only after its evidence exists:
137
173
  --agent <agent>
138
174
  ```
139
175
 
140
- The state API rejects VERIFICATION -> MEMORY unless all evidence for the current implementation
141
- and config fingerprints is green.
176
+ The state API rejects VERIFICATION -> MEMORY unless all effective evidence is green and the
177
+ checkpoint is either unchanged or bound to an exact accepted diff.
@@ -28,7 +28,9 @@ lite semantics or an already-persisted edge, permits one IMPLEMENT -> VERIFICATI
28
28
 
29
29
  - `approval_mode = approve|guard|confirm|auto` controls whether a legal transition waits for a
30
30
  user. `confirm` waits only at ANALYSIS -> IMPLEMENT; after that, green REVIEW, VERIFICATION,
31
- MEMORY, and COMPLETE transitions advance automatically.
31
+ MEMORY, and COMPLETE transitions advance automatically. `auto` advances every legal green
32
+ edge. The only additional pause is an exceptional code diff detected after the frozen
33
+ VERIFICATION acceptance checkpoint; accepting that exact diff does not change the mode.
32
34
  - `workflow_mode = adaptive|fast|standard|strict` controls execution cost and assurance depth.
33
35
  - `tdd_enabled` independently activates Java TDD and changed-line coverage. It defaults off;
34
36
  `tdd_coverage_threshold` defaults to 90 and accepts integers from 1 to 100.
@@ -50,6 +52,9 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
50
52
 
51
53
  ## Startup
52
54
 
55
+ Throughout this skill, `<agent-id>` is the canonical workflow owner ID: `claude-code`, `codex`,
56
+ or `qoder`. Never use a display or source-author attribution such as `Codex with Easy Coding`.
57
+
53
58
  1. Read the injected state breadcrumbs or call:
54
59
 
55
60
  ```bash
@@ -140,7 +145,8 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
140
145
  - `ANALYSIS`: dispatch `ec-analysis`; it produces artifacts and a workflow proposal.
141
146
  - `IMPLEMENT`: dispatch `ec-implementing` using the frozen concrete mode.
142
147
  - `REVIEW`: dispatch `ec-reviewing`; the transition requires current fingerprint evidence.
143
- - `VERIFICATION`: dispatch `ec-verification`; archive requires current green evidence.
148
+ - `VERIFICATION`: dispatch `ec-verification`; the MEMORY boundary requires green evidence and an
149
+ unchanged or explicitly accepted verification checkpoint.
144
150
  - `MEMORY`: dispatch `ec-memory`.
145
151
  - `COMPLETE` / `CLOSED`: report terminal status and clear stale session ownership.
146
152
 
@@ -166,6 +172,23 @@ Use `auto-transition` only when the state API says the edge is automatic. Mechan
166
172
  (analysis artifacts and proposal, review fingerprint, verification fingerprint, memory
167
173
  completion) apply in every approval mode.
168
174
 
175
+ `[easy-coding:acceptance-drift-confirmation-required]` is a narrow exception to automatic-edge
176
+ handling. Call `inspect-transition-drift`, present every returned patch/binary/mode change and the
177
+ current `diff_sha256`, then use the platform's native choice UI for these branches:
178
+
179
+ 1. Accept this exact diff and continue to MEMORY (recommended only with the stated verification
180
+ policy).
181
+ 2. Return to IMPLEMENT because the change needs normal repair/review.
182
+ 3. Hand off to another Agent.
183
+ 4. Other / revise.
184
+
185
+ Never call `auto-transition` repeatedly to hide this pause. If the user accepts, preserve the
186
+ existing REVIEW conclusion and call `confirm-transition` with the exact digest,
187
+ `--verification-policy carry-forward|targeted|waived`, and a decision summary. `targeted` needs a
188
+ passed current-fingerprint targeted check first. If the digest changes, inspect and present the
189
+ new diff. Config, plan, workflow, Canonical-design, or nested-repository drift is not an
190
+ acceptance-diff choice and returns to the stage required by the state API.
191
+
169
192
  For a migrated pre-0.9 Lite task, the breadcrumb
170
193
  `[easy-coding:lite-review-bypass-required:IMPLEMENT->REVIEW]` means the stored REVIEW edge is
171
194
  stale. Call `cancel-transition`, then immediately call `auto-transition --stage VERIFICATION`.
@@ -45,8 +45,10 @@ First run `ec-init`; daily work goes through `ec-workflow`.
45
45
  is session override > project `behavior.workflow_mode` > `adaptive`. Approval controls waiting;
46
46
  workflow controls execution depth. ANALYSIS shows and freezes adaptive to fast/standard/strict.
47
47
  Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
48
- automatically. Every new code task runs REVIEW; no mode changes scope, delivery form, or
49
- evidence gates.
48
+ automatically; Auto advances all legal green edges. A new code diff after the VERIFICATION
49
+ checkpoint is the only exceptional pause across all modes: show the exact diff, bind acceptance
50
+ to its digest, and continue without rereview when the user accepts.
51
+ Every new code task runs REVIEW; no mode changes scope, delivery form, or evidence gates.
50
52
  - TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
51
53
  is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
52
54
  freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
@@ -87,18 +89,24 @@ First run `ec-init`; daily work goes through `ec-workflow`.
87
89
  - REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
88
90
  implementation; verification evidence must match final implementation and config. The frozen
89
91
  workflow mode selects targeted, impacted, or full commands without weakening the green gate.
92
+ Freeze a verification checkpoint after green checks. Unchanged checkpoints follow approval
93
+ mode normally; post-checkpoint code drift requires exact digest acceptance and
94
+ carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
90
95
  - Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
91
96
  `document_sha256` and `execution_revision` may advance through shared writer commands. Project-
92
97
  external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
93
98
  Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
94
99
  design changes require revision + READY + `sync-spec-design`. Never hand-edit `EDS:EXECUTION`.
100
+ Selected source tasks remain `implemented` through local VERIFICATION and become `verified`
101
+ only when the accepted VERIFICATION -> MEMORY boundary is actually applied.
95
102
  - Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
96
103
  inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
97
104
  overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
98
105
  ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
99
106
  projection, while shared execution is the dependency fact source.
100
107
  - MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
101
- effective confirmation mode; once memory processing completes, COMPLETE is automatic.
108
+ effective confirmation mode; its checkpoint records any accepted post-verification diff digest
109
+ and decision. Once memory processing completes, COMPLETE is automatic.
102
110
  - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
103
111
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
104
112
  Do not rely on any specific agent's proprietary conventions unless the module is explicitly
@@ -107,9 +115,16 @@ First run `ec-init`; daily work goes through `ec-workflow`.
107
115
 
108
116
  ## Runtime contract
109
117
 
110
- - Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py`;
111
- do not hand-edit session files, `current_task`, task `status`, `stage_history`,
112
- `pending_transition`, workflow/TDD proposal or freeze fields, `memory_progress`, or `last_agent`.
118
+ - Workflow state operations use the script installed for the active host: Codex uses
119
+ `.codex/hooks/easy_coding_state.py`, while Qoder uses its installed `.qoder/hooks/easy_coding_state.py`
120
+ or `.qodercn/hooks/easy_coding_state.py` variant.
121
+ Never substitute one platform's script for the other, and pass only the canonical owner ID
122
+ (`codex` or `qoder`) to `--agent`; display attribution such as `Codex with Easy Coding` is not
123
+ a workflow identity. The installed script's embedded platform identity, canonical owner, and
124
+ injected session namespace must agree. Do not hand-edit session files, `current_task`, task
125
+ `status`, `stage_history`,
126
+ `pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
127
+ `memory_progress`, or `last_agent`.
113
128
  - The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
114
129
  `--session-file <P>` when changing the current task or stage.
115
130
  - Workflow session files live at `{{workflow_state_path}}`; the CLI only installs files and
@@ -43,8 +43,10 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
43
43
  is session override > project `behavior.workflow_mode` > `adaptive`. Approval controls waiting;
44
44
  workflow controls execution depth. ANALYSIS shows and freezes adaptive to fast/standard/strict.
45
45
  Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
46
- automatically. Every new code task runs REVIEW; no mode changes scope, delivery form, or
47
- evidence gates.
46
+ automatically; Auto advances all legal green edges. A new code diff after the VERIFICATION
47
+ checkpoint is the only exceptional pause across all modes: show the exact diff, bind acceptance
48
+ to its digest, and continue without rereview when the user accepts.
49
+ Every new code task runs REVIEW; no mode changes scope, delivery form, or evidence gates.
48
50
  - TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
49
51
  is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
50
52
  freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
@@ -85,18 +87,24 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
85
87
  - REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
86
88
  implementation; verification evidence must match final implementation and config. The frozen
87
89
  workflow mode selects targeted, impacted, or full commands without weakening the green gate.
90
+ Freeze a verification checkpoint after green checks. Unchanged checkpoints follow approval
91
+ mode normally; post-checkpoint code drift requires exact digest acceptance and
92
+ carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
88
93
  - Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
89
94
  `document_sha256` and `execution_revision` may advance through shared writer commands. Project-
90
95
  external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
91
96
  Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
92
97
  design changes require revision + READY + `sync-spec-design`. Never hand-edit `EDS:EXECUTION`.
98
+ Selected source tasks remain `implemented` through local VERIFICATION and become `verified`
99
+ only when the accepted VERIFICATION -> MEMORY boundary is actually applied.
93
100
  - Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
94
101
  inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
95
102
  overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
96
103
  ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
97
104
  projection, while shared execution is the dependency fact source.
98
105
  - MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
99
- effective confirmation mode; once memory processing completes, COMPLETE is automatic.
106
+ effective confirmation mode; its checkpoint records any accepted post-verification diff digest
107
+ and decision. Once memory processing completes, COMPLETE is automatic.
100
108
  - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
101
109
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
102
110
  Do not rely on any specific agent's proprietary conventions unless the module is explicitly
@@ -105,9 +113,13 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
105
113
 
106
114
  ## Runtime contract
107
115
 
108
- - Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py`;
109
- do not hand-edit session files, `current_task`, task `status`, `stage_history`,
110
- `pending_transition`, workflow/TDD proposal or freeze fields, `memory_progress`, or `last_agent`.
116
+ - Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py` and
117
+ pass only the canonical owner ID `claude-code` to `--agent`; display attribution such as
118
+ `Claude with Easy Coding` is not a workflow identity. The installed script's embedded platform
119
+ identity, canonical owner, and injected session namespace must agree. Do not hand-edit session
120
+ files, `current_task`, task `status`, `stage_history`,
121
+ `pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
122
+ `memory_progress`, or `last_agent`.
111
123
  - The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
112
124
  `--session-file <P>` when changing the current task or stage.
113
125
  - Workflow session files live at `{{workflow_state_path}}`; the CLI only installs files and