owlrunkit 0.19.2 → 0.21.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +94 -8
  3. package/docs/architecture/OWLCODA_RUNKIT_0201_RELEASE_TRUTH_AND_PROFILE_NORMALIZATION_PATCH_DECISION_20260813.md +95 -0
  4. package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
  5. package/docs/architecture/OWLCODA_RUNKIT_021_TEAM_DELIVERY_PHASE2_PRODUCT_DECISION_20260813.md +249 -0
  6. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +114 -12
  7. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  8. package/package.json +1 -1
  9. package/packages/attest/README.md +7 -1
  10. package/packages/attest/consumer-surface-v3.json +275 -0
  11. package/packages/attest/distribution-manifest-v1.json +19 -0
  12. package/packages/attest/schemas/canonical-candidate-identity-v1.schema.json +112 -0
  13. package/packages/attest/schemas/foreign-workspace-filesystem-identity-v1.schema.json +32 -0
  14. package/packages/attest/schemas/quick-verification-receipt-v4.schema.json +226 -0
  15. package/packages/attest/src/candidate-identity.mjs +454 -0
  16. package/packages/attest/src/index.mjs +11 -0
  17. package/packages/attest/src/quick-receipt-contract.mjs +126 -5
  18. package/packages/attest/src/quick.mjs +48 -8
  19. package/{registry-release-policy-v1.json → registry-release-policy-v2.json} +8 -9
  20. package/sbom.spdx.json +4 -4
  21. package/scripts/runkit-contract/core-contract.mjs +21 -1
  22. package/scripts/runkit-contract/fleet-skill-plan.mjs +223 -0
  23. package/scripts/runkit-contract/formal-workflow.mjs +3 -1
  24. package/scripts/runkit-contract/inspect-presentation.mjs +56 -0
  25. package/scripts/runkit-contract/install-codex-skill.mjs +1 -0
  26. package/scripts/runkit-contract/onboarding-bootstrap.mjs +15 -0
  27. package/scripts/runkit-contract/onboarding-doctor.mjs +201 -7
  28. package/scripts/runkit-contract/profile-onboarding.mjs +6 -0
  29. package/scripts/runkit-contract/project-cli-resolver.mjs +12 -1
  30. package/scripts/runkit-contract/quick-metrics.mjs +9 -5
  31. package/scripts/runkit-contract/quick-verify.mjs +108 -24
  32. package/scripts/runkit-contract/registry-adoption-gate.mjs +12 -3
  33. package/scripts/runkit-contract/registry-adoption.mjs +10 -5
  34. package/scripts/runkit-contract/runkit-cli.mjs +367 -20
  35. package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
  36. package/scripts/runkit-contract/schemas/delivery-lifecycle-v1.schema.json +91 -0
  37. package/scripts/runkit-contract/schemas/external-gate-v1.schema.json +68 -0
  38. package/scripts/runkit-contract/schemas/fleet-skill-upgrade-plan-v1.schema.json +140 -0
  39. package/scripts/runkit-contract/schemas/inspect-compact-v1.schema.json +93 -0
  40. package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
  41. package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
  42. package/scripts/runkit-contract/schemas/team-delivery-status-v2.schema.json +219 -0
  43. package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
  44. package/scripts/runkit-contract/schemas/team-project-event-v6.schema.json +82 -0
  45. package/scripts/runkit-contract/schemas/team-project-event-v7.schema.json +80 -0
  46. package/scripts/runkit-contract/schemas/team-project-status-v4.schema.json +208 -0
  47. package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
  48. package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
  49. package/scripts/runkit-contract/sync-release-identity.mjs +87 -0
  50. package/scripts/runkit-contract/team-delivery.mjs +1031 -0
  51. package/scripts/runkit-contract/team-project.mjs +970 -9
@@ -0,0 +1,249 @@
1
+ # OwlRunKit 0.21 Team Delivery Phase 2 Product Decision
2
+
3
+ Date: 2026-08-13
4
+ Status: `product_contract_definition / implementation_and_release_truth_tracked_separately`
5
+
6
+ ## Decision
7
+
8
+ OwlRunKit 0.21 extends the existing Project Driver and read-only Team Delivery
9
+ projection with two missing kinds of durable truth:
10
+
11
+ 1. typed external Gates produced by domain-owned adapters; and
12
+ 2. an evidence-bound delivery lifecycle that keeps source acceptance,
13
+ integration, materialization, deployment, live readback, and product acceptance separate.
14
+
15
+ Project Driver remains the only active task graph. Phase 2 does not add a
16
+ scheduler, start an Agent, select a model, increase assurance, parse arbitrary
17
+ domain documents, or grant Git, release, deployment, production, or business
18
+ authority.
19
+
20
+ The implementation order is fixed:
21
+
22
+ 1. ExternalGateV1 plus DeliveryLifecycleV1 contracts and read-only projection;
23
+ 2. explicit Quick-receipt binding for WorkItems that declare an evidence
24
+ requirement;
25
+ 3. inventory of explicit candidate artifacts not yet represented as active
26
+ WorkItem lanes; and
27
+ 4. copyable fleet Skill dry-run, install, and rollback plans.
28
+
29
+ The OwlFootball 0.20 dogfood adds three bounded Phase 2 corrections to the
30
+ same release: a canonical candidate identity, controller-owned verification of
31
+ a frozen foreign worktree, and explicit Doctor visibility for package/shared
32
+ Skill drift. Commit-rebinding remains a separate future receipt contract and
33
+ is not implied by these additions.
34
+
35
+ Assisted or automatic Agent dispatch is not part of 0.21. It requires a later
36
+ Owner decision after real dogfood demonstrates lower handoff time or lower
37
+ controller intervention.
38
+
39
+ ## Stable product model
40
+
41
+ The independent dimensions remain:
42
+
43
+ ```text
44
+ continuity none | project_driver
45
+ coordination none | team_delivery
46
+ assurance none | quick | formal
47
+ acceptance L0 | L1 | L2 | L3
48
+ authority externally granted; never inferred by RunKit
49
+ ```
50
+
51
+ Phase 2 adds delivery state without folding it into those dimensions:
52
+
53
+ ```text
54
+ work ledger
55
+ -> source accepted
56
+ -> integrated
57
+ -> materialized
58
+ -> deployed
59
+ -> live readback
60
+ -> product accepted
61
+ ```
62
+
63
+ Every arrow requires a new append-only fact and evidence. A passed source Gate
64
+ does not imply integration. Integration does not imply a sealed or built
65
+ artifact. Materialization does not imply deployment. Deployment does not imply
66
+ a healthy readback. A healthy readback does not imply product or business
67
+ acceptance.
68
+
69
+ ## ExternalGateV1
70
+
71
+ RunKit does not know what an OwlFootball packaging Gate, a MES runtime Gate, or
72
+ another domain decision means. The domain product owns that judgment. A
73
+ domain-owned adapter may emit one strict generic Gate observation containing:
74
+
75
+ - a stable Gate identity and title;
76
+ - the delivery stage that requires it;
77
+ - `pending`, `passed`, `blocked`, or `deferred` status;
78
+ - the responsible Agent;
79
+ - adapter identity, source reference, and exact SHA-256 source digest;
80
+ - a concise summary and evidence references; and
81
+ - an all-false authority boundary.
82
+
83
+ The typed Project Driver command records the observation as an immutable event.
84
+ A later observation must explicitly supersede the current observation for that
85
+ Gate. RunKit validates the structure and source binding; it does not parse or
86
+ reinterpret the domain source.
87
+
88
+ An unresolved external Gate is visible throughout status projection. Once the
89
+ work ledger is otherwise ready for the Gate's delivery stage, that Gate becomes
90
+ the dominant gap and replaces any misleading execution next action.
91
+
92
+ ## DeliveryLifecycleV1
93
+
94
+ The lifecycle contains six fixed stages:
95
+
96
+ | Stage | Positive fact | Other honest outcomes |
97
+ |---|---|---|
98
+ | source | `accepted` | `rejected` |
99
+ | integration | `integrated` | `rejected` |
100
+ | materialization | `materialized` | `failed` |
101
+ | deployment | `deployed` | `failed`, `rolled_back` |
102
+ | live readback | `passed` | `failed` |
103
+ | product acceptance | `accepted` | `rejected`, `deferred` |
104
+
105
+ A lifecycle record binds one stage, outcome, responsible Agent, evidence, and
106
+ the external Gates used for that transition. The current projection includes
107
+ all six stages, the highest positively established stage, the next required
108
+ stage, any blocking stage, and unresolved external Gates.
109
+
110
+ The runtime enforces ordering. It rejects integration before source acceptance,
111
+ materialization before integration, deployment before materialization, live
112
+ readback before deployment, and product acceptance before a passed live
113
+ readback. A later correction for the same stage
114
+ must supersede the current stage record. A correction cannot silently rewrite
115
+ downstream facts.
116
+
117
+ Recording a deployed or accepted fact is evidence bookkeeping only. Every
118
+ result continues to carry `authorizationGranted=false` and cannot authorize the
119
+ underlying action.
120
+
121
+ ## Versioning and compatibility
122
+
123
+ Published predecessor contracts are immutable:
124
+
125
+ - TeamProject Event V1-V5 retain their existing bytes and meanings;
126
+ - TeamProject Status V1-V3 retain their existing fields and projections; and
127
+ - Team Delivery Status V1 retains its Phase 1 surface.
128
+
129
+ Phase 2 uses successor contracts:
130
+
131
+ - TeamProject Event V6 for external Gate and delivery lifecycle facts;
132
+ - TeamProject Event V7 for WorkItem evidence policy and receipt-bound
133
+ checkpoint facts;
134
+ - TeamProject Status V4 for ExternalGateV1 and DeliveryLifecycleV1 projection;
135
+ - Team Delivery Status V2 for the corresponding read-only Team view.
136
+
137
+ Raw generic capture may not create V6 or V7 facts. Operators use typed commands so
138
+ the current Gate, lifecycle ordering, source binding, and exact retry rules are
139
+ checked before the event is written.
140
+
141
+ ## Receipt binding
142
+
143
+ Phase 2 adds `project work-item require-evidence` and
144
+ `project checkpoint --from-quick-receipt`. The WorkItem policy is append-only
145
+ and may select `none` or `quick`; it does not represent Formal acceptance.
146
+ Receipt binding attests the current Quick receipt and persists an immutable
147
+ reference. It becomes blocking only when the WorkItem contract explicitly
148
+ requires Quick evidence. Existing WorkItems, measurable work, and
149
+ assurance=`none` are not retroactively upgraded to Quick or Formal.
150
+
151
+ ## Explicit candidate inventory
152
+
153
+ Team Delivery may report `unmodeled_candidate_lanes` only from artifacts RunKit
154
+ can identify explicitly, such as a verified DeliveryPacket, target snapshot,
155
+ data-candidate event, or external Gate. It may not infer a candidate from an
156
+ arbitrary dirty worktree or create a second task graph.
157
+
158
+ The inventory is read-only. Turning an artifact into active Project Driver work
159
+ requires a separate typed project action and authority.
160
+
161
+ ## Fleet Skill operations
162
+
163
+ Shared Skill drift remains non-blocking for a project-local CLI unless an exact
164
+ project contract says otherwise. A fleet plan may show affected projects and
165
+ copyable dry-run, install, and rollback commands. It may not silently update a
166
+ shared Skill while any project has an active execution or lease.
167
+
168
+ ## Canonical candidate identity
169
+
170
+ The primary dirty-candidate identity is a canonical ordered ledger, not a raw
171
+ `git diff` digest. It records the target HEAD and tracked tree plus every
172
+ changed path, prior rename path, operation, Git status, file kind, mode, byte
173
+ length, and content SHA-256. Discovery uses `LC_ALL=C`, disables optional Git
174
+ locks, and fixes `core.abbrev=40`; the command, environment, Git version,
175
+ ledger byte length, ledger hash, and candidate fingerprint are persisted.
176
+
177
+ The full-index binary diff remains available as a transport artifact with a
178
+ fixed command, but its digest is explicitly not the candidate identity.
179
+
180
+ ## Controller-owned Foreign Quick
181
+
182
+ `quick-verify --workspace <controller> --foreign-workspace <target>` keeps the
183
+ project-local CLI and every RunKit artifact in the controller. The target must
184
+ be a separate real Git worktree root. RunKit copies its visible source into a
185
+ disposable consumer, optionally projects an already-installed disjoint
186
+ dependency root, and binds Quick Receipt V4 to the target's canonical candidate
187
+ and bounded filesystem identities before and after execution.
188
+
189
+ The current resolver remains fail-closed: a controller CLI may not masquerade
190
+ as the target's older or absent project-local CLI. `zeroWriteObserved` means
191
+ the governed target state matched before and after; RunKit does not claim an OS
192
+ write sandbox or prove that a transient write restored before the second
193
+ observation never occurred.
194
+
195
+ ## Doctor Skill drift
196
+
197
+ Doctor reports package-bound and discovered process-wide Skill versions and absolute
198
+ paths. A mismatch is a visible non-blocking warning when the project-local CLI
199
+ and Core are valid. RunKit cannot observe which instruction bytes an existing
200
+ Agent process loaded, so `loadedSkillVersion` remains `unknown` and the repair
201
+ guidance starts a new session using the package-bound Skill. Fleet mutation
202
+ still requires the separate safe plan/install boundary.
203
+
204
+ ## Acceptance scenarios
205
+
206
+ 1. A typed pending external Gate is projected with its source hash, blocks the
207
+ relevant delivery stage, and becomes the unique dominant gap when due.
208
+ 2. A later exact superseding observation may pass the Gate; stale, duplicate,
209
+ or source-unbound observations fail closed.
210
+ 3. Source, integration, materialization, deployment, live readback, and product acceptance each
211
+ require a separate evidence-bound event and never auto-promote.
212
+ 4. Out-of-order lifecycle facts, unresolved required external Gates, and
213
+ attempts to revise an earlier stage beneath downstream truth fail before
214
+ writing.
215
+ 5. Status V1-V3 and Team Delivery Status V1 remain unchanged; V4/V2 expose the
216
+ new fields under new schema identities.
217
+ 6. Raw project capture cannot bypass typed V6 intake.
218
+ 7. Team and Project status remain read-only and dispatch remains disabled.
219
+ 8. No result grants Git, release, deployment, production, business, automation,
220
+ money, credential, or Agent-dispatch authority.
221
+ 9. Quick-receipt binding never forces assurance on an existing WorkItem that
222
+ did not explicitly require it.
223
+ 10. Candidate inventory is derived only from explicit artifacts and does not
224
+ infer arbitrary dirty-worktree truth.
225
+ 11. Canonical candidate identity remains byte-stable when only Git object
226
+ abbreviation settings or unrelated object-store population changes.
227
+ 12. Foreign Quick writes receipts only under the controller, creates no target
228
+ `.owlcoda/runkit`, binds target/dependency/command evidence, and invalidates
229
+ any permanent governed target delta observed after execution.
230
+ 13. Doctor exposes package/process Skill drift and absolute package Skill path
231
+ without claiming knowledge of the Skill already loaded by an Agent.
232
+
233
+ ## Non-goals
234
+
235
+ - no automatic or assisted Agent launch;
236
+ - no model or vendor selection;
237
+ - no general scheduler or second graph;
238
+ - no automatic assurance escalation;
239
+ - no parsing of domain product contracts inside Core;
240
+ - no implicit deployment, product acceptance, or business verdict;
241
+ - no shared Skill mutation without fleet-safe explicit invocation;
242
+ - no publication claim from repository source or test success.
243
+
244
+ ## Claims boundary
245
+
246
+ This document defines the Phase 2 product contract. Its presence does not prove
247
+ implementation completion, package publication, project adoption, shared Skill
248
+ activation, runtime deployment, or business acceptance. Those facts require
249
+ their own current receipts and external readback.
@@ -7,20 +7,114 @@ description: Run receipt-backed, project-owned work with OwlCoda RunKit. Use whe
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 candidate: standalone `owlrunkit@0.19.2`, bundling Contract `0.2` and
11
- Core `0.19.2` with manifest
12
- `sha256:c46ae9d8ed0572e5636ab5725f922f8db3ee5bf0f966b200bce7b2287c9267c8`.
13
- This candidate is not published. The current published release remains
14
- `owlrunkit@0.19.1`, which is the trusted prior for rollback and the only
15
- registry-installable version named by this Skill before publication. Verify
16
- exact official npm registry provenance before adoption. The immutable
17
- rollback baseline for the prior release is `owlrunkit@0.16.1` with SHA-1
18
- `1bc119d24879bdd8959af16b364af55ca9d61ea9` and canonical npm tarball URL
19
- `https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.16.1.tgz`.
10
+ Bundled release artifact: standalone `owlrunkit@0.21.0`, bundling Contract `0.2` and
11
+ Core `0.21.0` with manifest
12
+ `sha256:f85b9bf8c32705d5f5dfebdb653e83ac8d1ac0468214c17f230cbd2de04246fd`.
13
+ Registry adoption remains fail-closed until exact official npm registry
14
+ provenance for `owlrunkit@0.21.0` is independently verified. The published
15
+ rollback baseline for this artifact is `owlrunkit@0.20.0`, with SHA-1
16
+ `b123f5ea33a4f500961a0df3226ed0ca409d111d` and canonical npm tarball URL
17
+ `https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.20.0.tgz`.
20
18
  The root `owlcoda` package has a separate version lifecycle.
21
19
 
22
20
  The session is an execution interface. Project artifacts are the system of record.
23
21
 
22
+ ## Team Delivery Phase 1
23
+
24
+ Use Team Delivery only when current Project Driver facts make coordination
25
+ material. It is a read-only projection, not a second graph or an Agent launcher.
26
+
27
+ ```bash
28
+ npx --no-install owlrunkit team recommend --workspace "$PROJECT_ROOT"
29
+ npx --no-install owlrunkit team status --workspace "$PROJECT_ROOT"
30
+ npx --no-install owlrunkit team packet validate --workspace "$PROJECT_ROOT" \
31
+ --packet /absolute/path/to/team-packet.json
32
+ ```
33
+
34
+ An uninitialized project, no actionable work, or one ordinary ready WorkItem
35
+ must remain off. Disjoint actionable lanes may be parallel-eligible; overlapping
36
+ owned paths must block parallel writing. Independent verification, handoff,
37
+ rework, candidate transfer, or multiple active owners may recommend Team without
38
+ changing assurance. TeamTaskPacket V2, TeamAcceptancePacket V2, and
39
+ CandidateTransferPacket V1 are package-owned portable contracts. Do not depend
40
+ on a user-level `manage-agent-team` Skill at runtime. Core does not choose model
41
+ vendors, score Agents, start tasks, or grant Git, release, deployment,
42
+ production, business, automation, or money authority.
43
+
44
+ ## Team Delivery Phase 2
45
+
46
+ Use successor status when external acceptance or delivery state must remain
47
+ distinct from the Project Driver work ledger:
48
+
49
+ ```bash
50
+ npx --no-install owlrunkit project reconcile --workspace "$PROJECT_ROOT" \
51
+ --reconciliation-id <id> --at <ISO-UTC> --gate-id <gate> --title <title> \
52
+ --required-for <source|integration|materialization|deployment|live_readback|product_acceptance> \
53
+ --gate-status <pending|passed|blocked|deferred> --owner-agent <agent> \
54
+ --source-adapter <adapter> --source-ref <ref> --source-sha256 <sha256:...> \
55
+ --summary <text> --evidence <ref>
56
+ npx --no-install owlrunkit project delivery record --workspace "$PROJECT_ROOT" \
57
+ --record-id <id> --at <ISO-UTC> --stage <stage> --stage-status <outcome> \
58
+ --owner-agent <agent> --summary <text> --evidence <ref>
59
+ npx --no-install owlrunkit team status --workspace "$PROJECT_ROOT"
60
+ ```
61
+
62
+ ExternalGateV1 is a typed adapter observation; Core does not parse domain
63
+ product documents. DeliveryLifecycleV1 records source acceptance, integration,
64
+ materialization, deployment, live readback, and product acceptance separately and never
65
+ auto-promotes. `unmodeledCandidateLanes` contains only explicit RunKit facts,
66
+ not guesses from a dirty worktree. Dispatch and authority remain false.
67
+
68
+ An existing WorkItem stays lightweight unless a typed policy explicitly
69
+ requires Quick evidence. When required, bind one currently attested receipt:
70
+
71
+ ```bash
72
+ npx --no-install owlrunkit project work-item require-evidence \
73
+ --workspace "$PROJECT_ROOT" --policy-id <id> --at <ISO-UTC> \
74
+ --work-item <id> --owner-agent <agent> --requirement quick \
75
+ --reason <text> --evidence <ref>
76
+ npx --no-install owlrunkit project checkpoint --workspace "$PROJECT_ROOT" \
77
+ --checkpoint-id <id> --at <ISO-UTC> --assignment-id <id> --work-item <id> \
78
+ --state completed --summary <text> --from-quick-receipt <receipt.json>
79
+ ```
80
+
81
+ For shared Skill drift, run the read-only fleet plan before any explicit
82
+ installer action:
83
+
84
+ ```bash
85
+ npx --no-install owlrunkit fleet skill-plan \
86
+ --skill-root "$RUNKIT_SKILL_TARGET" --archive-root "$RUNKIT_SKILL_ARCHIVE_ROOT"
87
+ ```
88
+
89
+ Doctor reports both the package-bound and discovered shared Skill absolute
90
+ paths and versions. Shared drift is visible but non-blocking for a valid
91
+ project-local CLI. `loadedSkillVersion=unknown` is deliberate: RunKit cannot
92
+ inspect which instructions an already-running Agent process loaded. Start a
93
+ new Agent session with the package-bound Skill when current instructions are
94
+ required.
95
+
96
+ For one exact verification against a frozen worktree that must not receive
97
+ RunKit state, use the controller-owned lane:
98
+
99
+ ```bash
100
+ npx --no-install owlrunkit quick-verify \
101
+ --workspace "$CONTROLLER_ROOT" --foreign-workspace "$FROZEN_TARGET" \
102
+ --dependency-root "$DEPENDENCY_ROOT" -- <executable> [args...]
103
+ ```
104
+
105
+ Receipt V4 stays under the controller and binds the target's canonical
106
+ candidate ledger, before/after governed filesystem identity, disposable
107
+ consumer, dependency environment, and exact command. Treat
108
+ `zeroWriteObserved=true` as before/after observed evidence, not proof that an
109
+ OS-level transient write could not have been restored. Never replace the
110
+ existing project-local CLI fail-closed resolver with an ancestor/global CLI.
111
+
112
+ Treat Team status warnings as typed advice. A
113
+ `no_bound_verification_receipt` warning is non-blocking unless a separate gate
114
+ contract says otherwise; do not make historical assurance=`none` work run
115
+ Formal retroactively. Prefer the aggregated warning summary for blank-session
116
+ recovery and expand individual WorkItems only when action is required.
117
+
24
118
  ## Project Driver actions
25
119
 
26
120
  Translate ordinary user requests into durable typed project actions. Do not ask
@@ -211,14 +305,22 @@ below has no CLI entry.
211
305
 
212
306
  ```bash
213
307
  npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
214
- --exact owlrunkit@0.19.1 --dry-run
308
+ --exact owlrunkit@0.21.0 --dry-run
215
309
  npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
216
- --exact owlrunkit@0.19.1 --apply
310
+ --exact owlrunkit@0.21.0 --apply
217
311
  npx --no-install owlrunkit init --workspace "$PROJECT_ROOT"
218
312
  npx --no-install owlrunkit inspect --json --workspace "$PROJECT_ROOT"
313
+ npx --no-install owlrunkit inspect --json --compact --workspace "$PROJECT_ROOT"
219
314
  npx --no-install owlrunkit status --workspace "$PROJECT_ROOT"
220
315
  ```
221
316
 
317
+ Use compact inspect for routine Agent recovery. It intentionally omits full
318
+ execution and Project Driver history while retaining project truth, progress,
319
+ dominant gap, owner, next action, warnings, execution counts, and false
320
+ authority fields. Doctor reports project CLI/Core and shared Skill versions
321
+ independently; process-level Skill drift is non-blocking and must not override
322
+ the installed project Core.
323
+
222
324
  Prefer `bootstrap` for a new standalone-package consumer or an eligible idle
223
325
  project upgrade. Its dry-run is zero-write; apply rechecks the exact local
224
326
  package and official registry binding under a project-owned lock, then performs
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": "OwlCodaRunKitConfigV2",
3
3
  "core": {
4
4
  "contractVersion": "0.2",
5
- "coreVersion": "0.19.2",
6
- "coreManifestSha256": "sha256:c46ae9d8ed0572e5636ab5725f922f8db3ee5bf0f966b200bce7b2287c9267c8",
7
- "coreSourceRef": "artifact:sha256:c46ae9d8ed0572e5636ab5725f922f8db3ee5bf0f966b200bce7b2287c9267c8"
5
+ "coreVersion": "0.21.0",
6
+ "coreManifestSha256": "sha256:f85b9bf8c32705d5f5dfebdb653e83ac8d1ac0468214c17f230cbd2de04246fd",
7
+ "coreSourceRef": "artifact:sha256:f85b9bf8c32705d5f5dfebdb653e83ac8d1ac0468214c17f230cbd2de04246fd"
8
8
  },
9
9
  "authorizationPolicy": "external_explicit_authority_required"
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owlrunkit",
3
- "version": "0.19.2",
3
+ "version": "0.21.0",
4
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>",
@@ -1,7 +1,7 @@
1
1
  # `@owlcoda/attest`
2
2
 
3
3
  `@owlcoda/attest` is OwlCoda RunKit's unsigned, read-only verification plane.
4
- It verifies Quick Receipt V1, V2, and V3 artifacts, Formal public verification
4
+ It verifies Quick Receipt V1, V2, V3, and V4 artifacts, Formal public verification
5
5
  bundles, and local `OwlCodaAttestationRefV1` references without importing the
6
6
  private mutation Core. V2 adds one hash-bound stdin material while preserving
7
7
  the same unsigned, authorization-free assurance boundary. V3 adds a disposable
@@ -13,6 +13,12 @@ marked private until naming clearance and release authorization exist.
13
13
  `consumer-surface-v1.json` remains the byte-compatible predecessor contract.
14
14
  `consumer-surface-v2.json` adds Receipt V3, Snapshot V2, isolated Quick, and
15
15
  explicit ignored-path issue codes without reinterpreting V1.
16
+ `consumer-surface-v3.json` adds Receipt V4 for controller-owned verification of
17
+ a disjoint frozen Git worktree. It binds a canonical target candidate ledger,
18
+ the before/after governed target filesystem identity, the disposable consumer,
19
+ and any external dependency root. Its zero-write statement is an observed
20
+ before/after fact; it does not claim that a transient write restored before the
21
+ second observation was impossible.
16
22
 
17
23
  ## CLI
18
24