opencode-ship 0.6.0 → 0.7.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 +18 -0
- package/README.md +3 -3
- package/THIRD_PARTY_NOTICES.md +6 -5
- package/dist/cli.js +3 -3
- package/dist/core.js +1 -1
- package/dist/plugin.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `opencode-ship` are recorded here.
|
|
4
4
|
|
|
5
|
+
## 0.7.0 — M3 task loop contract
|
|
6
|
+
|
|
7
|
+
`opencode-ship@0.7.0` ships the M3 task loop contract required by issue #22 (Task 7 in approved plan). The run store persists task state under `.git/opencode-ship/runs/<taskId>/`; the task brief extractor surfaces only the active task plus the plan header; the task reviewer emits separate Spec and Quality verdicts; the build-side commit ownership returns true only when the immutable review package is sealed and the plan hash still matches; the three-round breaker routes a failed third round back to the GPT planning role for a revision; the commit binding appends the immutable range to the run ledger; and the compaction context builder emits the short pointer set the chat hook injects when the context overflows. No plan body, no report body, and no commit diffs ever enter the chat.
|
|
8
|
+
|
|
9
|
+
### Verification
|
|
10
|
+
|
|
11
|
+
- `npm run verify` exits `0` with 302 tests across 34 suites on the v0.7 HEAD.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **Run store.** `src/installer/run-store.js` exposes `ensureRunDir`, `writeProgress`, `readProgress`, `recordCommitRange` (append-only, dedup-rejected), `readCommitRanges`. Persists run state under `.git/opencode-ship/runs/<taskId>/` with the progress.md / ledger.json / reports/ layout.
|
|
16
|
+
- **Task brief + compact context.** `src/installer/task-brief.js` exposes `buildTaskBrief` (extracts the active task from a multi-task plan plus the plan header) and `renderCompactContext` (emits the short pointer set the compaction hook injects into chat).
|
|
17
|
+
- **Task reviewer.** `src/installer/task-reviewer.js` exposes `emitSpecVerdict`, `emitQualityVerdict` (separate verdicts with `specKind` / `qualityKind` discriminators), `shouldCommit` (only non-blocking on both sides), `assembleReviewPackage` (writes the immutable package to `reports/review-package.json`), `readReviewPackage`.
|
|
18
|
+
- **Build-side commit ownership.** `src/installer/build-ownership.js` returns true only when both verdicts are non-blocking AND the sealed review package is on disk AND the plan hash still matches.
|
|
19
|
+
- **Three-round breaker.** `src/installer/three-round-breaker.js` exposes `MAX_FIX_ROUNDS = 3` and `shouldRequestPlanRevision` (returns true only when `fixRound >= 3`).
|
|
20
|
+
- **Compaction context.** `src/installer/compaction.js` exposes `buildCompactionContext` and `compactContextForRun` (reads the ledger entry count from disk and merges it with the caller-supplied pointer set).
|
|
21
|
+
- **Commit binding.** `src/installer/commit-binding.js` re-exports the run-store `recordCommitRange` as `recordApprovedCommit` so Build can call one name per role.
|
|
22
|
+
|
|
5
23
|
## 0.6.0 — Durable plan artifact + Plan Mode integration
|
|
6
24
|
|
|
7
25
|
`opencode-ship@0.6.0` ships the durable plan artifact and the Plan Mode permission integration required by issue #21. The runtime now supports the GPT-to-MiniMax handoff end-to-end: a planning sub-agent can write a hash-verified plan to `.git/opencode-ship/plans/<slug>/revision-NNNN.json`, mirror it to the parent issue as a marked comment, and run with a deny-first, narrow-allow permission block that prevents it from touching source/config/docs.
|
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:** v0.
|
|
5
|
+
> **Status:** v0.7.0 compact-safe M3 task loop. The installer is a `pnpm dlx opencode-ship@latest <cmd>` workflow. Five idempotent CLI commands manage a managed-file lock, a transactional promoter, and a compiled ESM plugin that registers the canonical nine `delivery_*` tools. Every command now accepts `--profile <name>` (`core` default, `engineering` opt-in) and resolves the active profile through one documented precedence chain (CLI > ship.config > lock > default). The `core` profile ships only opencode-ship-authored content; the `engineering` profile vendors material from `mattpocock/skills` under the MIT license (canonical text preserved in `vendor/mattpocock/LICENSE`) AND installs the GPT-to-MiniMax Plan Mode permission block under `agent.plan.permission` so consumers can spin up a Plan Mode sub-agent without hand-editing the opencode.json. The M3 task loop contract (run store + task brief + Spec/Quality verdicts + 3-round breaker + commit binding + compaction context) is now implemented end-to-end. v0.7 ships the M3 task loop contract required by issue #22 and approved plan `f85bae931d9eed7763e2f6f4dc68e5fad71bdd38c8a667fc9ffe78b5290200be` (`Viktorxyz/opencode-ship#16`); the actual implementer and reviewer sub-agents are runtime pieces that depend on the consumer's OpenCode configuration.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -111,7 +111,7 @@ Existing consumers of `opencode-delivery@0.1.x` (commit-pinned shim) can run `pn
|
|
|
111
111
|
|
|
112
112
|
## Development
|
|
113
113
|
|
|
114
|
-
`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,
|
|
114
|
+
`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). v0.7 ships with 302 tests across 34 suites on the approved plan hash `f85bae931d9eed7763e2f6f4dc68e5fad71bdd38c8a667fc9ffe78b5290200be`.
|
|
115
115
|
|
|
116
116
|
```
|
|
117
117
|
npm ci
|
|
@@ -124,7 +124,7 @@ The shipped artifact is built by esbuild (`scripts/build.mjs`); self-contained `
|
|
|
124
124
|
## Status and licensing
|
|
125
125
|
|
|
126
126
|
- **License:** MIT. See `LICENSE`.
|
|
127
|
-
- **Versioning:** SemVer. v0.2.0 is the first npm-distributed release. v0.3.0 is the installer foundation with core-only defaults. v0.4.0 adds the profile-aware installer foundation (`--profile` flag, lock schema v2, profile precedence) that issue #18 requires. v0.5.0 ships the engineering profile content (triage + grill-with-docs SKILL.md placeholders) required by issue #20. v0.6.0 ships the durable plan artifact + Plan Mode permission integration required by issue #21.
|
|
127
|
+
- **Versioning:** SemVer. v0.2.0 is the first npm-distributed release. v0.3.0 is the installer foundation with core-only defaults. v0.4.0 adds the profile-aware installer foundation (`--profile` flag, lock schema v2, profile precedence) that issue #18 requires. v0.5.0 ships the engineering profile content (triage + grill-with-docs SKILL.md placeholders) required by issue #20. v0.6.0 ships the durable plan artifact + Plan Mode permission integration required by issue #21. v0.7.0 ships the M3 task loop contract (run store, task brief, Spec/Quality verdicts, 3-round breaker, commit binding, compaction context) required by issue #22.
|
|
128
128
|
- **Compatibility:** the bundled plugin targets `@opencode-ai/plugin >= 1.15.5 < 2` and OpenCode `>= 1.15.5`.
|
|
129
129
|
|
|
130
130
|
## FAQ
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# Third-Party Notices
|
|
2
2
|
|
|
3
|
-
`opencode-ship@0.
|
|
4
|
-
(`core` and `engineering` profiles)
|
|
5
|
-
|
|
6
|
-
only opencode-ship-authored
|
|
7
|
-
workflow skills). The
|
|
3
|
+
`opencode-ship@0.7.0` ships the profile-aware installer foundation
|
|
4
|
+
(`core` and `engineering` profiles), the durable plan artifact
|
|
5
|
+
with Plan Mode permission integration, and the M3 task loop
|
|
6
|
+
contract. The `core` profile ships only opencode-ship-authored
|
|
7
|
+
content (two delivery agents, two workflow skills). The
|
|
8
|
+
`engineering` profile vendors material from
|
|
8
9
|
[mattpocock/skills](https://github.com/mattpocock/skills) under
|
|
9
10
|
the MIT license; the canonical license text is preserved in
|
|
10
11
|
`vendor/mattpocock/LICENSE`. The current package version ships
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// opencode-ship CLI v0.
|
|
2
|
+
// opencode-ship CLI v0.7.0
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __esm = (fn, res) => function __init() {
|
|
@@ -687,7 +687,7 @@ function resolvePackageRoot(startUrl) {
|
|
|
687
687
|
import { readFileSync as readFileSync2, existsSync as existsSync2 } from "node:fs";
|
|
688
688
|
import { dirname as dirname2, resolve as resolve2 } from "node:path";
|
|
689
689
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
690
|
-
var PACKAGE_VERSION = "0.
|
|
690
|
+
var PACKAGE_VERSION = "0.7.0";
|
|
691
691
|
var TEMPLATE_SET = `v${PACKAGE_VERSION}`;
|
|
692
692
|
|
|
693
693
|
// src/installer/catalog.js
|
|
@@ -2286,7 +2286,7 @@ async function assembleLock({ repoRoot, plan, lock, configPlan, rootPlan, profil
|
|
|
2286
2286
|
manager: {
|
|
2287
2287
|
schemaVersion: CURRENT_LOCK_SCHEMA,
|
|
2288
2288
|
name: "opencode-ship",
|
|
2289
|
-
version: "0.
|
|
2289
|
+
version: "0.7.0",
|
|
2290
2290
|
templateSet: TEMPLATE_SET_ID,
|
|
2291
2291
|
// Newly written locks always carry the resolved profile so
|
|
2292
2292
|
// future CLI invocations without --profile still resolve to
|
package/dist/core.js
CHANGED
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// opencode-ship v0.
|
|
1
|
+
// opencode-ship v0.7.0
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __esm = (fn, res) => function __init() {
|
|
@@ -14897,7 +14897,7 @@ function flattenShipConfig(ship) {
|
|
|
14897
14897
|
import { readFileSync as readFileSync2, existsSync as existsSync6 } from "node:fs";
|
|
14898
14898
|
import { dirname as dirname5, resolve as resolve11 } from "node:path";
|
|
14899
14899
|
import { fileURLToPath } from "node:url";
|
|
14900
|
-
var PACKAGE_VERSION = "0.
|
|
14900
|
+
var PACKAGE_VERSION = "0.7.0";
|
|
14901
14901
|
var TEMPLATE_SET = `v${PACKAGE_VERSION}`;
|
|
14902
14902
|
|
|
14903
14903
|
// src/plugin.js
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-ship",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "npm-distributed OpenCode installer that materializes the delivery plugin, reviewer/verifier agents, skills, ship config and lock into any consumer repository.",
|
|
6
6
|
"license": "MIT",
|