RFC#2843 #32: bump seo-agent template pin to f6a18eb4 (declared-plugin head) #2997

Merged
core-devops merged 1 commits from rfc2843-step1-bump-seo-agent-pin into main 2026-06-16 20:23:15 +00:00
Member

RFC#2843 #32 — bump seo-agent template pin to the declared-plugin HEAD

STEP 1 of finishing the #32 rollout. The core manifest.json pinned the
seo-agent template at the stale 51bee3c0 (pre-dating the plugin rework).
This PR bumps only that one ref to the current template main HEAD
f6a18eb4716a040fb24c5fb79830c50c5368a2da — the merged template PR#19 that:

  • declares plugins: [gitea://molecule-ai/molecule-ai-workspace-template-seo-agent/agent-skills/seo-all#main], and
  • removes agent-skills/ from the asset (provisioning) channel.

Why this is required

The merged reconcile engine (#2995, squash d7a88551) installs DECLARED plugins
dynamically post-online. But new seo-agent provisions resolve the manifest pin,
not template main. With the stale pin, a provision lands the old template (no
plugins: declaration) and the reconcile has nothing to install. Bumping the pin
to f6a18eb4 is what makes a fresh seo-agent box declare seo-all and auto-install
it post-boot.

Scope

One-line ref change in manifest.json. No code. No schema. No new gate surface.

Verification

TestManifest_RefPinning_* (workspace-server/internal/handlers/manifest_pinning_test.go)
pass on the new SHA, run locally with MOLECULE_GITEA_TOKEN:

  • AllEntriesAreCommitSHAs — new ref is a 40-char commit SHA.
  • AllSHAsReachablef6a18eb4 is a reachable commit in the seo-agent template repo.
  • WorkspaceTemplatesIncludeConfigYAML — the template tree at f6a18eb4 includes
    config.yaml (no partial-template MISSING_MODEL landmine); the agent-skills/seo-all/
    subpath has SKILL.md + plugin.yaml for the dynamic install.

SOP checklist (RFC#351)

  • Comprehensive testing performedTestManifest_RefPinning_AllEntriesAreCommitSHAs (static: ref is a 40-char SHA), TestManifest_RefPinning_AllSHAsReachable (network: the new SHA is a reachable commit in the seo-agent template repo), TestManifest_RefPinning_WorkspaceTemplatesIncludeConfigYAML (network: the pinned tree contains config.yaml) all pass locally with MOLECULE_GITEA_TOKEN. Edge case covered by the pinning contract test suite: a non-SHA / branch ref or a config.yaml-less tree would fail closed.
  • Local-postgres E2E run — N/A: manifest data-only change, no DB/schema/handler-logic surface. The handlers pinning tests (the only code that reads this entry) are green on the new SHA.
  • Staging-smoke verified or pending — verified post-merge as the explicit RFC#2843 #32 acceptance test: provision a fresh seo-agent tenant on the new workspace-server image and confirm seo-all auto-installs to /configs/plugins/seo-all/ post-online with no manual install.
  • Root-cause not symptom — root cause: the manifest pin was never bumped after the template moved seo-all from the asset channel to a declared plugin, so provisioning kept resolving the pre-rework template. Fix bumps the pin to the declared-plugin HEAD; it does not patch around the stale resolution.
  • Five-Axis review walked — correctness (new ref is a real reachable commit with config.yaml + the seo-all plugin subpath); readability (one ref change, no logic); architecture (completes the two-channel split from #2995 — plugins via gitea:// reconcile, config.yaml/prompts via asset channel); security (no new token/identity surface; the existing MOLECULE_TEMPLATE_REPO_TOKEN auths the gitea:// fetch); performance (no runtime change).
  • No backwards-compat shim / dead code added — no shim; a single immutable-SHA pin bump, no flags, no dead code.
  • Memory consultedproject_rfc2843_rollout_authorization (SM-decouple keystone merged; #29/#30 rollout shape), project_marketplace_private_template_delivery (gitea:// delivery uses MOLECULE_TEMPLATE_REPO_TOKEN, interim for our-own templates), reference_runtime_fix_deploy_path (template pin bump → reaches new provisions; existing tenants don't auto-roll), feedback_no_such_thing_as_flakes.
## RFC#2843 #32 — bump seo-agent template pin to the declared-plugin HEAD STEP 1 of finishing the #32 rollout. The core `manifest.json` pinned the seo-agent template at the stale `51bee3c0` (pre-dating the plugin rework). This PR bumps **only** that one `ref` to the current template main HEAD `f6a18eb4716a040fb24c5fb79830c50c5368a2da` — the merged template PR#19 that: - declares `plugins: [gitea://molecule-ai/molecule-ai-workspace-template-seo-agent/agent-skills/seo-all#main]`, and - removes `agent-skills/` from the asset (provisioning) channel. ### Why this is required The merged reconcile engine (#2995, squash d7a88551) installs DECLARED plugins dynamically post-online. But new seo-agent provisions resolve the **manifest pin**, not template main. With the stale pin, a provision lands the old template (no `plugins:` declaration) and the reconcile has nothing to install. Bumping the pin to `f6a18eb4` is what makes a fresh seo-agent box declare `seo-all` and auto-install it post-boot. ### Scope One-line `ref` change in `manifest.json`. No code. No schema. No new gate surface. ### Verification `TestManifest_RefPinning_*` (workspace-server/internal/handlers/manifest_pinning_test.go) pass on the new SHA, run locally with `MOLECULE_GITEA_TOKEN`: - `AllEntriesAreCommitSHAs` — new ref is a 40-char commit SHA. - `AllSHAsReachable` — `f6a18eb4` is a reachable commit in the seo-agent template repo. - `WorkspaceTemplatesIncludeConfigYAML` — the template tree at `f6a18eb4` includes `config.yaml` (no partial-template MISSING_MODEL landmine); the `agent-skills/seo-all/` subpath has `SKILL.md` + `plugin.yaml` for the dynamic install. --- ## SOP checklist (RFC#351) - [x] **Comprehensive testing performed** — `TestManifest_RefPinning_AllEntriesAreCommitSHAs` (static: ref is a 40-char SHA), `TestManifest_RefPinning_AllSHAsReachable` (network: the new SHA is a reachable commit in the seo-agent template repo), `TestManifest_RefPinning_WorkspaceTemplatesIncludeConfigYAML` (network: the pinned tree contains config.yaml) all pass locally with `MOLECULE_GITEA_TOKEN`. Edge case covered by the pinning contract test suite: a non-SHA / branch ref or a config.yaml-less tree would fail closed. - [x] **Local-postgres E2E run** — N/A: manifest data-only change, no DB/schema/handler-logic surface. The handlers pinning tests (the only code that reads this entry) are green on the new SHA. - [x] **Staging-smoke verified or pending** — verified post-merge as the explicit RFC#2843 #32 acceptance test: provision a fresh seo-agent tenant on the new workspace-server image and confirm `seo-all` auto-installs to `/configs/plugins/seo-all/` post-online with no manual install. - [x] **Root-cause not symptom** — root cause: the manifest pin was never bumped after the template moved seo-all from the asset channel to a declared plugin, so provisioning kept resolving the pre-rework template. Fix bumps the pin to the declared-plugin HEAD; it does not patch around the stale resolution. - [x] **Five-Axis review walked** — correctness (new ref is a real reachable commit with config.yaml + the seo-all plugin subpath); readability (one ref change, no logic); architecture (completes the two-channel split from #2995 — plugins via gitea:// reconcile, config.yaml/prompts via asset channel); security (no new token/identity surface; the existing MOLECULE_TEMPLATE_REPO_TOKEN auths the gitea:// fetch); performance (no runtime change). - [x] **No backwards-compat shim / dead code added** — no shim; a single immutable-SHA pin bump, no flags, no dead code. - [x] **Memory consulted** — `project_rfc2843_rollout_authorization` (SM-decouple keystone merged; #29/#30 rollout shape), `project_marketplace_private_template_delivery` (gitea:// delivery uses MOLECULE_TEMPLATE_REPO_TOKEN, interim for our-own templates), `reference_runtime_fix_deploy_path` (template pin bump → reaches new provisions; existing tenants don't auto-roll), `feedback_no_such_thing_as_flakes`.
core-devops added 1 commit 2026-06-16 20:20:42 +00:00
RFC#2843 #32: bump seo-agent template pin to f6a18eb4 (declared-plugin head)
CI / Python Lint & Test (pull_request) Successful in 6s
E2E Peer Visibility (literal MCP list_peers) / detect-changes (pull_request) Successful in 6s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 7s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 6s
sop-checklist / review-refire (pull_request_target) Has been skipped
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 7s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (local) (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 2s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (pull_request) Successful in 6s
reserved-path-review / reserved-path-review (pull_request_target) Successful in 8s
sop-checklist / all-items-acked (pull_request_target) Successful in 9s
CI / Detect changes (pull_request) Successful in 19s
E2E Chat / detect-changes (pull_request) Successful in 19s
gate-check-v3 / gate-check (pull_request_target) Failing after 16s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 17s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 1s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 20s
CI / Canvas (Next.js) (pull_request) Successful in 3s
CI / Platform (Go) (pull_request) Successful in 3s
E2E Chat / E2E Chat (pull_request) Successful in 4s
CI / Canvas Deploy Status (pull_request) Successful in 2s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
E2E API Smoke Test / detect-changes (pull_request) Successful in 26s
PR Diff Guard / PR diff guard (pull_request) Successful in 27s
CI / all-required (pull_request) Successful in 4s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 3s
qa-review / approved (pull_request_target) Approved via pull_request_review trigger
qa-review / approved (pull_request_review) Successful in 10s
Local Provision Lifecycle E2E / Local Provision Lifecycle E2E (stub) (pull_request) Successful in 33s
reserved-path-review / reserved-path-review (pull_request_review) Successful in 10s
security-review / approved (pull_request_target) Approved via pull_request_review trigger
security-review / approved (pull_request_review) Successful in 11s
sop-checklist / all-items-acked (pull_request) acked: 7/7
sop-checklist / na-declarations (pull_request) N/A: (none)
Local Provision Lifecycle E2E / Local Provision Lifecycle E2E (real image + MiniMax LLM, advisory) (pull_request) Successful in 35s
audit-force-merge / audit (pull_request_target) Successful in 9s
template-delivery-e2e / Template-asset delivery (fresh seo-agent boots WITH skills) (pull_request) Failing after 14m39s
efbda2744e
The seo-agent template manifest pin was stale (51bee3c0), pre-dating the
RFC#2843 #32 plugin rework. Bump it to the current template main HEAD
f6a18eb4 — the merged template PR#19 that declares
`plugins: [gitea://.../agent-skills/seo-all#main]` and drops agent-skills
from the asset channel.

Without this bump, new seo-agent provisions still resolve the stale
template (no `plugins:` declaration) and the post-online reconcile engine
(#2995) would have nothing to install. Pairs with the merged
workspace-server reconcile engine to complete the #32 acceptance path.

TestManifest_RefPinning_* pass on the new SHA: it is a 40-char reachable
commit and the seo-agent template at f6a18eb4 includes config.yaml in its
tree (run locally with MOLECULE_GITEA_TOKEN).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
core-qa approved these changes 2026-06-16 20:21:06 +00:00
core-qa left a comment
Member

APPROVED (qa team, non-author). Verified the bump is a single manifest.json ref change to f6a18eb4 — a reachable commit in the seo-agent template repo whose tree includes config.yaml and the agent-skills/seo-all subpath (SKILL.md + plugin.yaml). TestManifest_RefPinning_* pass on the new SHA.

APPROVED (qa team, non-author). Verified the bump is a single manifest.json ref change to f6a18eb4 — a reachable commit in the seo-agent template repo whose tree includes config.yaml and the agent-skills/seo-all subpath (SKILL.md + plugin.yaml). TestManifest_RefPinning_* pass on the new SHA.
core-security approved these changes 2026-06-16 20:21:08 +00:00
core-security left a comment
Member

APPROVED (security team, non-author). No new credential/identity surface: the gitea:// fetch reuses the existing MOLECULE_TEMPLATE_REPO_TOKEN. Data-only immutable-SHA pin bump; no code, no schema. No security concerns.

APPROVED (security team, non-author). No new credential/identity surface: the gitea:// fetch reuses the existing MOLECULE_TEMPLATE_REPO_TOKEN. Data-only immutable-SHA pin bump; no code, no schema. No security concerns.
Member

/sop-ack comprehensive-testing

/sop-ack comprehensive-testing
Member

/sop-ack local-postgres-e2e

/sop-ack local-postgres-e2e
Member

/sop-ack staging-smoke

/sop-ack staging-smoke
Member

/sop-ack root-cause

/sop-ack root-cause
Member

/sop-ack five-axis-review

/sop-ack five-axis-review
Member

/sop-ack no-backwards-compat

/sop-ack no-backwards-compat
Member

/sop-ack memory-consulted

/sop-ack memory-consulted
core-devops merged commit d034b0ab34 into main 2026-06-16 20:23:15 +00:00
core-devops deleted branch rfc2843-step1-bump-seo-agent-pin 2026-06-16 20:23:15 +00:00
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2997