Prereleases for testing on dev, and both hosts run the published images #1043
Closed
opened 2026-10-03 14:05:58 +00:00 by claude-bot
·
3 comments
No Branch/Tag specified
main
feat/1328-fill-it-in
feat/1328-fill-frontend
feat/1328-fill-backend
feat/9-foundry-push
fix/9-foundry-live
feat/9-foundry-push-frontend
renovate/celery-5.x
feat/5-foundry-connect
feat/9-foundry-push-backend
feat/9-foundry-push-module
feat/5-foundry-frontend
feat/5-foundry-backend
feat/5-foundry-module
release/v4.8.0-rc1
docs/d341-convert-draft
feat/958-update-to-version
feat/958-convert-sheet
feat/958-pathbuilder-import-frontend
fix/1360-heading-order
feat/958-pathbuilder-import-backend
feat/11-weekly-digest
feat/1341-auto-update
docs/d332-superseded
chore/1345-names-cleanup
feat/1342-mentioned-pages
feat/1328-recipes
fix/1346-pgdg-key
perf/1247-shared-recording-stream
chore/132-gitleaks-allowlist
release/v4.7.1
spike/foundry-module
release/v4.7.1-rc1
docs/decisions-d332-d337
fix/bot-certifi
chore/release-4.7.0
chore/release-4.7.0-rc4
chore/deps-4.7.0
chore/release-4.7.0-rc3
fix/1280-quote-must-say-it
fix/1257-names-row-squeeze
chore/release-4.7.0-rc2
fix/1245-pg-upgrade-count
chore/release-4.7.0-rc1
feat/1257-names-in-prep
feat/1257-be
feat/1257-fe
feat/1257-rating-fixes
design/1328-fill-it-in
feat/1257-name-splits
fix/1326-redis-503
feat/1280-fact-suggestions
feat/1280-be
feat/1280-fe
design/1280-fact-suggestions
feat/1279-infobox
feat/1279-be
feat/1279-fe
feat/1321-shelf-copies
design/1279-infobox
feat/1243-table-find
feat/1257-who-rated
feat/1243-prep-drawer
feat/1243-sheet-pickers
design/1243-browse-in-place
feat/1315-hotwords-default
feat/1242-system-filters
feat/1257-more-name-styles
feat/506-leg3-hotwords
design/1242-system-filters
fix/1302-packs-polish
feat/1241-rules-library
design/1241-rules-library
feat/1245-postgres-18
integ/4.6.2
fix/1263-map-ui-2
fix/1263-map-server
fix/1263-map-ui-1
fix/1261-editor-link-menu
fix/1229-axe-4.14-name-mismatch
renovate/axllent-mailpit-1.x
renovate/eslint-monorepo
renovate/authlib-1.x
chore/release-4.6.0
chore/release-4.6.0-rc2
fix/460-rc2-screens
fix/460-rc2-server
fix/release-prerelease-exit
chore/release-4.6.0-rc1
feat/125-campaign-templates
feat/126-calendar
feat/1181-pictures-and-files
feat/1190-event-people
integ/4.6.0
feat/1191-line-of-the-night
feat/1200-starter-packs
chore/bot-multidict-and-playwright-group
fix/1202-this-week-answered-count
fix/122-124-leftovers
fix/1178-get-routes-that-write
fix/1203-journeys-check-names
design/125-campaign-templates
feat/126-calendar-engine
design/126-in-world-calendar
fix/1189-cited-stamp-in-range
fix/1189-v4-looser-check
fix/1189-richer-beats
fix/1113-export-bind-lists
fix/1154-release-notes-by-file
chore/release-4.5.0
chore/release-4.5.0-rc12
fix/1135-wiki-markup-as-text
fix/demo-usage-cost-in-window
chore/release-4.5.0-rc11
fix/1121-sheet-consistency
fix/1121-sheet-5e-terms-and-card-hp
copy/1122-busiest-pages
fix/1121-relevant-choices
fix/1121-wiki-create-npc-save-sheet-links
fix/1029-menu-stays-on-screen
docs/prototype-transcript-bin-wording
fix/1023-editor-save-row-back-scroll
fix/1020-search-exact-first
fix/1020-table-prep
fix/1020-shell-wordmark-footer-bell
fix/1020-wiki-article-party
fix/872-admin-kept-until-phone-tables
feat/l13-milestone-level-waiting
fix/1000-1001-bell-older-setup-context
fix/999-pronouns-in-prompts
fix/l19-other-class-feats
fix/1010-transcript-window-ordinary-confirm
docs/d254-d269-decisions
fix/702-member-search
fix/680-transcript-bin
fix/993-unidentified-prompts
fix/841-redis-timeouts
fix/990-binned-not-exported
fix/830-export-prep-shelf
fix/deps-audit-2026-10-01
fix/877-title-reads
fix/798-audio-received-at
build/lane11-17-j7
build/lane11-16-levelup
build/lane11-14-seams
build/lane11-14-seed
build/lane11-15-start
build/lane11-13-old-block-out
fix/980-review-r3
build/lane11-12-block
build/lane11-8-packs
fix/demo-seed-canonical-names
build/lane11-11-hot-half
docs/l11-decisions
build/lane11-7-convert
build/lane11-10-editing
fix/npm-audit-brace-expansion
build/lane11-9-sheet-page
fix/bot-pyjwt
build/lane11-6-content
fix/lane11-rank-names
build/lane11-2b-language
build/lane11-4-js-evaluator
build/lane11-3-server
build/lane11-5a-pf2e
build/lane11-5b-5e
feat/design-admin
build/lane11-2-evaluator
build/lane11-1-sheet-pieces
build/lane11-0-drawing
fix/943-quest-objectives-fk
fix/prepsheet-shelf-flake
fix/945-leftovers
build/demo-gm-copy
fix/901-email-landings
build/lane10-8-journeys
build/demo-seed-lanes-8-10
fix/887-gm-own-confirmation
build/lane9-5-j1-admin
fix/918-audience-click
fix/useasync-overtaken
ci/939-critical-path
test/937-backend-suite-speed
chore/claude-orchestration
fix/924-xp-gm-only
fix/session-stale-poll
docs/decisions-d239-d242
fix/930-pypdf
build/lane8-journeys
build/925-quest-editor
fix/894-private-page-pictures
build/lane8-p4-drafts
build/lane8-p7-map
build/lane8-p6-handouts-rules
fix/wiki-fixture-names
build/lane10-d227-test-usage
fix/rsvp-horizon-test-tuesday
fix/media-volume-owner
build/lane8-p3-editor
fix/912-unidentified-rename
build/lane8-p5-party-quests
build/lane8-handout-takeback
build/lane10-pickers
build/lane8-p2-article
build/lane8-6-map
build/lane10-7b-email-pages
build/lane8-5-handouts
build/lane10-7a-test-the-bot-pages
build/lane8-p1-pages
build/lane8-4-quests
build/lane8-2b-feeds
build/lane8-3-parties
build/lane8-2a-links
build/lane10-5-commands
build/lane9-6-seed
build/lane10-4b-reactions
build/lane9-4d-pages
build/lane9-4c-pages
build/lane10-4a-posts
build/lane10-3-email
fix/891-web-fonts
build/lane9-4b-pages
build/lane10-6-test-the-bot
build/lane10-2-notify-out
build/lane8-1-wiki-text
build/lane9-4a-frame
design/lane10-drawings
fix/j6-budget
fix/j5-phone-flake
fix/869-test-leaks
fix/843-record-start-followups
build/lane7-all
build/lane6-all
build/lane9-b2-server
chore/changelog-fragments
docs/decisions-d218
build/lane9-a-owner-overview
fix/rule-card-level-label
fix/834-retention-semantics
fix/o3c-record-without-announcement
docs/decisions-d179
docs/decisions-d131-d170
fix/851-commit-before-response
build/lane6-j3-seed
build/lane9-b1-d67-identity
fix/841-blocking-loop
build/lane9-c-backups-audit
fix/vote-race-and-start-commit
fix/recording-announcement
fix/proposal-read-leak
fix/last-admin-guard
build/lane6-p4c-planning
build/lane6-p4b-margin
build/lane6-p4a-sheet
build/lane5-j4-seed
build/lane6-base
build/lane7-pages-talk
build/lane5-pages
build/lane7-pages-safety
build/lane7-p3-safety
build/lane7-p2-notify
build/lane6-p3-planning
build/lane6-p2-history
build/lane6-p1b-items
build/lane7-p1-threads
build/lane5-p6-faces
build/lane6-p1a-sheet
build/lane5-p5-find
build/lane5-p4a-board
build/lane5-p4b-scenes
build/lane5-p3-live
build/lane5-base
build/lane5-p2-cards
docs/lane5-decisions
build/review-r2-wide
fix/review-r1
build/lane5-p1-scenes
build/demo-seed
build/lane4-journeys-j5
build/lane4-page-review-b
build/lane4-page-review-a
build/lane4-page-read
build/lane4-journeys
build/lane4-page-sess2
build/lane4-page-sess1
build/lane4-notes
build/lane4-discord-on-approval
build/lane4-scheduling
build/lane4-versions
build/760-session-number
build/lane4-decisions
build/797-erase-no-regenerate
build/test-race-audit
build/lane3-completions
build/794-dark-only
build/796-titles-scroll
build/791-retention-anchor
build/a11y-sweep
build/shell-followups
build/retention-preview
build/753-backup-readback
docs/d91-d93
build/lane3-j1
build/ci-harness-paths-selftest
fix/useauth-test-race
build/ci-harness-paths
build/777-ai-settings-read
build/lane3-settings-c
build/lane3-settings-b
build/lane3-j6
build/lane3-sessionform
build/lane3-settings-a
build/lane3-members
build/lane3-thisweek
build/lane3-story
chore/87-align-python-3.12
v4.8.0-rc1
v4.7.1
v4.7.1-rc1
v4.7.0
v4.7.0-rc4
v4.7.0-rc3
v4.7.0-rc2
v4.7.0-rc1
v4.6.2
v4.6.2-rc4
v4.6.2-rc3
v4.6.2-rc2
v4.6.2-rc1
v4.6.1
v4.6.1-rc1
v4.6.0
v4.6.0-rc2
v4.6.0-rc1
v4.5.3
v4.5.3-rc1
v4.5.2
v4.5.2-rc1
v4.5.1
v4.5.1-rc2
v4.5.1-rc1
v4.5.0
v4.5.0-rc12
v4.5.0-rc11
v4.5.0-rc10
v4.5.0-rc9
v4.5.0-rc8
v4.5.0-rc7
v4.5.0-rc6
v4.5.0-rc5
v4.5.0-rc4
v4.5.0-rc3
v4.5.0-rc2
v4.5.0-rc1
v4.4.1
v4.4.0
v4.3.0
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.2
v4.1.1
v4.1.0
v4.0.1
v4.0.0
v3.11.4
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.10.0
v3.9.1
v3.9.0
v3.8.0
v3.7.0
v3.6.1
v3.6.0
v3.5.0
v3.4.1
v3.4.0
v3.3.0
v3.2.0
v3.1.0
v3.0.0
v2.1.0
v2.0.0
v1.1.0
v1.0.0
v0.12.0
v0.11.0
v0.10.0
v0.9.1
v0.3.3
v0.9.0
v0.8.0
v0.3.2
v0.3.1
v0.3.0
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
backend
Issue related to the backend
bot
Issue related to the bot
bug
Something is not working
duplicate
This issue or pull request already exists
enhancement
New feature
frontend
Issue related to the frontend
help wanted
Need some help
invalid
Something is wrong
question
More information is needed
recording
Issue related to the recording system
security
Security hardening / vulnerability work
wontfix
This won't be fixed
No labels
backend
bot
bug
duplicate
enhancement
frontend
help wanted
invalid
question
recording
security
wontfix
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Quest-Board#1043
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Owner's decision (2026-10-03, answering #1042 items 2 and 3): cut prereleases (
vX.Y.Z-rcN) for testing on the dev server, and switch production to the published images instead of building from source.What already exists
release.ymlbuilds and pushesquest-board-{backend,frontend,bot}:<version>for everyv*.*.*tag, adds:latestonly for a final, and marks a tag containing-as a prerelease. Images exist for every release through 4.4.1.a6abef1, the same commit the 4.4.1 images were built from.mainfrom source (currently at8192839d).Gaps
release.ymllooks for a## [X.Y.Z-rcN]heading inCHANGELOG.md, and an rc should not gather the fragments that belong to the final.docs/OPERATIONS.mdonly shows an example pinned to 3.4.0.Approach
docker-compose.images.yml, committed. It gives the six app servicesimage: git.rhoving.com/rbrooks/quest-board-<c>:<version>andbuild: !reset null, so an image host cannot build from source. The release commit sets the version in this file alongsideAPP_VERSION, andcheck_version_sync.pyenforces that they agree..envsetsCOMPOSE_FILE=docker-compose.yml:docker-compose.images.yml. A deploy isgit fetch --tags && git checkout v<version> && docker compose pull && docker compose up -d; rollback checks out the previous tag (only across releases without a migration).changelog.py renderprints the pending fragments without consuming them, andrelease.ymluses it for a tag containing-. An rc bumps the version inversion.py, the bot'sBOT_EXPECTED_APP_VERSIONand the overlay; the fragments stay put until the final.docs/OPERATIONS.mdgains "Cutting a prerelease" and rewrites "Running from Published Images" and "Updating Production". The project profile recordsDeploy.model: imageand the prod image deploy, and the/qb-deploy-devaddendum is updated to match.Host cutovers (separate, each confirmed by the owner)
.envedit recreates every service, db and redis included, once.v4.5.0-rc1or whatever the owner names it), not on 4.4.1.main.Reopened. PR #1044 (the repo side) merged on 2026-10-03 and closed this automatically, but the host cutovers are part of this issue and are still to do.
The owner approved both on 2026-10-03:
v4.5.0-rc1. The release PR is #1048. Once it merges: tag, wait for the images, then on docker-test back up.env, addCOMPOSE_FILE,git checkout v4.5.0-rc1, pull and up, verify, and re-run the demo seed with--reset(lane 10's note: the next dev deploy needs it).v4.4.1tag predates the overlay, so the file goes in as an untracked copy, which must be deleted before the nextgit checkout vX. Then back up.env,make backup-now, addCOMPOSE_FILE, pull and up.Each step is reported here as it happens.
Dev is on
v4.5.0-rc1, from the published images (2026-10-03 ~15:35 UTC)The release. PR #1048 merged, the tag was pushed, and the release workflow passed. The release is marked as a prerelease, and its notes are rendered from the fragments ("Prerelease of 4.5.0 for testing on the dev server; not for production.", then the sections). All three
:4.5.0-rc1images are published.On docker-test, in
~/projects/Quest-Board:.envbacked up to.env.bak-20261003T153040Z, and the database toquestboard_manual_20261003T153042Z.dump, both before any change.git checkout v4.5.0-rc1, andCOMPOSE_FILE=docker-compose.yml:docker-compose.images.ymlappended to.env. Thendocker compose config --imagesresolves only the three:4.5.0-rc1images, plus postgres and redis.docker compose pull && docker compose up -d. Themigrateservice applied the two new migrations (b680d1e2f3a4#680,c1007a1b2c3d#1007).:4.5.0-rc1imagecurl http://localhost:18081/api/metareturns{"version":"4.5.0-rc1"}/readyreturns okdocker compose run --rm migrate python -m app.cli db_preflightfrom the new image printed revisionc1007a1b2c3d, 26 users and 10 campaigns.--reset, as lane 10 asked for the next dev deploy: 106 wiki articles, 21 session scripts, 152 media files, 14 tripwires armed with 0 attempts. A dry run first matched.For the owner's review: lanes 5 to 11, the R4 fixes, the search results page (#1033) and the prototype drawings (#1047) are all live on dev now.
Next: prod onto the 4.4.1 images.
Prod is on the published 4.4.1 images (2026-10-03 ~15:38 UTC)
It runs what it ran before, the same release, from images. On
docker-host, in/home/ryan/Quest-Board, at thev4.4.1tag:docker-compose.images.ymlis written as an untracked copy of the 4.4.1 overlay (from2064c2b2, the #1044 merge), because thev4.4.1tag predates the file.config --imagesresolved only the three:4.4.1images, and they were pulled ahead of the switch with the running services untouched..envto.env.bak-20261003T153754Z, and the database toquestboard_manual_20261003T153756Z.dump.COMPOSE_FILE=docker-compose.yml:docker-compose.images.ymlappended to.env, thendocker compose up -d. Every service was recreated (db and redis included, as expected for a.envedit) and was down for about a minute.git.rhoving.com/rbrooks/quest-board-*:4.4.1APP_VERSIONis 4.4.1 and/readyreturns okmigratehad nothing to apply/api/metareturns 404 on prod: it was added after 4.4.1, so prod's version check is theexecform until the next release.Notes for the next prod update:
docker-compose.images.ymlbeforegit checkout vX.Y.Z. The tag carries its own copy, and git will refuse to check out over an untracked file. Thendocker compose pull && docker compose up -dasdocs/OPERATIONS.mdsays.cp .env.bak-20261003T153754Z .env && docker compose up -d. The old source-builtquest-board-*:latestimages are still on the host, and compose uses them without building.postgres:16-alpineandredis:7-alpineto their current digests, within the same major versions.Both cutovers are done, so this is closed. #1045 (
make migrate-safe) is the follow-up.