owlrunkit 0.19.1 → 0.20.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 (42) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +107 -3
  3. package/docs/architecture/OWLCODA_RUNKIT_0191_PROFILE_RECONCILE_PATCH_PRODUCT_DECISION_20260813.md +11 -5
  4. package/docs/architecture/OWLCODA_RUNKIT_0192_FORMAL_USABILITY_PRODUCT_DECISION_20260813.md +141 -0
  5. package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
  6. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +74 -9
  7. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  8. package/package.json +1 -1
  9. package/packages/attest/distribution-manifest-v1.json +10 -0
  10. package/packages/attest/src/quick.mjs +42 -4
  11. package/registry-release-policy-v1.json +5 -5
  12. package/sbom.spdx.json +5 -5
  13. package/scripts/runkit-contract/core-contract.mjs +42 -2
  14. package/scripts/runkit-contract/efficiency-metrics.mjs +9 -7
  15. package/scripts/runkit-contract/formal-preflight.mjs +352 -0
  16. package/scripts/runkit-contract/formal-supplemental-evidence.mjs +713 -0
  17. package/scripts/runkit-contract/formal-workflow.mjs +529 -59
  18. package/scripts/runkit-contract/onboarding-doctor.mjs +32 -13
  19. package/scripts/runkit-contract/project-cli-resolver.mjs +33 -3
  20. package/scripts/runkit-contract/project-external-delivery.mjs +16 -9
  21. package/scripts/runkit-contract/quick-attest.mjs +24 -0
  22. package/scripts/runkit-contract/runkit-cli.mjs +445 -52
  23. package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
  24. package/scripts/runkit-contract/schemas/formal-check-v2.schema.json +231 -0
  25. package/scripts/runkit-contract/schemas/formal-envelope-preflight-v1.schema.json +212 -0
  26. package/scripts/runkit-contract/schemas/formal-evidence-summary-v1.schema.json +114 -0
  27. package/scripts/runkit-contract/schemas/formal-supplemental-evidence-v1.schema.json +103 -0
  28. package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
  29. package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
  30. package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
  31. package/scripts/runkit-contract/schemas/team-project-event-v5.schema.json +89 -0
  32. package/scripts/runkit-contract/schemas/team-project-status-v3.schema.json +173 -0
  33. package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
  34. package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
  35. package/scripts/runkit-contract/snapshot.mjs +125 -5
  36. package/scripts/runkit-contract/source-candidate.mjs +271 -69
  37. package/scripts/runkit-contract/sync-release-identity.mjs +39 -4
  38. package/scripts/runkit-contract/team-delivery.mjs +906 -0
  39. package/scripts/runkit-contract/team-project-successor.mjs +7 -4
  40. package/scripts/runkit-contract/team-project.mjs +440 -28
  41. package/scripts/runkit-contract/usage-mode.mjs +9 -3
  42. package/scripts/runkit-contract/verification-envelope.mjs +425 -37
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.20.0
4
+
5
+ - Adds read-only `team recommend` and `team status` projections over the
6
+ existing Project Driver. Ordinary single-owner work remains off; real
7
+ multi-lane coordination, owned-path conflicts, independent verification, and
8
+ owner transitions are explained without persisting a second task graph.
9
+ - Publishes strict TeamTaskPacket V2, TeamAcceptancePacket V2, and
10
+ CandidateTransferPacket V1 contracts plus `team packet validate`. Project
11
+ bindings, exact WorkItem ownership, model-family independence, candidate
12
+ identity, handoff ACK, false-authority fields, and duplicate JSON keys fail
13
+ closed.
14
+ - Keeps Team Delivery orthogonal to continuity and assurance. This phase does
15
+ not dispatch Agents, rank providers, federate vendor CLIs, grant authority,
16
+ or turn multi-Agent coordination into Formal Delivery.
17
+
18
+ ## 0.19.2
19
+
20
+ - Adds read-only `formal preflight` and reuses it before an envelope-backed
21
+ Formal check writes candidate or evidence artifacts. It reports enforcement
22
+ backend, package-script subprocesses, protected `.owlcoda/runkit/` scan
23
+ conflicts, temporary-directory needs, device paths, and actionable repairs.
24
+ - Adds Formal Check V2 failure taxonomy for source failures, missing envelope
25
+ capability, unresolved toolchains, and backend-proven network denial while
26
+ preserving the existing Formal Check V1 contract. Classification uses
27
+ trusted runner facts, never command-authored stdout or stderr; the current
28
+ backend conservatively leaves unproven network causes as source failures.
29
+ - Adds `formal attach-evidence` for fully attested, source-bound
30
+ `supplemental-local` or `networked` Quick evidence and a deterministic finish
31
+ summary. The environment classification is explicitly operator-declared and
32
+ not attested by Quick Receipt V3. Supplemental evidence is always non-gating
33
+ and cannot replace a Formal-eligible passed check.
34
+ - Re-attests supplemental receipt and material bytes at accepted finish, excludes stale
35
+ candidate attachments, rejects symlinked evidence roots, and preserves exact
36
+ resume semantics for the evidence summary.
37
+ - Completes action-specific Formal and Project Driver help for supported
38
+ options without changing Git, release, deployment, production, or business
39
+ authority boundaries.
40
+ - Adds Project Status and Takeover V3 so `overall=completed` means only that the
41
+ WorkItem ledger is complete. Without separate authority the visible delivery
42
+ disposition is `code_complete_without_release_authority`, the dominant gap is
43
+ `release_authority`, and the next action is never silently `none`.
44
+ - Requires a different assigned Agent before a WorkItem enters `verifying`,
45
+ warns when verifying/completed checkpoints lack a Quick or Formal receipt
46
+ reference, and keeps an initialized Project Driver in managed continuity when
47
+ auto mode would otherwise recommend off.
48
+ - Adds append-only Project Event V5 and `project work-item revise-scope` for
49
+ superseding owned paths or measurable units without rewriting the project
50
+ definition or allowing old checkpoints to prove the revised scope.
51
+ - Accepts ISO-8601 UTC timestamps with seconds or up to three fractional digits
52
+ and stores canonical millisecond timestamps. Passed-gate defer errors now
53
+ identify the successor/new-gate correction path.
54
+
3
55
  ## 0.19.1
4
56
 
5
57
  - Fixes profile reconciliation for mature projects where an existing profile
package/README.md CHANGED
@@ -52,6 +52,32 @@ binding instead of creating a second profile with duplicate IDs. Existing
52
52
  owner profiles, strict validation, atomic rollback, and shared-Skill activation
53
53
  boundaries remain unchanged.
54
54
 
55
+ RunKit 0.19.2 makes Formal Delivery easier to configure without weakening its
56
+ sandbox. A read-only envelope preflight reports known backend, subprocess,
57
+ temporary-directory, device-path, and protected runtime-root conflicts before
58
+ candidate evidence is written. Failed envelope checks receive typed failure
59
+ categories. Fully attested Quick receipts may be attached as source-bound
60
+ `supplemental-local` or `networked` evidence, but remain explicitly non-gating
61
+ and can never replace a Formal-eligible passed check.
62
+
63
+ The same candidate makes Project Driver completion honest: a completed
64
+ WorkItem ledger without separate Git/release/deploy authority is visibly
65
+ `code_complete_without_release_authority`, not a product-finished `next: none`.
66
+ Independent verification requires a different assigned Agent. Append-only
67
+ scope revision can widen or narrow a WorkItem after diagnosis without rewriting
68
+ history, and missing Quick/Formal receipt references remain visible warnings.
69
+
70
+ RunKit 0.20.0 Phase 1 adds Team Delivery as a read-only coordination dimension
71
+ over the existing Project Driver. `team recommend` exits for ordinary
72
+ single-owner work, recommends Team only for real coordination facts, exposes
73
+ owned-path conflicts and independent-acceptance gaps, and never dispatches an
74
+ Agent. `team status` projects the existing project graph without storing a
75
+ second graph. Three strict portable contracts—TeamTaskPacket V2,
76
+ TeamAcceptancePacket V2, and CandidateTransferPacket V1—can be validated on a
77
+ machine that does not have the local `manage-agent-team` Skill. This candidate
78
+ does not add automatic or assisted dispatch and does not change Quick or Formal
79
+ assurance.
80
+
55
81
  The 0.18 Project Driver is a bounded surface for new projects and controlled
56
82
  dogfood. Its product name does not claim to be a general long-running,
57
83
  multi-phase, or enterprise control plane. Version 0.18 adds one bounded
@@ -65,8 +91,13 @@ separate authority boundaries.
65
91
 
66
92
  ## Install
67
93
 
94
+ `owlrunkit@0.20.0` is an unpublished release candidate. Until registry
95
+ publication is independently verified, the current installable release is
96
+ `owlrunkit@0.19.2`; a locally packed 0.20.0 tarball is for candidate testing
97
+ only and is not adoption provenance.
98
+
68
99
  ```bash
69
- npm install --save-exact owlrunkit@0.19.1
100
+ npm install --save-exact owlrunkit@0.19.2
70
101
  ```
71
102
 
72
103
  Use `npx --no-install owlrunkit` for project commands. The package bootstrap
@@ -82,9 +113,9 @@ the project Config must independently bind the same Core.
82
113
  ```bash
83
114
  npx --no-install owlrunkit --version
84
115
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
85
- --exact owlrunkit@0.19.1 --dry-run
116
+ --exact owlrunkit@0.19.2 --dry-run
86
117
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
87
- --exact owlrunkit@0.19.1 --apply
118
+ --exact owlrunkit@0.19.2 --apply
88
119
  npx --no-install owlrunkit init --workspace /absolute/path/to/project
89
120
  npx --no-install owlrunkit doctor --workspace /absolute/path/to/project
90
121
  npx --no-install owlrunkit mode recommend --workspace /absolute/path/to/project
@@ -103,6 +134,28 @@ machine contract. The five user modes are presets over `continuity`
103
134
  (`none | project_driver`) and `assurance` (`none | quick | formal`). They never
104
135
  grant Git, release, deployment, production, or business authority.
105
136
 
137
+ ## Team Delivery: Recommend coordination without dispatch
138
+
139
+ Team Delivery is separate from continuity and assurance. It reads the current
140
+ Project Driver, recommends whether Team coordination is useful, and validates
141
+ self-contained packets without importing model-specific routing policy:
142
+
143
+ ```bash
144
+ npx --no-install owlrunkit team recommend --workspace .
145
+ npx --no-install owlrunkit team status --workspace .
146
+ npx --no-install owlrunkit team packet validate --workspace . \
147
+ --packet ./team-task-packet.json
148
+ ```
149
+
150
+ No initialized project, no actionable work, and one ordinary ready WorkItem
151
+ remain `off`. Two disjoint actionable WorkItems may be parallel-eligible.
152
+ Overlapping owned paths recommend Team but block parallel writing and point to
153
+ append-only scope revision or serialization. Verification, handoff, rework,
154
+ candidate transfer, or multiple active owners keep coordination visible without
155
+ raising assurance. Every result keeps Agent dispatch and all external authority
156
+ false. Phase 1 contains no launcher, scheduler, model ranking, or vendor CLI
157
+ federation.
158
+
106
159
  ## Project Driver: Coordinate a multi-Agent project
107
160
 
108
161
  RunKit 0.18 keeps the project alive independently of any one Agent or chat.
@@ -137,6 +190,13 @@ npx --no-install owlrunkit project reject-and-return --workspace . --rework-id r
137
190
  npx --no-install owlrunkit project assign --workspace . --assignment-id assign-2 \
138
191
  --at 2026-08-09T00:11:00.000Z --work-item work-item-1 \
139
192
  --agent agent-successor --supersedes assign-1
193
+ npx --no-install owlrunkit project work-item revise-scope --workspace . \
194
+ --revision-id scope-1 --at 2026-08-09T00:11:30Z \
195
+ --assignment-id assign-2 --work-item work-item-1 --owner-agent agent-successor \
196
+ --owned-path 'src/adapter/**' --owned-path 'src/canonical-store/**' \
197
+ --measurable-unit interface --measurable-total 2 \
198
+ --reason 'Diagnosis proved the canonical store is part of this bounded fix' \
199
+ --evidence evidence/scope-decision.txt
140
200
  npx --no-install owlrunkit project decision --workspace . --open --decision-id decision-1 \
141
201
  --at 2026-08-09T00:12:00.000Z --title 'Choose the accepted source path' \
142
202
  --question 'Which source path should continue?' --owner-agent agent-successor \
@@ -178,6 +238,19 @@ by itself. The assurance lane follows actual writer and authority count,
178
238
  rollback certainty, permissions, security, funds, irreversibility, schema/data
179
239
  migration, and explicit acceptance contracts—not environment labels alone.
180
240
 
241
+ `project checkpoint --state verifying` requires the current assignment to have
242
+ been superseded by a different Agent. This turns independent verification into
243
+ a mechanical project invariant without forcing Formal. A verifying or completed
244
+ checkpoint that does not reference a recognizable Quick/Formal receipt remains
245
+ valid project truth but receives `no_bound_verification_receipt`; the warning is
246
+ about the missing bound reference and does not attest any referenced receipt.
247
+
248
+ `project work-item revise-scope` appends Event V5 and never rewrites the original
249
+ definition. It must bind the current assignment and owner, records the previous
250
+ and new paths/measurable contract, and invalidates older checkpoints for progress
251
+ projection. Repeating the exact revision is idempotent; changing an existing
252
+ revision fails closed.
253
+
181
254
  `project reject-and-return` applies only to the current explicit failed
182
255
  checkpoint. One Event V2 atomically binds that failure, its prior assignment,
183
256
  the reviewer, evidence, target Agent, and new assignment. The failed checkpoint
@@ -262,6 +335,12 @@ WorkItem. An assignment may bind an exact RunKit execution and lease; in that
262
335
  case, the WorkItem cannot complete until the execution has a trusted accepted
263
336
  closeout and its lease is released.
264
337
 
338
+ In Status/Takeover V3, `overall=completed` is explicitly the WorkItem-ledger
339
+ state. Because Project Driver never grants repository or runtime authority, that
340
+ state is paired with `deliveryDisposition=code_complete_without_release_authority`,
341
+ `dominantGap.kind=release_authority`, a non-empty external-authority next action,
342
+ and `authorizationGranted=false`.
343
+
265
344
  `project takeover` adds the current candidate, its exact added/changed/removed
266
345
  path delta from the previous imported delivery, and handoffs that are stale
267
346
  because later project truth superseded them. These are read-only projections;
@@ -474,6 +553,9 @@ Formal also accepts a real project command through an enforced Verification
474
553
  Envelope:
475
554
 
476
555
  ```bash
556
+ npx --no-install owlrunkit formal preflight --workspace . \
557
+ --envelope scripts/runkit-contract/templates/verification-envelope.json
558
+
477
559
  npx --no-install owlrunkit formal check --workspace . --run-id release-001 \
478
560
  --work-item delivery --check-id project-tests \
479
561
  --envelope scripts/runkit-contract/templates/verification-envelope.json
@@ -489,6 +571,24 @@ the policy, the command is not run and no Formal acceptance is possible.
489
571
  Existing legacy verification may still capture evidence, but it is not silently
490
572
  promoted into this Formal path.
491
573
 
574
+ If a required project check cannot run inside the envelope, attach its fully
575
+ attested Quick receipt to the same source candidate:
576
+
577
+ ```bash
578
+ npx --no-install owlrunkit formal attach-evidence --workspace . \
579
+ --run-id release-001 --evidence-id local-migration-readback \
580
+ --kind supplemental-local --receipt /absolute/path/to/receipt.json
581
+ ```
582
+
583
+ Use `networked` only for a Quick command that used network access. This is an
584
+ operator declaration, not a fact attested by Quick Receipt V3; the attachment
585
+ and summary therefore expose `classificationBasis=operator_declared_not_attested`.
586
+ The receipt and its materials are re-attested, but attached evidence is always
587
+ non-gating and cannot replace a passed Formal check or grant Git, release,
588
+ deployment, production, or business authority. Evidence Summary generation is
589
+ part of accepted finish; rejected and blocked closeouts remain honest without
590
+ creating an acceptance-oriented summary.
591
+
492
592
  Use `npx --no-install owlrunkit status --workspace .` for a concise human view of what is ready,
493
593
  what has not happened, how many gates remain, and the next allowed action.
494
594
 
@@ -497,6 +597,10 @@ what has not happened, how many gates remain, and the next allowed action.
497
597
  `SourceCandidateV2` makes a dirty but precisely bounded candidate a first-class
498
598
  artifact. It binds the baseline, exact owned-path closure, source manifest,
499
599
  and payload bytes without requiring a Git commit.
600
+ The serialized candidate contract is bounded to 64 MiB and 2,000,000 JSON
601
+ values. Freeze applies the same bound as the reader before writing that
602
+ candidate's payload or document, so an oversized workspace fails closed rather
603
+ than producing an unreadable candidate.
500
604
 
501
605
  ```bash
502
606
  npx --no-install owlrunkit candidate freeze --workspace . --run-id release-001 \
@@ -1,6 +1,6 @@
1
1
  # OwlRunKit 0.19.1 Profile Reconcile Patch Product Decision
2
2
 
3
- 状态:**候选实现完成,发布实况以 registry 读回和发布回执为准**
3
+ 状态:**已发布;registry、私仓 tag、项目 adoption 与共享 Skill 激活均已读回**
4
4
 
5
5
  ## Decision
6
6
 
@@ -22,9 +22,15 @@ command。它不会新增第二份重复 command,也不会削弱最终 profile
22
22
  三个独立状态转换;bootstrap 只诊断 Skill drift,不静默刷新 fleet Skill;
23
23
  - 0.19.0 的 continuity、assurance、Formal 和 predecessor-contract 边界不变。
24
24
 
25
- ## Evidence And Claims
25
+ ## Release Truth
26
26
 
27
- 发布前必须通过成熟项目冲突回归、profile/bootstrap 聚焦测试、完整 RunKit
27
+ 0.19.1 已通过成熟项目冲突回归、profile/bootstrap 聚焦测试、完整 RunKit
28
28
  gate、Core identity、packed package/Skill、干净 consumer 和 npm registry
29
- 字节读回。本文不能在这些 Gate 完成前声称 0.19.1 已发布,也不能把一份
30
- package receipt 冒充 shared Skill 已激活或其他项目已推广。
29
+ 字节读回。发布源码是 `0367295c153ed36548a366633de39d5a1b832b3b`,tag
30
+ 是 `owlrunkit-v0.19.1`,npm `latest` 是 `0.19.1`。
31
+
32
+ OwlCoda 项目已从官方 registry 精确采用 0.19.1,并得到 doctor `ready`、
33
+ profiles `valid`、inspect `idle` 与 Quick `GO`。process-level shared Skill 也在
34
+ 完整 fleet 预检通过后原子升级到 0.19.1;58 个受管项目的 Core config 已生成
35
+ 可回滚迁移回执。上述事实不授予 Git、部署、生产或业务权限。完整证据见
36
+ `docs/handoff/OWLCODA_RUNKIT_0191_PRIVATE_GIT_NPM_RELEASE_RECEIPT_20260813.md`。
@@ -0,0 +1,141 @@
1
+ # OwlRunKit 0.19.2 Formal Usability and Project Driver Honesty Product Decision
2
+
3
+ 状态:**候选实施中;尚未发布、采用或激活**
4
+
5
+ ## Decision
6
+
7
+ 0.19.2 是一次整合型 Formal 可用性与 Project Driver 诚实状态补丁。它集中修正
8
+ OwlChen 与 OwlFootball 真实主线 dogfood 中已经复现的接入摩擦,不增加新的
9
+ Gate,也不放宽 Verification Envelope 的执行边界。
10
+
11
+ 目标是让合法项目命令在执行前获得可行动的静态诊断,让失败回执区分源码
12
+ 失败与环境不兼容,并允许同一源码候选的本地或联网补充验证被明确标记、绑定
13
+ 和汇总。补充验证永远不是 Formal 门禁证据。
14
+
15
+ Project Driver 同时把“工单账完成”与“获准 Git、发布、部署或上线”拆成两个
16
+ 不同事实,并把独立验收者、诊断后的范围修订和缺少绑定验证回执做成可执行
17
+ 合同,而不是只留在 Agent 提示词里。
18
+
19
+ ## Scope
20
+
21
+ ### Formal envelope preflight
22
+
23
+ - 新增只读 `formal preflight --envelope <file>`;
24
+ - 输出 backend、阶段命令、已知隐式子进程、临时目录和 RunKit runtime 扫描
25
+ 冲突;
26
+ - 对必然失败的能力缺口返回 blocker,并给出最小 envelope 修正建议;
27
+ - `formal check --envelope` 在写入 candidate、check 或 evidence 前复用同一
28
+ preflight,已知 blocker 零写入停止。
29
+
30
+ ### Typed Formal failure
31
+
32
+ Formal Check V2 保留以下稳定分类词汇:
33
+
34
+ - `source_check_failed`;
35
+ - `envelope_capability_missing`;
36
+ - `toolchain_resolution_failed`;
37
+ - `network_policy_blocked`。
38
+
39
+ 分类只能来自 RunKit runner/backend 的受信结构化事实,不能解析被测命令可伪造
40
+ 的 stdout/stderr。当前 macOS backend 能证明 backend capability、launch/toolchain、
41
+ cleanup/source 失败;只有后续 backend 明确返回结构化 network-denial cause 时才发出
42
+ `network_policy_blocked`。无法归因的命令非零退出保守记为 `source_check_failed`。
43
+
44
+ 旧 `OwlCodaRunKitFormalCheckV1` 字节和语义保持不变。新增字段通过 V2
45
+ 合同发布,读取器同时支持 V1 与 V2。
46
+
47
+ ### Source-bound supplemental evidence
48
+
49
+ 新增:
50
+
51
+ ```text
52
+ owlrunkit formal attach-evidence \
53
+ --workspace <root> --run-id <id> --evidence-id <id> \
54
+ --kind supplemental-local|networked --receipt <quick-receipt.json>
55
+ ```
56
+
57
+ 附件必须通过完整 Quick attestation,并与当前有效 Formal SourceCandidate
58
+ 在同一 workspace 状态下绑定。它保存自己的 Quick workspace fingerprint,
59
+ 同时绑定 Formal `sourceFingerprint`、candidate path 和 candidate hash。
60
+ Formal Core 使用运行时计算的当前 Core identity 调用被 Core manifest 绑定的
61
+ Quick attester;发布面中自引用的当前 identity 字段不参与该运行时信任判断。
62
+ `supplemental-local|networked` 是操作者声明的执行环境分类;Quick Receipt V3
63
+ 并不证明网络是否被使用,因此附件和摘要必须同时写明
64
+ `classificationBasis=operator_declared_not_attested`,不得把该标签说成 attested fact。
65
+
66
+ `formal finish --decision accepted` 自动生成一份 Evidence Summary,列出当前源码的 Formal checks
67
+ 与 supplemental evidence。只有 Formal-eligible checks 参与 acceptance;摘要必须
68
+ 明确声明 supplemental evidence 为 non-gating,不能替代 sandbox、授权或业务验收。
69
+
70
+ ### CLI and runtime-root guidance
71
+
72
+ - `formal finish --help` 展示 `--decision` 与 `--finalize-id`;
73
+ - `formal preflight` 和 `formal attach-evidence` 有 action-specific help;
74
+ - 已存在但缺 help 的 Project Driver actions 补齐;
75
+ - broad lint/format/test 命令可能扫描 `.owlcoda/runkit/**` 时,在 Formal
76
+ preflight 中直接给出 ignore 修正,而不是等待 sandbox 执行失败。
77
+
78
+ ### Project Driver honesty and first-use repair
79
+
80
+ - Project Status V3 与 Takeover V3 保留 `overall=completed` 的工单账语义,但在
81
+ 没有外部授权时固定输出
82
+ `deliveryDisposition=code_complete_without_release_authority`、
83
+ `dominantGap.kind=release_authority` 和一条非空外部授权下一动作;
84
+ - `authorizationGranted` 始终为 `false`,Project Driver 不能自行授予 Git、发布、
85
+ 部署、生产或业务权限;
86
+ - 进入 `verifying` 前必须由另一 Agent 接管当前 assignment,同一实现者直接把
87
+ 自己标为 verifying 时零写入拒绝,并返回可复制的 handoff/assignment 修正路径;
88
+ - 新增 append-only Event V5 `project work-item revise-scope`,允许当前 Owner 在
89
+ 诊断后 supersede `ownedPaths` 与 measurable 合同;原 definition 和历史事件不被
90
+ 改写,范围修订后旧 checkpoint 不再证明新范围已完成;
91
+ - `verifying` 或 `completed` checkpoint 未引用可识别的 Quick/Formal 回执时,
92
+ Status V3 输出 `no_bound_verification_receipt` warning。该 warning 只证明缺少引用,
93
+ 不证明引用本身已经通过 attestation;
94
+ - 已存在 Project Driver definition 时,`mode recommend --mode auto` 保持
95
+ `managed + assurance none|quick`,不再把已初始化的总控账本劝回 `off`;
96
+ - Project Driver 时间戳接受 ISO-8601 UTC 秒精度或最多三位小数,并以 `.sssZ`
97
+ 规范化保存;action help 展示必填 measured checkpoint 与 scope revision 参数;
98
+ - 对已通过 gate 的 defer 仍 fail-closed,但错误必须同时给出新 gate 或
99
+ `project successor` 的可行动路径。
100
+
101
+ ## Preserved Boundaries
102
+
103
+ - supplemental evidence 永远 `gating=false`、`authorizationGranted=false`;
104
+ - accepted Formal 仍要求当前源码至少一条有效 Formal-eligible passed check;
105
+ - preflight、attachment、summary 不授予 Git、发布、部署、生产、凭据或业务权限;
106
+ - 不自动修改项目 lint/format 配置,不扩大 writable paths、network 或 subprocess
107
+ allowlist;
108
+ - Linux backend 仍 fail-closed,本轮不新增执行器;
109
+ - 已发布 V1 schema 不原地重解释;破坏性变化使用 successor schema;
110
+ - SourceCandidateV2 文档支持上限为 64 MiB、2,000,000 个 JSON value;freeze
111
+ 在任何该候选 payload 或 candidate 写入前使用与 reader 相同的上限检查;
112
+ - 0.19.2 package、Git、tag、npm、项目 adoption 与 shared Skill activation 是独立
113
+ 状态转换,本文不能证明其中任何一个已完成。
114
+
115
+ ## Acceptance Scenarios
116
+
117
+ 1. backend 缺失、已知 subprocess 缺口或 broad scan 冲突在 Formal 写入前阻止执行;
118
+ 2. 正常 source assertion 失败分类为 `source_check_failed`;
119
+ 3. launch/toolchain 与 sandbox capability 由结构化事实分类;命令输出中的同名文本
120
+ 不能改变分类,未被 backend 证明的 network cause 不冒充 policy fact;
121
+ 4. source drift、失败 Quick receipt、材料漂移或不同 workspace 的附件 fail-closed;
122
+ 5. 合法 supplemental-local/networked receipt 可被当前 candidate 绑定;
123
+ 6. source 改变后旧附件保留但不进入当前 Evidence Summary;
124
+ 7. accepted finish 的摘要同时展示门禁 Formal checks 和 non-gating attachments;
125
+ 8. 没有 passed Formal check 时,attachments 再多也不能 accepted finish;
126
+ 9. 新旧 FormalCheck 合同都可读取,V1 输出不变;
127
+ 10. 所有新增结果保持 `authorizationGranted=false`。
128
+ 11. 工单账全部完成后,Status/Takeover 仍醒目显示未获发布授权,且下一动作不为
129
+ `none`;
130
+ 12. 同一 Agent 直接进入 verifying 零写入拒绝,另一 Agent 完成 handoff/assignment
131
+ 后可进入 verifying;
132
+ 13. scope revision 不改写 definition,旧 revision/checkpoint 不能证明新范围;
133
+ 14. `...ssZ` 时间戳被接受并规范为 `...ss.000Z`,所有 action help 可直接执行;
134
+ 15. 已初始化 Project Driver 的 auto mode 推荐 managed,缺绑定回执只产生 warning,
135
+ 不自动升级 Formal。
136
+
137
+ ## Release Truth
138
+
139
+ 当前只授权形成和验证 0.19.2 source candidate。未授权 commit、push、tag、npm
140
+ publish、项目升级或 shared Skill 更新。候选必须先通过聚焦合同测试、相关 RunKit
141
+ gate、Core identity 与真实 packed-consumer dogfood,之后才能单独决定发布。