@hassangameryt/freeflow 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -1
- package/.codex-plugin/plugin.json +2 -1
- package/README.md +150 -155
- package/capabilities/cognitive-routing/SKILL.md +229 -0
- package/capabilities/context-virtualization/SKILL.md +103 -0
- package/capabilities/conversation-history/SKILL.md +53 -0
- package/command-surface.json +17 -13
- package/hooks/freeflow-runtime-context.mjs +393 -159
- package/hooks/hooks.json +26 -1
- package/hooks/tests/check-runtime-context-hook.sh +223 -54
- package/package.json +25 -16
- package/pi-extension/dist/cognitive-routing/commands.js +96 -0
- package/pi-extension/dist/cognitive-routing/config.js +236 -0
- package/pi-extension/dist/cognitive-routing/controller.js +862 -0
- package/pi-extension/dist/cognitive-routing/history.js +439 -0
- package/pi-extension/dist/cognitive-routing/host.js +126 -0
- package/pi-extension/dist/cognitive-routing/runtime.js +43 -0
- package/pi-extension/dist/cognitive-routing/tool.js +211 -0
- package/pi-extension/dist/cognitive-routing/types.js +6 -0
- package/pi-extension/dist/context-virtualization/commands.js +89 -0
- package/pi-extension/dist/context-virtualization/projector.js +42 -0
- package/pi-extension/dist/context-virtualization/runtime.js +356 -0
- package/pi-extension/dist/context-virtualization/state.js +57 -0
- package/pi-extension/dist/context-virtualization/types.js +10 -0
- package/pi-extension/dist/conversation-history/passages.js +66 -0
- package/pi-extension/dist/conversation-history/ranking.js +105 -0
- package/pi-extension/dist/conversation-history/runtime.js +226 -0
- package/pi-extension/dist/conversation-history/search.js +56 -0
- package/pi-extension/dist/conversation-history/types.js +1 -0
- package/pi-extension/dist/freeflow-context/resolver.js +120 -0
- package/pi-extension/dist/freeflow-context/runtime.js +80 -0
- package/pi-extension/dist/freeflow-context/source-projector.js +95 -0
- package/pi-extension/dist/freeflow-context/tool.js +308 -0
- package/pi-extension/dist/freeflow-context/types.js +12 -0
- package/pi-extension/dist/freeflow-context/visibility.js +28 -0
- package/pi-extension/dist/index.js +516 -98
- package/pi-extension/dist/runtime/runtime-context.js +318 -271
- package/pi-extension/dist/runtime/runtime-identity.js +5 -0
- package/pi-extension/dist/settings/settings-tui.js +78 -0
- package/pi-extension/dist/settings/settings-ui.js +593 -563
- package/pi-extension/dist/ui/text-component.js +57 -0
- package/pi-extension/src/cognitive-routing/commands.ts +119 -0
- package/pi-extension/src/cognitive-routing/config.ts +307 -0
- package/pi-extension/src/cognitive-routing/controller.ts +1118 -0
- package/pi-extension/src/cognitive-routing/history.ts +638 -0
- package/pi-extension/src/cognitive-routing/host.ts +172 -0
- package/pi-extension/src/cognitive-routing/runtime.ts +57 -0
- package/pi-extension/src/cognitive-routing/tool.ts +272 -0
- package/pi-extension/src/cognitive-routing/types.ts +89 -0
- package/pi-extension/src/context-virtualization/commands.ts +111 -0
- package/pi-extension/src/context-virtualization/projector.ts +62 -0
- package/pi-extension/src/context-virtualization/runtime.ts +406 -0
- package/pi-extension/src/context-virtualization/state.ts +79 -0
- package/pi-extension/src/context-virtualization/types.ts +92 -0
- package/pi-extension/src/conversation-history/passages.ts +81 -0
- package/pi-extension/src/conversation-history/ranking.ts +155 -0
- package/pi-extension/src/conversation-history/runtime.ts +250 -0
- package/pi-extension/src/conversation-history/search.ts +79 -0
- package/pi-extension/src/conversation-history/types.ts +31 -0
- package/pi-extension/src/freeflow-context/resolver.ts +139 -0
- package/pi-extension/src/freeflow-context/runtime.ts +100 -0
- package/pi-extension/src/freeflow-context/source-projector.ts +106 -0
- package/pi-extension/src/freeflow-context/tool.ts +360 -0
- package/pi-extension/src/freeflow-context/types.ts +70 -0
- package/pi-extension/src/freeflow-context/visibility.ts +53 -0
- package/pi-extension/src/index.ts +553 -101
- package/pi-extension/src/runtime/runtime-context.ts +339 -281
- package/pi-extension/src/runtime/runtime-identity.ts +8 -0
- package/pi-extension/src/settings/settings-tui.ts +93 -0
- package/pi-extension/src/settings/settings-ui.ts +700 -613
- package/pi-extension/src/ui/text-component.ts +66 -0
- package/pi-extension/tests/cognitive-routing/commands.test.js +134 -0
- package/pi-extension/tests/cognitive-routing/controller.test.js +1099 -0
- package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +1071 -0
- package/pi-extension/tests/cognitive-routing/history.test.js +274 -0
- package/pi-extension/tests/cognitive-routing/host-fixture.js +4 -0
- package/pi-extension/tests/cognitive-routing/host-identity.test.js +63 -0
- package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +236 -0
- package/pi-extension/tests/cognitive-routing/tool.test.js +230 -0
- package/pi-extension/tests/context-virtualization/extension.test.js +749 -0
- package/pi-extension/tests/context-virtualization/projector.test.js +110 -0
- package/pi-extension/tests/context-virtualization/runtime.test.js +216 -0
- package/pi-extension/tests/conversation-history/runtime.test.js +98 -0
- package/pi-extension/tests/conversation-history/search.test.js +97 -0
- package/pi-extension/tests/integration/pi-extension.test.js +928 -2047
- package/pi-extension/tests/integration/prompt-architecture.test.js +305 -0
- package/runtime/prompts/cognitive-routing.md +9 -0
- package/runtime/prompts/context-virtualization.md +3 -0
- package/runtime/prompts/conversation-history.md +3 -0
- package/runtime/prompts/core.md +13 -0
- package/runtime/prompts/interaction-contract.md +7 -0
- package/runtime/prompts/skills.md +65 -0
- package/skills/action-selection/SKILL.md +91 -0
- package/skills/bypass/SKILL.md +3 -2
- package/skills/commit-work/SKILL.md +1 -1
- package/skills/commit-work/references/staging-decisions.md +1 -1
- package/skills/decision-gate/SKILL.md +1 -1
- package/skills/design-for-depth/SKILL.md +14 -33
- package/skills/design-for-depth/references/design-pressure-signals.md +1 -1
- package/skills/design-for-depth/references/interface-design-loop.md +1 -1
- package/skills/design-for-depth/references/software-design-philosophy.md +1 -1
- package/skills/diagnose-failure/SKILL.md +20 -14
- package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +1 -3
- package/skills/diagnose-failure/references/{flaky-and-performance.md → flaky-and-performance-diagnosis.md} +1 -1
- package/skills/discuss/SKILL.md +34 -22
- package/skills/discuss/references/discussion-continuity.md +71 -0
- package/skills/evaluate-skill/SKILL.md +5 -5
- package/skills/evaluate-skill/references/{definition-schema.md → evaluation-definition-schema.md} +42 -2
- package/skills/evaluate-skill/references/execution-and-evidence.md +8 -3
- package/skills/evaluate-skill/scripts/lib/definitions.mjs +114 -3
- package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +156 -1
- package/skills/evaluate-skill/scripts/lib/grade.mjs +9 -1
- package/skills/evaluate-skill/scripts/lib/pi.mjs +147 -32
- package/skills/evaluate-skill/scripts/lib/rpc.mjs +4 -4
- package/skills/evaluate-skill/scripts/lib/runner.mjs +36 -14
- package/skills/evaluate-skill/scripts/lib/sandbox.mjs +92 -0
- package/skills/evaluate-skill/scripts/pi-guard.mjs +1 -1
- package/skills/evaluate-skill/scripts/pi-observer.mjs +66 -0
- package/skills/evaluate-skill/scripts/skill-eval.mjs +6 -5
- package/skills/execute-work/SKILL.md +18 -15
- package/skills/execute-work/references/code-practices.md +1 -1
- package/skills/execute-work/references/execute-work-edges.md +42 -0
- package/skills/finish-branch/SKILL.md +2 -2
- package/skills/finish-branch/references/integration-options.md +1 -1
- package/skills/handoff/SKILL.md +3 -3
- package/skills/launch-work/SKILL.md +1 -1
- package/skills/launch-work/references/launch-readiness.md +2 -2
- package/skills/migration-work/SKILL.md +2 -2
- package/skills/migration-work/references/migration-lifecycle.md +1 -1
- package/skills/mode-contract/SKILL.md +32 -10
- package/skills/release-work/SKILL.md +1 -1
- package/skills/release-work/references/release-evidence.md +1 -1
- package/skills/review-artifact/SKILL.md +28 -26
- package/skills/review-work/SKILL.md +28 -26
- package/skills/review-work/references/{reviewer-prompt.md → independent-work-reviewer-contract.md} +1 -1
- package/skills/review-work/references/security-risk-lens.md +1 -1
- package/skills/setup-freeflow/SKILL.md +6 -10
- package/skills/setup-freeflow/references/activation-contract.md +5 -10
- package/skills/setup-freeflow/references/host-setup.md +3 -7
- package/skills/simplify-code/SKILL.md +1 -1
- package/skills/simplify-code/references/simplification-patterns.md +1 -1
- package/skills/tdd/SKILL.md +18 -38
- package/skills/tdd/references/test-design.md +2 -2
- package/skills/track-work/SKILL.md +362 -58
- package/skills/track-work/scripts/lib/codec.mjs +570 -0
- package/skills/track-work/scripts/lib/commands.mjs +568 -0
- package/skills/track-work/scripts/lib/contract.mjs +303 -0
- package/skills/track-work/scripts/lib/model.mjs +506 -0
- package/skills/track-work/scripts/lib/operations.mjs +965 -0
- package/skills/track-work/scripts/lib/record-store.mjs +264 -0
- package/skills/track-work/scripts/lib/result.mjs +37 -0
- package/skills/track-work/scripts/lib/rewrites.mjs +740 -0
- package/skills/track-work/scripts/lib/schema.mjs +277 -0
- package/skills/track-work/scripts/lib/source-inventory.mjs +162 -0
- package/skills/track-work/scripts/lib/views.mjs +443 -0
- package/skills/track-work/scripts/lib/workspace.mjs +134 -0
- package/skills/track-work/scripts/working-record.mjs +122 -0
- package/skills/verify-work/SKILL.md +14 -2
- package/skills/verify-work/references/browser-runtime-evidence.md +1 -1
- package/skills/verify-work/references/integration-evidence.md +1 -1
- package/skills/verify-work/references/performance-evidence.md +1 -1
- package/skills/workflow/SKILL.md +105 -53
- package/skills/workflow/references/domain-skill-composition.md +22 -42
- package/skills/write-plan/SKILL.md +1 -1
- package/skills/write-skill/SKILL.md +3 -2
- package/skills/write-skill/references/progressive-disclosure.md +17 -3
- package/pi-extension/dist/output-router/host-producer-identification.js +0 -232
- package/pi-extension/dist/output-router/native-safety-net.js +0 -216
- package/pi-extension/dist/output-router/observed-tool-routing.js +0 -122
- package/pi-extension/dist/output-router/renderers.js +0 -1023
- package/pi-extension/dist/output-router/router-tools.js +0 -554
- package/pi-extension/dist/output-router/schemas.js +0 -383
- package/pi-extension/dist/output-router/status.js +0 -744
- package/pi-extension/dist/output-router/utils.js +0 -502
- package/pi-extension/src/output-router/host-producer-identification.ts +0 -256
- package/pi-extension/src/output-router/native-safety-net.ts +0 -248
- package/pi-extension/src/output-router/observed-tool-routing.ts +0 -134
- package/pi-extension/src/output-router/renderers.ts +0 -1108
- package/pi-extension/src/output-router/router-tools.ts +0 -579
- package/pi-extension/src/output-router/schemas.ts +0 -387
- package/pi-extension/src/output-router/status.ts +0 -791
- package/pi-extension/src/output-router/utils.ts +0 -554
- package/pi-extension/tests/output-router/observed-producers.test.js +0 -132
- package/pi-extension/tests/output-router/search.test.js +0 -722
- package/router/dist/benchmarks/benchmark-harness.d.ts +0 -35
- package/router/dist/benchmarks/benchmark-harness.js +0 -92
- package/router/dist/benchmarks/benchmarks.d.ts +0 -109
- package/router/dist/benchmarks/benchmarks.js +0 -979
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +0 -95
- package/router/dist/benchmarks/codex-qa-benchmarks.js +0 -500
- package/router/dist/benchmarks/command-benchmarks.d.ts +0 -143
- package/router/dist/benchmarks/command-benchmarks.js +0 -698
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +0 -82
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +0 -773
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +0 -132
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +0 -1380
- package/router/dist/benchmarks/context-saving-baseline.d.ts +0 -60
- package/router/dist/benchmarks/context-saving-baseline.js +0 -470
- package/router/dist/benchmarks/index-benchmarks.d.ts +0 -103
- package/router/dist/benchmarks/index-benchmarks.js +0 -862
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +0 -101
- package/router/dist/benchmarks/storage-policy-benchmarks.js +0 -618
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +0 -56
- package/router/dist/benchmarks/vault-index-benchmarks.js +0 -322
- package/router/dist/config/config.d.ts +0 -103
- package/router/dist/config/config.js +0 -632
- package/router/dist/config/router-contract.d.ts +0 -10
- package/router/dist/config/router-contract.js +0 -54
- package/router/dist/config/schema.d.ts +0 -27
- package/router/dist/config/schema.js +0 -648
- package/router/dist/config/types.d.ts +0 -573
- package/router/dist/config/types.js +0 -41
- package/router/dist/evidence/bounded-evidence.d.ts +0 -40
- package/router/dist/evidence/bounded-evidence.js +0 -323
- package/router/dist/evidence/evidence-range-selector.d.ts +0 -24
- package/router/dist/evidence/evidence-range-selector.js +0 -232
- package/router/dist/evidence/evidence-search.d.ts +0 -27
- package/router/dist/evidence/evidence-search.js +0 -490
- package/router/dist/evidence/evidence.d.ts +0 -38
- package/router/dist/evidence/evidence.js +0 -200
- package/router/dist/evidence/failure-contracts.d.ts +0 -37
- package/router/dist/evidence/failure-contracts.js +0 -166
- package/router/dist/evidence/line-ranges.d.ts +0 -24
- package/router/dist/evidence/line-ranges.js +0 -22
- package/router/dist/experiments/local-index.d.ts +0 -64
- package/router/dist/experiments/local-index.js +0 -581
- package/router/dist/index.d.ts +0 -30
- package/router/dist/index.js +0 -32
- package/router/dist/local/local-traversal.d.ts +0 -18
- package/router/dist/local/local-traversal.js +0 -334
- package/router/dist/processing/engine.d.ts +0 -132
- package/router/dist/processing/engine.js +0 -533
- package/router/dist/processing/reducers.d.ts +0 -280
- package/router/dist/processing/reducers.js +0 -1673
- package/router/dist/processing/renderers.d.ts +0 -31
- package/router/dist/processing/renderers.js +0 -195
- package/router/dist/processing/scripts.d.ts +0 -91
- package/router/dist/processing/scripts.js +0 -386
- package/router/dist/repo/repo-traversal.d.ts +0 -18
- package/router/dist/repo/repo-traversal.js +0 -245
- package/router/dist/routing/observed-reducers.d.ts +0 -41
- package/router/dist/routing/observed-reducers.js +0 -661
- package/router/dist/routing/observed-routing.d.ts +0 -26
- package/router/dist/routing/observed-routing.js +0 -378
- package/router/dist/routing/parsers.d.ts +0 -16
- package/router/dist/routing/parsers.js +0 -521
- package/router/dist/routing/run-filters.d.ts +0 -60
- package/router/dist/routing/run-filters.js +0 -238
- package/router/dist/routing/run-reducers.d.ts +0 -49
- package/router/dist/routing/run-reducers.js +0 -122
- package/router/dist/sandbox/adapter-roots.d.ts +0 -46
- package/router/dist/sandbox/adapter-roots.js +0 -66
- package/router/dist/sandbox/eryx-python-adapter.d.ts +0 -13
- package/router/dist/sandbox/eryx-python-adapter.js +0 -868
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +0 -9
- package/router/dist/sandbox/jq-wasm-adapter.js +0 -429
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +0 -13
- package/router/dist/sandbox/quickjs-wasi-adapter.js +0 -384
- package/router/dist/sandbox/script-sandbox.d.ts +0 -134
- package/router/dist/sandbox/script-sandbox.js +0 -337
- package/router/dist/setup/script-transform-adapters.d.ts +0 -32
- package/router/dist/setup/script-transform-adapters.js +0 -278
- package/router/dist/tools/batch.d.ts +0 -33
- package/router/dist/tools/batch.js +0 -586
- package/router/dist/tools/run.d.ts +0 -62
- package/router/dist/tools/run.js +0 -1304
- package/router/dist/tools/search.d.ts +0 -66
- package/router/dist/tools/search.js +0 -1364
- package/router/dist/transform/engine.d.ts +0 -168
- package/router/dist/transform/engine.js +0 -2072
- package/router/dist/vault/vault-index.d.ts +0 -125
- package/router/dist/vault/vault-index.js +0 -416
- package/router/dist/vault/vault.d.ts +0 -138
- package/router/dist/vault/vault.js +0 -630
- package/runtime/interaction-contract.md +0 -16
- package/skills/discuss/references/checkpoints.md +0 -66
- package/skills/execute-work/references/execution-loop.md +0 -77
- package/skills/output-router/SKILL.md +0 -206
- package/skills/output-router/references/safety-policy.md +0 -40
- package/skills/setup-freeflow/references/output-router-setup.md +0 -110
- package/skills/track-work/references/working-record-schema.md +0 -378
- package/skills/workflow/references/workflow-loop.md +0 -92
- /package/skills/handoff/references/{templates.md → handoff-templates.md} +0 -0
- /package/skills/review-artifact/references/{reviewer-prompt.md → independent-artifact-reviewer-contract.md} +0 -0
|
@@ -1,84 +1,388 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: track-work
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when ongoing work needs durable task memory, or existing task memory must be created, recovered, reconciled, updated, or closed, so current understanding, active work, future outcomes, decisions, evidence, and the next action survive execution, feedback, pauses, or context loss.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Track Work
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Maintain living task memory without turning it into a transcript, fixed Plan, or authority over live evidence and user decisions.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
A **Working Record** is ignored local Markdown that preserves current task state across execution, feedback, pauses, and context loss. A **Current Slice** is the durable representation of the active Slice when task memory is needed. A **Proposed Slice** is an unselected future Slice with no ID, execution state, or authority. `block`, `resume`, and `reopen` preserve one Slice's identity across different continuation conditions.
|
|
11
|
+
|
|
12
|
+
Track Work owns the Working Record and its lifecycle. It does not decide whether durable memory is needed, authorize implementation, settle product intent, judge review findings, complete the task, commit, publish, or promote local artifacts.
|
|
13
|
+
|
|
14
|
+
A Working Record is memory, not authority. Current user direction, live evidence, repository instructions, and accepted source truth override stale record content.
|
|
15
|
+
|
|
16
|
+
## Enter With A Record Need
|
|
17
|
+
|
|
18
|
+
Enter when [Workflow](../workflow/SKILL.md) routes a durable-memory need established by current context or [Discuss](../discuss/SKILL.md), the user explicitly requests a record operation, or an existing record needs recovery, reconciliation, or a lifecycle transition.
|
|
19
|
+
|
|
20
|
+
If record need, task ownership, or mutation authority is unresolved, return to Workflow or Discuss. Reading this skill never authorizes record creation or mutation.
|
|
21
|
+
|
|
22
|
+
Use one ignored local directory per task:
|
|
11
23
|
|
|
12
24
|
```text
|
|
13
|
-
|
|
14
|
-
-> existing Working Record owns it
|
|
15
|
-
-> read the required reference
|
|
16
|
-
-> maintain it
|
|
17
|
-
-> select an authorized slice and route to Execute Work, or wait
|
|
18
|
-
-> no existing Working Record
|
|
19
|
-
-> would losing context, decisions, evidence, or the next action risk misalignment?
|
|
20
|
-
-> no
|
|
21
|
-
-> authorized work in a mutation-permitting mode -> Execute Work
|
|
22
|
-
-> otherwise -> Workflow or wait
|
|
23
|
-
-> yes, but a record is unapproved
|
|
24
|
-
-> recommend a Working Record
|
|
25
|
-
-> wait
|
|
26
|
-
-> yes, and a record is approved
|
|
27
|
-
-> mode permits durable mutation
|
|
28
|
-
-> read the required reference
|
|
29
|
-
-> create the record
|
|
30
|
-
-> first slice already requested or approved
|
|
31
|
-
-> select the slice
|
|
32
|
-
-> Execute Work
|
|
33
|
-
-> only record creation was approved
|
|
34
|
-
-> Current Slice: None
|
|
35
|
-
-> wait
|
|
36
|
-
-> mode does not permit durable mutation
|
|
37
|
-
-> recommend the required mode change
|
|
38
|
-
-> wait
|
|
25
|
+
.freeflow/tasks/task-NNN-<short-name>/record.md
|
|
39
26
|
```
|
|
40
27
|
|
|
41
|
-
|
|
28
|
+
Everything under `.freeflow/tasks/**` is local task memory. Track Work never stages, commits, publishes, promotes, or synchronizes it. [Write Spec](../write-spec/SKILL.md) and [Write Plan](../write-plan/SKILL.md) separately own tracked artifacts.
|
|
42
29
|
|
|
43
|
-
|
|
30
|
+
## Follow The Lifecycle
|
|
44
31
|
|
|
45
|
-
|
|
32
|
+
```text
|
|
33
|
+
Record need established
|
|
34
|
+
-> create or recover the record
|
|
35
|
+
-> reconcile memory with conversation and live evidence
|
|
36
|
+
-> preserve material state changes in their canonical owners
|
|
37
|
+
-> select one authorized outcome or wait
|
|
38
|
+
-> maintain one coherent Current Slice through feedback and checkpoints
|
|
39
|
+
-> settle the outcome and reconcile affected current state
|
|
40
|
+
-> return to Workflow or the owning route
|
|
41
|
+
```
|
|
46
42
|
|
|
47
|
-
|
|
48
|
-
- `Current understanding` is a present-state summary, not a running task summary or compressed transcript. Replace superseded prose instead of appending completed events.
|
|
49
|
-
- Give detailed facts one schema-owned home. Other sections summarize or point to that owner rather than repeating findings, hashes, commands, or test inventories.
|
|
50
|
-
- Only the user changes task state. Do not infer `Paused`, `Completed`, `Abandoned`, or renewed `Active` state from inactivity, apparent completion, or failure.
|
|
51
|
-
- A **slice** is one bounded piece of learning, delivery, or structural improvement. One slice may span multiple iterations of [Workflow's](../workflow/SKILL.md) Feedback Loop and calls to other owning skills.
|
|
52
|
-
- Record state changes, not every edit or conversation. Apply authorized in-scope steering and reconcile its meaningful final effect when the slice closes.
|
|
53
|
-
- Before work changes the recorded result, scope, authority, evidence boundary, or stop conditions, decide and record whether it extends the current slice or requires a new one.
|
|
54
|
-
- Questions, criticism, and review findings do not authorize changes. Ordinary in-slice feedback is not a checkpoint or history event merely because work pauses for the user.
|
|
55
|
-
- Workflow establishes slice outcomes. Implementation, verification, self-review, or a review report does not end a slice by itself, and review need not Pass.
|
|
56
|
-
- The record may preserve authority sources, decisions, checkpoints, and evidence; it never creates authority or proof.
|
|
43
|
+
Do not reduce this lifecycle to `start -> close`. Decisions, proposals, checkpoints, evidence, blockers, Notes, Current Context, and the next action remain part of record maintenance whenever their underlying state materially changes.
|
|
57
44
|
|
|
58
|
-
##
|
|
45
|
+
## Preserve One Living Record
|
|
46
|
+
|
|
47
|
+
Schema-v2 `record.md` is readable Markdown and the only canonical task state. Its semantic owners are:
|
|
48
|
+
|
|
49
|
+
1. **Current Context:** what remains necessary to understand the task now.
|
|
50
|
+
2. **Current Work:** route, one Current Slice or `None`, blockers, selected upcoming boundaries, and one next useful action.
|
|
51
|
+
3. **Proposed Slices:** ordered, revisable outcomes that have not started.
|
|
52
|
+
4. **History:** decision records, resolved checkpoint outcomes, and completed, parked, or abandoned Slices.
|
|
53
|
+
5. **Notes:** inert retained context with no active task effect.
|
|
54
|
+
|
|
55
|
+
Omit optional content when it carries no useful state. Preserve detail when forgetting it could cause a later reader to choose the wrong route. Compactness removes repetition, transcripts, and raw output—not continuity.
|
|
56
|
+
|
|
57
|
+
Give each detailed fact one owner. Other sections use a compact pointer or derived view rather than copying it.
|
|
58
|
+
|
|
59
|
+
Only the user changes task state: `Active`, `Paused`, `Completed`, or `Abandoned`. Paused tasks reject `start` and `resume`. Completed and Abandoned tasks require `Current Slice: None`.
|
|
60
|
+
|
|
61
|
+
## Create Or Recover
|
|
62
|
+
|
|
63
|
+
### Start Honestly
|
|
64
|
+
|
|
65
|
+
A minimal record contains:
|
|
66
|
+
|
|
67
|
+
- user-owned task state;
|
|
68
|
+
- goal or central question;
|
|
69
|
+
- supported current understanding;
|
|
70
|
+
- important route-changing open questions;
|
|
71
|
+
- `Current Slice: None` when no work is selected;
|
|
72
|
+
- one next useful action.
|
|
73
|
+
|
|
74
|
+
A record may begin without decisions, proposals, checkpoints, Notes, or a Current Slice. Do not invent content to fill sections.
|
|
75
|
+
|
|
76
|
+
If discussion already produced decisions, proposals, checkpoint selections, or explicitly retained Notes, create the minimal record and preserve those related facts in the first authorized atomic update before returning to Discuss or execution. Do not let `init` erase state that justified creating the record.
|
|
77
|
+
|
|
78
|
+
If context is too thin, return to Discuss. If the user still requests a record, create an honest minimal one and wait.
|
|
79
|
+
|
|
80
|
+
### Recover From Current Evidence
|
|
81
|
+
|
|
82
|
+
After compaction, summarization, clear, resume, session navigation, or ownership transfer:
|
|
83
|
+
|
|
84
|
+
1. run `view --view resume`;
|
|
85
|
+
2. confirm task identity, task state, Current Slice, route, next action, and record SHA;
|
|
86
|
+
3. compare memory with the current conversation and live repository or environment;
|
|
87
|
+
4. retrieve an exact entity only when its rationale, lineage, authority, chronology, or evidence affects the next decision;
|
|
88
|
+
5. reconcile only state contradicted or changed by supported current evidence;
|
|
89
|
+
6. return to the route that owns the next activity.
|
|
90
|
+
|
|
91
|
+
A record from another conversation branch is memory, not authority. Do not import branch-local approval merely because it is recorded.
|
|
92
|
+
|
|
93
|
+
Before an expected compaction, pause, clear, or transfer, reconcile the record only when material task state changed. The boundary itself is not an event, checkpoint result, or reason to append a status update.
|
|
94
|
+
|
|
95
|
+
## Maintain Current Context
|
|
96
|
+
|
|
97
|
+
Current Context is present state, not chronology:
|
|
98
|
+
|
|
99
|
+
- **Goal:** the durable outcome or central question.
|
|
100
|
+
- **What defines this task:** accepted source pointers or governing artifacts.
|
|
101
|
+
- **Settled:** supported understanding that still affects interpretation or action.
|
|
102
|
+
- **Tentative:** live hypotheses that remain provisional.
|
|
103
|
+
- **Open:** unresolved questions capable of changing the route.
|
|
104
|
+
- **Current direction:** remaining strategy, not completed phases.
|
|
105
|
+
- **Boundaries:** accepted scope, exclusions, evidence limits, and stop conditions that remain relevant.
|
|
106
|
+
|
|
107
|
+
Replace a summary when its meaning changes. Do not append update paragraphs, discussion turns, completed-Slice narration, test inventories, hashes, review findings, or live-run detail.
|
|
108
|
+
|
|
109
|
+
Decision rationale and lineage belong in History. Active decision summaries in views are derived from History; do not store a second decision summary in Current Context.
|
|
110
|
+
|
|
111
|
+
When a Slice settles, rewrite Current Context from what remains true. Remove event detail now owned by History while preserving consequences that still affect later work.
|
|
112
|
+
|
|
113
|
+
## Preserve Discussion Without Taking It Over
|
|
114
|
+
|
|
115
|
+
Discuss owns exploration, alternatives, assumptions, and direction:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
Discuss -> material accepted state -> Track Work update -> Discuss
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Persist only supported changes that could affect later interpretation or action. One atomic update may reconcile related context, decisions, proposals, checkpoint selections, Notes, blockers, or next action.
|
|
122
|
+
|
|
123
|
+
A record update does not end discussion, authorize implementation, select a proposal, choose a checkpoint, settle a user-owned decision, or claim evidence or readiness. Return to Discuss after preservation unless Workflow established another route.
|
|
124
|
+
|
|
125
|
+
## Propose, Select, Or Wait
|
|
126
|
+
|
|
127
|
+
### Preserve Future Outcomes
|
|
128
|
+
|
|
129
|
+
Create a Proposed Slice when an unselected future outcome, evidence boundary, dependency, or ordering must survive context loss.
|
|
130
|
+
|
|
131
|
+
A proposal:
|
|
132
|
+
|
|
133
|
+
- remains unnumbered and has no execution state;
|
|
134
|
+
- carries no authority;
|
|
135
|
+
- names one Learning, Delivery, or Deepening result;
|
|
136
|
+
- states intended result and expected evidence;
|
|
137
|
+
- records real dependencies and selected checkpoints when they exist;
|
|
138
|
+
- remains revisable until selected.
|
|
139
|
+
|
|
140
|
+
Use exact proposal titles rather than ordinal references such as “proposal 2.” Preserve an external Plan phase or identifier only when one exists.
|
|
141
|
+
|
|
142
|
+
Do not create a proposal merely to start it immediately when one already-authorized direct result is clear and no future queue needs preservation. When several outcomes, dependencies, or ordering constraints matter, preserve them first and select one by exact title.
|
|
143
|
+
|
|
144
|
+
### Select With Write-Ahead Authority
|
|
145
|
+
|
|
146
|
+
Select a Slice only when its concrete work is requested or approved. If only record creation is approved, keep `Current Slice: None`, preserve proposals when needed, set the next useful action, and wait.
|
|
147
|
+
|
|
148
|
+
Before [Execute Work](../execute-work/SKILL.md) begins, record:
|
|
149
|
+
|
|
150
|
+
- assigned Slice ID and type;
|
|
151
|
+
- intended result;
|
|
152
|
+
- authority source;
|
|
153
|
+
- reason and scope;
|
|
154
|
+
- expected evidence;
|
|
155
|
+
- stop condition;
|
|
156
|
+
- relevant starting state;
|
|
157
|
+
- dependencies;
|
|
158
|
+
- selected checkpoints and pending boundaries.
|
|
159
|
+
|
|
160
|
+
Save this write-ahead state before execution. It preserves intent; it does not claim execution occurred.
|
|
161
|
+
|
|
162
|
+
Approval cadence and reporting cadence are separate. A decision approval, tentative proposal, nearby instruction, or permission to discuss does not authorize implementation.
|
|
163
|
+
|
|
164
|
+
## Maintain One Current Slice
|
|
165
|
+
|
|
166
|
+
### Keep The Outcome Coherent
|
|
167
|
+
|
|
168
|
+
Current Slice states are:
|
|
169
|
+
|
|
170
|
+
- `In progress`: active work, including in-scope discussion, implementation, feedback, verification, self-review, selected review, correction, and checkpoints.
|
|
171
|
+
- `Blocked`: safe continuation is unavailable because a required decision, dependency, capability, evidence source, stop condition, or other condition is missing.
|
|
172
|
+
|
|
173
|
+
Waiting for ordinary feedback, discussing, reviewing, correcting, or gathering in-scope evidence does not make a Slice Blocked.
|
|
174
|
+
|
|
175
|
+
Keep the same Slice while intended result, authority boundary, evidence boundary, and useful outcome remain coherent. Do not create activity-shaped Slices for implementation, tests, review, corrections, documentation, or commits that belong to the same result.
|
|
176
|
+
|
|
177
|
+
### Reconcile Steering And Extensions
|
|
178
|
+
|
|
179
|
+
Do not log every edit, command, implementation choice, correction, or conversation.
|
|
180
|
+
|
|
181
|
+
When feedback remains inside the accepted result and authority, apply it and preserve its meaningful final effect. When feedback changes intended result, scope, authority, evidence boundary, or stop condition, classify and record the change before acting.
|
|
182
|
+
|
|
183
|
+
Keep an extension in the Current Slice when the intended result remains coherent, current or new explicit authority covers it, the combined result can still be verified as one unit, and no stop condition or owner decision requires another route.
|
|
184
|
+
|
|
185
|
+
Record an accepted extension before execution with its authority source, reason and added scope, added evidence boundary, changed stop condition when applicable, and extension starting state. Preserve the original boundary; do not rewrite it to imply the extension was always planned.
|
|
186
|
+
|
|
187
|
+
Use a new Slice when work needs a distinct result, authority source, evidence boundary, independently useful outcome, or explicit abandonment of the original result. First settle or park the Current Slice; do not silently replace it.
|
|
188
|
+
|
|
189
|
+
Questions, criticism, review findings, and useful suggestions do not authorize changes.
|
|
190
|
+
|
|
191
|
+
### Block, Resume, Or Reopen
|
|
192
|
+
|
|
193
|
+
When safe continuation becomes unavailable:
|
|
194
|
+
|
|
195
|
+
1. keep the Current Slice current;
|
|
196
|
+
2. record what blocks continuation, why it is unsafe, and what resolution is required;
|
|
197
|
+
3. set the resume condition;
|
|
198
|
+
4. stop.
|
|
199
|
+
|
|
200
|
+
Use `resume` when that current blocker resolves and the same outcome remains coherent. Preserve the blocker incident and resolution source. A resolution that expands scope follows the extension rule before execution.
|
|
201
|
+
|
|
202
|
+
Park the Slice as historical `Blocked` only when the attempt is deliberately removed from Current Work while its blocker remains unresolved.
|
|
203
|
+
|
|
204
|
+
Use `reopen` when later authorized work still belongs to a historical Slice's original outcome. Reopening keeps the same ID, preserves prior outcomes through compact reopen history, and requires fresh authority, reason and scope, expected evidence, and stop condition.
|
|
205
|
+
|
|
206
|
+
Failure belongs in evidence or outcome; it is not itself a Slice state.
|
|
207
|
+
|
|
208
|
+
### Keep Review And Correction Inside The Result
|
|
209
|
+
|
|
210
|
+
Implementation, verification, self-review, or an independent review report does not settle the Slice by itself. Review may support continuation, correction, more evidence, deferment, a route change, or stopping; it need not Pass.
|
|
211
|
+
|
|
212
|
+
Keep accepted in-scope correction and its verification inside the Current Slice. Do not invent review or correction Slices.
|
|
213
|
+
|
|
214
|
+
## Preserve Record-Worthy Entities
|
|
215
|
+
|
|
216
|
+
### Decisions
|
|
217
|
+
|
|
218
|
+
Record a task-local Decision when an accepted choice affects later interpretation, implementation, acceptance, or recovery and losing its rationale could cause misalignment.
|
|
219
|
+
|
|
220
|
+
Preserve what was decided, who decided or what established it, rationale and sources, consequences, and a revisit condition when useful.
|
|
221
|
+
|
|
222
|
+
Decision states are:
|
|
223
|
+
|
|
224
|
+
- `Active`: currently affects later work;
|
|
225
|
+
- `Superseded`: replaced or narrowed by another decision, with reciprocal links;
|
|
226
|
+
- `Retired`: historically valid but no longer active.
|
|
227
|
+
|
|
228
|
+
Retire or supersede decisions through their lifecycle. Do not delete durable decision history. A changed understanding is not automatically a decision; a tentative direction remains Tentative until accepted.
|
|
229
|
+
|
|
230
|
+
### Checkpoints
|
|
231
|
+
|
|
232
|
+
A checkpoint is an additional boundary selected by Workflow from an approved Plan or explicit discussion before dependent work. Types are Independent review, Local commit, User decision, and Continuity.
|
|
233
|
+
|
|
234
|
+
Ordinary feedback, self-review, a nearby question, a status pause, or temporal proximity is not a checkpoint.
|
|
235
|
+
|
|
236
|
+
When a checkpoint is selected before or during a Slice:
|
|
237
|
+
|
|
238
|
+
1. use one stable single-line title;
|
|
239
|
+
2. add that exact title to the affected proposal or Current Slice's selected checkpoints;
|
|
240
|
+
3. add a compact upcoming entry under Current Work that preserves the title, selection source, and condition;
|
|
241
|
+
4. keep the Current Slice `In progress` while the checkpoint belongs to its result.
|
|
242
|
+
|
|
243
|
+
When the checkpoint reaches `Completed`, `Deferred`, `Cancelled`, or `Replaced`:
|
|
244
|
+
|
|
245
|
+
1. add one History checkpoint with the exact selected title;
|
|
246
|
+
2. preserve type, selected-by source, condition, terminal result, judgment or decision, evidence pointer, and task effect when applicable;
|
|
247
|
+
3. remove its upcoming Current Work entry in the same atomic update;
|
|
248
|
+
4. return its outcome to Workflow.
|
|
249
|
+
|
|
250
|
+
A Completed Slice cannot close until each selected checkpoint title has a terminal History checkpoint with the exact same title and all other pending boundaries are reconciled.
|
|
251
|
+
|
|
252
|
+
When a task-, phase-, or continuity-level checkpoint follows a settled Slice, leave `Current Slice: None`, keep the checkpoint as upcoming, and make it the next useful action. A Local commit checkpoint never authorizes push or integration.
|
|
253
|
+
|
|
254
|
+
### Evidence And History
|
|
255
|
+
|
|
256
|
+
Keep detailed evidence with the Slice or checkpoint that produced or used it. When two History entities refer to the same event, one owns the detailed findings and the other stores a concise result and pointer.
|
|
257
|
+
|
|
258
|
+
Preserve what was checked, what the result supports and does not support, which state or artifact was observed, selected independent-review judgment and adjudication, completed checkpoint results, and where exact evidence can be found.
|
|
259
|
+
|
|
260
|
+
Use only real pointers such as `file:<path>#<section>`, `commit:<sha>`, `output:<id>`, `review:<reference>`, or `session:<id>/turn:<id>`. Do not copy large raw output or create History for routine self-review.
|
|
261
|
+
|
|
262
|
+
### Notes
|
|
263
|
+
|
|
264
|
+
A Note preserves task-adjacent context with no active task effect. Add one when the user explicitly asks to note, remember, retain, or defer something that has no structured owner.
|
|
265
|
+
|
|
266
|
+
During authorized maintenance, add an agent-originated Note only when the information is concrete, worth preserving across context loss, not already represented, and has no effect on current scope, priority, completion, blockers, or next action. Ask when authorship or retention intent matters.
|
|
267
|
+
|
|
268
|
+
Notes do not authorize, prioritize, schedule, block, unblock, prove, or require follow-up. Do not periodically triage them or create decisions, Slices, Specs, Plans, issues, or artifacts from them by default.
|
|
269
|
+
|
|
270
|
+
If later user direction independently makes Note content active, create the appropriate structured state from that new direction. Preserve the original user-authored Note unless the user requests its change.
|
|
271
|
+
|
|
272
|
+
## Close And Reconcile
|
|
273
|
+
|
|
274
|
+
Historical Slice states are:
|
|
275
|
+
|
|
276
|
+
- `Completed`: the intended result and required in-scope methods, evidence, corrections, and checkpoints are settled;
|
|
277
|
+
- `Blocked`: the unresolved attempt was deliberately parked;
|
|
278
|
+
- `Abandoned`: the intended result is no longer pursued under explicit authority.
|
|
279
|
+
|
|
280
|
+
Before closing, obtain the Workflow-established outcome, gather strongest evidence and proof limits, resolve or deliberately route every selected checkpoint and pending boundary, confirm accepted corrections are verified, and confirm required in-scope work is settled.
|
|
281
|
+
|
|
282
|
+
When closing:
|
|
283
|
+
|
|
284
|
+
1. settle the Current Slice with its intended result, outcome, authority, accepted extensions, strongest evidence, review conclusion and task effect when applicable, and state-specific blocker or abandonment reason;
|
|
285
|
+
2. rewrite Current Context from what remains true;
|
|
286
|
+
3. reconcile decisions, tentative hypotheses, open questions, proposals, blockers, route, and next useful action only where the outcome changed them;
|
|
287
|
+
4. clear Current Work blockers that belonged to the settled Slice;
|
|
288
|
+
5. set `Current Slice: None`;
|
|
289
|
+
6. do not select or start another Slice automatically.
|
|
290
|
+
|
|
291
|
+
A Learning Slice may complete by disproving its hypothesis. A green test or finished implementation alone does not establish closure.
|
|
292
|
+
|
|
293
|
+
Before applying a user-directed task-state change, reconcile Current Context, Current Work, important History, and the next action; then apply exactly the chosen state.
|
|
294
|
+
|
|
295
|
+
## Read Through Purpose-Owned Views
|
|
296
|
+
|
|
297
|
+
After context loss, begin with `view --view resume`, compare the confirmed projection with conversation and live evidence, and retrieve an exact entity only when rationale, authority, chronology, supersession, or evidence is material.
|
|
298
|
+
|
|
299
|
+
- `resume`: complete active state needed to continue safely;
|
|
300
|
+
- `discuss`: Current Context, proposals, and a Current Slice summary;
|
|
301
|
+
- `execute`: the full Current Slice and only context needed for that outcome;
|
|
302
|
+
- `recent`: bounded recent settled Slices;
|
|
303
|
+
- `entity`: one exact proposal, Slice, Decision, checkpoint, or Note;
|
|
304
|
+
- `full`: complete record audit.
|
|
305
|
+
|
|
306
|
+
Views emit direct Markdown with task identity and SHA metadata. There are no public `current` or `work` storage-section views. Do not normally read complete History.
|
|
307
|
+
|
|
308
|
+
## Use The Deterministic Boundary
|
|
309
|
+
|
|
310
|
+
The executable entrypoint is:
|
|
311
|
+
|
|
312
|
+
```text
|
|
313
|
+
skills/track-work/scripts/working-record.mjs
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
This skill decides whether a Decision, proposal, checkpoint, Note, extension, or closure is semantically warranted. The command schema never makes that judgment; it only defines how to express the selected operation.
|
|
317
|
+
|
|
318
|
+
Once the semantic operation is selected, and before the first use of its mutation command in the active context, after context loss, or after any failed operation, run:
|
|
319
|
+
|
|
320
|
+
```text
|
|
321
|
+
node skills/track-work/scripts/working-record.mjs schema --command <name>
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Use only the returned fields, selectors, operations, and conditional requirements. Do not inspect internal modules or reconstruct inputs from memory.
|
|
325
|
+
|
|
326
|
+
Supply semantic JSON with `--input <json-file>` or `--input -`. Existing-record mutations require the exact SHA-256 from a confirmed view or prior confirmed result.
|
|
327
|
+
|
|
328
|
+
Use `update` for precise state and entity edits. Choose one accepted input mode; do not mix `edits` with direct semantic fields. Within `edits`, use exactly one operation per field, entity, or collection edit and batch related edits for one atomic write. Use dedicated commands for Slice transitions and the direct Decision lifecycle form for Decision state transitions.
|
|
329
|
+
|
|
330
|
+
Wrong types, unknown fields, mixed forms, multiple operations, malformed titles, multiline list members, ambiguous selectors, and missing or non-unique text matches fail closed. `replaceText` compares normalized line endings and still requires one exact semantic match.
|
|
331
|
+
|
|
332
|
+
The command families are:
|
|
333
|
+
|
|
334
|
+
- `init`, `view`, `validate`, and `inspect` for creation and observation;
|
|
335
|
+
- `update` for precise context, work, proposal, Decision, checkpoint, Note, and task-state maintenance;
|
|
336
|
+
- `start`, `block`, `resume`, `reopen`, and `close` for Slice lifecycle;
|
|
337
|
+
- `unlock` for explicitly authorized stale-lock recovery;
|
|
338
|
+
- `migrate` and `compress` for explicit representation rewrites.
|
|
339
|
+
|
|
340
|
+
Dry runs validate the same candidate structure and round trip as applied operations but do not persist, create snapshots, consume IDs, or change timestamps. Structural validity never proves semantic truth, readiness, migration effectiveness, or task completion.
|
|
341
|
+
|
|
342
|
+
## Recover Without Guessing
|
|
343
|
+
|
|
344
|
+
A failed, dry-run, read-only, or no-op operation does not change record bytes, SHA, or `Last updated` and does not consume IDs.
|
|
59
345
|
|
|
60
|
-
After
|
|
346
|
+
After `committed-unconfirmed`, discard held SHAs, fresh-read the actual record, run `validate` and `inspect` when available, establish a confirmed projection, and only then discuss or mutate again.
|
|
61
347
|
|
|
62
|
-
|
|
63
|
-
2. **Select or wait:** select a slice only when its concrete work is requested or approved. If only record creation is approved, keep `Current Slice` as `None` and wait. When selected, move one proposal into `Current Slice`, assign its chronological `S-` ID, save the write-ahead state, then route to Execute Work.
|
|
64
|
-
3. **Maintain the slice:** keep small steering out of the event history; record accepted extensions before execution; preserve blockers, review routes, and evidence without replacing a coherent slice.
|
|
65
|
-
4. **Close the slice:** move the Workflow-established outcome to History, preserve the original boundary and accepted extensions, rewrite Current Context from the resulting present state, remove completed-event detail already owned by History, and set `Current Slice` to `None`.
|
|
66
|
-
5. **Preserve what matters:** keep task-local decisions, selected checkpoints, evidence pointers, and Notes in their schema-owned sections.
|
|
348
|
+
Never delete a lock manually. Use `unlock` only after the script reports a stale lock, the user authorizes recovery, and the exact observed lock selectors are available. Live, malformed, changed, replaced, or concurrently removed locks fail closed. Recovery never confirms record content; fresh-read afterward.
|
|
67
349
|
|
|
68
|
-
|
|
350
|
+
Legacy and unsupported records remain read-only until explicit migration. Migration begins from exact `inspect.sourceUnits` and may not summarize, consolidate, drop, retitle, reorder, or move semantic entities to incompatible owners. Compression is a separate authorized operation with explicit scope and preservation declarations. Use each command's current schema; do not infer rewrite coverage.
|
|
69
351
|
|
|
70
|
-
|
|
352
|
+
For malformed, stale, locked, or conflicting state, preserve the exact evidence. Do not force-write, guess repair, bypass the script, silently change scope, or continue with a stale SHA.
|
|
71
353
|
|
|
72
|
-
|
|
354
|
+
## Check Consistency
|
|
73
355
|
|
|
74
|
-
|
|
356
|
+
Before relying on or finishing a record mutation, confirm:
|
|
75
357
|
|
|
76
|
-
|
|
358
|
+
- Current Context describes present state rather than accumulated events.
|
|
359
|
+
- Detailed facts have one canonical owner.
|
|
360
|
+
- Current Work names no more than one Slice with a clear authority source.
|
|
361
|
+
- Every current or historical Slice keeps one stable ID.
|
|
362
|
+
- Proposed Slices remain unnumbered, unselected, and ordered by real dependencies.
|
|
363
|
+
- Accepted extensions preserve the original boundary and were recorded before execution.
|
|
364
|
+
- Discussion, review, correction, and checkpoints did not replace a coherent Current Slice.
|
|
365
|
+
- `Blocked` means safe continuation is unavailable, not that feedback is pending.
|
|
366
|
+
- active Decisions remain recoverable through History and lifecycle links are consistent.
|
|
367
|
+
- upcoming checkpoints retain their selection source and condition.
|
|
368
|
+
- resolved checkpoint titles exactly match their selected references.
|
|
369
|
+
- Notes remain inert and user-authored Notes preserve their meaning.
|
|
370
|
+
- settled evidence and event detail are not duplicated in Current Context.
|
|
371
|
+
- one next useful action exists and belongs only to Current Work.
|
|
372
|
+
- live evidence and current user direction override contradictory memory.
|
|
77
373
|
|
|
78
|
-
|
|
374
|
+
Correct a clear clerical inconsistency inside current authority or return a material conflict to Workflow or Discuss. Do not force the next lifecycle transition.
|
|
79
375
|
|
|
80
|
-
|
|
376
|
+
## Return To The Owner
|
|
81
377
|
|
|
82
|
-
|
|
378
|
+
- unchanged discussion state: return to Discuss or wait;
|
|
379
|
+
- material accepted memory: update, then return to its owner;
|
|
380
|
+
- authorized execution: start, then Execute Work;
|
|
381
|
+
- unavailable continuation: block and stop;
|
|
382
|
+
- resolved current blocker: resume, then Execute Work;
|
|
383
|
+
- authorized continuation of a settled outcome: reopen;
|
|
384
|
+
- settled outcome: close, reconcile affected state, then return to Workflow;
|
|
385
|
+
- malformed, stale, locked, or conflicting state: preserve evidence and return to Workflow or Discuss;
|
|
386
|
+
- point-in-time transfer: [Handoff](../handoff/SKILL.md).
|
|
83
387
|
|
|
84
|
-
|
|
388
|
+
Track Work ends when the record accurately preserves supported state and one next useful action. It does not claim implementation, review, migration effectiveness, commit, release, or publication is complete.
|