owlrunkit 0.17.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.18.0
4
+
5
+ - Introduces the Project Driver product path for continuity across Agents and
6
+ sessions, with typed direct `init`, `assign`, `checkpoint`, `handoff`,
7
+ `decision`, `verification`, `integrate`, `status`, `takeover`, and
8
+ bounded `successor` actions.
9
+ - Projects a deterministic dominant gap, next action, next actor, and headline
10
+ from durable project artifacts without accepting guessed percentages or
11
+ inventing completion.
12
+ - Keeps legacy `--request` event input for compatibility while removing the
13
+ need for normal users to author request, event, receipt, or hash JSON.
14
+ - Clarifies that ordinary multi-Agent coordination does not automatically mean
15
+ Formal; the assurance boundary follows the underlying risk and authority.
16
+ - Adds a deferred-verification ledger that records stable unrun check IDs,
17
+ reason, owner, and due integration gate without executing tests. Due open
18
+ checks block only their declared gate; closure requires verification evidence
19
+ or an already resolved project decision that says the check is no longer
20
+ required.
21
+ - Keeps coverage reuse in the existing verification-plan/receipt substrate, so
22
+ Project Driver status exposes the remaining gap instead of creating a second
23
+ test engine or repeatedly rerunning covered checks.
24
+ - Defines the 0.18 Project Driver as a bounded surface for new projects and
25
+ controlled dogfood. Its product name does not claim to be a general
26
+ long-running, multi-phase, or enterprise control plane.
27
+ - Adds an Owner-invoked Project Successor for one derived-completed active V1
28
+ project: archive the exact prior bytes under a content-addressed identity,
29
+ install one different empty V1 project at the same active path, and recover
30
+ the atomic transition from a durable journal after interruption.
31
+ - Rejects incomplete or changed project truth, the same project identity,
32
+ symlinked inputs, archive collisions, and competing successor transactions.
33
+ Completed archives are sealed against ordinary writes; exact retry and the
34
+ next successor boundary validate every completed journal's archive bytes and
35
+ seal before active truth or a new journal can change. Status and takeover do
36
+ not perform that historical scan. Incomplete projects stay on their current
37
+ truth. The receipt grants no Git, release, publication, deployment, or
38
+ adoption authority. Handoff and takeover do not automatically promote an
39
+ authoritative writer.
40
+ - Keeps Core successor, release compatibility, publication, Project Successor,
41
+ and project adoption as separate authority boundaries.
42
+ - Preserves the published `0.17.2` Core and package as the trusted rollback
43
+ prior for the independent `0.18.0` candidate.
44
+
45
+ ## 0.17.2
46
+
47
+ - Treats valid profile launcher portability warnings as non-blocking maintenance,
48
+ allowing an adopted project to finish onboarding.
49
+ - Separates lifecycle, maintenance, and optional-review actions while keeping one
50
+ lifecycle-prioritized top-level next action.
51
+ - Reports trusted unlinked closeouts as non-blocking independent histories rather
52
+ than implying damaged or ambiguous control state.
53
+ - Collapses repeated profile launcher warnings into one machine-readable summary
54
+ while retaining detailed launcher diagnostics under the profile check.
55
+
3
56
  ## 0.17.1
4
57
 
5
58
  - Prevents a completed checkpoint with `nextAction: null` from reviving an
package/README.md CHANGED
@@ -1,14 +1,26 @@
1
1
  # OwlRunKit
2
2
 
3
- OwlRunKit is OwlCoda's project-owned execution and evidence engine, released
4
- with its own version lifecycle. It makes the correct workflow the ordinary
5
- path: choose the assurance level, run bounded work, preserve source and
6
- evidence, then close out once.
3
+ OwlRunKit is OwlCoda's Project Driver for cross-Agent project continuity and
4
+ progression. Its execution, evidence, verification, and recovery substrate
5
+ makes that continuity inspectable and recoverable. RunKit 0.18 keeps work
6
+ moving across Agents and sessions through a typed direct flow while preserving
7
+ the existing assurance, source, and evidence boundaries.
8
+
9
+ The 0.18 Project Driver is a bounded surface for new projects and controlled
10
+ dogfood. Its product name does not claim to be a general long-running,
11
+ multi-phase, or enterprise control plane. Version 0.18 adds one bounded
12
+ Project Successor operation: an Owner may archive the exact prior bytes of a
13
+ derived-completed active project and install a different, empty V1 project as the sole
14
+ active project. It is not a general migration or multi-project writer system.
15
+ Incomplete projects stay on their current truth. Handoff and takeover do not
16
+ automatically promote an authoritative writer. Core successor, release
17
+ compatibility, publication, Project Successor, and project adoption remain
18
+ separate authority boundaries.
7
19
 
8
20
  ## Install
9
21
 
10
22
  ```bash
11
- npm install --save-exact owlrunkit@0.17.1
23
+ npm install --save-exact owlrunkit@0.18.0
12
24
  ```
13
25
 
14
26
  The `owlrunkit` bootstrap uses the project's exact locally bound CLI for
@@ -26,22 +38,101 @@ owlrunkit init --workspace /absolute/path/to/project
26
38
  owlrunkit doctor --workspace /absolute/path/to/project
27
39
  ```
28
40
 
29
- ## Coordinate a multi-Agent project
41
+ ## Project Driver: Coordinate a multi-Agent project
30
42
 
31
- RunKit 0.17 keeps the project alive independently of any one Agent or chat.
32
- Define durable milestones, workstreams, WorkItems, dependencies, integration
33
- gates, and optional measured units, then record append-only assignment and
34
- checkpoint events:
43
+ RunKit 0.18 keeps the project alive independently of any one Agent or chat.
44
+ Initialize a definition, then use typed direct commands for the normal
45
+ assignment, checkpoint, handoff, decision, integration, status, and takeover
46
+ flow:
35
47
 
36
48
  ```bash
49
+ cp node_modules/owlrunkit/scripts/runkit-contract/templates/team-project-definition.json ./project-definition.json
37
50
  owlrunkit project init --workspace . \
38
- --definition scripts/runkit-contract/templates/team-project-definition.json
39
- owlrunkit project assign --workspace . \
40
- --request scripts/runkit-contract/templates/team-project-event.json
51
+ --definition ./project-definition.json
52
+ owlrunkit project assign --workspace . --assignment-id assign-1 \
53
+ --at 2026-08-09T00:00:00.000Z --work-item work-item-1 --agent agent-runtime
54
+ owlrunkit project checkpoint --workspace . --checkpoint-id checkpoint-1 \
55
+ --at 2026-08-09T00:05:00.000Z --assignment-id assign-1 --work-item work-item-1 \
56
+ --state active --summary 'Implement the bounded work item' \
57
+ --completed-units 0 \
58
+ --next 'Run the focused verification'
59
+ owlrunkit project handoff --workspace . --handoff-id handoff-1 \
60
+ --at 2026-08-09T00:10:00.000Z --assignment-id assign-1 --work-item work-item-1 \
61
+ --from-agent agent-runtime --to-agent agent-successor \
62
+ --summary 'Source work is ready for continuation' --next 'Run verification' \
63
+ --evidence evidence/source.txt
64
+ owlrunkit project assign --workspace . --assignment-id assign-2 \
65
+ --at 2026-08-09T00:11:00.000Z --work-item work-item-1 \
66
+ --agent agent-successor --supersedes assign-1
67
+ owlrunkit project decision --workspace . --open --decision-id decision-1 \
68
+ --at 2026-08-09T00:12:00.000Z --title 'Choose the accepted source path' \
69
+ --question 'Which source path should continue?' --owner-agent agent-successor \
70
+ --blocking-work-item work-item-1 --option accepted --option rejected
71
+ owlrunkit project decision --workspace . --resolve --decision-id decision-1 \
72
+ --at 2026-08-09T00:13:00.000Z --resolution 'Use the accepted source path' \
73
+ --rationale 'It preserves the project contract' --evidence evidence/decision.txt
74
+ owlrunkit project checkpoint --workspace . --checkpoint-id checkpoint-2 \
75
+ --at 2026-08-09T00:14:00.000Z --assignment-id assign-2 \
76
+ --work-item work-item-1 --state completed --completed-units 1 \
77
+ --summary 'Accepted work is complete' --evidence evidence/completion.txt
78
+ owlrunkit project verification --workspace . --defer \
79
+ --verification-id release-batch --at 2026-08-09T00:14:30.000Z \
80
+ --work-item work-item-1 --owner-agent agent-successor \
81
+ --check typecheck --check full-suite --check package-smoke \
82
+ --reason 'Run broad checks once after the related changes settle' \
83
+ --due-gate integration-ready
84
+ # After those checks run once against the frozen candidate:
85
+ owlrunkit project verification --workspace . --close \
86
+ --verification-id release-batch --at 2026-08-09T00:14:45.000Z \
87
+ --disposition verified --summary 'The batched release checks passed' \
88
+ --evidence evidence/release-batch.txt
89
+ owlrunkit project integrate --workspace . --gate integration-ready \
90
+ --at 2026-08-09T00:15:00.000Z --summary 'Integration gate evidence is complete' \
91
+ --evidence evidence/integration.txt
41
92
  owlrunkit project status --workspace .
42
- owlrunkit project takeover --workspace . --agent agent-runtime
93
+ owlrunkit project takeover --workspace . --agent agent-successor
94
+ owlrunkit project successor --workspace . --transition-id project-next-001 \
95
+ --at 2026-08-09T00:16:00.000Z --definition ./next-project-definition.json \
96
+ --reason 'Archive the completed project and begin the next bounded project'
43
97
  ```
44
98
 
99
+ Normal users supply the one definition JSON to `init`, then use typed flags and
100
+ values. They do not need to author request, event, receipt, or hash JSON. The
101
+ legacy `--request <event.json>` path remains available for existing automation
102
+ and compatibility. Multiple Agents do not make project coordination Formal by
103
+ themselves. This flow does not make project coordination Formal by itself; the
104
+ assurance lane follows the underlying high-risk integration,
105
+ release, production, migration, destructive, or explicit Formal-acceptance boundary.
106
+
107
+ `project verification --defer` is a small deferred-verification ledger, not a
108
+ test scheduler. It records stable check IDs, why they were intentionally not
109
+ run yet, the responsible Agent, and the integration gate before which they
110
+ must close. `status` and `takeover` keep that gap visible without repeatedly
111
+ executing anything; the due gate stays blocked while the record is open.
112
+ Closing as `verified` requires evidence. Closing a check that is no longer
113
+ required uses `--disposition no_longer_required` and must reference an already
114
+ resolved project decision. RunKit never turns either disposition into Git,
115
+ release, deployment, or business authority.
116
+
117
+ The existing coverage-adoption and verification-plan surfaces remain the
118
+ source for reusable receipts and exact pending commands in the Formal lane.
119
+ The Project Driver records the remaining coordination gap; it does not create
120
+ a second test engine or ask an Agent to repeat already covered checks.
121
+
122
+ `project successor` is available only after the current project derives
123
+ `overall=completed`. It keeps the active path at
124
+ `.owlcoda/runkit/project`, moves the exact prior bytes into a
125
+ content-addressed `project-archives` entry, and installs a new definition with
126
+ an empty event directory. A durable transition journal makes the same request
127
+ restartable after interruption; a competing transition, symlink, archive
128
+ collision, changed truth, same project identity, or incomplete project fails
129
+ closed. Archived regular files and directories are sealed against ordinary
130
+ writes with the receipt-bound `0444`/`0555` policy before completion. Archive
131
+ integrity and that seal are validated on an exact retry and before any later
132
+ successor; `project status` and `project takeover` remain active-truth
133
+ projections and do not perform a broad historical archive scan. The receipt
134
+ always keeps Git, release, publish, deploy, and adoption authority false.
135
+
45
136
  `project status` reports every Agent's active, waiting, completed, and failed
46
137
  work; unresolved dependencies and decisions; the ready queue; critical work;
47
138
  and integration gates. It does not accept a guessed completion percentage.
@@ -1,6 +1,6 @@
1
1
  # OwlRunKit 0.17 Agent-Native Product Definition
2
2
 
3
- Status: implemented candidate pending Formal acceptance and public release.
3
+ Status: released in `owlrunkit@0.17.2` and integrated into the private mainline.
4
4
 
5
5
  ## Product purpose
6
6
 
@@ -150,5 +150,4 @@ The release is acceptable only when all of these are mechanically demonstrated:
150
150
  9. existing 0.16 execution, migration, fleet, deployment, and release contracts
151
151
  remain compatible;
152
152
  10. the standalone npm artifact is reproducible, scrubbed, identity-bound, and
153
- independently verified after publication.
154
-
153
+ independently verified after publication.
@@ -0,0 +1,165 @@
1
+ # OwlCoda RunKit 0.18 Project Driver Product Definition
2
+
3
+ Status: public product contract for the standalone `owlrunkit@0.18.0` candidate.
4
+ This document defines the normal project-continuity path; it does not grant Git,
5
+ release, npm, deployment, production, migration, destructive, or business
6
+ authority.
7
+
8
+ The 0.18 Project Driver is a bounded surface for new projects and controlled
9
+ dogfood. Its product name does not claim to be a general long-running,
10
+ multi-phase, or enterprise control plane. Version 0.18 includes one bounded
11
+ Project Successor lifecycle operation for a derived-completed active V1
12
+ project. It is not a general existing-project migration, multi-project
13
+ registry, or automatic writer-promotion system. Incomplete projects stay on
14
+ their current truth. Handoff and takeover do not automatically promote an
15
+ authoritative writer. Core successor, rollback compatibility, publication,
16
+ Project Successor, and project adoption remain separate authority boundaries.
17
+
18
+ ## Product outcome
19
+
20
+ RunKit 0.18 is the Project Driver for work that continues across Agents,
21
+ sessions, interruptions, and handoffs. A user should be able to return to a
22
+ blank session, run `status` or `takeover`, and receive a bounded next action,
23
+ the responsible Agent, the dominant gap, and the evidence needed to proceed.
24
+ The normal recovery target is a useful takeover packet within two minutes on a
25
+ local project with an existing definition and event history.
26
+
27
+ ## Normal typed mainline
28
+
29
+ The ordinary user-facing flow is a typed direct CLI surface:
30
+
31
+ 1. `project init` accepts one project definition JSON file and creates the
32
+ durable project model.
33
+ 2. `project assign` gives a WorkItem to an Agent.
34
+ 3. `project checkpoint` records meaningful state and evidence.
35
+ 4. `project handoff` transfers a responsibility without overwriting its
36
+ history.
37
+ 5. `project decision` opens or resolves a decision with rationale and evidence.
38
+ 6. `project integrate` records an integration-gate result with evidence.
39
+ 7. `project status` projects the current team state.
40
+ 8. `project takeover` builds the next bounded action for a successor Agent.
41
+ 9. After the project derives `overall=completed`, `project successor`
42
+ archives it and installs one fresh project under explicit Owner invocation.
43
+
44
+ Except for the one definition supplied to `init`, normal users provide typed
45
+ flags and values. They do not need to author request, event, receipt, or hash
46
+ JSON. The legacy `--request <event.json>` path remains available for existing
47
+ automation and compatibility, but it is not the product's primary interaction.
48
+
49
+ ## Project Driver projection
50
+
51
+ Every status and takeover projection exposes the same deterministic recovery
52
+ spine:
53
+
54
+ - `dominantGap`: the highest-priority unresolved decision, failed WorkItem,
55
+ blocked dependency root, active responsibility, or integration gate;
56
+ - `nextAction`: the next bounded action that is legal from the durable state;
57
+ - `nextActorId`: the Agent responsible for that action when one is known;
58
+ - `headline`: a concise human explanation of the current project state.
59
+
60
+ The projection derives these fields from append-only artifacts. It never accepts
61
+ a guessed percentage, promotes an evidence candidate into business truth,
62
+ invents completion, or overwrites an earlier assignment, handoff, decision, or
63
+ checkpoint.
64
+
65
+ ## Continuity actions
66
+
67
+ A handoff preserves the outgoing assignment and records the successor action.
68
+ A decision separates the open question from its later resolution, rationale,
69
+ and evidence. An integration event records that the project gate was reached;
70
+ it is not a Git merge, release, deployment, or publication operation. Status and
71
+ takeover are read-only projections and are safe to repeat after an interruption.
72
+
73
+ ## Bounded Project Successor
74
+
75
+ `project successor` is the only 0.18 operation that replaces the active
76
+ Project Driver truth. It first requires the current project to derive
77
+ `overall=completed`; a chat summary, checkpoint claim, or caller flag cannot
78
+ substitute for that projection. The target definition must use a different
79
+ project identity and begins with no events.
80
+
81
+ The operation holds an external lifecycle lock and the active project control
82
+ lock, records a durable transition journal, archives the exact prior bytes of
83
+ every regular file and directory under a content-addressed raw manifest, and atomically installs
84
+ the fresh active project at `.owlcoda/runkit/project`. Exact retries resume
85
+ the journal after the prepared, archived, or active-installed boundaries.
86
+ Before completion, archived regular files and directories are sealed against
87
+ ordinary writes with a receipt-bound `0444`/`0555` policy. An exact retry
88
+ validates that archive's bytes and seal. Before any later successor writes a
89
+ new journal or moves active truth, it validates the archive bound by every
90
+ completed transition journal. Status and takeover remain active-truth
91
+ projections and do not perform this historical scan. Different concurrent
92
+ transitions, leaf or ancestor symlinks, non-regular files, archive collisions,
93
+ truth drift, borrowed events, and ambiguous active state fail closed.
94
+
95
+ This lifecycle operation does not select a new authoritative Agent, migrate an
96
+ incomplete project, merge project histories, discover multiple projects, adopt
97
+ a package, or grant repository or release authority. Its receipt records all
98
+ Git, tag, publish, and deploy actions as false.
99
+
100
+ ## Deferred verification without test thrash
101
+
102
+ RunKit may record a `verification_deferred` project event when related changes
103
+ should settle before a focused or broad check is run. The event contains only
104
+ stable check identifiers, the reason for deferral, the responsible Agent, the
105
+ related WorkItem, and the exact integration gate before which it is due. It
106
+ does not contain an executable shell command and does not schedule or run a
107
+ test.
108
+
109
+ An open record becomes the dominant project gap only after the ordinary work
110
+ needed by that gate is complete. The declared gate cannot pass until the record
111
+ closes. A `verified` close requires evidence; a `no_longer_required` close
112
+ requires a previously resolved project decision. The second disposition is
113
+ reported honestly and is never presented as a passing test.
114
+
115
+ Coverage adoption, source-bound receipts, and `verify-plan` remain responsible
116
+ for deciding which Formal commands are already covered and which are pending.
117
+ The Project Driver consumes that outcome as coordination truth rather than
118
+ duplicating the verification engine. This allows an Agent team to batch a
119
+ small, explainable group of related changes and verify it once at the correct
120
+ transition while preserving visible, fail-closed debt.
121
+
122
+ ## Hidden trust substrate
123
+
124
+ The typed surface is backed by the existing trust substrate: immutable project
125
+ definition identity, append-only and idempotent events, canonical bytes,
126
+ regular workspace and path checks, source and evidence references, and
127
+ execution-bound lifecycle truth where a WorkItem binds an execution. Config,
128
+ profiles, leases, fingerprints, receipts, and the `.owlcoda/runkit` directory
129
+ remain internal control data; they are not user-supplied authorization.
130
+ The substrate continues to fail closed on malformed, ambiguous, redirected, or
131
+ untrusted control state. Normal project coordination retains
132
+ `authorizationGranted=false` unless a separately authorized boundary says
133
+ otherwise.
134
+
135
+ ## Assurance boundary
136
+
137
+ Multiple Agents coordinating a project do not make project coordination Formal
138
+ by themselves. This normal flow does not make project coordination Formal by
139
+ itself; multi-Agent coordination does not automatically mean Formal.
140
+ The assurance lane is selected by the underlying risk and authority: ordinary
141
+ coordination may remain on the typed Project Driver path; high-risk source
142
+ integration, release, production, migration, destructive work, or an explicit
143
+ Formal acceptance request crosses the assurance boundary. Quick and Formal
144
+ verification remain distinct receipts and workflows. Neither grants Git, npm,
145
+ deployment, production, funds, or business authority.
146
+
147
+ ## Performance and operating burden
148
+
149
+ The Project Driver is local-first and daemon-free. A project needs one
150
+ definition and an append-only event directory; ordinary users do not maintain
151
+ lease, receipt, fingerprint, or request JSON by hand. `status` and `takeover`
152
+ are read-only and deterministic, and repeated calls do not create project
153
+ events. Projection cost grows with the bounded definition and event history,
154
+ while the two-minute takeover target keeps interruption recovery operationally
155
+ small enough for routine Agent changes.
156
+
157
+ ## Authority and compatibility
158
+
159
+ `owlrunkit@0.18.0` is an independent standalone candidate. The root `owlcoda`
160
+ package keeps its separate `0.15.32` lifecycle, and the published `owlrunkit`
161
+ `0.17.2` package remains the trusted rollback prior. Existing 0.17.x project
162
+ artifacts remain readable through the Core successor and trusted-prior paths.
163
+ The 0.17 Agent-Native product definition remains bundled as historical
164
+ compatibility documentation; this 0.18 document is the current Project Driver
165
+ contract.
@@ -1,28 +1,35 @@
1
1
  ---
2
2
  name: owlcoda-runkit
3
- description: Run receipt-backed, project-owned work with OwlCoda RunKit. Use when Codex needs to coordinate a large multi-Agent project, show per-Agent progress, manage dependencies or decisions, hand work to another Agent, recover a blank-session next action, initialize or inspect `.owlcoda/runkit/`, plan bounded work with engine pins and leases, capture exact verification evidence, close an execution, produce a ready-for-commit receipt, or perform a read-only foreign-project shadow without widening Git or release authority.
3
+ description: Run receipt-backed, project-owned work with OwlCoda RunKit. Use when Codex needs to coordinate a large multi-Agent project, show per-Agent progress, manage dependencies or decisions, record intentionally deferred verification without repeating covered tests, hand work to another Agent, recover a blank-session next action, initialize or inspect `.owlcoda/runkit/`, plan bounded work with engine pins and leases, capture exact verification evidence, close an execution, produce a ready-for-commit receipt, or perform a read-only foreign-project shadow without widening Git or release authority.
4
4
  ---
5
5
 
6
6
  # OwlCoda RunKit
7
7
 
8
8
  Use the bundled deterministic Core to coordinate work through project artifacts rather than chat memory. Require Node.js 20 or later.
9
9
 
10
- Bundled release: standalone `owlrunkit@0.17.1`, bundling Contract `0.2` and
11
- Core `0.17.1` with manifest
12
- `sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26`.
13
- Publication and dist-tag state are mutable registry facts: verify the exact
14
- official npm registry provenance before adoption. The immutable rollback
15
- baseline for this release is `owlrunkit@0.16.1` with SHA-1
10
+ Bundled release: standalone `owlrunkit@0.18.0`, bundling Contract `0.2` and
11
+ Core `0.18.0` with manifest
12
+ `sha256:2cafa3b76a6b267888b116edfb04d9d6b455db0a7dcd289b30a265d418b7abec`.
13
+ The published `owlrunkit@0.17.2` package is the trusted prior for rollback;
14
+ verify exact official npm registry provenance before adoption. The immutable
15
+ rollback baseline for the prior release is `owlrunkit@0.16.1` with SHA-1
16
16
  `1bc119d24879bdd8959af16b364af55ca9d61ea9` and canonical npm tarball URL
17
17
  `https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.16.1.tgz`.
18
18
  The root `owlcoda` package has a separate version lifecycle.
19
19
 
20
20
  The session is an execution interface. Project artifacts are the system of record.
21
21
 
22
- ## Agent-native project actions
22
+ ## Project Driver actions
23
23
 
24
- Translate ordinary user requests into durable project actions. Do not ask the
25
- user to operate the CLI when the request and authority are already clear.
24
+ Translate ordinary user requests into durable typed project actions. Do not ask
25
+ the user to operate the CLI when the request and authority are already clear.
26
+
27
+ The normal mainline is `init`, `assign`, `checkpoint`, `handoff`, `decision`,
28
+ `verification`, `integrate`, `status`, and `takeover`. After a project
29
+ derives completed, `successor` is the bounded lifecycle step. `init` accepts one project definition
30
+ JSON; subsequent actions use direct typed flags. Normal users do not author
31
+ request, event, receipt, or hash JSON. The legacy `--request <event.json>` form
32
+ remains available for existing automation and compatibility.
26
33
 
27
34
  - "Split this large task and run it in parallel": initialize one project
28
35
  definition before dispatch, then assign a distinct WorkItem to each Agent.
@@ -35,10 +42,22 @@ user to operate the CLI when the request and authority are already clear.
35
42
  never overwrite the old assignment.
36
43
  - "Continue/take over": build `project takeover` for the current Agent and use
37
44
  its bounded next action and evidence refs.
45
+ - "Start the next project": only after status derives `overall=completed`,
46
+ invoke `project successor` with a different V1 definition and explicit
47
+ transition ID. Preserve the content-addressed archive and journal; never
48
+ use handoff, takeover, install, or publication as successor authority.
38
49
  - "Capture this as data": append a data candidate only. Never call it a dataset
39
50
  member without a separate admission decision.
40
- - "Verify/finish": select No RunKit, Quick, or Formal from risk; bind a Formal
41
- WorkItem to its actual execution and lease when applicable.
51
+ - "Do not run that check yet": append one deferred verification with stable
52
+ check IDs, reason, owner, WorkItem, and due integration gate. This records an
53
+ unrun check; it does not execute or schedule one.
54
+ - "That deferred check is done": close it as `verified` with evidence. If the
55
+ check is no longer required, first resolve an explicit project decision and
56
+ close it as `no_longer_required` with that decision ID. Never report the
57
+ second disposition as a passing test.
58
+ - "Verify/finish": select No RunKit, Quick, or Formal from the underlying risk;
59
+ bind a Formal WorkItem to its actual execution and lease when applicable.
60
+ Multi-Agent coordination alone does not select Formal.
42
61
 
43
62
  For a multi-Agent project, checkpoint meaningful state changes promptly. A
44
63
  checkpoint is not a heartbeat and must not contain a guessed percentage.
@@ -47,12 +66,72 @@ state from the closeout and lease rather than trusting the Agent's claim.
47
66
 
48
67
  ```bash
49
68
  owlrunkit project init --workspace "$PROJECT_ROOT" --definition "$PROJECT_JSON"
50
- owlrunkit project assign --workspace "$PROJECT_ROOT" --request "$EVENT_JSON"
51
- owlrunkit project checkpoint --workspace "$PROJECT_ROOT" --request "$EVENT_JSON"
69
+ owlrunkit project assign --workspace "$PROJECT_ROOT" --assignment-id "$ASSIGNMENT_ID" \
70
+ --at "$OCCURRED_AT" --work-item "$WORK_ITEM_ID" --agent "$AGENT_ID"
71
+ owlrunkit project checkpoint --workspace "$PROJECT_ROOT" --checkpoint-id "$CHECKPOINT_ID" \
72
+ --at "$OCCURRED_AT" --assignment-id "$ASSIGNMENT_ID" --work-item "$WORK_ITEM_ID" \
73
+ --state active --summary "$SUMMARY" --next "$NEXT_ACTION"
74
+ owlrunkit project handoff --workspace "$PROJECT_ROOT" --handoff-id "$HANDOFF_ID" \
75
+ --at "$OCCURRED_AT" --assignment-id "$ASSIGNMENT_ID" --work-item "$WORK_ITEM_ID" \
76
+ --from-agent "$AGENT_ID" --to-agent "$SUCCESSOR_AGENT_ID" \
77
+ --summary "$SUMMARY" --next "$NEXT_ACTION" --evidence "$EVIDENCE_REF"
78
+ owlrunkit project decision --workspace "$PROJECT_ROOT" --resolve \
79
+ --decision-id "$DECISION_ID" --at "$OCCURRED_AT" --resolution "$RESOLUTION" \
80
+ --rationale "$RATIONALE" --evidence "$EVIDENCE_REF"
81
+ owlrunkit project verification --workspace "$PROJECT_ROOT" --defer \
82
+ --verification-id "$VERIFICATION_ID" --at "$OCCURRED_AT" \
83
+ --work-item "$WORK_ITEM_ID" --owner-agent "$AGENT_ID" \
84
+ --check "$CHECK_ID" --reason "$REASON" --due-gate "$GATE_ID"
85
+ owlrunkit project verification --workspace "$PROJECT_ROOT" --close \
86
+ --verification-id "$VERIFICATION_ID" --at "$OCCURRED_AT" \
87
+ --disposition verified --summary "$SUMMARY" --evidence "$EVIDENCE_REF"
88
+ owlrunkit project integrate --workspace "$PROJECT_ROOT" --gate "$GATE_ID" \
89
+ --at "$OCCURRED_AT" --summary "$SUMMARY" --evidence "$EVIDENCE_REF"
52
90
  owlrunkit project status --workspace "$PROJECT_ROOT" --json
53
91
  owlrunkit project takeover --workspace "$PROJECT_ROOT" --agent "$AGENT_ID" --json
92
+ owlrunkit project successor --workspace "$PROJECT_ROOT" \
93
+ --transition-id "$TRANSITION_ID" --at "$OCCURRED_AT" \
94
+ --definition "$NEXT_PROJECT_JSON" --reason "$SUCCESSOR_REASON" --json
54
95
  ```
55
96
 
97
+ `project successor` accepts only a derived-completed active project and a
98
+ different fresh V1 identity. It archives the exact prior bytes, never borrows
99
+ old events, and resumes only an identical durable transition. Treat symlinks,
100
+ collisions, competing transition IDs, incomplete truth, and changed truth as
101
+ fail-closed. The archived tree is sealed against ordinary writes. Exact retry
102
+ validates its archive bytes and seal, and each later successor validates every
103
+ completed transition archive before changing active truth or writing its own
104
+ journal. Do not infer a historical archive scan from `status` or `takeover`;
105
+ those remain active-truth projections. The receipt never grants Git, release,
106
+ publication, deployment, package-adoption, or writer authority.
107
+
108
+ ## Batch verification around a small explainable closure
109
+
110
+ Use a verification micro-batch when two or three related changes share one
111
+ module or contract, one writer, one worktree, one causal hypothesis, and one
112
+ acceptance level. During implementation, run only the smallest smoke or
113
+ falsifier needed to reject a wrong direction. After the related changes settle,
114
+ freeze the candidate and run its focused suite once.
115
+
116
+ Run typecheck, lint, build, and diff checks once at candidate closeout unless a
117
+ later edit invalidates them. Keep broad suites, installed-package checks,
118
+ deployment checks, production reads, and large data hashes at the actual state
119
+ transition that needs them. Do not run them early just to make an intermediate
120
+ packet look complete.
121
+
122
+ Independent acceptance first validates candidate identity and trustworthy
123
+ coverage, then adds fresh adversarial or boundary scenarios. It does not repeat
124
+ the implementer's whole covered suite unless the receipt is missing, stale,
125
+ drifted, flaky, or insufficient for the requested acceptance level.
126
+
127
+ Do not defer an immediate containment, authorization, symlink/realpath,
128
+ rollback-safety, security, money, or data-integrity falsifier. Split a batch
129
+ when ownership, worktree, authority, hypothesis, or acceptance level differs,
130
+ or when a failure would no longer be attributable. An open deferred
131
+ verification remains visible in `status` and `takeover` and blocks its declared
132
+ integration gate; it never grants permission to run the check or any later
133
+ Git, release, deployment, or production action.
134
+
56
135
  ## Start safely
57
136
 
58
137
  1. Locate the project root and read its AGENTS.md chain.
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": "OwlCodaRunKitConfigV2",
3
3
  "core": {
4
4
  "contractVersion": "0.2",
5
- "coreVersion": "0.17.1",
6
- "coreManifestSha256": "sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26",
7
- "coreSourceRef": "artifact:sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26"
5
+ "coreVersion": "0.18.0",
6
+ "coreManifestSha256": "sha256:2cafa3b76a6b267888b116edfb04d9d6b455db0a7dcd289b30a265d418b7abec",
7
+ "coreSourceRef": "artifact:sha256:2cafa3b76a6b267888b116edfb04d9d6b455db0a7dcd289b30a265d418b7abec"
8
8
  },
9
9
  "authorizationPolicy": "external_explicit_authority_required"
10
10
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "owlrunkit",
3
- "version": "0.17.1",
4
- "description": "Project-owned execution, evidence, verification, and recovery for coding agents.",
3
+ "version": "0.18.0",
4
+ "description": "Project Driver for cross-Agent project continuity and progression; execution, evidence, verification, and recovery are the underlying trust substrate.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "author": "yeemio <owlclaw@163.com>",
7
7
  "type": "module",
@@ -36,6 +36,16 @@
36
36
  "sha256": "sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986"
37
37
  },
38
38
  "supportedProducerCoreIdentities": [
39
+ {
40
+ "contractVersion": "0.2",
41
+ "coreVersion": "0.18.0",
42
+ "coreManifestSha256": "sha256:2cafa3b76a6b267888b116edfb04d9d6b455db0a7dcd289b30a265d418b7abec"
43
+ },
44
+ {
45
+ "contractVersion": "0.2",
46
+ "coreVersion": "0.17.2",
47
+ "coreManifestSha256": "sha256:67b883b8a763253b873fb6047c7e7e01c81123aa5250a0db5feaabd13cc4d860"
48
+ },
39
49
  {
40
50
  "contractVersion": "0.2",
41
51
  "coreVersion": "0.17.1",
@@ -18,6 +18,16 @@ import { captureWorkspaceSnapshot } from "./workspace-snapshot.mjs";
18
18
  export { validQuickReceiptShape } from "./quick-receipt-contract.mjs";
19
19
 
20
20
  export const SUPPORTED_QUICK_CORE_IDENTITIES = Object.freeze([
21
+ {
22
+ contractVersion: "0.2",
23
+ coreVersion: "0.18.0",
24
+ coreManifestSha256: "sha256:2cafa3b76a6b267888b116edfb04d9d6b455db0a7dcd289b30a265d418b7abec",
25
+ },
26
+ {
27
+ contractVersion: "0.2",
28
+ coreVersion: "0.17.2",
29
+ coreManifestSha256: "sha256:67b883b8a763253b873fb6047c7e7e01c81123aa5250a0db5feaabd13cc4d860",
30
+ },
21
31
  {
22
32
  contractVersion: "0.2",
23
33
  coreVersion: "0.17.1",
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": "OwlCodaRunKitRegistryReleasePolicyV1",
3
3
  "status": "release_candidate_unpublished",
4
4
  "packageName": "owlrunkit",
5
- "candidateVersion": "0.17.1",
5
+ "candidateVersion": "0.18.0",
6
6
  "registry": "https://registry.npmjs.org",
7
7
  "registryRequiredBeforeAdoption": true,
8
8
  "exactVersionRequired": true,
@@ -23,10 +23,10 @@
23
23
  ],
24
24
  "currentPublishedRelease": {
25
25
  "packageName": "owlrunkit",
26
- "version": "0.17.0",
27
- "shasum": "fa9eb5cd3ad1b168f36fdca10676a7fa8fe2f584",
28
- "integrity": "sha512-ghUnQaCtxA81htdL3LqqMMaQpKnQ9kwW4ELLZ8mo3BTcbLkGJv/QhFa50JtLHdn6n/ti3sBsfQUgKvHVQZQjPA==",
29
- "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.17.0.tgz"
26
+ "version": "0.17.2",
27
+ "shasum": "73f46ec4db52d74697436900f36eafe72cb67132",
28
+ "integrity": "sha512-djTV1O/Clm7VCpx7boyXpJCfLfyAjuLUf+zoNLy7xyCG3LnmDiVUWtQcZFEyqWW8ts1ptd9DYyyZFdK5w1dAbA==",
29
+ "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.17.2.tgz"
30
30
  },
31
31
  "registryRelease": null,
32
32
  "registryEvidenceMustBeExternal": true,
package/sbom.spdx.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "spdxVersion": "SPDX-2.3",
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
- "name": "owlrunkit-0.17.1",
6
- "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.17.1",
5
+ "name": "owlrunkit-0.18.0",
6
+ "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.18.0",
7
7
  "creationInfo": {
8
8
  "created": "2026-07-29T00:00:00Z",
9
9
  "creators": [
@@ -14,8 +14,8 @@
14
14
  {
15
15
  "name": "owlrunkit",
16
16
  "SPDXID": "SPDXRef-Package-OwlRunKit",
17
- "versionInfo": "0.17.1",
18
- "downloadLocation": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.17.1.tgz",
17
+ "versionInfo": "0.18.0",
18
+ "downloadLocation": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.18.0.tgz",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "GPL-3.0-or-later",
21
21
  "licenseDeclared": "GPL-3.0-or-later",
@@ -24,7 +24,7 @@
24
24
  {
25
25
  "referenceCategory": "PACKAGE-MANAGER",
26
26
  "referenceType": "purl",
27
- "referenceLocator": "pkg:npm/owlrunkit@0.17.1"
27
+ "referenceLocator": "pkg:npm/owlrunkit@0.18.0"
28
28
  }
29
29
  ]
30
30
  }