Repository navigation
chore: retire stale release scaffolding and deployment templates - #253
Merged
Merged
Conversation
The backend reads neither GATEWAY_IMAGE_STUDIO_ENABLED nor GATEWAY_ACCOUNT_TRAFFIC_TELEMETRY_DISABLED (gateway.account_traffic_telemetry_disabled), and no GATEWAY_CINDY_* variable. Remove them from .env.example, the four Compose files, config.example.yaml and deploy/README.md, and put the Gateway block order and the force_http comment back to upstream v0.2.13. deploy/tests/docker-compose-gateway-env-test.sh is upstream's file again: its Image Studio special case leaves with the variable. Differences from upstream that remain, each read by live code: GATEWAY_OPENAI_CODEX_REQUEST_ZSTD, GATEWAY_OPENAI_REQUEST_INTEGRITY_MODE, SECURITY_ACCOUNT_API_KEY_REVEAL_PASSWORD and the MiSans font origins in the example CSP. The /app/skill-registry mounts with their host path variable are left for the change that removes the directory from the image, and the README section on the production workflow's rollout tuple for the change that removes those inputs from the workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… tooling
release_preflight.py: --kind accepted one value and local_assets always
returned nothing, so the per-asset comparison never ran. Both go, with the
root argument and ROOT that only they used. The four stages check what they
checked before; a draft that carries assets now fails with
draft_assets_unexpected instead of draft_assets_incomplete.
The command line is now
release_preflight.py --stage <before-build|before-push|before-create|before-publish> \
--tag <tag> --source-sha <sha> [--image-digest <digest>]
and the four calls in downstream-release.yml use it.
downstream-release.yml: drop the pnpm, Node and Go setup steps. The image is
built inside Docker and no later step runs those tools. Image labels are
unchanged.
test_release_preflight.py: the assertions naming plugin-era artifacts go; the
provenance and Image:/Source: assertions they shared a test with move into the
remaining workflow contract. A new contract passes every preflight invocation
in the workflow through the script's argument parser, which a pull request
could not exercise before.
deploy/plugin-bundle/README.md described the bundle's build input.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stream plugins/ and backend/pkg/extensionapi/ were first-party plugin directories; upstream has neither and ignores a top-level plugins/. Upstream's own plugin framework stays critical through backend/pkg/pluginapi/ and service/plugin_*. The test names files that exist: plugin_manager.go replaces a first-party file deleted in September, and the two samples under the removed directories go. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It deleted the 0.1.172-codexrip.3 to .9 package versions on 2026-08-11. It requires each of those versions to exist before it deletes anything, so a second run can only fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DOWNSTREAM.md: the baseline line points at .downstream/upstream-base and the v0.2.13 review instead of naming v0.2.8; the sentence about public model management goes; "CPA stays stopped" goes, the CPA service having been removed from the server. .gitignore: remove the two exceptions for the promptskills seed scripts, a directory that no longer exists. .gitattributes: the LF rules stay. Their comment now says what they are for, and *.ps1 goes: the only PowerShell files this fork ever tracked belonged to the remote skill registry and the prompt bundle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Root Dockerfile, backend builder stage, three lines back to upstream v0.2.13. bash is no longer installed: it was added for the plugin bundle script, which ran in a stage built on this one, and nothing here runs it (the one script the stage calls, backend/scripts/resolve-version.sh, is /bin/sh). GOOS and GOARCH come straight from TARGETOS and TARGETARCH again, not from two shell variables the plugin builds shared. The build comment is upstream's; the one it replaces dated from folding the plugins into the binary. What the built image runs does not change: the release and candidate builds both go through buildx with platforms linux/amd64, which sets TARGETARCH=amd64, the value the removed default supplied, and bash was only ever in the builder stage, which is not part of the image. downstream-verify.yml: the candidate image is built as VERSION=0.0.0-candidate again. The step that derived <VERSION>-codexrip.candidate existed so that the image build could verify the bundled plugins against that host version; the Dockerfile verifies no bundle now, and the candidate is only uploaded as a three-day artifact. Release images take their version from the tag as before. Differences from upstream's Dockerfile that remain: the vite build without type checking (the release reuses the pull request's validation), GOMEMLIMIT for the 768 MiB production limit, the THIRD_PARTY_NOTICES.md copy for the bundled fonts and icons, and /app/skill-registry, which production still mounts and a later change removes together with the mount. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ir CI step The "Historical Cindy migration tests" step of Downstream backend selected tests from twelve files under backend/migrations. They assert the text of, or replay, migrations of the retired Cindy platform: the one-time account rewrites 207 to 209, the balance marker updates 210, 211 and 213, the platform projection of 229, 234 and 235, and the managed channel of 236. Migration 260 has since dropped the balance marker column, the projection table and functions, and the managed channel's triggers and functions. The step and the twelve files go; every migration file stays as it is, and the runner still refuses an applied migration whose checksum changed. Two of the files held more than the step selected, and all of it leaves with them: the 229 and 236 text checks and one more replay of 235, which belong to the same retired platform, and TestMigration235ModelAllowlistPreservesLegacyJSONByRenamingOnly, which is not Cindy: it pinned upstream's 235_group_model_allowlist.sql to a column rename. That file is byte-identical to upstream v0.2.13 and upstream has no such test. The unit selector in "Image, model list, and turn-state tests" loses Migration235 and Migration236, which matched only tests in a deleted file. Each remaining branch still selects at least one test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No workflow, script or test reads any of these files. .downstream/coverage-v0.2.7.json and .md, refresh-coverage.mjs with its test, and implementation-v0.2.7.md: the ownership and review inventory of the seven-plugin release, taken against upstream v0.2.7. The generator can only rewrite that inventory; it assigns paths to the plugins of that release, and the inventory names more files that no longer exist than files that do. .superpowers/: the task ledger of the August work on Cindy groups and the capability catalogue. .downstream/cindy-catalog-refresh-20260905.json and -20260911.json: probe records for the fixed Cindy catalogue; Cindy accounts take their models from model sync. .downstream/upstream-0.2.0-overlap-review.md and upstream-review-v0.2.1, .5, .6, .8, .9, .10 and .11: integrations that are no longer the baseline. upstream-review-v0.2.13.md, the record of the current one, stays. .gitattributes loses *.mjs, which matched only the two deleted scripts. .downstream/upstream-risk.json still lists these paths. It is the risk classifier's output for the v0.2.13 integration, the gate recomputes it from the commits it records, and the next sync rewrites it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pped THIRD_PARTY_NOTICES.md opened with the notice and MIT licence for the gpt-5.6-instruct v45 prompt body, which was imported as an inactive template. The imported file left the tree with the prompt library rework (#206). Checked by hash and by line, without reading the text: the file at the import commit has the SHA-256 the notice records; no tracked file has that hash and none contains any of its lines, also not in SQL or JSON escaping. The image copies this file to /app/THIRD_PARTY_NOTICES.md. The Geist and Lucide notices, for fonts and icons the frontend still bundles, are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The three documents introduced current behaviour as "first-party domains" that "run inside the host" on "native" pages, next to a plugin framework that "remains". Those sentences go; what they introduced is stated directly. DOWNSTREAM.md: the section is "Settings and account operations" and says what the linked document holds, naming migrations 264 and 272, whose refusals send the reader here. "native host image" is "image". .downstream/native-domains.md (path unchanged, migration 272's text leads to it through DOWNSTREAM.md): titled "Settings, stored data and rollback". The opening paragraph, the note on what one past change did not do to bulk editing, and the Verification section go; DOWNSTREAM.md already states the HTTP 202 jobs, the key-reveal password, the reuse of PR validation and what a health check proves. "Native theme switch" is "Console theme switch", "The host is delivered" is "Each release is". Every migration contract, data boundary and rollback note is unchanged, as are the two paragraphs on the deploy-preserve and rollback-preserve operations, which describe the production workflow as it still is. .downstream/gpt6-models-and-prompts.md: the sentence about built-in prompts running in the host goes; the gateway, not "the host", restores the SSE content type; the closing section goes, which described a plugin iframe component that no longer exists and how past changes were verified. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove unused skill registry template mounts and the remaining historical-only migration tests. Restore the upstream runtime-resource shell contract, retain every SQL migration and active precondition fixture, and consolidate effective model and forwarding contracts in DOWNSTREAM.md.
HTExplicit
force-pushed
the
chore/deploy-cleanup-stage1
branch
from
October 7, 2026 07:59
424d0b7 to
49dd307
Compare
HTExplicit
added a commit
that referenced
this pull request
Oct 7, 2026
The deployment path still carried retired acceptance, rollback, resource-request and plugin-era controls, while console typography needed to be brought up to date with the current upstream style. This integrates the remaining authorized takeover work after the reasoning repair in #252. - Integrates #253, #254, #255 and #222 while retaining their commit ancestry. Removes stale release scaffolding and deployment template settings; preserves every existing migration SQL file. - Production Deploy accepts only `release_tag` and `confirmation=DEPLOY`, sends `deploy <immutable-image>`, and retains standard OCI provenance and fixed SSH/environment controls. Both automation callers and historical-run deduplication match it. - Migration 274 deletes only validated, soft-deleted release-acceptance keys and their usage/dedup rows, removes the two acceptance columns, and leaves ordinary keys and diagnostic logs. The matching application no longer reads those columns. Older images cannot be deployed after 274; failures require a forward fix. - Uses upstream system fonts, sizes and readable semantic text colors without dropping table columns. Fixes the TLS empty-state color and whole-badge/word wrapping, and normalizes the audit helper's LF bytes without semantic changes. - Removes the image-side skill-registry directory after the host mount and retired runtime configuration were removed. Validation: reuse the component branches' directly affected tests and source-identical UI matrix; normal required checks run on this final integration tree. The only integration conflicts were the migration CI selector and retired documentation/notices; the resolved selector retains the new PostgreSQL migration fixture and live migration tests. All existing migration SQL is unchanged. Entry-point Bash syntax and diff checks pass. The simplified host tool has completed a successful unchanged-image `.12` redeploy, preserving environment/resources and other containers. Host config retirement also passed with a new complete backup retained. UI localhost fake-data validation sampled 7,728 normal text/input/placeholder elements across 36 after states, with no sample below 4.5:1; account tables fit at 1280/1440/1920 in both languages/themes. Before screenshots block external fonts and show their fallback stack. No real model call or live upstream ID-less-item acceptance test was performed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Retired plugin and Cindy deployment mechanisms still shape release setup, deployment templates and migration checks after their runtime objects were removed. This change removes that scaffolding and keeps the effective downstream behavior documented in one current contract.
Validation: compose security, gateway-environment and runtime-resource shell contracts passed; the runtime-resource script now matches upstream v0.2.13 exactly. Default migration tests, the narrowed unit selector and integration-tag go vet passed. Static checks confirm all historical SQL and preserved fixtures/helpers are unchanged. Existing unchanged release-preflight (12), upstream-risk (4), and upstream-automation (16) passing results are reused. Required PR checks remain enabled. No production call, deployment or PostgreSQL integration test was run for this change.
Before merge, confirm no active release or upstream promotion still needs the old main workflow. After this preflight CLI cleanup, an old tag must be supplemented with
gh workflow run downstream-release.yml --ref <that-tag> -f release_tag=<that-tag>so the workflow and tag's script have the same argument contract. The latest 100 Release runs have no active run; current v0.2.13-codexrip tags through .12 are published. The obsolete September 8 v0.2.3-codexrip.7 draft has no assets and is separate from current publication.Production Deploy, SSH entrypoint and runtime application behavior stay at their current stage; image-owned /app/skill-registry removal follows the authorized host/configuration cleanup.