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.
- package/CHANGELOG.md +63 -0
- package/README.md +94 -8
- package/docs/architecture/OWLCODA_RUNKIT_0201_RELEASE_TRUTH_AND_PROFILE_NORMALIZATION_PATCH_DECISION_20260813.md +95 -0
- package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
- package/docs/architecture/OWLCODA_RUNKIT_021_TEAM_DELIVERY_PHASE2_PRODUCT_DECISION_20260813.md +249 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +114 -12
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +1 -1
- package/packages/attest/README.md +7 -1
- package/packages/attest/consumer-surface-v3.json +275 -0
- package/packages/attest/distribution-manifest-v1.json +19 -0
- package/packages/attest/schemas/canonical-candidate-identity-v1.schema.json +112 -0
- package/packages/attest/schemas/foreign-workspace-filesystem-identity-v1.schema.json +32 -0
- package/packages/attest/schemas/quick-verification-receipt-v4.schema.json +226 -0
- package/packages/attest/src/candidate-identity.mjs +454 -0
- package/packages/attest/src/index.mjs +11 -0
- package/packages/attest/src/quick-receipt-contract.mjs +126 -5
- package/packages/attest/src/quick.mjs +48 -8
- package/{registry-release-policy-v1.json → registry-release-policy-v2.json} +8 -9
- package/sbom.spdx.json +4 -4
- package/scripts/runkit-contract/core-contract.mjs +21 -1
- package/scripts/runkit-contract/fleet-skill-plan.mjs +223 -0
- package/scripts/runkit-contract/formal-workflow.mjs +3 -1
- package/scripts/runkit-contract/inspect-presentation.mjs +56 -0
- package/scripts/runkit-contract/install-codex-skill.mjs +1 -0
- package/scripts/runkit-contract/onboarding-bootstrap.mjs +15 -0
- package/scripts/runkit-contract/onboarding-doctor.mjs +201 -7
- package/scripts/runkit-contract/profile-onboarding.mjs +6 -0
- package/scripts/runkit-contract/project-cli-resolver.mjs +12 -1
- package/scripts/runkit-contract/quick-metrics.mjs +9 -5
- package/scripts/runkit-contract/quick-verify.mjs +108 -24
- package/scripts/runkit-contract/registry-adoption-gate.mjs +12 -3
- package/scripts/runkit-contract/registry-adoption.mjs +10 -5
- package/scripts/runkit-contract/runkit-cli.mjs +367 -20
- package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
- package/scripts/runkit-contract/schemas/delivery-lifecycle-v1.schema.json +91 -0
- package/scripts/runkit-contract/schemas/external-gate-v1.schema.json +68 -0
- package/scripts/runkit-contract/schemas/fleet-skill-upgrade-plan-v1.schema.json +140 -0
- package/scripts/runkit-contract/schemas/inspect-compact-v1.schema.json +93 -0
- package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
- package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
- package/scripts/runkit-contract/schemas/team-delivery-status-v2.schema.json +219 -0
- package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
- package/scripts/runkit-contract/schemas/team-project-event-v6.schema.json +82 -0
- package/scripts/runkit-contract/schemas/team-project-event-v7.schema.json +80 -0
- package/scripts/runkit-contract/schemas/team-project-status-v4.schema.json +208 -0
- package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
- package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
- package/scripts/runkit-contract/sync-release-identity.mjs +87 -0
- package/scripts/runkit-contract/team-delivery.mjs +1031 -0
- package/scripts/runkit-contract/team-project.mjs +970 -9
package/docs/architecture/OWLCODA_RUNKIT_021_TEAM_DELIVERY_PHASE2_PRODUCT_DECISION_20260813.md
ADDED
|
@@ -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
|
|
11
|
-
Core `0.
|
|
12
|
-
`sha256:
|
|
13
|
-
|
|
14
|
-
`owlrunkit@0.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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.
|
|
308
|
+
--exact owlrunkit@0.21.0 --dry-run
|
|
215
309
|
npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
|
|
216
|
-
--exact owlrunkit@0.
|
|
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.
|
|
6
|
-
"coreManifestSha256": "sha256:
|
|
7
|
-
"coreSourceRef": "artifact:sha256:
|
|
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.
|
|
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
|
|
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
|
|