diff --git a/.opencode/state/status.md b/.opencode/state/status.md index fcb9934..0847c26 100644 --- a/.opencode/state/status.md +++ b/.opencode/state/status.md @@ -1,11 +1,14 @@ # Project status -Updated: 2026-10-14 (phase 1 implementation, ~90% done) +Updated: 2026-10-14 (Phase 1 COMPLETE — quality gate passed) ## Current phase -Phase 1 (plugin package) — implementation complete and runtime-verified locally. Remaining: -first registry release (1.10) + Gitea secret provisioning, then Phase 2. +Phase 1 done: plugin installs, loads in OpenCode v2.0.29, skills inject, package builds, +`@haylan/opencode-pocock@0.1.0` published to the Gitea registry (release run 5684), install-from- +registry verified, nightly workflow proven (dispatch run 5685: github.com reachable, no-change +early exit). Remaining: Phase 2.5 (manual token-spending orchestration run) and 2.7 (observe a +week of nightlies). ## Done @@ -38,21 +41,22 @@ first registry release (1.10) + Gitea secret provisioning, then Phase 2. ## Known gaps / risks -- 1.10 not done: package never published to the Gitea registry yet; npm-name plugin entry - (resolving through `exports`) unverified — local directory entry verified instead. -- `PACKAGE_TOKEN` Gitea secret must be provisioned by the repo admin before nightly can publish - or commit back. -- Nightly runner network access to github.com unverified (fallback: Gitea mirror of upstream). +- 2.5 not done: no token-spending end-to-end orchestration run yet (pocock building a fixture + spec with parallel workers). Drift/unit/smoke suites cover the deterministic surface. +- 2.7: nightlies need a week of green runs before "stable" is declared; first scheduled run + 2026-10-15 03:30 UTC. +- Background subagents in V2 (env-gated in V1) not verified; orchestrator text works either way. - Windows-only smoke quirk: fixture temp dir deletion can lag (EPERM warning, harmless); CI is Linux. -- Background subagents in V2 (env-gated in V1) not verified; orchestrator text works either way. - `request.body` overlays accepted but not sent by the V2 runner — agents avoid them. +- Skill id collisions with pre-existing file-based installs resolve to the file copy (silent). ## Next steps (exact) -1. Run `npm run format`, `npm run check`, `npm test`, `npm run build`; commit workflows/smoke/docs. -2. Push to origin; ask owner to add `PACKAGE_TOKEN` secret (write:package + write:repository). -3. 1.10: `node scripts/release.ts` with SERVER_URL/REPOSITORY/SHA/TOKEN env (or dispatch a manual - release workflow) → verify `plugins: ["@haylan/opencode-pocock"]` installs from the registry in - a clean fixture; record in docs/runtime-checks.md. -4. Phase 2 per TODO.md (2.2 guardrails already implemented in 1.4 — verify mapping note; 2.4–2.7). +1. 2.5: manual orchestration run — fixture project with spec + 3 tickets (2 independent, 1 + blocked), run `opencode --agent pocock`, verify worktree loop/merges/review/permissions; + record in docs/runtime-checks.md. +2. Watch nightly runs for a week (2.7); on upstream release (17 pending changesets), verify the + full sync→generate→publish→commit-back cycle end-to-end. +3. Then declare stable and announce; keep classification.json current when upstream promotes + in-progress skills. diff --git a/TODO.md b/TODO.md index e253017..9d865af 100644 --- a/TODO.md +++ b/TODO.md @@ -32,8 +32,11 @@ State: `.opencode/state/status.md`. Design: `docs/architecture.md`. - [x] 1.8 .gitea/workflows/: check.yml, nightly.yml, smoke.yml (dispatch); scripts/smoke.ts — PASS on v2.0.29 (plugin active, 31 skills, 16 hidden, agents + permissions decoded) - [x] 1.9 local runtime verification → docs/runtime-checks.md (findings folded into README/AGENTS) -- [ ] 1.10 manual release 0.1.0 to Gitea registry; verify install-from-registry by package name -- [ ] ask repo admin to add Gitea secret PACKAGE_TOKEN (write:package + write:repository) +- [x] 1.10 manual release 0.1.0 to Gitea registry (dispatch run 5684, tag v0.1.0, package linked); + install-from-registry verified in clean fixture (plugin active as package source, npx init + works, anonymous registry reads) → docs/runtime-checks.md +- [x] ask repo admin to add Gitea secret PACKAGE_TOKEN — done 2026-10-14; nightly dispatch run + 5685 proved runner github.com access + no-change early exit ## Phase 2 — conversion @@ -59,10 +62,9 @@ State: `.opencode/state/status.md`. Design: `docs/architecture.md`. - ~~Slash exposure for injected skills~~ RESOLVED: none (runtime check 2026-10-14); README documents file-based alternatives. - Package name/scope: CONFIRMED `@haylan/opencode-pocock` (owner, 2026-10-14). -- Does nightly runner have network access to github.com for upstream fetch? (1.8 — fallback: mirror - upstream to Gitea and sync from the mirror.) Verify on first nightly run. -- Install-from-registry by package name (npm-name plugin entry resolving through `exports`) — - verify at 1.10; local dir entry verified. +- ~~Does nightly runner have network access to github.com for upstream fetch?~~ VERIFIED + 2026-10-14: nightly dispatch run 5685 success (clone + no-change early exit). +- ~~Install-from-registry by package name~~ VERIFIED 2026-10-14 (see docs/runtime-checks.md). ## Done log diff --git a/docs/runtime-checks.md b/docs/runtime-checks.md index 0ced176..c5744f1 100644 --- a/docs/runtime-checks.md +++ b/docs/runtime-checks.md @@ -6,6 +6,17 @@ password printed on stdout) in a temp fixture and asserts against the HTTP API. ## Verified +- **Registry install by package name (1.10, 2026-10-14)**: `@haylan/opencode-pocock@0.1.0` + published to the Gitea npm registry by the dispatched `release` workflow (run 5684, success; + tag `v0.1.0` created, package linked to repo). Anonymous registry reads work (HTTP 200 without + auth). A clean fixture with `"plugins": ["@haylan/opencode-pocock"]` + scope registry in + `~/.npmrc` loads the plugin: `/api/plugin` shows + `source {type:"package", target:"@haylan/opencode-pocock", version:"0.1.0"}`, + `state.status "active"`; skills inject from the bun cache path + (`~/.cache/opencode/npm/@haylan/opencode-pocock@latest/.../skills/...`); `npx -y + @haylan/opencode-pocock init` installs the three agents (modes decode correctly). + Id collisions with a pre-existing global `~/.agents/skills` Matt Pocock install resolve to the + file-based copy (expected; a clean machine gets all 31 from the package). - **Plugin loads and activates** from a local directory entry (`plugins: ["/dist"]`); `GET /api/plugin` shows `haylan.pocock` with `state.status: "active"`. - A **file** entry (`file://.../dist/index.js`) is IGNORED — local plugin entries must be