opencode-ship 1.1.2-rc.2 → 1.1.2
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 +96 -1
- package/README.md +2 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/assets/agents/delivery-reviewer.md +1 -0
- package/assets/agents/delivery-verifier.md +1 -0
- package/assets/agents/ship-controller.md +20 -7
- package/assets/agents/ship-final-spec-reviewer.md +5 -3
- package/assets/agents/ship-final-standards-reviewer.md +5 -3
- package/assets/agents/ship-planner.md +1 -0
- package/assets/agents/ship-task-builder.md +1 -0
- package/assets/agents/ship-task-reviewer.md +1 -0
- package/dist/cli.js +2274 -362
- package/dist/core.js +794 -10
- package/dist/plugin.js +3487 -1795
- package/package.json +9 -4
- package/tests/plugin/expected-tools.mjs +2 -2
- package/tests/plugin/plugin-load.test.mjs +8 -3
- package/assets/_archive/issue-tracker-gitlab.md +0 -46
- package/assets/_archive/issue-tracker-local.md +0 -30
- package/docs/adr/0001-opencode-ship-redesign.md +0 -168
- package/docs/release/1.0.0-execution-plan.md +0 -1063
- package/docs/release/1.1.1-stabilization-plan.md +0 -655
- package/vendor/upstreams/mattpocock/skills/engineering/code-review/SKILL.md +0 -89
- package/vendor/upstreams/mattpocock/skills/engineering/codebase-design/DEEPENING.md +0 -37
- package/vendor/upstreams/mattpocock/skills/engineering/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/vendor/upstreams/mattpocock/skills/engineering/codebase-design/SKILL.md +0 -114
- package/vendor/upstreams/mattpocock/skills/engineering/domain-modeling/ADR-FORMAT.md +0 -47
- package/vendor/upstreams/mattpocock/skills/engineering/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/vendor/upstreams/mattpocock/skills/engineering/domain-modeling/SKILL.md +0 -74
- package/vendor/upstreams/mattpocock/skills/engineering/grill-with-docs/SKILL.md +0 -7
- package/vendor/upstreams/mattpocock/skills/engineering/prototype/LOGIC.md +0 -79
- package/vendor/upstreams/mattpocock/skills/engineering/prototype/SKILL.md +0 -26
- package/vendor/upstreams/mattpocock/skills/engineering/prototype/UI.md +0 -112
- package/vendor/upstreams/mattpocock/skills/engineering/research/SKILL.md +0 -12
- package/vendor/upstreams/mattpocock/skills/engineering/setup-matt-pocock-skills/SKILL.md +0 -116
- package/vendor/upstreams/mattpocock/skills/engineering/setup-matt-pocock-skills/domain.md +0 -51
- package/vendor/upstreams/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
- package/vendor/upstreams/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
- package/vendor/upstreams/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
- package/vendor/upstreams/mattpocock/skills/engineering/setup-matt-pocock-skills/triage-labels.md +0 -15
- package/vendor/upstreams/mattpocock/skills/engineering/to-spec/SKILL.md +0 -75
- package/vendor/upstreams/mattpocock/skills/engineering/to-tickets/SKILL.md +0 -105
- package/vendor/upstreams/mattpocock/skills/engineering/triage/AGENT-BRIEF.md +0 -207
- package/vendor/upstreams/mattpocock/skills/engineering/triage/OUT-OF-SCOPE.md +0 -105
- package/vendor/upstreams/mattpocock/skills/engineering/triage/SKILL.md +0 -112
- package/vendor/upstreams/mattpocock/skills/engineering/wayfinder/SKILL.md +0 -128
- package/vendor/upstreams/mattpocock/skills/productivity/grilling/SKILL.md +0 -12
- package/vendor/upstreams/mattpocock/skills/productivity/handoff/SKILL.md +0 -16
- package/vendor/upstreams/obra/skills/brainstorming/SKILL.md +0 -151
- package/vendor/upstreams/obra/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/vendor/upstreams/obra/skills/brainstorming/visual-companion.md +0 -298
- package/vendor/upstreams/obra/skills/dispatching-parallel-agents/SKILL.md +0 -167
- package/vendor/upstreams/obra/skills/executing-plans/SKILL.md +0 -64
- package/vendor/upstreams/obra/skills/receiving-code-review/SKILL.md +0 -205
- package/vendor/upstreams/obra/skills/requesting-code-review/SKILL.md +0 -95
- package/vendor/upstreams/obra/skills/requesting-code-review/code-reviewer.md +0 -172
- package/vendor/upstreams/obra/skills/subagent-driven-development/SKILL.md +0 -503
- package/vendor/upstreams/obra/skills/subagent-driven-development/implementer-prompt.md +0 -142
- package/vendor/upstreams/obra/skills/subagent-driven-development/re-review-prompt.md +0 -106
- package/vendor/upstreams/obra/skills/subagent-driven-development/task-reviewer-prompt.md +0 -185
- package/vendor/upstreams/obra/skills/systematic-debugging/CREATION-LOG.md +0 -119
- package/vendor/upstreams/obra/skills/systematic-debugging/SKILL.md +0 -283
- package/vendor/upstreams/obra/skills/systematic-debugging/condition-based-waiting-example.ts +0 -158
- package/vendor/upstreams/obra/skills/systematic-debugging/condition-based-waiting.md +0 -115
- package/vendor/upstreams/obra/skills/systematic-debugging/defense-in-depth.md +0 -122
- package/vendor/upstreams/obra/skills/systematic-debugging/find-polluter.sh +0 -72
- package/vendor/upstreams/obra/skills/systematic-debugging/root-cause-tracing.md +0 -169
- package/vendor/upstreams/obra/skills/systematic-debugging/test-academic.md +0 -14
- package/vendor/upstreams/obra/skills/systematic-debugging/test-pressure-1.md +0 -58
- package/vendor/upstreams/obra/skills/systematic-debugging/test-pressure-2.md +0 -68
- package/vendor/upstreams/obra/skills/systematic-debugging/test-pressure-3.md +0 -69
- package/vendor/upstreams/obra/skills/test-driven-development/SKILL.md +0 -320
- package/vendor/upstreams/obra/skills/test-driven-development/writing-good-tests.md +0 -198
- package/vendor/upstreams/obra/skills/verification-before-completion/SKILL.md +0 -120
- package/vendor/upstreams/obra/skills/writing-plans/SKILL.md +0 -168
- package/vendor/upstreams/obra/skills/writing-plans/plan-document-reviewer-prompt.md +0 -49
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,102 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `opencode-ship` are recorded here.
|
|
4
4
|
|
|
5
|
-
## 1.1.2
|
|
5
|
+
## 1.1.2 — Stable: Plan Mode write access
|
|
6
|
+
|
|
7
|
+
> Branch: `release/1.1.2`. Promoted from `1.1.2-rc.4` after dogfood.
|
|
8
|
+
|
|
9
|
+
- **Plan Mode write access for brainstorming / writing-plans products.**
|
|
10
|
+
The installer now owns two leaf pointers under
|
|
11
|
+
`agent.plan.permission` so OpenCode's Plan mode can write its
|
|
12
|
+
brainstorming / writing-plans / wayfinder output:
|
|
13
|
+
|
|
14
|
+
- `/agent/plan/permission/edit/docs/superpowers/**` = `allow`
|
|
15
|
+
- `/agent/plan/permission/edit/.git/opencode-ship/plans/**` = `allow`
|
|
16
|
+
|
|
17
|
+
The whole `/agent/plan/permission` block is still consumer-owned;
|
|
18
|
+
the installer only owns these two glob leaves. When the consumer
|
|
19
|
+
previously declared `agent.plan.permission.edit` as a scalar
|
|
20
|
+
string (e.g. `"deny"`), the installer promotes it to
|
|
21
|
+
`{ "*": <scalar>, ... }` on install and records the previous
|
|
22
|
+
scalar so uninstall can restore it byte-for-byte. A consumer
|
|
23
|
+
that explicitly sets `docs/superpowers/**: "deny"` is a
|
|
24
|
+
fail-closed conflict.
|
|
25
|
+
|
|
26
|
+
- **Full self-hosting contract corrections** carried over from
|
|
27
|
+
`1.1.2-rc.3`: durable plan store, Plan Mode permission
|
|
28
|
+
consumer-ownership, workflow state machine coverage, parallel
|
|
29
|
+
Standards/Spec Ready gate, trusted-auto skill discovery, and the
|
|
30
|
+
`/setup-ship-workflow` single-skill contract. See the
|
|
31
|
+
`1.1.2-rc.*` entries below for the bounded evidence ledger.
|
|
32
|
+
|
|
33
|
+
## 1.1.2-rc.3 — Complete contract correction (round 2)
|
|
34
|
+
|
|
35
|
+
> Branch: `fix/1.1.2-rc.3-contract`.
|
|
36
|
+
> Tracker: https://github.com/Viktorxyz/opencode-ship/issues/56.
|
|
37
|
+
|
|
38
|
+
`1.1.2-rc.2` shipped green CI but its CHANGELOG claimed more than the
|
|
39
|
+
codebase delivered: the B2 dispatch work stayed on an unmerged branch,
|
|
40
|
+
the B4 matrix was wired but the per-leaf pointer records were not
|
|
41
|
+
written by `init`, the B5 setup-complete command cleared the
|
|
42
|
+
setup-pending marker BEFORE validating the artifacts (so a failed
|
|
43
|
+
validation lost the marker with no compensating lock write), and the
|
|
44
|
+
B7 trusted-skill install wrote a placeholder `SKILL.md` whose hash
|
|
45
|
+
matched the inventory by construction.
|
|
46
|
+
|
|
47
|
+
This release corrects those gaps and ships only what is true at the
|
|
48
|
+
byte level:
|
|
49
|
+
|
|
50
|
+
- **`ship_skill_install`** materialises real bytes via the public
|
|
51
|
+
`skills` CLI pinned to a known version, copies them through a
|
|
52
|
+
staging directory, hashes every installed file, and verifies the
|
|
53
|
+
on-disk bytes match the staged bytes before appending to the
|
|
54
|
+
inventory. The tool fails closed when the CLI is unavailable; no
|
|
55
|
+
placeholder `SKILL.md` is ever written.
|
|
56
|
+
- The inventory is now append-only schema v2 with a hash-chained
|
|
57
|
+
event log. Install events carry per-file sha256 + provenance
|
|
58
|
+
(registry snapshot, cli package, registryId); uninstall events
|
|
59
|
+
append a tombstone that references the install hash and never
|
|
60
|
+
splices the chain.
|
|
61
|
+
- `ship_skill_install` validates the destination worktree via
|
|
62
|
+
`git worktree list --porcelain -z`. It refuses the main checkout,
|
|
63
|
+
unregistered paths, symlink traversal, and any destination whose
|
|
64
|
+
ancestor is a symlink. Paths that lexically contain `..` or
|
|
65
|
+
absolute segments are refused at append time.
|
|
66
|
+
- The root permission matrix is the single source of truth.
|
|
67
|
+
`desiredPointersForProfile("engineering")` derives its pointer
|
|
68
|
+
list from `rootPermissionMatrix()` (no parallel `POINTER_ENTRIES`
|
|
69
|
+
list); the wildcard `*` default is never serialised as a literal
|
|
70
|
+
pointer, and bash policy is left to the OpenCode runtime instead
|
|
71
|
+
of being installer-owned state. Empty intermediate containers
|
|
72
|
+
(`agent.<name>.permission: {}`) are pruned on install/uninstall so
|
|
73
|
+
byte-identical restoration holds for empty consumer configs.
|
|
74
|
+
- `setup-complete` validates lock, models, docs, and AGENTS.md
|
|
75
|
+
BEFORE any writes. The setup-pending marker is no longer part of
|
|
76
|
+
the gate (it is a chat-time signal, not an artifact). When the
|
|
77
|
+
gate passes, the lock is written with `setupComplete: true` and
|
|
78
|
+
the marker is cleared as part of the same commit. When validation
|
|
79
|
+
fails, no state changes.
|
|
80
|
+
- The 32-tool public surface is unchanged. The eight new tools
|
|
81
|
+
(`ship_task_start`, `ship_task_commit`, `ship_task_complete`,
|
|
82
|
+
`ship_final_review`, `ship_skill_discover`, `ship_skill_install`,
|
|
83
|
+
`ship_skill_audit`, `ship_skill_uninstall`) are still first-class.
|
|
84
|
+
- Regressions covered by new test suites: `tests/skills/install.test.mjs`,
|
|
85
|
+
`tests/skills/inventory.test.mjs`, `tests/skills/worktree.test.mjs`,
|
|
86
|
+
`tests/installer/root-permission-matrix.test.mjs`,
|
|
87
|
+
`tests/installer/setup-pending.test.mjs` (extended).
|
|
88
|
+
|
|
89
|
+
## 1.1.2-rc.2 — Rejected, incomplete
|
|
90
|
+
|
|
91
|
+
`1.1.2-rc.2` is published on npm `next` but is rejected as an
|
|
92
|
+
incomplete candidate. The CHANGELOG for that release claimed
|
|
93
|
+
behavior the source tree did not contain: the B2 dispatch work
|
|
94
|
+
lived only on the unmerged branch `fix/1.1.2-rc.2-contract`, the
|
|
95
|
+
root permission matrix was dead-code (POINTER_ENTRIES was the
|
|
96
|
+
active source), the setup-complete command cleared the marker
|
|
97
|
+
before validating, and `ship_skill_install` wrote a placeholder
|
|
98
|
+
`SKILL.md` whose hash matched the inventory by construction. The
|
|
99
|
+
published `1.1.2-rc.2` tarball is byte-equivalent to this rejected
|
|
100
|
+
release.
|
|
6
101
|
|
|
7
102
|
> Active stabilization branch: `fix/1.1.2-self-hosting`.
|
|
8
103
|
> Parent tracker: https://github.com/Viktorxyz/opencode-ship/issues/56.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> npm-distributed OpenCode installer and delivery plugin: a single command materialises the lifecycle plugin, reviewer/verifier agents, and skills into any consumer repository, with a recoverable lock and never silently overwrites managed files.
|
|
4
4
|
>
|
|
5
|
-
> **Status:** `1.1.
|
|
5
|
+
> **Status:** `1.1.2` is on `npm dist-tag latest` and is the first fully self-hosting release. It is the accepted successor of `1.1.1` (now deprecated). The `1.1.2 stabilization` line carried three rejected RCs (`1.1.2-rc.1`, `1.1.2-rc.2`, `1.1.2-rc.3`) before the stable candidate `1.1.2-rc.4` was promoted; see `docs/release/1.1.2-correction-plan.md` for the authoritative plan and issue #56 for the bounded evidence ledger. The `1.1.0` tag is immutable. Consumers of `opencode-delivery@0.1.x` should run `pnpm dlx opencode-ship@latest init` from the same checkout; migration recognises the legacy artifacts and adopts them when their bytes match.
|
|
6
6
|
>
|
|
7
7
|
> Consumers should use `opencode-ship@1.1.0` (or `@latest`) until `1.1.1` ships. The previous `1.0.0` is on `next`; consumers who pinned to `1.0.x` will continue to receive updates on that channel.
|
|
8
8
|
|
|
@@ -145,7 +145,7 @@ Existing consumers of `opencode-delivery@0.1.x` (commit-pinned shim) can run `pn
|
|
|
145
145
|
|
|
146
146
|
## Development
|
|
147
147
|
|
|
148
|
-
`npm run verify` runs `format:check`, `lint`, `typecheck`, `build`, and the auto-discovered test suite. The tests cover the installer CLI, the lock and root-config planners, the catalog validator, the schema validator, agents, the packed-artifact smoke check, the transaction-recovery contract, the profile-resolution precedence chain, the catalog profile filter, the order-preserving root-config merge, the engineering↔core transition, the durable plan artifact, the Plan Mode permission integration, the M3 task loop contract (run store + task brief + Spec/Quality verdicts + 3-round breaker + commit binding + compaction context), the Ready gate (parallel GPT Standards/Spec + verifier + CI on one HEAD; Build cannot self-record), the transition matrix smoke (core omits engineering, engineering adds engineering, lock tracks the active profile), the static release-policy tests (Node matrix wiring, prerelease metadata, runtime-source digest wiring, 1.0 promotion policy), the runtime-source digest algorithm tests (deterministic across clean checkouts; ignores version and release-metadata changes; tracks every runtime-source modification), and the OpenCode live-server discovery smoke (
|
|
148
|
+
`npm run verify` runs `format:check`, `lint`, `typecheck`, `build`, and the auto-discovered test suite. The tests cover the installer CLI, the lock and root-config planners, the catalog validator, the schema validator, agents, the packed-artifact smoke check, the transaction-recovery contract, the profile-resolution precedence chain, the catalog profile filter, the order-preserving root-config merge, the engineering↔core transition, the durable plan artifact, the Plan Mode permission integration, the M3 task loop contract (run store + task brief + Spec/Quality verdicts + 3-round breaker + commit binding + compaction context), the Ready gate (parallel GPT Standards/Spec + verifier + CI on one HEAD; Build cannot self-record), the transition matrix smoke (core omits engineering, engineering adds engineering, lock tracks the active profile), the static release-policy tests (Node matrix wiring, prerelease metadata, runtime-source digest wiring, 1.0 promotion policy), the runtime-source digest algorithm tests (deterministic across clean checkouts; ignores version and release-metadata changes; tracks every runtime-source modification), and the OpenCode live-server discovery smoke (32-tool canonical set exposed via `/experimental/tool/ids` on a real `opencode serve` instance for both `core` and `engineering` fixtures). The suite count and per-test count are derived from the test runner at qualification time; this README intentionally does not lock in a specific test-count baseline.
|
|
149
149
|
|
|
150
150
|
```
|
|
151
151
|
npm ci
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Third-Party Notices
|
|
2
2
|
|
|
3
|
-
`opencode-ship@1.1.2
|
|
3
|
+
`opencode-ship@1.1.2` ships the complete Matt Pocock and Superpowers
|
|
4
4
|
methodology under the MIT license, plus the Ship-owned installer,
|
|
5
5
|
plugin, agents, and skills. The complete immutable pin list is in
|
|
6
6
|
`vendor/sources.json`; the upstream snapshots are under
|
|
@@ -5,6 +5,7 @@ temperature: 0.1
|
|
|
5
5
|
model: <model-from-config>
|
|
6
6
|
steps: 12
|
|
7
7
|
permission:
|
|
8
|
+
"*": deny
|
|
8
9
|
edit: deny
|
|
9
10
|
external_directory: deny
|
|
10
11
|
webfetch: deny
|
|
@@ -53,34 +54,46 @@ permission:
|
|
|
53
54
|
"pnpm test *": allow
|
|
54
55
|
"pnpm run verify *": allow
|
|
55
56
|
task:
|
|
56
|
-
"*":
|
|
57
|
+
"*": deny
|
|
58
|
+
ship-planner: allow
|
|
59
|
+
ship-task-builder: allow
|
|
60
|
+
ship-task-reviewer: allow
|
|
61
|
+
ship-final-standards-reviewer: allow
|
|
62
|
+
ship-final-spec-reviewer: allow
|
|
63
|
+
delivery-verifier: allow
|
|
57
64
|
delivery_inspect: allow
|
|
58
65
|
delivery_issue: allow
|
|
59
66
|
delivery_worktree: allow
|
|
60
|
-
delivery_verify:
|
|
67
|
+
delivery_verify: deny
|
|
61
68
|
delivery_review: deny
|
|
62
69
|
delivery_pr: allow
|
|
63
70
|
delivery_ready: allow
|
|
64
|
-
delivery_merge:
|
|
71
|
+
delivery_merge: ask
|
|
65
72
|
delivery_cleanup: allow
|
|
66
73
|
delivery_github_read: allow
|
|
67
74
|
delivery_issue_comment: allow
|
|
68
75
|
delivery_issue_labels: allow
|
|
69
76
|
delivery_issue_link: allow
|
|
70
|
-
delivery_issue_close:
|
|
77
|
+
delivery_issue_close: ask
|
|
71
78
|
delivery_sync: allow
|
|
72
|
-
delivery_publish:
|
|
79
|
+
delivery_publish: allow
|
|
73
80
|
ship_plan_start: allow
|
|
74
|
-
ship_plan_submit:
|
|
75
|
-
ship_plan_approve:
|
|
81
|
+
ship_plan_submit: deny
|
|
82
|
+
ship_plan_approve: ask
|
|
76
83
|
ship_run_start: allow
|
|
84
|
+
ship_task_start: allow
|
|
85
|
+
ship_task_commit: allow
|
|
86
|
+
ship_task_complete: allow
|
|
77
87
|
ship_task_report: deny
|
|
78
88
|
ship_task_review: deny
|
|
89
|
+
ship_final_review: deny
|
|
79
90
|
ship_resume: allow
|
|
80
91
|
ship_status: allow
|
|
81
92
|
ship_deliver: allow
|
|
82
93
|
ship_skill_discover: allow
|
|
83
94
|
ship_skill_install: allow
|
|
95
|
+
ship_skill_audit: allow
|
|
96
|
+
ship_skill_uninstall: allow
|
|
84
97
|
---
|
|
85
98
|
|
|
86
99
|
# ship-controller
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Strong Spec final reviewer. Records the Spec axis
|
|
2
|
+
description: Strong Spec final reviewer. Records the Spec axis through `ship_final_review`. Independent of the Standards reviewer and the controller.
|
|
3
3
|
mode: subagent
|
|
4
4
|
temperature: 0.2
|
|
5
5
|
model: <model-from-config>
|
|
6
6
|
steps: 10
|
|
7
7
|
permission:
|
|
8
|
+
"*": deny
|
|
8
9
|
edit: deny
|
|
9
10
|
external_directory: deny
|
|
10
11
|
webfetch: deny
|
|
@@ -26,7 +27,7 @@ permission:
|
|
|
26
27
|
delivery_issue: deny
|
|
27
28
|
delivery_worktree: deny
|
|
28
29
|
delivery_verify: deny
|
|
29
|
-
delivery_review:
|
|
30
|
+
delivery_review: deny
|
|
30
31
|
delivery_pr: deny
|
|
31
32
|
delivery_ready: deny
|
|
32
33
|
delivery_merge: deny
|
|
@@ -37,6 +38,7 @@ permission:
|
|
|
37
38
|
ship_run_start: deny
|
|
38
39
|
ship_task_report: deny
|
|
39
40
|
ship_task_review: deny
|
|
41
|
+
ship_final_review: allow
|
|
40
42
|
ship_resume: deny
|
|
41
43
|
ship_status: deny
|
|
42
44
|
ship_deliver: deny
|
|
@@ -70,7 +72,7 @@ refuses to mark Ready if either axis is missing or fails.
|
|
|
70
72
|
2. Score the Spec axis against the contract above. Every
|
|
71
73
|
acceptance criterion the plan promised must be
|
|
72
74
|
demonstrable from the final HEAD.
|
|
73
|
-
3. Call `
|
|
75
|
+
3. Call `ship_final_review` exactly once with
|
|
74
76
|
`axis: "spec"`, the merge-base SHA, the HEAD SHA, the
|
|
75
77
|
package hash, and a single verdict. The verdict is
|
|
76
78
|
`pass` only when every Spec criterion is met; any
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Strong Standards final reviewer. Records the Standards axis
|
|
2
|
+
description: Strong Standards final reviewer. Records the Standards axis through `ship_final_review`. Independent of the Spec reviewer and the controller.
|
|
3
3
|
mode: subagent
|
|
4
4
|
temperature: 0.2
|
|
5
5
|
model: <model-from-config>
|
|
6
6
|
steps: 10
|
|
7
7
|
permission:
|
|
8
|
+
"*": deny
|
|
8
9
|
edit: deny
|
|
9
10
|
external_directory: deny
|
|
10
11
|
webfetch: deny
|
|
@@ -26,7 +27,7 @@ permission:
|
|
|
26
27
|
delivery_issue: deny
|
|
27
28
|
delivery_worktree: deny
|
|
28
29
|
delivery_verify: deny
|
|
29
|
-
delivery_review:
|
|
30
|
+
delivery_review: deny
|
|
30
31
|
delivery_pr: deny
|
|
31
32
|
delivery_ready: deny
|
|
32
33
|
delivery_merge: deny
|
|
@@ -37,6 +38,7 @@ permission:
|
|
|
37
38
|
ship_run_start: deny
|
|
38
39
|
ship_task_report: deny
|
|
39
40
|
ship_task_review: deny
|
|
41
|
+
ship_final_review: allow
|
|
40
42
|
ship_resume: deny
|
|
41
43
|
ship_status: deny
|
|
42
44
|
ship_deliver: deny
|
|
@@ -66,7 +68,7 @@ to mark Ready if either axis is missing or fails.
|
|
|
66
68
|
you. The package includes the task-by-task commits, the
|
|
67
69
|
verification report, the CI report, and the manifest.
|
|
68
70
|
2. Score the Standards axis against the contract above.
|
|
69
|
-
3. Call `
|
|
71
|
+
3. Call `ship_final_review` exactly once with
|
|
70
72
|
`axis: "standards"`, the merge-base SHA, the HEAD SHA,
|
|
71
73
|
the package hash, and a single verdict. The verdict is
|
|
72
74
|
`pass` only when every Standards criterion is met; any
|