Skip to content

fix(ci): pin skills feed deploy to production branch - #606

Merged
Aaronontheweb merged 1 commit into
devfrom
claude-wt-more-skill-issues
Apr 12, 2026
Merged

fix(ci): pin skills feed deploy to production branch#606
Aaronontheweb merged 1 commit into
devfrom
claude-wt-more-skill-issues

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Collaborator

Summary

Fixes #591. The system skill feed has been serving a stale 2026-03-20 manifest for two releases, causing 5 of 6 skills to 404 on every daemon sync.

Root cause. publish_skills.yml runs wrangler pages deploy feeds/ --project-name=netclaw-feeds without pinning a branch. On release-tag builds the runner is in detached HEAD, so wrangler infers a branch name of head and ships the new manifest to the head.netclaw-feeds.pages.dev preview alias instead of the production custom domain. Meanwhile feeds.netclaw.dev has been frozen on the last successful dev-branch dispatch, advertising R2 keys for skills that were renamed/removed and never existed under those paths.

Evidence during investigation:

  • head.netclaw-feeds.pages.dev/skills/.system/manifest.jsonupdatedAt 2026-04-03, correct 5 skills
  • feeds.netclaw.dev/skills/.system/manifest.jsonupdatedAt 2026-03-20, pre-rename names
  • R2: netclaw-memory/1.1.0/SKILL.md → 200, netclaw-diagnostics/0.6.0/SKILL.md → 404

Changes

  • Pin --branch=dev on wrangler pages deploy so tag-triggered runs still hit the production branch regardless of git checkout state.
  • Add a post-deploy propagation check that polls feeds.netclaw.dev/skills/.system/manifest.json and asserts the updatedAt matches the freshly generated manifest. Fails loudly with a clear routing hint if it does not. The existing R2 spot-check only validated skills.netclaw.dev, which is why this regression sailed through unnoticed.

Operator action after merge

Once this lands, manually dispatch the workflow from dev to republish and unstick the live feed:

gh workflow run publish_skills.yml --ref dev

Daemons will self-heal on their next SystemSkillSyncService rebuild.

Follow-up

#605 tracks surfacing sync failures louder on the daemon side (doctor check, startup banner, stats) so the next time the feed breaks it is not buried in daemon.log.

Test plan

  • Merge, then gh workflow run publish_skills.yml --ref dev
  • Confirm curl https://feeds.netclaw.dev/skills/.system/manifest.json shows a fresh updatedAt and only the current 5 skill names
  • Spot-check a non-skill-authoring URL from the new manifest returns 200
  • Restart a daemon and verify .sync-state.json picks up all 5 skills without 404s

Pin wrangler pages deploy to --branch=dev so release-tag builds (detached
HEAD) stop landing on a preview alias while feeds.netclaw.dev stays frozen
on the last dev-branch deploy. Add a post-deploy check that polls the
custom domain until the manifest updatedAt matches the freshly generated
one, so future routing regressions fail the workflow loudly instead of
silently shipping a stale manifest.
@Aaronontheweb
Aaronontheweb merged commit 5543493 into dev Apr 12, 2026
3 checks passed
@Aaronontheweb
Aaronontheweb deleted the claude-wt-more-skill-issues branch April 12, 2026 00:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

System skill feed returns 404 for 5 of 6 manifest entries

1 participant