From 7f124574c0fe6b0efea2187a109e2d53498669a0 Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Sat, 19 Sep 2026 16:01:31 -0500 Subject: [PATCH 1/2] fix: add omp manifest field so package.json isn't silently skipped Discovered live-testing PR #86's shipped install path on a second pass: plain `omp plugin link .omp-plugin` followed by an ordinary `omp` session (no --plugin-dir override) never fired any throughline hook - the earlier "live verified" testing in #85/#86 had all gone through --plugin-dir, which bypasses the enabled-plugins resolution entirely and was masking this. Root cause, confirmed by reading extensibility/plugins/loader.ts's collectPluginsAtRoot(): a linked/installed plugin is silently excluded from getEnabledPlugins() (and therefore from every hooks/skills discovery surface) unless its package.json has an `omp` or `pi` field - a plain `if (!manifest) continue`. `omp plugin doctor`'s "No omp/pi manifest (not an omp plugin)" warning is that exact gate, not the cosmetic label it was assumed to be. Added a minimal `omp: { name, description }` field. Re-verified live: a plain `omp --print` session (no CLI override) against a real model now correctly captures the prompt and a bash tool call in the shared buffer. Co-Authored-By: Claude Sonnet 5 --- .omp-plugin/package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.omp-plugin/package.json b/.omp-plugin/package.json index d3b709c..1056bcf 100644 --- a/.omp-plugin/package.json +++ b/.omp-plugin/package.json @@ -12,6 +12,10 @@ "repository": "https://github.com/dynamic/throughline", "license": "MIT", "keywords": ["memory", "handoff", "session", "context", "continuity", "compaction", "git-state", "cross-harness", "resume", "onboarding", "omp", "oh-my-pi"], + "omp": { + "name": "throughline", + "description": "Continuous, state-aware session memory - capture what you did and what is, hand it off with judgment." + }, "scripts": { "typecheck": "tsc --noEmit -p tsconfig.json", "test": "bun test" From 194c589014c571696250f72f02acbf2409215497 Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Sat, 19 Sep 2026 16:12:58 -0500 Subject: [PATCH 2/2] fix(#87): require .omp key in manifest validation to prevent silent regression Code review on this PR found that the existing CI/local-ci manifest checks only assert `.name and .version` on .omp-plugin/package.json - they stayed green through both #85 and #86 while the plugin silently had zero working hooks/skills for exactly the reason this PR fixes. Extend both checks to require `.omp` as well, so dropping that field again fails CI instead of shipping silently broken. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/ci.yml | 2 +- .local-ci.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c8ff32..cc4b779 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,7 @@ jobs: jq -e '.plugins' .claude-plugin/marketplace.json >/dev/null jq -e '.name and .version' .codex-plugin/plugin.json >/dev/null jq -e '.plugins' .agents/plugins/marketplace.json >/dev/null - jq -e '.name and .version' .omp-plugin/package.json >/dev/null + jq -e '.name and .version and .omp' .omp-plugin/package.json >/dev/null - name: Check plugin version agreement (Linux) if: runner.os == 'Linux' run: | diff --git a/.local-ci.json b/.local-ci.json index 9032cb7..ca3d80c 100644 --- a/.local-ci.json +++ b/.local-ci.json @@ -2,7 +2,7 @@ "checks": [ { "label": "manifest validation", - "run": "jq -e '.hooks | keys' hooks/hooks.json >/dev/null && jq -e '.name and .version' .claude-plugin/plugin.json >/dev/null && jq -e '.plugins' .claude-plugin/marketplace.json >/dev/null && jq -e '.name and .version' .codex-plugin/plugin.json >/dev/null && jq -e '.plugins' .agents/plugins/marketplace.json >/dev/null && jq -e '.name and .version' .omp-plugin/package.json >/dev/null" + "run": "jq -e '.hooks | keys' hooks/hooks.json >/dev/null && jq -e '.name and .version' .claude-plugin/plugin.json >/dev/null && jq -e '.plugins' .claude-plugin/marketplace.json >/dev/null && jq -e '.name and .version' .codex-plugin/plugin.json >/dev/null && jq -e '.plugins' .agents/plugins/marketplace.json >/dev/null && jq -e '.name and .version and .omp' .omp-plugin/package.json >/dev/null" }, { "label": "plugin version agreement",