Repository navigation
feat(flows): pin Software Garden v3 in the catalog (catalogVersion 6) and automate future pin moves - #193
Conversation
…e pin moves Move the recommended catalog's software-factory source to the published v3 (web/public/flows/software-garden/v3.flow.ts at b6125bf, the commit where it first landed on main; sha256 a54a282e) at catalogVersion 6, and record the source in SOURCE_BY_CATALOG_VERSION. The verify scripts no longer hardcode catalogVersion 5: they share an envelope check (schemaVersion 1, positive-integer catalogVersion, flows array, as Cloud parses it), and the gates keep Babysitter's authority floor of 4. The catalog API test derives the pin from the catalog, so the exact pin is recorded once. Add web/scripts/propose-software-garden-catalog-bump.mjs and the software-garden-catalog-bump workflow: on a push to main that changes the Software Garden manifest, it moves the pin to the latest published version, runs the verify scripts, tests and typecheck, and opens or updates one pull request. It never merges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 248a5697-9493-45b7-a6fb-c23df13da25d
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to No actionable merge-blocking issue remains; the catalog update and PR automation are ready for normal merge checks. Pre-merge checks |
|
There was a problem hiding this comment.
Devin Review found 3 potential issues.
1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
|
Preview deployed!
This is a Cloudflare Workers preview version of this PR's build. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bd15c64aa2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
All reported issues were addressed across 13 files
You’re at about 92% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
… from the write token - Tests rewind the checked-in files to fixed points in the catalog's history (v1 at catalogVersion 5, v3 at 6), so they hold after the next bump; add a v3 to v4 (catalogVersion 7) case. - The script also moves the docs' catalogVersion, release and path, and a test keeps the docs naming what the catalog serves. - Split the workflow: a read-only job installs dependencies and runs the checks; a separate job with no dependencies holds the write token. - git receives the token through a credential helper reading GH_TOKEN, never in argv or a URL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 248a5697-9493-45b7-a6fb-c23df13da25d
…pen-pr on the edited tree - software-garden-artifact.test.ts asserts the software-factory entry version equals catalogVersion, an independent check that a pin move advanced it (the API test derives the version from the same catalog). - --open-pr refuses a --git directory other than --root, since it commits the working tree it edited. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 248a5697-9493-45b7-a6fb-c23df13da25d
Summary
1. The catalog pins Software Garden v3 (catalogVersion 6). #192 published v3, but
web/data/recommended-flow-catalog.v1.jsonstill served v1 at catalogVersion 5. Cloud refuses to upgrade an activation onto a different source at the same catalogVersion, so both the catalog and the entry advance:catalogVersion/ entryversionpathweb/public/flows/software-garden/v3.flow.tsreleasesoftware-garden-v3refb6125bfdba33e15b4ad68c9d431fe5630c0894d7(the commit where v3.flow.ts first landed on main, #192's merge commit;git log --diff-filter=A --format=%H origin/main -- web/public/flows/software-garden/v3.flow.ts)sha256a54a282e0ac607bf4481aee5c3353c7a5c63178da44080ba72ff872b24fcba73(git show <ref>:<path>, the local file, the manifest, and the bytes the rawUrl serves all match)url/rawUrlhttps://github.com/AgentWorkforce/agentrelay.com/blob/b6125bfd…/web/public/flows/software-garden/v3.flow.ts/https://raw.githubusercontent.com/AgentWorkforce/agentrelay.com/b6125bfd…/web/public/flows/software-garden/v3.flow.tsSOURCE_BY_CATALOG_VERSIONinweb/lib/test/software-garden-artifact.test.tsgains row 6.verify-catalog-gates.mjsandverify-recommended-flow-catalog.mjsno longer hardcode 5. Both scripts call a sharedassertRecommendedCatalogEnvelope(recommended-flow-contract.mjs). It requires schemaVersion 1, a positive safe-integer catalogVersion and a flows array, which is what Cloud'srecommendedFlowCatalogEnvelopeSchemaparses. The artifact test separately holds catalogVersion equal to the newest recorded row. The gates also enforce Babysitter's authority floor of 4: Cloud'sPUBLISHED_RECOMMENDED_FLOW_CATALOG_VERSIONstrips Babysitter from catalogs older than that.recommended-flow-catalog.test.tsno longer hardcodes catalogVersion 5 or the v1 pin. It derives them from the catalog and checks their shape, so the exact pin is recorded once, in the rows above.recommended.mdx): catalogVersion 6, and the v3 path/release example.software-factoryentry. Babysitter's entry, its extension contract on Garden, and its blocked activation are byte-identical.verify-catalog-gatespasses, and catalogVersion 6 is ≥ 4, so Cloud still publishes Babysitter metadata.2. Automation:
.github/workflows/software-garden-catalog-bump.yml+web/scripts/propose-software-garden-catalog-bump.mjs.web/public/flows/software-garden/manifest.json, and onworkflow_dispatch.SOURCE_BY_CATALOG_VERSIONrow;recommended.mdxnames.check(read-only token) runsnpm ciand--check, which makes the edit and runsnpm run verify:recommended-flows,npm testand the web typecheck;propose(contents: write,pull-requests: write) checks out the same SHA, installs nothing (the script uses only Node built-ins), and runs--open-pr.proposepushesautomation/software-garden-catalog-bumpand opens the PR, or updates the one already open (title and body). The push is skipped when the branch already carries the same tree.proposegetscontents: writeandpull-requests: write. No new secrets.GH_TOKENfrom the environment, never from argv, a URL or git config. Checkout keepspersist-credentials: false, and any error output is redacted.recommended.mdxunder "Moving the Software Garden pin".Known limitation
The bump PR is opened with
GITHUB_TOKEN, and GitHub does not start other workflows for events that token causes, so CI does not run on the bump PR automatically. This repo has no existing convention for that (the IndexNow snapshot commit uses[skip ci]), so I did not add a PAT or App secret. Instead:gh workflow run test.yml --ref automation/software-garden-catalog-bump) or to close and reopen the PR.The repo setting that lets Actions create PRs is already enabled (
can_approve_pull_request_reviews: true).Review rounds
9d5f423) addressed four threads:npm ci;9d443f0) addressed two cubic threads:version==catalogVersion;--open-prwith--git≠--rootwould commit the wrong tree, so it is now refused up front.Verification
npm test: web 49 files / 614 tests passed; router 9 files / 97 tests passed.npx tsc --noEmitpassed in web and in router.npm run verify:recommended-flowspassed. It ranverify:catalog-gatesand fetched the v3 rawUrl:software-factory: verified software-garden-v3 (b6125bfd…) sha256:a54a282e…, and Babysitter verified unchanged.npm run verify:setup-skillspassed.web/lib/test/software-garden-catalog-bump.test.ts, 15 tests) rewind the checked-in files to fixed history points (v1 @ 5, v3 @ 6), so they stay valid after future bumps. They cover:git credential fill.node web/scripts/propose-software-garden-catalog-bump.mjsprintsSoftware Garden pin is current: v3 at catalogVersion 6.origin/main(git archive, pinned to v1 at catalogVersion 5):--root <scratch> --writeproduced a catalog and an artifact test identical to this PR (diffempty), and changed exactly the three versioned values in that tree's docs. A re-run then reported current."6"failverify-catalog-gates; 7 passes.🤖 Generated with Claude Code
Agent Relay sessions
claudesession7f40e353· opened viagh pr create· last active 2026-10-10claudesession5d87b716· contributor · rangh prcommands · last active 2026-10-10