Releases: emco1234/opencode-goalpower
Release list
v2.0.3
[2.0.3] — 2026-06-29
Added
- Dynamic K Skeptics per round — instead of a static
config.skepticsvalue, 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
[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
/goalpowernot appearing in the OpenCode TUI picker. -
Updated
test/helpers.test.tssmoke test to validate the new{id, server}default-export descriptor.
v2.0.1
[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/goalpowernot appearing in the OpenCode TUI picker. - Type errors blocking CI:
Plugintype annotation replaced with safe cast,clientbinding typed explicitly,?? ||precedence fixed.
Added
- Real test suite in
test/helpers.test.ts— Bun tests foraggregatePaneldecision rule,dedupeGapshygiene,detectPrematureStopanti-ratchet logic, plus plugin export smoke test. examples/goalpower-sessions.md— real/goalpowersession 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) inSECURITY.md,CODE_OF_CONDUCT.md,CONTRIBUTING.md, andpackage.jsonauthor field — replaced placeholder addresses.
v2.0.0
[2.0.0] — 2026-06-29
Changed — MAJOR
- Renamed package to
opencode-goalpowerto reflect the project's identity as the goal plugin for OpenCode. Oldgoalpowerreferences 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 URLemco1234/goalpowerredirects automatically). - Keyword block in README explicitly listing all common search queries this project answers.
- Expanded
package.jsonkeyword 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
⚡ 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.txtdiffed against harness-trackedCHANGED_FILES - ✅ Anti-ratchet contract: prior gaps re-audited every round
- ✅ Compaction preservation via
experimental.session.compactinghook - ✅ Auto-continue on
session.idle - ✅ 9 lifecycle tools +
/goalpowerslash 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/goalpowerThen add to ~/.config/opencode/opencode.jsonc:
{
"plugin": [
["./plugins/goalpower", { "skeptics": 1, "max_auto_turns": 0 }]
]
}Restart OpenCode. Run /goalpower to start.
Documentation
- README — full feature list + config reference
- Examples — basic, high-stakes, debugging patterns
- Contributing — dev setup + conventions
- Changelog
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.