Context
Follow-up carved out of #26. That issue's headline blocker — the self-updating engine had never been live-run and had never produced a real PR on a public living grimoire — was resolved on 2026-07-12: a full /grimoire:update ran end-to-end and opened context-engineering-grimoire#1 (2 sources ingested, 2 articles, 5 connections, site regenerated).
But that run executed via the local scheduled-task runner, driving the dist/ bundles by absolute path (node /Users/ved/Developer/grimoire/dist/compile.js). It proved the engine logic, not the GitHub Actions environment. This issue tracks the narrower remaining gap: proving the same pipeline under .github/workflows/grimoire-update.yml on ubuntu-latest via anthropics/claude-code-action@v1.
What's still unverified (Actions runner only)
How to verify
- Add the
CLAUDE_CODE_OAUTH_TOKEN Actions secret (claude setup-token) to context-engineering-grimoire.
- Settings → Actions → General → enable "Allow GitHub Actions to create and approve pull requests".
- Actions tab → Grimoire Update → Run workflow (
workflow_dispatch) — don't wait for the Monday cron.
- Expected: a no-op or a small PR (cross-run dedup makes a same-week rerun near-empty — context-engineering-grimoire#1 already ingested ACE/ACON, so a rerun should mostly dedup). Either outcome proves the path.
- Capture the job log as the closing evidence here.
Definition of done
One green workflow_dispatch run of grimoire-update.yml that loads the plugin, resolves ${CLAUDE_PLUGIN_ROOT}/dist, runs scout→ingest→compile→present, and either opens a PR or logs a clean no-op — with the job-summary digest attached.
Filed as the residual follow-up to #26 after the first successful local scheduled run.
Context
Follow-up carved out of #26. That issue's headline blocker — the self-updating engine had never been live-run and had never produced a real PR on a public living grimoire — was resolved on 2026-07-12: a full
/grimoire:updateran end-to-end and opened context-engineering-grimoire#1 (2 sources ingested, 2 articles, 5 connections, site regenerated).But that run executed via the local scheduled-task runner, driving the
dist/bundles by absolute path (node /Users/ved/Developer/grimoire/dist/compile.js). It proved the engine logic, not the GitHub Actions environment. This issue tracks the narrower remaining gap: proving the same pipeline under.github/workflows/grimoire-update.ymlonubuntu-latestviaanthropics/claude-code-action@v1.What's still unverified (Actions runner only)
.claude/settings.jsondeclaring the Athanor marketplace +grimoire@athanorso the headless run auto-loads the plugin. Never confirmed to actually load underclaude-code-action.${CLAUDE_PLUGIN_ROOT}resolution under Actions — the skill invokesnode ${CLAUDE_PLUGIN_ROOT}/dist/{compile,research,present}.js. The local run used an absolute path; under CI this env var must resolve to the auto-loaded plugin's install dir, and thedist/bundles must be present there. Highest-risk unknown.claude-code-actiononubuntu-latestis unconfirmed (the skill's documented fallback is watchlist-URL fetching when WebSearch is absent — that degradation path is also untested in CI).research.js fetch(verbatim-first) worked locally atextractfidelity for arXiv. Needs to run from the CI network egress (arXiv/GitHub reachable, no proxy/allowlist surprises).gh pr createwithgithub.token— branch push + PR open under least-privilegecontents: write/pull-requests: write. (Note the workflow's own caveat: PRs opened with the defaultGITHUB_TOKENwon't triggeron: pull_requestCI — recursion guard.)How to verify
CLAUDE_CODE_OAUTH_TOKENActions secret (claude setup-token) tocontext-engineering-grimoire.workflow_dispatch) — don't wait for the Monday cron.Definition of done
One green
workflow_dispatchrun ofgrimoire-update.ymlthat loads the plugin, resolves${CLAUDE_PLUGIN_ROOT}/dist, runs scout→ingest→compile→present, and either opens a PR or logs a clean no-op — with the job-summary digest attached.Filed as the residual follow-up to #26 after the first successful local scheduled run.