Skip to content

Releases: emco1234/opencode-goalpower

v2.0.3

Choose a tag to compare

@github-actions github-actions released this 29 Jun 16:02

[2.0.3] — 2026-06-29

Added

  • Dynamic K Skeptics per round — instead of a static config.skeptics value, the orchestrator now picks K adaptively based on round/stakes:
    • Round 1 or simple/low-stakes goal → K = 1 skeptic
    • Round 2-3 or high-stakes (production, security, payments) → K = 2 skeptics
    • Round 4+ OR repeatedly refuted OR "stuck" signs → K = 3 skeptics
    • Why: catches issues a single Skeptic would miss — different mental models surface different gaps. Bigger stakes → broader adversarial coverage.
  • commands/goalpower.md — canonical slash command template shipped in the repo. Users can drop it into ~/.config/opencode/commands/ directly (no plugin install required) to get /goalpower.

Changed

  • Panel aggregation rule documented explicitly in commands/goalpower.md: high-confidence single-refutation OR 2+ medium-confidence agreement → REFUTED.

v2.0.2

Choose a tag to compare

@github-actions github-actions released this 29 Jun 02:22

[2.0.2] — 2026-06-29

Fixed

  • CRITICAL: Plugin export shape was wrong — was using export const plugin = (...) + export default plugin. OpenCode's plugin loader expects { id, server } as the default export descriptor. Switched to the canonical pattern:

    const server: Plugin = (async (...) => {...}) as unknown as Plugin
    export default { id: "local.opencode-goalpower.server", server }
    export { server as plugin }

    Without this exact shape, the plugin is loaded but no commands/tools/hooks register. This was the root cause of /goalpower not appearing in the OpenCode TUI picker.

  • Updated test/helpers.test.ts smoke test to validate the new {id, server} default-export descriptor.

v2.0.1

Choose a tag to compare

@github-actions github-actions released this 29 Jun 02:15

[2.0.1] — 2026-06-29

Fixed

  • Slash command registration pattern — was using config: [{type:"command", ...}] array syntax which OpenCode silently ignored. Now uses the documented lifecycle-hook pattern: config: async (cfg) => { cfg.command[name] = { description, template } }. Matches the @prevalentware/opencode-goal-plugin shape exactly. Fixes /goalpower not appearing in the OpenCode TUI picker.
  • Type errors blocking CI: Plugin type annotation replaced with safe cast, client binding typed explicitly, ?? || precedence fixed.

Added

  • Real test suite in test/helpers.test.ts — Bun tests for aggregatePanel decision rule, dedupeGaps hygiene, detectPrematureStop anti-ratchet logic, plus plugin export smoke test.
  • examples/goalpower-sessions.md — real /goalpower session transcripts: quick single-round, multi-round with prior gaps, 3-parallel-skeptic high-stakes, sub-command demos, stuck handling, compaction-mid-goal behavior.
  • Real contact email (info@contentplanning.ai) in SECURITY.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md, and package.json author field — replaced placeholder addresses.

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Jun 01:56

[2.0.0] — 2026-06-29

Changed — MAJOR

  • Renamed package to opencode-goalpower to reflect the project's identity as the goal plugin for OpenCode. Old goalpower references continue to work as aliases.
  • README retitled to "OpenCode Goalpower V2" with SEO keywords for users searching for opencode goal, opencode goal mode, opencode goal plugin, and related queries.
  • Bumped to major version 2.0.0 to signal the public, stable, community-ready release. No breaking API changes from 1.2.0 — the version bump is for naming/branding clarity.

Added

  • New SEO-friendly repo URL: github.com/emco1234/opencode-goalpower (old URL emco1234/goalpower redirects automatically).
  • Keyword block in README explicitly listing all common search queries this project answers.
  • Expanded package.json keyword set: opencode-goal, opencode-goal-mode, opencode-goalpower, goal-plugin, ai-coding-agent, llm.

Migration from 1.x

Users who installed 1.2.0 don't need to change anything in their opencode.jsonc. The slash command /goalpower is unchanged. Plugin path can be either:

git clone https://github.com/emco1234/opencode-goalpower.git \
  ~/.config/opencode/plugins/goalpower

(or opencode-goalpower as the directory name — both work)

v1.2.0 — Initial public release

Choose a tag to compare

@emco1234 emco1234 released this 29 Jun 01:35

Goalpower — long-running autonomous goal mode with multi-round skeptic verification for OpenCode.

What's in this release

  • ✅ Infinite round loop with anti-ratchet caps (no static max_rounds)
  • ✅ Multi-Skeptic parallel panel (1–3 per round, configurable)
  • ✅ Honesty anchor: changed_files_manifest.txt diffed against harness-tracked CHANGED_FILES
  • ✅ Anti-ratchet contract: prior gaps re-audited every round
  • ✅ Compaction preservation via experimental.session.compacting hook
  • ✅ Auto-continue on session.idle
  • ✅ 9 lifecycle tools + /goalpower slash command (programmatically registered)
  • ✅ Filesystem-backed atomic state with mutation queue
  • ✅ 100% OpenCode plugin API compatible (v1.17.1+)

Installation

git clone https://github.com/emco1234/goalpower.git \
  ~/.config/opencode/plugins/goalpower

Then add to ~/.config/opencode/opencode.jsonc:

{
  "plugin": [
    ["./plugins/goalpower", { "skeptics": 1, "max_auto_turns": 0 }]
  ]
}

Restart OpenCode. Run /goalpower to start.

Documentation

Why Goalpower?

Modern LLM agents can produce a convincing "I've finished the task" even when the actual work is incomplete, fabricated, or never happened. Goalpower closes that gap by treating honesty and verifiability as a system-level contract, enforced by adversarial subagents whose only job is to refute completion claims.

If Goalpower saves you from a fabricated "done" — consider ⭐ starring the repo.