R-459 CLOSED (MariaDB converts itself, proven by harness + live), golden 0.236.0 (R-467), the golden waiver (R-468)

Operator rulings 2026-09-13, both shipped the same day:
- MariaDB finishes its own conversion (catalog eec1228/bd32830/3525e35). Harness E3/E3b `proven`
  with engine_state_after "already upgraded to 12.3.3-MariaDB [exit=1]", the skip line gone, C3
  still `failed`; landed on demo-hp through the real 15-min cycle, nothing recreated, one deliberate
  restart logged "MariaDB upgrade not required" with the app serving. Evidence:
  documentation/audits/r459-close-2026-09-13/. The engine-major rule + gate keep every engine
  inside its major until Slice 4 (R-448) — removal tracked as R-469.
- Goldens on a cadence, not per release. golden_currency_gate.py reads a dated waiver
  (documentation/tests/golden-waiver.yml, <= 14 days, row-bound): valid + BEHIND -> loud advisory,
  exit 0; expired -> red again naming the date; UNRECORDED (R-385) never covered; malformed -> 2,
  never 0. Tests cases 5-15 incl. the R-421 decoy; red-proof old-vs-new on the real behind tree.
  R-242's vouch half stays open. Cadence in RUNBOOK-manual-build.md §4.2 + the checklist.
- Golden 0.236.0 baked, round-tripped, vouched, floor raised 0.232.0 -> 0.236.0
  (documentation/tests/golden-0.236.0-2026-09-13/) — the last per-release bake; the waiver was
  issued AFTER it landed. No --no-verify anywhere in this session.

Rows: R-459 CLOSED, R-467 CLOSED, R-242 narrowed; R-468/R-469/R-470/R-471 opened. 09 §3 gains
decisions 5 and 6; STATUS items 11 and 12 closed; CONTEXT records the cadence ruling.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-13 10:14:37 +02:00
parent 4b2e5608c2
commit ae59c31a84
62 changed files with 2607 additions and 220 deletions
@@ -125,6 +125,35 @@ These are rulings, not proposals. Anything specced against a different assumptio
**It does NOT make the Update button safer.** That is slice 4 (R-448), and it is where the backup
precondition goes. Slice 3 only stops the other twelve paths from doing the update's job.
### 2026-09-13 — the database engine finishes its own conversion, and the upgrade test goes wide
5. **DBs should be updated when the app moves, with proper precautions, tests and backoff plans**
— the operator's own words, ruling on `SPIKE-r459-mariadb-upgrade-2026-09-06.md`. SHIPPED in the
catalog the same day: every `mariadb:` sidecar (`bookstack-db`, `kimai-db`, `nextcloud-db`,
`romm-db`) carries `MARIADB_AUTO_UPGRADE=1`; `MARIADB_DISABLE_UPGRADE_BACKUP` stays unset. **Not an
image change, so `catalog_since` does not move.** The three precautions, because they are the real
content of the ruling:
1. **Proven before it ships** — `upgrade-test.py` re-ran E3 and E3b on the changed template and the
engine-state field shows the conversion RAN (`mariadb_upgrade_info` reads the new version, the
engine's own check says nothing further is needed, the entrypoint no longer prints
`skipped due to $MARIADB_AUTO_UPGRADE`), with the seeded data reading back after. C3 still
returns `failed`. Evidence: `audits/r459-close-2026-09-13/`.
2. **Watched as it lands** — the change travelled the real 15-minute cycle to demo-hp: the live
compose gained the setting, the sync recreated nothing, and one deliberate restart logged
`MariaDB upgrade not required` with the app serving (same evidence directory).
3. **A rule until Slice 4 is built** — the Update button still takes no backup, so **no template
may move a database-engine image across a major version until R-448 ships.** Catalog
`CLAUDE.md` states it; `scripts/check-engine-major.py` enforces it in the pre-push hook (the
CI half cannot, R-452); its removal is tracked as **R-469** so it is a deliberate act.
The setting is inert until an engine major moves, and precaution 3 keeps it that way.
6. **The upgrade test goes as wide as possible, through the nightly unattended sessions** — the
ruling on `STATUS.md` item 11. Not "the ~25 database apps first": all of them, as the nightly
rotation reaches them, one fixture per app through the app's own interface. **Browser-only apps
become reachable when CC runs on the operator's Windows workstation with Chrome** — the
`claude-in-chrome` route that DooPlex does not have — so an app recorded `inconclusive` for want
of a headless seed route (bookstack's file half, R-460) is deferred to that venue, not faked.
---
## 4. The vocabulary ruling — "rollback" is struck
@@ -314,6 +343,10 @@ app-half edge cannot produce and which no amount of readability would have surfa
restarts, no degradation, and the engine says `Check required!` every time, forever). Converting
properly **succeeds**, costs **7 s**, takes its own system-database backup, and **does not** cost the
ability to abort. **The trade that was expected here does not exist.**
- **2026-09-13 — the setting is in the catalog.** All four `mariadb:` sidecars carry
`MARIADB_AUTO_UPGRADE=1` (operator ruling, §3 decision 5), and `upgrade-test.py`'s engine-state field
now shows the conversion RUNNING on the bookstack edges. **And a gate holds the engines inside their
major until Slice 4:** `app-catalog-felhom.eu/scripts/check-engine-major.py` (R-469).
**Two rules for anything this arc builds around a database engine:**
@@ -428,10 +461,12 @@ Version strings stay in the logs, the API and the hub.
6. **The Update button is still unguarded.** It takes no backup, has no rollback, and can still
attempt a multi-major jump the app will refuse (R-40). **Slice 3 did not change that and must not
be read as having done so** — the precondition is slice 4 (R-448).
7. **An engine major can be applied without its datadir upgrade, and nothing notices.** Measured
2026-09-06: the catalog's own bookstack transition starts MariaDB 12.3 on an 11.6 datadir, and the
image logs that the required upgrade was **skipped** because the template sets no
`MARIADB_AUTO_UPGRADE`. The app serves. Whether that ever breaks is **not** established. **R-459.**
7. ~~**An engine major can be applied without its datadir upgrade, and nothing notices.**~~ **CLOSED
2026-09-13 for MariaDB (R-459):** every `mariadb:` sidecar carries `MARIADB_AUTO_UPGRADE=1`, and the
harness shows the conversion running on the E3/E3b edges (§3 decision 5). **What stays true:** the
PostgreSQL half (R-463) has no equivalent — the image performs no `pg_upgrade` — and the
engine-major rule (§3 precaution 3, R-469) is what keeps both engines inside their major until
Slice 4 gives the Update button a backup.
8. **Only three of 53 apps have ever had an upgrade measured**, and one of them (bookstack) can only
be half-proven headlessly (**R-460**). The widening is **R-462**, costed with real numbers.
9. **The hub does not record image tags at all.** Its report's container payload carries name, state,
@@ -0,0 +1,16 @@
ok FACT: kimai-db mariadb:11.6 -> 12.3 (cross-major) rc=1 (expected 1)
engine-major gate — range HEAD~1..HEAD: 1 compose file(s) changed, 1 engine pin(s) compared
ENGINE-MAJOR GATE FAILED: templates/kimai/docker-compose.yml service kimai-db moves mariadb 11 -> 12 (mariadb:11.6 -> mariadb:12.3).
RULE (app-catalog CLAUDE.md, operator ruling 2026-09-13): until the Update button takes a VERIFIED BACKUP as its precondition (Slice 4, felhom.eu OPEN-ITEMS.md R-448), no template may move a database-engine image across a MAJOR version.
WHY: MariaDB sidecars now carry MARIADB_AUTO_UPGRADE=1 and WILL convert the customer's datadir on the next Update; PostgreSQL's image refuses to start on an older major's datadir (R-463). Either way this is a customer-data event with no backup in front of it.
EXPIRY: this rule is removed DELIBERATELY when R-448 ships — the removal is its own register row, not a silent edit. Until then, keep the engine within its major.
ok FACT: docmost-postgres postgres:16-alpine -> 17-alpine rc=1 (expected 1)
ok FACT: kimai-db mariadb:11.6 -> mariadb:lts (major unreadable) rc=2 (expected 2)
ok GENUINE: kimai-db mariadb:11.6 -> 11.8 (within major) rc=0 (expected 0)
ok DECOY: major moves only in a comment + serverVersion env rc=0 (expected 0)
ok DECOY: the APP image crosses a major (kimai 2.57 -> 3.0) rc=0 (expected 0)
ok DECOY: 'mariadb:12.3' lands in README.md, not a template rc=0 (expected 0)
catalog gate decoys OK — 7 case(s), every label judged on its fact (R-421)
@@ -0,0 +1,8 @@
newest released controller : 0.236.0 (## v0.236.0 — "delete my data too" deletes the data, or says that it could not (2026-09-13)
newest golden baked : 0.232.0 (documentation/tests/golden-0.232.0-2026-09-01 [sha 5f8a53ed5b19…])
GOLDEN CURRENCY GATE FAILED: controller v0.236.0 is released and NO golden carries it (newest bake is 0.232.0; 4 release(s) behind).
A machine installed right now would receive v0.232.0 — the release is written, tested and pushed, and NOT delivered.
Fix: bake a golden per documentation/runbooks/RUNBOOK-manual-build.md §4.1, then vouch it (a THREE-field change: golden_version + agent_version + min_agent).
If the cadence ruling covers this release, issue a DATED waiver at documentation/tests/golden-waiver.yml (RUNBOOK-manual-build.md §4.2) — never a bypass.
rc=1
@@ -0,0 +1,12 @@
=== NEW gate (scripts/golden_currency_gate.py) ===
newest released controller : 9.9.9 (## v9.9.9 — synthetic)
newest golden baked : 9.9.7 (documentation/tests/golden-9.9.7-2026-01-01 [sha 9287f7cef5f1…])
waiver : VALID until 2026-09-26 (13 day(s) left) — R-468, reason: pre-customer development; goldens weekly (operator ruling 2026-09-13)
GOLDEN CURRENCY GATE ADVISORY — WAIVED, NOT CLEAN: controller v9.9.9 is released and NO golden carries it (newest bake is 9.9.7; 2 release(s) behind: 9.9.8, 9.9.9).
A machine installed right now would receive v9.9.7 and reach v9.9.9 by self-update.
Waived by R-468 until 2026-09-26 (13 day(s) left): pre-customer development; goldens weekly (operator ruling 2026-09-13)
This is the operator's 2026-09-13 cadence ruling, not a pass: bake weekly and before ANY drill or fresh install (RUNBOOK-manual-build.md §4.2). When the waiver expires this gate is red again.
golden currency gate OK (WAIVED) — the newest released controller has NO golden; a valid waiver covers it (NOTE: this checks the BAKE, not the vouch)
exit=0
@@ -0,0 +1,12 @@
=== NEW gate (scripts/golden_currency_gate.py) ===
newest released controller : 9.9.9 (## v9.9.9 — synthetic)
newest golden baked : 9.9.7 (documentation/tests/golden-9.9.7-2026-01-01 [sha 9287f7cef5f1…])
waiver : EXPIRED on 2026-09-12 (R-468)
GOLDEN CURRENCY GATE FAILED: controller v9.9.9 is released and NO golden carries it (newest bake is 9.9.7; 2 release(s) behind).
The waiver at documentation/tests/golden-waiver.yml EXPIRED on 2026-09-12 (R-468). It ran out, as a dated waiver is meant to: bake a golden, or renew it with a new dated commit (at most 14 days).
A machine installed right now would receive v9.9.7 — the release is written, tested and pushed, and NOT delivered.
Fix: bake a golden per documentation/runbooks/RUNBOOK-manual-build.md §4.1, then vouch it (a THREE-field change: golden_version + agent_version + min_agent).
If the cadence ruling covers this release, issue a DATED waiver at documentation/tests/golden-waiver.yml (RUNBOOK-manual-build.md §4.2) — never a bypass.
exit=1
@@ -0,0 +1,12 @@
=== NEW gate (scripts/golden_currency_gate.py) ===
newest released controller : 9.9.9 (## v9.9.9 — synthetic)
newest golden baked : 9.9.8 (documentation/tests/golden-9.9.8-2026-01-01 [sha 9287f7cef5f1…])
waiver : VALID until 2026-09-26 (13 day(s) left) — R-468, reason: pre-customer development; goldens weekly (operator ruling 2026-09-13)
GOLDEN CURRENCY GATE FAILED: golden 9.9.8 is baked but UNRECORDED — the controller CHANGELOG has no '## v9.9.8' heading.
A waiver exists (R-468, until 2026-09-26) and DOES NOT COVER THIS: it covers a golden that is behind the record, never one that is unrecorded (R-385).
The newest heading is 9.9.9. A golden ahead of the record was built from a version nobody wrote down, so no one can read what the fleet is running.
Fix: give v9.9.8 its own '## v9.9.8 — <what changed>' heading in felhom-controller/CHANGELOG.md, above the entries it supersedes. If its fix is currently described inside another version's entry, MOVE that text — do not duplicate it, and do not delete the reasoning.
If this bake was a throwaway that must never be delivered, delete its documentation/tests/golden-<VER>-<DATE>/ directory — never leave it to read as shipped.
exit=1
@@ -0,0 +1,8 @@
=== NEW gate (scripts/golden_currency_gate.py) ===
newest released controller : 9.9.9 (## v9.9.9 — synthetic)
newest golden baked : 9.9.7 (documentation/tests/golden-9.9.7-2026-01-01 [sha 9287f7cef5f1…])
GOLDEN CURRENCY GATE INCONCLUSIVE: the waiver at ../../../../../tmp/tmpiiph1vyo/golden-waiver.yml is MALFORMED — `expires:` is 15 days after `issued:` — the hard limit is 14. A waiver that tries to be permanent is refused; renew it with a new dated commit instead.
A malformed waiver is neither cover nor absence. Fix it (four lines: issued, expires <= 14 days later, reason, register_row) or delete it.
exit=2
@@ -0,0 +1,8 @@
=== NEW gate (scripts/golden_currency_gate.py) ===
newest released controller : 9.9.9 (## v9.9.9 — synthetic)
newest golden baked : 9.9.7 (documentation/tests/golden-9.9.7-2026-01-01 [sha 9287f7cef5f1…])
GOLDEN CURRENCY GATE INCONCLUSIVE: the waiver at ../../../../../tmp/tmp04cax9by/golden-waiver.yml is MALFORMED — `issued:` is absent or not a YYYY-MM-DD date (got '')
A malformed waiver is neither cover nor absence. Fix it (four lines: issued, expires <= 14 days later, reason, register_row) or delete it.
exit=2
@@ -0,0 +1,23 @@
=== REAL TREE (0.236.0 released, newest golden 0.232.0 — BEHIND), valid waiver planted, R-468 exists ===
--- OLD gate (HEAD before this task) ---
newest released controller : 0.236.0 (## v0.236.0 — "delete my data too" deletes the data, or says that it could not (2026-09-13)
newest golden baked : 0.232.0 (documentation/tests/golden-0.232.0-2026-09-01 [sha 5f8a53ed5b19…])
GOLDEN CURRENCY GATE FAILED: controller v0.236.0 is released and NO golden carries it (newest bake is 0.232.0).
A machine installed right now would receive v0.232.0 — the release is written, tested and pushed, and NOT delivered.
Fix: bake a golden per documentation/runbooks/RUNBOOK-manual-build.md §4.1, then vouch it (a THREE-field change: golden_version + agent_version + min_agent).
If this release deliberately needs no golden, record a waiver in documentation/backlog/OPEN-ITEMS.md — never a bypass.
exit=1
--- NEW gate ---
newest released controller : 0.236.0 (## v0.236.0 — "delete my data too" deletes the data, or says that it could not (2026-09-13)
newest golden baked : 0.232.0 (documentation/tests/golden-0.232.0-2026-09-01 [sha 5f8a53ed5b19…])
waiver : VALID until 2026-09-27 (14 day(s) left) — R-468, reason: pre-customer development; goldens on a weekly cadence (operator ruling 2026-09-13)
GOLDEN CURRENCY GATE ADVISORY — WAIVED, NOT CLEAN: controller v0.236.0 is released and NO golden carries it (newest bake is 0.232.0; 4 release(s) behind: 0.233.0, 0.234.0, 0.235.0, 0.236.0).
A machine installed right now would receive v0.232.0 and reach v0.236.0 by self-update.
Waived by R-468 until 2026-09-27 (14 day(s) left): pre-customer development; goldens on a weekly cadence (operator ruling 2026-09-13)
This is the operator's 2026-09-13 cadence ruling, not a pass: bake weekly and before ANY drill or fresh install (RUNBOOK-manual-build.md §4.2). When the waiver expires this gate is red again.
golden currency gate OK (WAIVED) — the newest released controller has NO golden; a valid waiver covers it (NOTE: this checks the BAKE, not the vouch)
exit=0
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,5 @@
privatebin | [13-Sep-2026 09:52:04] NOTICE: fpm is running, pid 11
privatebin | [13-Sep-2026 09:52:04] NOTICE: ready to handle connections
privatebin | 127.0.0.1 - - [13/Sep/2026:09:52:09 +0200] "GET / HTTP/1.1" 200 15569 "-" "Wget" "-"
privatebin | 172.18.0.1 - - [13/Sep/2026:09:52:09 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [13/Sep/2026:09:52:09 +0200] "GET /?pasteid=95d75dc1cf5feaba HTTP/1.1" 200 311 "-" "curl/8.14.1" "-"
@@ -0,0 +1,14 @@
[07:42:55] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[07:43:01] FROM settled=True in 5.2s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:43:01] privatebin: seeded paste id=95d75dc1cf5feaba
[07:43:01] privatebin: readback http=200 marker_present=True
[07:43:01] C1 (seed reads back BEFORE): True
[07:43:01] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[07:43:02] TO up -d rc=0
[07:50:03] TO settled=False in 421.1s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[07:50:03] migration lines observed: 0
[07:52:03] app never answered on http://invalid:8080/ (last rc=6 code=000)
[07:52:03] RESULT (seed reads back AFTER): False
[07:52:03] C3: ABORT — putting the FROM images back
[07:52:09] privatebin: readback http=200 marker_present=True
[07:52:09] ABORT: app came back in 5.2s; data present=True
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,24 @@
{
"harness_version": 1,
"edge": "C3",
"app": "privatebin",
"note": "NEGATIVE control: the TO image starts and exits immediately",
"from": {
"privatebin": "privatebin/pdo:2.0.5"
},
"to": {
"privatebin": "alpine:3.20"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"duration_s": 421.1,
"measured_at": "2026-09-13T07:52:09Z",
"evidence": "evidence/C3",
"total_s": 553.9
}
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,67 @@
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack-db | 2026-09-13 09:53:49+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:53:49+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-13 09:53:49+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-13 09:53:49+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:53:50+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
bookstack-db | 2026-09-13 9:53:50 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid NqHiasVU3XvSSnAvQ8Ghzed+a14= as process 1
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-13 9:53:50 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-13 9:53:50 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack |
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: End of log at LSN=2253291
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v25.02.2-ls202
bookstack | Build-date: 2025-04-14T18:32:57+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | using keys found in /config/keys
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Nothing to migrate.
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: log sequence number 2253291; transaction id 2925
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-13 9:53:50 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-13 9:53:50 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-13 9:53:50 0 [Note] InnoDB: Buffer pool(s) load completed at 260913 9:53:50
bookstack-db | 2026-09-13 9:53:54 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-13 9:53:54 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-13 9:53:54 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-13 9:53:54 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack-db | 2026-09-13 9:53:56 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
@@ -0,0 +1,8 @@
{
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
}
@@ -0,0 +1,6 @@
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | INFO Running migrations.
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 11.76ms DONE
@@ -0,0 +1,15 @@
[07:52:10] E3: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:25.02.2', 'bookstack-db': 'mariadb:11.6'}
[07:52:56] FROM settled=True in 15.7s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:52:57] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-e4414904@gate.invalid" successfully created!
[07:52:58] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-db3feb - Email: spike
[07:52:58] C1 (seed reads back BEFORE): True
[07:52:58] E3: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[07:53:33] TO up -d rc=0
[07:53:43] TO settled=True in 10.5s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:53:43] engine state bookstack-db: 12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]
[07:53:43] migration lines observed: 6
[07:53:44] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-db3feb - Email: spike
[07:53:44] RESULT (seed reads back AFTER): True
[07:53:44] E3: ABORT — putting the FROM images back
[07:54:06] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-db3feb - Email: spike
[07:54:06] ABORT: app came back in 10.5s; data present=True
@@ -0,0 +1,171 @@
bookstack-db | 2026-09-13 09:53:17+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:53:17+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-13 09:53:17+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-13 09:53:17+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:53:17+02:00 [Note] [Entrypoint]: Starting temporary server
bookstack-db | 2026-09-13 09:53:17+02:00 [Note] [Entrypoint]: Waiting for server startup
bookstack-db | 2026-09-13 9:53:17 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid uYRfNEQQC8vM+0dejC8iUUzoFC4= as process 56
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-13 9:53:17 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
bookstack-db | create_uring failed: falling back to libaio
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Using Linux native AIO
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: End of log at LSN=1173728
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-13 9:53:17 0 [Note] InnoDB: log sequence number 1173728; transaction id 2278
bookstack-db | 2026-09-13 9:53:17 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-13 9:53:17 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-13 9:53:19 0 [Note] Replication not automatically started: --skip-slave-start was specified
bookstack-db | 2026-09-13 9:53:19 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
bookstack-db | 2026-09-13 09:53:19+02:00 [Note] [Entrypoint]: Temporary server started.
bookstack-db | 2026-09-13 09:53:19+02:00 [Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst
bookstack-db | 2026-09-13 09:53:20+02:00 [Note] [Entrypoint]: Backing up complete
bookstack-db | 2026-09-13 09:53:20+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade
bookstack-db | The --upgrade-system-tables option was used, user tables won't be touched.
bookstack-db | Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!
bookstack-db | Phase 1/8: Checking and upgrading mysql database
bookstack-db | Processing databases
bookstack-db | mysql
bookstack-db | mysql.column_stats OK
bookstack-db | mysql.columns_priv OK
bookstack-db | mysql.db OK
bookstack-db | mysql.event OK
bookstack-db | mysql.func OK
bookstack-db | mysql.global_priv OK
bookstack-db | mysql.gtid_slave_pos OK
bookstack-db | mysql.help_category OK
bookstack-db | mysql.help_keyword OK
bookstack-db | mysql.help_relation OK
bookstack-db | mysql.help_topic OK
bookstack-db | mysql.index_stats OK
bookstack-db | mysql.innodb_index_stats OK
bookstack-db | mysql.innodb_table_stats OK
bookstack-db | mysql.plugin OK
bookstack-db | mysql.proc OK
bookstack-db | mysql.procs_priv OK
bookstack-db | mysql.proxies_priv OK
bookstack-db | mysql.roles_mapping OK
bookstack-db | mysql.servers OK
bookstack-db | mysql.table_stats OK
bookstack-db | mysql.tables_priv OK
bookstack-db | mysql.time_zone OK
bookstack-db | mysql.time_zone_leap_second OK
bookstack-db | mysql.time_zone_name OK
bookstack-db | mysql.time_zone_transition OK
bookstack-db | mysql.time_zone_transition_type OK
bookstack-db | mysql.transaction_registry OK
bookstack-db | Phase 2/8: Installing used storage engines... Skipped
bookstack-db | Phase 3/8: Running 'mysql_fix_privilege_tables'
bookstack-db | Phase 4/8: Fixing views... Skipped
bookstack-db | Phase 5/8: Fixing table and database names ... Skipped
bookstack-db | Phase 6/8: Checking and upgrading tables... Skipped
bookstack-db | Phase 7/8: uninstalling plugins
bookstack-db | Phase 8/8: Running 'FLUSH PRIVILEGES'
bookstack-db | OK
bookstack-db | 2026-09-13 09:53:26+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade
bookstack-db | 2026-09-13 09:53:26+02:00 [Note] [Entrypoint]: Stopping temporary server
bookstack-db | 2026-09-13 9:53:26 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: FTS optimize thread exiting.
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Starting shutdown...
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
bookstack-db | 2026-09-13 9:53:26 0 [Note] Shutdown completed; log sequence number 1173728; transaction id 2282
bookstack-db | 2026-09-13 9:53:26 0 [Note] mariadbd: Shutdown complete
bookstack-db | 2026-09-13 09:53:26+02:00 [Note] [Entrypoint]: Temporary server stopped
bookstack-db | 2026-09-13 9:53:26 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid uYRfNEQQC8vM+0dejC8iUUzoFC4= as process 1
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-13 9:53:26 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
bookstack-db | create_uring failed: falling back to libaio
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Using Linux native AIO
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: End of log at LSN=1173728
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: log sequence number 1173728; transaction id 2278
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-13 9:53:26 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-13 9:53:26 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-13 9:53:26 0 [Note] InnoDB: Buffer pool(s) load completed at 260913 9:53:26
bookstack-db | 2026-09-13 9:53:28 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
bookstack-db | 2026-09-13 9:53:28 0 [Note] Server socket created on IP: '::', port: '3306'.
bookstack-db | 2026-09-13 9:53:28 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-13 9:53:28 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack-db | 2026-09-13 9:53:34 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | using keys found in /config/keys
bookstack | **** The following active confs have different version dates than the samples that are shipped. ****
bookstack | **** This may be due to user customization or an update to the samples. ****
bookstack | **** You should compare the following files to the samples in the same folder and update them. ****
bookstack | **** Use the link at the top of the file to view the changelog. ****
bookstack | ┌────────────┬────────────┬────────────────────────────────────────────────────────────────────────┐
bookstack | │ old date │ new date │ path │
bookstack | ├────────────┼────────────┼────────────────────────────────────────────────────────────────────────┤
bookstack | │ 2024-07-16 │ 2026-06-27 │ /config/nginx/site-confs/default.conf │
bookstack | │ 2024-12-17 │ 2025-12-26 │ /config/nginx/nginx.conf │
bookstack | │ 2024-12-06 │ 2026-06-27 │ /config/nginx/ssl.conf │
bookstack | └────────────┴────────────┴────────────────────────────────────────────────────────────────────────┘
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 85.17ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 82.04ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 307.42ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 11.76ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 888.10ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 48.37ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 461.62ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 42.49ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 132.11ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 67.89ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 30.42ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 4.70ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,33 @@
{
"harness_version": 1,
"edge": "E3",
"app": "bookstack",
"note": "catalog transition 0b73e5e: app AND engine together",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack | [migrations] started",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"duration_s": 10.5,
"measured_at": "2026-09-13T07:54:06Z",
"evidence": "evidence/E3",
"total_s": 116.3
}
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,183 @@
bookstack-db | 2026-09-13 09:55:08+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:55:08+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-13 09:55:08+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-13 09:55:08+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:55:08+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
bookstack-db | 2026-09-13 9:55:08 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid osbkHDTZ9yfxr2UZyu83QV8Ztoc= as process 1
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-13 9:55:08 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-13 9:55:08 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: End of log at LSN=2025029
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: log sequence number 2025029; transaction id 2873
bookstack-db | 2026-09-13 9:55:08 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-13 9:55:08 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-13 9:55:08 0 [Note] InnoDB: Buffer pool(s) load completed at 260913 9:55:08
bookstack-db | 2026-09-13 9:55:09 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-13 9:55:09 0 [Note] Server socket created on IP: '::'.
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: executing...
bookstack | [migrations] 01-nginx-site-confs-default: succeeded
bookstack | [migrations] 02-default-location: executing...
bookstack | [migrations] 02-default-location: succeeded
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | Setting resolver to 127.0.0.11
bookstack | Setting worker_processes to 4
bookstack | generating self-signed keys in /config/keys, you can replace these with your own keys if required
bookstack | .+...+.+.....+.+...........+...+.+........+.+++++++++++++++++++++++++++++++++++++++*...+......+........+.+.....+.+..+...+.......+...+...............+.....+.........+......+....+......+.....+...+.+.....+...+.+......+...........+...+++++++++++++++++++++++++++++++++++++++*...............+.+...........+.........+.+...+...+........+....+.....+............+.........+.+......+....................+..........+...+..+....+.....+......+.......+...+...+......+.....+..........+......+..+.+......+.....+.+..............+...............+.+............+..+....+.........+.....+.+.....+......+...............+......+....+.....+......+...+....++++++
bookstack | ...+......+...+.....+......+.+...+...........+++++++++++++++++++++++++++++++++++++++*..+...+...+..+..........+.....+....+...............+...........+.........+.........+...................+...+.........+.....+......+...+......+.+..+..........+...............+.....+..........+.....+......+.+........+...+...+.+...+........+++++++++++++++++++++++++++++++++++++++*.......+......+........+.+.........+..+...+......+....+..+.+...+..+.........+......+....+...+......+..+...+.+......+........+....+...+..................+..+..........+........+....+...........+......+.+...+..+....+........+.+.....+.........+...+...+.+.....+...+.......+......+.........+........+.............+...+.....+......+......+.......+......+.........+.....+..........+...+...+............+..+.+......+...........+.......+....................+.+..+.........+......+...+..........+......+...+...+..+.+...........+.+........+....+..+.+.....+.........+.........+....+...+..+.......+.....+................+.....+.........+...+.+......+.....+.........+.+..................+......+..+..........+..+................+.........+...+...+..+...+......+...+.+......+.....+......+...+.+.....+...+............+....+..+...+....+.....+.+..+.......+......+.....+.......+........+.......+.........+.....+...+.+..+....+...+............+...........+.......+...+...+......+...+.....+...............+.+..+.............+.....+.+.....+...+.+.....+.+..............+.+...+...+...............+..+...+.........+..........++++++
bookstack | -----
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Preparing database.
bookstack |
bookstack | Creating migration table ...................................... 21.36ms DONE
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2014_10_12_000000_create_users_table ......................... 279.20ms DONE
bookstack | 2014_10_12_100000_create_password_resets_table ................ 60.91ms DONE
bookstack | 2015_07_12_114933_create_books_table .......................... 15.20ms DONE
bookstack | 2015_07_12_190027_create_pages_table .......................... 13.81ms DONE
bookstack-db | 2026-09-13 9:55:09 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-13 9:55:09 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack | 2015_07_13_172121_create_images_table ......................... 11.55ms DONE
bookstack | 2015_07_27_172342_create_chapters_table ....................... 17.39ms DONE
bookstack | 2015_08_08_200447_add_users_to_entities ...................... 146.31ms DONE
bookstack | 2015_08_09_093534_create_page_revisions_table ................. 14.90ms DONE
bookstack | 2015_08_16_142133_create_activities_table ..................... 11.43ms DONE
bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 311.76ms DONE
bookstack | 2015_08_30_125859_create_settings_table ....................... 17.18ms DONE
bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.08ms DONE
bookstack | 2015_09_04_165821_create_social_accounts_table ................ 61.62ms DONE
bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 79.45ms DONE
bookstack | 2015_11_21_145609_create_views_table .......................... 12.53ms DONE
bookstack | 2015_11_26_221857_add_entity_indexes ......................... 487.07ms DONE
bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE
bookstack | 2015_12_07_195238_add_image_upload_types ...................... 77.75ms DONE
bookstack | 2015_12_09_195748_add_user_avatars ............................ 19.71ms DONE
bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 47.16ms DONE
bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 83.43ms DONE
bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 159.05ms DONE
bookstack | 2016_02_28_084200_add_entity_access_controls ................. 259.17ms DONE
bookstack | 2016_03_09_203143_add_page_revision_types ..................... 42.78ms DONE
bookstack | 2016_03_13_082138_add_page_drafts ............................. 43.51ms DONE
bookstack | 2016_03_25_123157_add_markdown_support ........................ 38.64ms DONE
bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 43.26ms DONE
bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 300.32ms DONE
bookstack | 2016_05_06_185215_create_tags_table .......................... 113.02ms DONE
bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 17.06ms DONE
bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 76.98ms DONE
bookstack | 2016_10_09_142037_create_attachments_table .................... 67.83ms DONE
bookstack | 2017_01_21_163556_create_cache_table .......................... 42.59ms DONE
bookstack | 2017_01_21_163602_create_sessions_table ....................... 42.74ms DONE
bookstack | 2017_03_19_091553_create_search_index_table .................. 115.70ms DONE
bookstack | 2017_04_20_185112_add_revision_counts ......................... 62.91ms DONE
bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.07ms DONE
bookstack | 2017_08_01_130541_create_comments_table ....................... 86.66ms DONE
bookstack | 2017_08_29_102650_add_cover_image_display ..................... 16.83ms DONE
bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 48.22ms DONE
bookstack | 2018_08_04_115700_create_bookshelves_table ................... 384.06ms DONE
bookstack | 2019_07_07_112515_add_template_support ........................ 48.61ms DONE
bookstack | 2019_08_17_140214_add_user_invites_table ...................... 62.14ms DONE
bookstack | 2019_12_29_120917_add_api_auth ................................ 88.92ms DONE
bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 105.72ms DONE
bookstack | 2020_08_04_131052_remove_role_name_field ...................... 16.66ms DONE
bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.34ms DONE
bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 78.73ms DONE
bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.71ms DONE
bookstack | 2020_11_07_232321_simplify_activities_table .................. 141.84ms DONE
bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 200.24ms DONE
bookstack | 2021_01_30_225441_add_settings_type_column .................... 21.09ms DONE
bookstack | 2021_03_08_215138_add_user_slug ............................... 49.08ms DONE
bookstack | 2021_05_15_173110_create_favourites_table ..................... 66.80ms DONE
bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 62.79ms DONE
bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 17.85ms DONE
bookstack | 2021_08_28_161743_add_export_role_permission ................... 6.47ms DONE
bookstack | 2021_09_26_044614_add_activities_ip_column .................... 20.29ms DONE
bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 27.34ms DONE
bookstack | 2021_12_07_111343_create_webhooks_table ...................... 119.99ms DONE
bookstack | 2021_12_13_152024_create_jobs_table ........................... 38.72ms DONE
bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 37.85ms DONE
bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 70.20ms DONE
bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 27.06ms DONE
bookstack | 2022_04_25_140741_update_polymorphic_types .................... 16.24ms DONE
bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 123.83ms DONE
bookstack | 2022_08_17_092941_create_references_table .................... 112.81ms DONE
bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.71ms DONE
bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 90.68ms DONE
bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 93.44ms DONE
bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 142.21ms DONE
bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 1.09ms DONE
bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 36.15ms DONE
bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 23.45ms DONE
bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 1.97ms DONE
bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.06ms DONE
bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 6.28ms DONE
bookstack | 2023_07_31_104430_create_watches_table ........................ 89.12ms DONE
bookstack | 2023_08_21_174248_increase_cache_size ......................... 30.81ms DONE
bookstack | 2023_12_02_104541_add_default_template_to_books ............... 20.41ms DONE
bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 73.97ms DONE
bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 20.92ms DONE
bookstack | 2024_02_04_141358_add_views_updated_index ..................... 26.40ms DONE
bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 39.24ms DONE
bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.58ms DONE
bookstack | 2024_10_29_114420_add_import_role_permission ................... 5.16ms DONE
bookstack | 2024_11_02_160700_create_imports_table ........................ 36.28ms DONE
bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 10.40ms DONE
bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 11.84ms DONE
bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 20.57ms DONE
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 66.35ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 69.84ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 281.26ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data .......................... 9.73ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 794.71ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 49.70ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 457.39ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 40.71ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 112.42ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 67.72ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 22.39ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 4.69ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,8 @@
{
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
}
@@ -0,0 +1,6 @@
bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade
bookstack-db | The --upgrade-system-tables option was used, user tables won't be touched.
bookstack-db | Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!
bookstack-db | Phase 1/8: Checking and upgrading mysql database
bookstack-db | Phase 6/8: Checking and upgrading tables... Skipped
bookstack-db | 2026-09-13 09:54:59+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade
@@ -0,0 +1,15 @@
[07:54:10] E3b: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:11.6'}
[07:54:47] FROM settled=True in 20.9s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:54:48] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-87a54b85@gate.invalid" successfully created!
[07:54:49] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-7b31eb - Email: spike
[07:54:49] C1 (seed reads back BEFORE): True
[07:54:49] E3b: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[07:55:06] TO up -d rc=0
[07:55:06] TO settled=True in 0.2s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:55:06] engine state bookstack-db: 12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]
[07:55:06] migration lines observed: 6
[07:55:07] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-7b31eb - Email: spike
[07:55:07] RESULT (seed reads back AFTER): True
[07:55:07] E3b: ABORT — putting the FROM images back
[07:55:14] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-7b31eb - Email: spike
[07:55:14] ABORT: app came back in 0.2s; data present=True
@@ -0,0 +1,260 @@
bookstack-db | 2026-09-13 09:54:50+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:54:51+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-13 09:54:51+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-13 09:54:51+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-13 09:54:51+02:00 [Note] [Entrypoint]: Starting temporary server
bookstack-db | 2026-09-13 09:54:51+02:00 [Note] [Entrypoint]: Waiting for server startup
bookstack | [migrations] started
bookstack-db | 2026-09-13 9:54:51 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid bR6d3VLG8Cdw7s40Fw1l0qseMmo= as process 56
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-13 9:54:51 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
bookstack-db | create_uring failed: falling back to libaio
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Using Linux native AIO
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: End of log at LSN=2025029
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack | [migrations] 01-nginx-site-confs-default: executing...
bookstack | [migrations] 01-nginx-site-confs-default: succeeded
bookstack | [migrations] 02-default-location: executing...
bookstack | [migrations] 02-default-location: succeeded
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | Setting resolver to 127.0.0.11
bookstack | Setting worker_processes to 4
bookstack | generating self-signed keys in /config/keys, you can replace these with your own keys if required
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack | .+...+.+.....+.+...........+...+.+........+.+++++++++++++++++++++++++++++++++++++++*...+......+........+.+.....+.+..+...+.......+...+...............+.....+.........+......+....+......+.....+...+.+.....+...+.+......+...........+...+++++++++++++++++++++++++++++++++++++++*...............+.+...........+.........+.+...+...+........+....+.....+............+.........+.+......+....................+..........+...+..+....+.....+......+.......+...+...+......+.....+..........+......+..+.+......+.....+.+..............+...............+.+............+..+....+.........+.....+.+.....+......+...............+......+....+.....+......+...+....++++++
bookstack | ...+......+...+.....+......+.+...+...........+++++++++++++++++++++++++++++++++++++++*..+...+...+..+..........+.....+....+...............+...........+.........+.........+...................+...+.........+.....+......+...+......+.+..+..........+...............+.....+..........+.....+......+.+........+...+...+.+...+........+++++++++++++++++++++++++++++++++++++++*.......+......+........+.+.........+..+...+......+....+..+.+...+..+.........+......+....+...+......+..+...+.+......+........+....+...+..................+..+..........+........+....+...........+......+.+...+..+....+........+.+.....+.........+...+...+.+.....+...+.......+......+.........+........+.............+...+.....+......+......+.......+......+.........+.....+..........+...+...+............+..+.+......+...........+.......+....................+.+..+.........+......+...+..........+......+...+...+..+.+...........+.+........+....+..+.+.....+.........+.........+....+...+..+.......+.....+................+.....+.........+...+.+......+.....+.........+.+..................+......+..+..........+..+................+.........+...+...+..+...+......+...+.+......+.....+......+...+.+.....+...+............+....+..+...+....+.....+.+..+.......+......+.....+.......+........+.......+.........+.....+...+.+..+....+...+............+...........+.......+...+...+......+...+.....+...............+.+..+.............+.....+.+.....+...+.+.....+.+..............+.+...+...+...............+..+...+.........+..........++++++
bookstack | -----
bookstack | Waiting for DB to be available
bookstack |
bookstack-db | 2026-09-13 9:54:51 0 [Note] InnoDB: log sequence number 2025029; transaction id 2873
bookstack | INFO Preparing database.
bookstack-db | 2026-09-13 9:54:51 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-13 9:54:51 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-13 9:54:52 0 [Note] Replication not automatically started: --skip-slave-start was specified
bookstack-db | 2026-09-13 9:54:52 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Temporary server started.
bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst
bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Backing up complete
bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade
bookstack-db | The --upgrade-system-tables option was used, user tables won't be touched.
bookstack-db | Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!
bookstack-db | Phase 1/8: Checking and upgrading mysql database
bookstack-db | Processing databases
bookstack-db | mysql
bookstack-db | mysql.column_stats OK
bookstack-db | mysql.columns_priv OK
bookstack |
bookstack-db | mysql.db OK
bookstack | Creating migration table ...................................... 21.36ms DONE
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2014_10_12_000000_create_users_table ......................... 279.20ms DONE
bookstack | 2014_10_12_100000_create_password_resets_table ................ 60.91ms DONE
bookstack | 2015_07_12_114933_create_books_table .......................... 15.20ms DONE
bookstack | 2015_07_12_190027_create_pages_table .......................... 13.81ms DONE
bookstack | 2015_07_13_172121_create_images_table ......................... 11.55ms DONE
bookstack | 2015_07_27_172342_create_chapters_table ....................... 17.39ms DONE
bookstack | 2015_08_08_200447_add_users_to_entities ...................... 146.31ms DONE
bookstack | 2015_08_09_093534_create_page_revisions_table ................. 14.90ms DONE
bookstack | 2015_08_16_142133_create_activities_table ..................... 11.43ms DONE
bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 311.76ms DONE
bookstack | 2015_08_30_125859_create_settings_table ....................... 17.18ms DONE
bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.08ms DONE
bookstack | 2015_09_04_165821_create_social_accounts_table ................ 61.62ms DONE
bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 79.45ms DONE
bookstack | 2015_11_21_145609_create_views_table .......................... 12.53ms DONE
bookstack | 2015_11_26_221857_add_entity_indexes ......................... 487.07ms DONE
bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE
bookstack | 2015_12_07_195238_add_image_upload_types ...................... 77.75ms DONE
bookstack | 2015_12_09_195748_add_user_avatars ............................ 19.71ms DONE
bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 47.16ms DONE
bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 83.43ms DONE
bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 159.05ms DONE
bookstack | 2016_02_28_084200_add_entity_access_controls ................. 259.17ms DONE
bookstack | 2016_03_09_203143_add_page_revision_types ..................... 42.78ms DONE
bookstack | 2016_03_13_082138_add_page_drafts ............................. 43.51ms DONE
bookstack-db | mysql.event OK
bookstack-db | mysql.func OK
bookstack-db | mysql.global_priv OK
bookstack-db | mysql.gtid_slave_pos OK
bookstack-db | mysql.help_category OK
bookstack-db | mysql.help_keyword OK
bookstack-db | mysql.help_relation OK
bookstack-db | mysql.help_topic OK
bookstack-db | mysql.index_stats OK
bookstack-db | mysql.innodb_index_stats OK
bookstack-db | mysql.innodb_table_stats OK
bookstack-db | mysql.plugin OK
bookstack | 2016_03_25_123157_add_markdown_support ........................ 38.64ms DONE
bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 43.26ms DONE
bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 300.32ms DONE
bookstack-db | mysql.proc OK
bookstack-db | mysql.procs_priv OK
bookstack-db | mysql.proxies_priv OK
bookstack-db | mysql.roles_mapping OK
bookstack-db | mysql.servers OK
bookstack-db | mysql.table_stats OK
bookstack-db | mysql.tables_priv OK
bookstack-db | mysql.time_zone OK
bookstack-db | mysql.time_zone_leap_second OK
bookstack-db | mysql.time_zone_name OK
bookstack-db | mysql.time_zone_transition OK
bookstack-db | mysql.time_zone_transition_type OK
bookstack-db | mysql.transaction_registry OK
bookstack-db | Phase 2/8: Installing used storage engines... Skipped
bookstack-db | Phase 3/8: Running 'mysql_fix_privilege_tables'
bookstack-db | Phase 4/8: Fixing views... Skipped
bookstack-db | Phase 5/8: Fixing table and database names ... Skipped
bookstack-db | Phase 6/8: Checking and upgrading tables... Skipped
bookstack-db | Phase 7/8: uninstalling plugins
bookstack-db | Phase 8/8: Running 'FLUSH PRIVILEGES'
bookstack-db | OK
bookstack-db | 2026-09-13 09:54:59+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade
bookstack-db | 2026-09-13 09:54:59+02:00 [Note] [Entrypoint]: Stopping temporary server
bookstack-db | 2026-09-13 9:54:59 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
bookstack-db | 2026-09-13 9:54:59 0 [Note] InnoDB: FTS optimize thread exiting.
bookstack-db | 2026-09-13 9:54:59 0 [Note] InnoDB: Starting shutdown...
bookstack-db | 2026-09-13 9:54:59 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
bookstack-db | 2026-09-13 9:54:59 0 [Note] Shutdown completed; log sequence number 2025029; transaction id 2877
bookstack | 2016_05_06_185215_create_tags_table .......................... 113.02ms DONE
bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 17.06ms DONE
bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 76.98ms DONE
bookstack | 2016_10_09_142037_create_attachments_table .................... 67.83ms DONE
bookstack | 2017_01_21_163556_create_cache_table .......................... 42.59ms DONE
bookstack | 2017_01_21_163602_create_sessions_table ....................... 42.74ms DONE
bookstack | 2017_03_19_091553_create_search_index_table .................. 115.70ms DONE
bookstack | 2017_04_20_185112_add_revision_counts ......................... 62.91ms DONE
bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.07ms DONE
bookstack | 2017_08_01_130541_create_comments_table ....................... 86.66ms DONE
bookstack | 2017_08_29_102650_add_cover_image_display ..................... 16.83ms DONE
bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 48.22ms DONE
bookstack | 2018_08_04_115700_create_bookshelves_table ................... 384.06ms DONE
bookstack | 2019_07_07_112515_add_template_support ........................ 48.61ms DONE
bookstack | 2019_08_17_140214_add_user_invites_table ...................... 62.14ms DONE
bookstack | 2019_12_29_120917_add_api_auth ................................ 88.92ms DONE
bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 105.72ms DONE
bookstack | 2020_08_04_131052_remove_role_name_field ...................... 16.66ms DONE
bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.34ms DONE
bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 78.73ms DONE
bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.71ms DONE
bookstack | 2020_11_07_232321_simplify_activities_table .................. 141.84ms DONE
bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 200.24ms DONE
bookstack | 2021_01_30_225441_add_settings_type_column .................... 21.09ms DONE
bookstack | 2021_03_08_215138_add_user_slug ............................... 49.08ms DONE
bookstack | 2021_05_15_173110_create_favourites_table ..................... 66.80ms DONE
bookstack-db | 2026-09-13 9:54:59 0 [Note] mariadbd: Shutdown complete
bookstack-db | 2026-09-13 09:54:59+02:00 [Note] [Entrypoint]: Temporary server stopped
bookstack-db | 2026-09-13 9:55:00 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid bR6d3VLG8Cdw7s40Fw1l0qseMmo= as process 1
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-13 9:55:00 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
bookstack-db | create_uring failed: falling back to libaio
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Using Linux native AIO
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: End of log at LSN=2025029
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 62.79ms DONE
bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 17.85ms DONE
bookstack | 2021_08_28_161743_add_export_role_permission ................... 6.47ms DONE
bookstack | 2021_09_26_044614_add_activities_ip_column .................... 20.29ms DONE
bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 27.34ms DONE
bookstack | 2021_12_07_111343_create_webhooks_table ...................... 119.99ms DONE
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack | 2021_12_13_152024_create_jobs_table ........................... 38.72ms DONE
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: log sequence number 2025029; transaction id 2873
bookstack-db | 2026-09-13 9:55:00 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-13 9:55:00 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-13 9:55:00 0 [Note] InnoDB: Buffer pool(s) load completed at 260913 9:55:00
bookstack-db | 2026-09-13 9:55:00 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
bookstack-db | 2026-09-13 9:55:00 0 [Note] Server socket created on IP: '::', port: '3306'.
bookstack-db | 2026-09-13 9:55:00 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-13 9:55:00 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 37.85ms DONE
bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 70.20ms DONE
bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 27.06ms DONE
bookstack | 2022_04_25_140741_update_polymorphic_types .................... 16.24ms DONE
bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 123.83ms DONE
bookstack | 2022_08_17_092941_create_references_table .................... 112.81ms DONE
bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.71ms DONE
bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 90.68ms DONE
bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 93.44ms DONE
bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 142.21ms DONE
bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 1.09ms DONE
bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 36.15ms DONE
bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 23.45ms DONE
bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 1.97ms DONE
bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.06ms DONE
bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 6.28ms DONE
bookstack | 2023_07_31_104430_create_watches_table ........................ 89.12ms DONE
bookstack | 2023_08_21_174248_increase_cache_size ......................... 30.81ms DONE
bookstack | 2023_12_02_104541_add_default_template_to_books ............... 20.41ms DONE
bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 73.97ms DONE
bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 20.92ms DONE
bookstack | 2024_02_04_141358_add_views_updated_index ..................... 26.40ms DONE
bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 39.24ms DONE
bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.58ms DONE
bookstack | 2024_10_29_114420_add_import_role_permission ................... 5.16ms DONE
bookstack | 2024_11_02_160700_create_imports_table ........................ 36.28ms DONE
bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 10.40ms DONE
bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 11.84ms DONE
bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 20.57ms DONE
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 66.35ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 69.84ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 281.26ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data .......................... 9.73ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 794.71ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 49.70ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 457.39ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 40.71ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 112.42ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 67.72ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 22.39ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 4.69ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,33 @@
{
"harness_version": 1,
"edge": "E3b",
"app": "bookstack",
"note": "AUTHORED step: engine half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"duration_s": 0.2,
"measured_at": "2026-09-13T07:55:14Z",
"evidence": "evidence/E3b",
"total_s": 64.0
}
@@ -0,0 +1,135 @@
[07:42:55] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[07:43:01] FROM settled=True in 5.2s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:43:01] privatebin: seeded paste id=95d75dc1cf5feaba
[07:43:01] privatebin: readback http=200 marker_present=True
[07:43:01] C1 (seed reads back BEFORE): True
[07:43:01] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[07:43:02] TO up -d rc=0
[07:50:03] TO settled=False in 421.1s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[07:50:03] migration lines observed: 0
[07:52:03] app never answered on http://invalid:8080/ (last rc=6 code=000)
[07:52:03] RESULT (seed reads back AFTER): False
[07:52:03] C3: ABORT — putting the FROM images back
[07:52:09] privatebin: readback http=200 marker_present=True
[07:52:09] ABORT: app came back in 5.2s; data present=True
{
"harness_version": 1,
"edge": "C3",
"app": "privatebin",
"note": "NEGATIVE control: the TO image starts and exits immediately",
"from": {
"privatebin": "privatebin/pdo:2.0.5"
},
"to": {
"privatebin": "alpine:3.20"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"duration_s": 421.1,
"measured_at": "2026-09-13T07:52:09Z",
"evidence": "evidence/C3",
"total_s": 553.9
}
[07:52:10] E3: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:25.02.2', 'bookstack-db': 'mariadb:11.6'}
[07:52:56] FROM settled=True in 15.7s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:52:57] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-e4414904@gate.invalid" successfully created!
[07:52:58] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-db3feb - Email: spike
[07:52:58] C1 (seed reads back BEFORE): True
[07:52:58] E3: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[07:53:33] TO up -d rc=0
[07:53:43] TO settled=True in 10.5s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:53:43] engine state bookstack-db: 12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]
[07:53:43] migration lines observed: 6
[07:53:44] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-db3feb - Email: spike
[07:53:44] RESULT (seed reads back AFTER): True
[07:53:44] E3: ABORT — putting the FROM images back
[07:54:06] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-db3feb - Email: spike
[07:54:06] ABORT: app came back in 10.5s; data present=True
{
"harness_version": 1,
"edge": "E3",
"app": "bookstack",
"note": "catalog transition 0b73e5e: app AND engine together",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack | [migrations] started",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"duration_s": 10.5,
"measured_at": "2026-09-13T07:54:06Z",
"evidence": "evidence/E3",
"total_s": 116.3
}
[07:54:10] E3b: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:11.6'}
[07:54:47] FROM settled=True in 20.9s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:54:48] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-87a54b85@gate.invalid" successfully created!
[07:54:49] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-7b31eb - Email: spike
[07:54:49] C1 (seed reads back BEFORE): True
[07:54:49] E3b: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[07:55:06] TO up -d rc=0
[07:55:06] TO settled=True in 0.2s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[07:55:06] engine state bookstack-db: 12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]
[07:55:06] migration lines observed: 6
[07:55:07] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-7b31eb - Email: spike
[07:55:07] RESULT (seed reads back AFTER): True
[07:55:07] E3b: ABORT — putting the FROM images back
[07:55:14] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-7b31eb - Email: spike
[07:55:14] ABORT: app came back in 0.2s; data present=True
{
"harness_version": 1,
"edge": "E3b",
"app": "bookstack",
"note": "AUTHORED step: engine half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"duration_s": 0.2,
"measured_at": "2026-09-13T07:55:14Z",
"evidence": "evidence/E3b",
"total_s": 64.0
}
rc=0
@@ -0,0 +1,92 @@
[
{
"harness_version": 1,
"edge": "C3",
"app": "privatebin",
"note": "NEGATIVE control: the TO image starts and exits immediately",
"from": {
"privatebin": "privatebin/pdo:2.0.5"
},
"to": {
"privatebin": "alpine:3.20"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"duration_s": 421.1,
"measured_at": "2026-09-13T07:52:09Z",
"evidence": "evidence/C3",
"total_s": 553.9
},
{
"harness_version": 1,
"edge": "E3",
"app": "bookstack",
"note": "catalog transition 0b73e5e: app AND engine together",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack | [migrations] started",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"duration_s": 10.5,
"measured_at": "2026-09-13T07:54:06Z",
"evidence": "evidence/E3",
"total_s": 116.3
},
{
"harness_version": 1,
"edge": "E3b",
"app": "bookstack",
"note": "AUTHORED step: engine half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-13 09:54:53+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB | This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"duration_s": 0.2,
"measured_at": "2026-09-13T07:55:14Z",
"evidence": "evidence/E3b",
"total_s": 64.0
}
]
@@ -0,0 +1,24 @@
=== layer 1+2 BEFORE ===
Sun Sep 13 07:56:14 UTC 2026
local dir active 40453376 21035832 17330428 52.00%
local-lvm lvmthin active 56487936 19951538 36536397 35.32%
scratch-r459c dir active 983379700 9632244 923720844 0.98%
VMID Status Lock Name
9201 running demo-hp
9403 running r459-close
/dev/nvme0n1 983379700 9632244 923720844 2% /mnt/hdd_1
guest peak: /dev/loop0 59G 3.3G 53G 6% /
images: Images 2.212GB;Containers 0B;
0
=== fstrim ===
/var/lib/lxc/9403/rootfs/: 55.5 GiB (59547074560 bytes) trimmed
=== destroy ===
purging CT 9403 from related configurations..
storage scratch-r459c removed
template deleted
=== AFTER ===
local dir active 40453376 20908828 17457432 51.69%
local-lvm lvmthin active 56487936 19951538 36536397 35.32%
VMID Status Lock Name
9201 running demo-hp
/dev/nvme0n1 983379700 5774620 927578468 1% /mnt/hdd_1
@@ -0,0 +1,5 @@
=== LAYER 3 — the hub gained nothing 2026-09-13T08:11:07Z ===
host: demo-felhom-8363b5
host: demo-hp-bb76ea
customers: 0
(this run created no customer, no appliance and no host record — guest 9403 never enrolled; the bake guest 9100 lives inside the drill VM)
@@ -0,0 +1,22 @@
=== BASELINE 2026-09-13T07:57:15Z guest 9201, BEFORE the catalog push ===
--- live compose, bookstack-db environment block ---
bookstack-db:
image: mariadb:12.3
container_name: bookstack-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Budapest
volumes:
--- containers (ID, image, created, started) ---
/bookstack 26b555d71e1cf4ea60cd8fc72e34faa6d97ea8a71430d54dc5894cad5a03915d created=2026-09-13T04:21:01.357420686Z started=2026-09-13T04:21:07.210437498Z lscr.io/linuxserver/bookstack:26.05.2
/bookstack-db b02f7a091aebc962c7e15a1337ceb2b1c87c3f03ade7103d4bfddc2dcfc87ce2 created=2026-09-13T04:21:01.27514214Z started=2026-09-13T04:21:01.47728414Z mariadb:12.3
--- controller: last sync lines ---
2026/09/13 07:54:17 sync.go:416: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped
2026/09/13 07:54:17 sync.go:416: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped
2026/09/13 07:54:17 sync.go:263: [INFO] [sync] Catalog sync complete
2026/09/13 07:54:17 sync.go:135: [INFO] [sync] Periodic sync: Sablonok naprakészek — nincs változás
--- git cache HEAD the box has ---
@@ -0,0 +1,33 @@
=== AFTER THE SYNC 2026-09-13T08:09:44Z — guest 9201, nothing touched by hand ===
--- the sync, in its own words (bookstack lines + the cycle summary) ---
2026/09/13 08:09:17 sync.go:396: [INFO] [sync] Updated bookstack/docker-compose.yml
2026/09/13 08:09:17 sync.go:409: [DEBUG] [sync] bookstack: stored definition refreshed with the delivered fix
2026/09/13 08:09:17 sync.go:541: [DEBUG] [sync] bookstack/docker-compose.yml: src=d45643865f5cf66e, dst=d45643865f5cf66e (changed)
2026/09/13 08:09:17 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 4 stack(s): [bookstack kimai nextcloud romm]
2026/09/13 08:09:17 sync.go:263: [INFO] [sync] Catalog sync complete
2026/09/13 08:09:17 sync.go:135: [INFO] [sync] Periodic sync: Sablonok frissítve — frissítve: bookstack, kimai, nextcloud, romm
--- live compose, bookstack-db environment block ---
bookstack-db:
image: mariadb:12.3
container_name: bookstack-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Budapest
# MARIADB_AUTO_UPGRADE: on a MAJOR engine move the engine converts its own datadir (~7 s on a
# small DB, backs its system tables up first). Operator ruling 2026-09-13 on
# felhom.eu/documentation/audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md. Inert until a
# major moves — and none may, until Slice 4 (R-448) ships: see CLAUDE.md, engine-major rule.
- MARIADB_AUTO_UPGRADE=1
volumes:
--- containers: same IDs and StartedAt as the baseline = NOT recreated by the sync ---
/bookstack 26b555d71e1cf4ea60cd8fc72e34faa6d97ea8a71430d54dc5894cad5a03915d started=2026-09-13T04:21:07.210437498Z restarts=0
/bookstack-db b02f7a091aebc962c7e15a1337ceb2b1c87c3f03ade7103d4bfddc2dcfc87ce2 started=2026-09-13T04:21:01.47728414Z restarts=0
--- docker ps ---
bookstack|lscr.io/linuxserver/bookstack:26.05.2|Up 4 hours (healthy)
bookstack-db|mariadb:12.3|Up 4 hours (healthy)
--- the applied definition also carries it (fixes flow INTO the pin) ---
2
@@ -0,0 +1,31 @@
=== THE ONE DELIBERATE RESTART — POST /api/stacks/bookstack/restart 2026-09-13T08:10:32Z ===
login http=302
session cookie: 79 chars
csrf token: 64 chars (must be 64)
{"ok":true,"message":"Stack bookstack restart completed"}
restart http=200
--- waiting for both containers healthy ---
healthy after 8s
--- containers after: NEW ids and StartedAt = the restart recreated them (compose up -d) ---
/bookstack 26b555d71e1cf4ea60cd8fc72e34faa6d97ea8a71430d54dc5894cad5a03915d started=2026-09-13T04:21:07.210437498Z
/bookstack-db 16205e01bdbe56e5849da0c06d5d50e1eb5a70e2e92efaf59d0e09758272d573 started=2026-09-13T08:10:33.353161195Z
--- the ENGINE log after the restart, verbatim (last start) ---
2026-09-13 10:10:33+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.2+maria~ubu2404 started.
2026-09-13 10:10:33+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-13 10:10:33+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-13 10:10:33+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.2+maria~ubu2404 started.
2026-09-13 10:10:34+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
2026-09-13 10:10:35 0 [Note] mariadbd: ready for connections.
Version: '12.3.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
--- the engine asked directly (R-464: not the log) ---
12.3.2-MariaDB
This installation of MariaDB is already upgraded to 12.3.2-MariaDB.
There is no need to run mariadb-upgrade again.
[exit=1]
--- the env is IN the running container ---
MARIADB_AUTO_UPGRADE=1
--- the app serves ---
GET /login http=200
bookstack-db|mariadb:12.3|Up 11 seconds (healthy)
bookstack|lscr.io/linuxserver/bookstack:26.05.2|Up 4 hours (healthy)
File diff suppressed because one or more lines are too long
@@ -202,8 +202,51 @@ bake's own acceptance check. The real guard was never weak: the script's own
back is a form submission, not a rebuild.
A golden is only needed when a publish train wants fresh installs current — demo deploys never need it.
**Since 2026-09-13 the cadence is §4.2: weekly, and before any drill or fresh install.**
The full 0.188.0 run, with the observables: `documentation/audits/tester-gate-golden-0.188.0-2026-07-31.md`.
### 4.2 Cadence — goldens are WEEKLY and before any install, not per release (operator ruling 2026-09-13)
**What was measured before the ruling:** 25 goldens in 26 days in August, almost one per release,
because `golden_currency_gate.py` trips on every release by design and the only honest ways past it
were a bake or a declared `--no-verify` (thirteen of those by 2026-09-01 — R-404/R-417). **The
ruling:** bake on a cadence. Every release still raises the FLOOR (§4.1 step 5), so both demo boxes
keep getting each release in ~20 s; only the golden — which protects a **fresh install** and nothing
else — moves to a cadence.
**The cadence, and it is a step in a routine, not a memory:**
1. **Weekly.** Bake + vouch + raise the floor per §4.1, one golden carrying whatever is newest.
2. **Before ANY drill or fresh install**, whether or not the week is up. A drill on a fresh install
with a stale golden measures the wrong controller (that is how R-120 surfaced).
3. **The first external install retires the arrangement.** The waiver's own register row says so.
**The gate reads a dated waiver** — `documentation/tests/golden-waiver.yml`, four lines:
```yaml
# documentation/tests/golden-waiver.yml — read by scripts/golden_currency_gate.py
issued: 2026-09-13
expires: 2026-09-27 # HARD LIMIT: at most 14 days after issued, or the gate refuses the waiver
reason: pre-customer development; goldens on a weekly cadence (operator ruling 2026-09-13)
register_row: R-468 # must exist as a `**R-468**` row in OPEN-ITEMS.md
```
While it is valid, a golden BEHIND the record makes the gate print a loud **ADVISORY** and exit 0;
when it expires the gate is **red again** until someone bakes or renews. **It never covers a golden
that is UNRECORDED** (no `## vX.Y.Z` heading — R-385): that is not a cadence choice. A waiver longer
than 14 days, with a missing or unparseable date, an empty reason, or a row that does not exist, is
**INCONCLUSIVE (exit 2)** — refused, and refused out loud. The cap lives in the gate
(`WAIVER_MAX_DAYS`), not here, because a cap in prose is what failed the first time (R-242).
**To issue or renew:** edit the two dates (issue = today, expiry ≤ 14 days later), keep the row,
commit it **on its own** with a message saying why the bake is deferred, and push. Renewal is a diff
someone can see — that is the point. **Do not issue a waiver over a bake that could be done today**;
that is the habit the gate's docstring warns about. **To retire it:** delete the file in the commit
that records the first external install.
**What the waiver does NOT do:** it does not touch the vouch half of R-242 (still open — nothing
gates the vouch), it does not change what the gate checks, and it does not stop the floor.
## 5. Hub (felhom.eu/hub → k3s, GitOps)
**The manifest is the truth** — a built image deploys NOTHING until `manifests/hub.yaml`'s `image:`
@@ -0,0 +1 @@
pve-manager/9.2.2/b9984c6d90a4bd80 (running kernel: 7.0.2-6-pve)
@@ -0,0 +1,20 @@
=== preconditions 2026-09-13T07:46:03Z ===
/dev/sda1 9.1T 3.1T 5.5T 37% /mnt/5_hdd
/dev/sdb1 445G 214G 209G 51% /
felhom-controller clean=[] HEAD=1552716 origin=1552716
felhom.eu clean=[] HEAD=4b2e560 origin=4b2e560
felhom-agent clean=[?? scripts/__pycache__/;] HEAD=4586f0f origin=4586f0f
controller CHANGELOG top: ## v0.236.0 — "delete my data too" deletes the data, or says that it could not (2026-09-
MinAgent lines in the top FOUR entries (v0.233.0..v0.236.0): 0 <- none; newest MinAgent statement is v0.232.0's: **MinAgent: 0.129.0** (unchanged)
controller image 0.236.0 in registry: HTTP 200
404 pre-gate on the golden package: HTTP 404
control — the 0.232.0 package that DOES exist: HTTP 200
=== drill VM ===
Snapshot list:
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
1 virgin 0 B 2026-07-03 14:12:15 0000:00:00.000 0
no qemu running
=== bake script fingerprint on DooPlex (compared across the hop later) ===
7b0fb5cf082fa3301a45578d1624e375d205b4e538d602e7d198a015e573b6a1 felhom-agent/configs/build-golden.sh
@@ -0,0 +1,28 @@
=== pveam update (the virgin snapshot's INDEX is stale too) ===
update successful
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LC_NUMERIC = (unset),
LC_COLLATE = (unset),
LC_TIME = (unset),
LC_MESSAGES = (unset),
LC_MONETARY = (unset),
LC_ADDRESS = (unset),
LC_IDENTIFICATION = (unset),
LC_MEASUREMENT = (unset),
LC_PAPER = (unset),
LC_TELEPHONE = (unset),
LC_NAME = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
debian-13-standard_13.6-1_amd64.tar.zst
calculating checksum...OK, checksum verified
download of 'http://download.proxmox.com/images/system/debian-13-standard_13.6-1_amd64.tar.zst' to '/var/lib/vz/template/cache/debian-13-standard_13.6-1_amd64.tar.zst' finished
=== bake script + token, file -> file ===
in the VM: 7b0fb5cf082fa3301a45578d1624e375d205b4e538d602e7d198a015e573b6a1
DooPlex : 7b0fb5cf082fa3301a45578d1624e375d205b4e538d602e7d198a015e573b6a1
@@ -0,0 +1,6 @@
Running as unit: golden-bake.service; invocation ID: c011a9b879364141982db8d7654bf3fe
=== token-leak check on the unit properties (must be 0) ===
0
=== and the grep is PROVEN to work (must be 1) ===
1
active
@@ -0,0 +1,18 @@
=== acceptance markers, counted on the COMMITTED log ===
docker OK (overlay2 : 1
including mount point :
316:INFO: including mount point rootfs ('/') in backup
317:INFO: including mount point mp0 ('/var/lib/felhom') in backup
upload OK (HTTP 201) : 1
MUST BE ZERO - excluding : 0
MUST BE ZERO - FATAL : 0
=== the result ===
GOLDEN_VERSION=0.236.0
GOLDEN_SHA256=58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf
archive volid: local:backup/vzdump-lxc-9100-2026_09_13-09_51_44.tar.zst
script: build-golden.sh v3.0.0
=== token-leak grep on the COMMITTED log (must be 0), and the grep PROVEN to work ===
bake.log: 0
seeded throwaway copy (must be 1): 1
@@ -0,0 +1,5 @@
Logical volume "vm-9100-disk-1" successfully removed.
purging CT 9100 from related configurations..
leftovers in the VM: 0
qemu exited
1 virgin 0 B 2026-07-03 14:12:15 0000:00:00.000 0
@@ -0,0 +1,8 @@
=== READER 2: the ROUND TRIP — hash the DOWNLOADED bytes, not the bake's printout ===
http=200 bytes=654115664
downloaded sha256: 58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf
bake printed : 58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf
=== THE DELIVERED ARTIFACT MUST NAME ITS OWN CONTROLLER ===
gitea.dooplex.hu/admin/felhom-controller:0.236.0
docker store entries in the archive: 19382
@@ -0,0 +1,11 @@
=== READER 3: the hub's Day-0 dropdown, reading Gitea on a different code path ===
agent_version — none — sha=
agent_version 0.130.0 sha=a56a92a7bd68f5b46736eaec <-- currently SELECTED
agent_version 0.129.0 sha=53a54f0620afbd6d4a1b8660
agent_version 0.128.0 sha=c6eba73bf9b9ad6980cfef57
golden_version — none — sha=
golden_version 0.236.0 sha=58a3cc24c61dc2271f2cb508
golden_version 0.232.0 sha=5f8a53ed5b19a6cb2006298c <-- currently SELECTED
golden_version 0.230.0 sha=9287f7cef5f13166276e8406
min_controller_version = 0.232.0
min_agent = 0.129.0
@@ -0,0 +1,10 @@
=== VOUCH: the THREE fields, moved together ===
golden_version 0.232.0 -> 0.236.0 (this bake carries FOUR releases: 0.233.0..0.236.0 were never baked)
agent_version 0.130.0 -> 0.130.0 UNCHANGED, already >= MinAgent
min_agent 0.129.0 -> 0.129.0 UNCHANGED — no header since v0.232.0 declares a change (R-470 filed for the missing line)
min_agent (0.129.0) <= agent_version (0.130.0): NOT the R-216 shape
golden_sha256 sent = 58a3cc24c61dc227… (must equal the bake's 58a3cc24c61dc227…)
POST http=303
Location: /configuration?flash=artifacts_set
(read from -D, never %{redirect_url} — R-132)
@@ -0,0 +1,10 @@
=== RE-READ FROM THE PAGE — a 303 and a success flash are not proof ===
agent_version SELECTED = 0.130.0 sha=a56a92a7bd68f5b46736eaec...
golden_version SELECTED = 0.236.0 sha=58a3cc24c61dc2271f2cb508...
min_agent = 0.129.0
golden_sha256 = 58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf
R-120 refusal banner present: False
=== raise the fleet floor 0.232.0 -> 0.236.0 (both demo guests already run 0.236.0 by hand — the floor moves nothing today; it makes a fresh install land current) ===
POST http=303
Location: /configuration?flash=floor_set
after: name="min_controller_version" value="0.236.0"
@@ -0,0 +1,74 @@
# Golden bake 0.236.0 — 2026-09-13
Baked, published, round-trip verified, **vouched**, and the fleet floor raised 0.232.0 → 0.236.0.
**This bake carries FOUR releases: 0.233.0, 0.234.0, 0.235.0 and 0.236.0 were never baked** (R-467).
It is the last per-release bake: from today goldens are on a **weekly cadence, and before any drill or
fresh install** (operator ruling 2026-09-13, R-468 — `RUNBOOK-manual-build.md` §4.2).
| | |
|---|---|
| `GOLDEN_SHA256` | `58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf` |
| size | **654 115 664 B** |
| baked controller | `gitea.dooplex.hu/admin/felhom-controller:0.236.0` |
| `MinAgent` | **0.129.0** — the newest header that STATES one is v0.232.0's; v0.233.0…v0.236.0 carry no line (**R-470**) |
| script | `build-golden.sh v3.0.0`, sha `7b0fb5cf…73b6a1`, **compared across the hop** (`02-template.txt`) |
| template | `debian-13-standard_13.6-1_amd64.tar.zst`, after `pveam update` |
| archive volid | `local:backup/vzdump-lxc-9100-2026_09_13-09_51_44.tar.zst` |
## Acceptance markers — counted on the COMMITTED log (`04-markers.txt`)
```
docker OK (overlay2 : 1
including mount point rootfs : 1 (line 316)
including mount point mp0 : 1 (line 317) <- no mp1 since v3.0.0 (R-165/R-233)
upload OK (HTTP 201) : 1
--- must be ZERO ---
excluding : 0
FATAL : 0
```
## Three independent readers agreed before anything was vouched
1. **The bake** printed `GOLDEN_SHA256=58a3cc24…958bf`.
2. **The round trip** (`07-roundtrip.txt`) — the published bytes downloaded back: `HTTP 200`,
**654 115 664 B**, sha `58a3cc24…958bf`, hashed from the **downloaded** bytes.
3. **The hub's Day-0 dropdown** (`08-hub-before-vouch.txt`), a different code path reading Gitea:
`0.236.0 sha=58a3cc24c61dc2271f2cb508`.
The delivered artifact names the controller it will start, read out of the downloaded archive:
`./etc/felhom-controller-image` → `gitea.dooplex.hu/admin/felhom-controller:0.236.0`, with **19 382**
entries under `var/lib/felhom/docker/`.
## Pre-gates, each proven able to see something first (`01-preconditions.txt`, `03-bake-launch.txt`)
| gate | result | the control that makes it believable |
|---|---|---|
| 404 pre-gate | `HTTP 404` for 0.236.0 before the bake | the 0.232.0 package returns `HTTP 200` on the same URL shape |
| token-leak grep on the committed log | **0** | the token appended to a throwaway copy greps **1**; the copy was `shred -u`'d |
| token off every command line | unit properties grep **0** | same seeded control returns **1** |
## The vouch — three fields, and only one moved (`09-vouch.txt`, `11-vouch-verified.txt`)
| field | before | after | why |
|---|---|---|---|
| `golden_version` | 0.232.0 | **0.236.0** | the new bake |
| `agent_version` | 0.130.0 | 0.130.0 | unchanged — already ≥ MinAgent |
| `min_agent` | 0.129.0 | 0.129.0 | unchanged — no header since v0.232.0 declares a change (R-470) |
`POST /configuration/artifacts` → `303 flash=artifacts_set`; the page was **re-read** (golden
`0.236.0` selected, sha `58a3cc24…`), the R-120 refusal banner **absent**. Floor
`POST /configuration/global-floor` → `303 flash=floor_set`, re-read `0.236.0`.
## The floor, and why no box moved
**Both demo guests were already on 0.236.0 by hand** (proven during R-442's live validation the same
morning), so the floor raise changes nothing on the fleet today. It clears `golden_currency_gate.py`
and makes a fresh install land on the current release — which the nightly drills need. The chain
itself was exercised on 2026-09-01 (`golden-0.232.0-2026-09-01/12-selfupdate.txt`) and is not
re-proven here; nothing about it changed.
## Teardown (`05-teardown.txt`)
`pct destroy 9100 --purge`, `shred -u` of the token, runner, script and log **after** the log was
copied out (leftovers in `/root`: 0), `poweroff`, qemu confirmed exited with `ps -eo comm`, and
`qemu-img snapshot -a virgin`. The disk carries the single `virgin` snapshot.
@@ -0,0 +1,327 @@
[golden] build-golden.sh v3.0.0 — baking controller gitea.dooplex.hu/admin/felhom-controller:0.236.0
[golden] creating build LXC 9100 (nesting=1,keyctl=1, unprivileged; rootfs 32G + ONE data volume 24G @ /var/lib/felhom, backup=1) …
Logical volume "vm-9100-disk-0" created.
Logical volume pve/vm-9100-disk-0 changed.
Creating filesystem with 8388608 4k blocks and 2097152 inodes
Filesystem UUID: 2f235e82-2a88-4be0-b7b7-75778991837c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Logical volume "vm-9100-disk-1" created.
Logical volume pve/vm-9100-disk-1 changed.
Creating filesystem with 6291456 4k blocks and 1572864 inodes
Filesystem UUID: 39948d21-08ac-4cde-b5d3-997c54b68f36
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
extracting archive '/var/lib/vz/template/cache/debian-13-standard_13.6-1_amd64.tar.zst'
Total bytes read: 553512960 (528MiB, 94MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:e56AH6TbE0URIv25xegROJSnKt2yI9lK+kjeinRAeIE root@felhom-golden
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:VUZj3qbCDwZzz7pZsp5QlPisPDJ5KwjVShkoQEQuAZ4 root@felhom-golden
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:7n/yEy8Nfqo8I4pX5L2b3Kg3d2K2sfgYYAZeH9XqWaI root@felhom-golden
[golden] starting + installing Docker (official repo, trixie channel) …
apt-listchanges: Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = (unset),
LC_NUMERIC = (unset),
LC_COLLATE = (unset),
LC_TIME = (unset),
LC_MESSAGES = (unset),
LC_MONETARY = (unset),
LC_ADDRESS = (unset),
LC_IDENTIFICATION = (unset),
LC_MEASUREMENT = (unset),
LC_PAPER = (unset),
LC_TELEPHONE = (unset),
LC_NAME = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
apt-listchanges: Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = (unset),
LC_NUMERIC = (unset),
LC_COLLATE = (unset),
LC_TIME = (unset),
LC_MESSAGES = (unset),
LC_MONETARY = (unset),
LC_ADDRESS = (unset),
LC_IDENTIFICATION = (unset),
LC_MEASUREMENT = (unset),
LC_PAPER = (unset),
LC_TELEPHONE = (unset),
LC_NAME = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
[golden] baking daemon.json: classic overlay2 driver (containerd-snapshotter OFF) + log rotation …
[golden] wiring the single data volume (R-165 variant V-c): /var/lib/felhom/{docker,sys_drive} -> binds …
[golden] verifying Docker works in the build guest (storage driver should be overlay2 on the ext4 data volume) …
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
4f55086f7dd0: Pulling fs layer
4f55086f7dd0: Verifying Checksum
4f55086f7dd0: Download complete
4f55086f7dd0: Pull complete
Digest: sha256:5e23090353324d887c48ad5e5c56d294eab81588df9605b07d1afe895f9cc8f8
Status: Downloaded newer image for hello-world:latest
docker OK (overlay2; data-root /var/lib/docker)
/var/lib/docker is a real mount: /dev/mapper/pve-vm--9100--disk--1[/docker] ext4
/mnt/sys_drive is a real mount: /dev/mapper/pve-vm--9100--disk--1[/sys_drive] ext4
both paths are ONE filesystem: /dev/mapper/pve-vm--9100--disk--1 23317576
[golden] baking the in-guest controller image gitea.dooplex.hu/admin/felhom-controller:0.236.0 (no registry cred at deploy) …
WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/
0.236.0: Pulling from admin/felhom-controller
a8ac7f6c67ab: Pulling fs layer
bf30769d36e7: Pulling fs layer
044b66fbe46c: Pulling fs layer
b5c41a28e83f: Pulling fs layer
4051fe1934c3: Pulling fs layer
7879c9030fd8: Pulling fs layer
b5c41a28e83f: Waiting
4051fe1934c3: Waiting
7879c9030fd8: Waiting
a8ac7f6c67ab: Verifying Checksum
a8ac7f6c67ab: Download complete
044b66fbe46c: Verifying Checksum
044b66fbe46c: Download complete
b5c41a28e83f: Verifying Checksum
b5c41a28e83f: Download complete
4051fe1934c3: Verifying Checksum
4051fe1934c3: Download complete
7879c9030fd8: Verifying Checksum
7879c9030fd8: Download complete
bf30769d36e7: Verifying Checksum
bf30769d36e7: Download complete
a8ac7f6c67ab: Pull complete
bf30769d36e7: Pull complete
044b66fbe46c: Pull complete
b5c41a28e83f: Pull complete
4051fe1934c3: Pull complete
7879c9030fd8: Pull complete
Digest: sha256:ec94c3298040ae9061555c1dbdd0fc6221d64ba42f7154ce71739ec1d8f09176
Status: Downloaded newer image for gitea.dooplex.hu/admin/felhom-controller:0.236.0
gitea.dooplex.hu/admin/felhom-controller:0.236.0
[golden] asking the controller which infra images it manages …
[golden] baking infra images (4): traefik:v3.6.7 cloudflare/cloudflared:2026.6.0 gtstef/filebrowser:1.3.3-stable gitea.dooplex.hu/admin/felhom-samba:1.1.0 …
v3.6.7: Pulling from library/traefik
589002ba0eae: Pulling fs layer
ef63511ea6cc: Pulling fs layer
0738e5cb835e: Pulling fs layer
3e6813f70c64: Pulling fs layer
3e6813f70c64: Waiting
ef63511ea6cc: Verifying Checksum
ef63511ea6cc: Download complete
589002ba0eae: Verifying Checksum
589002ba0eae: Download complete
3e6813f70c64: Verifying Checksum
3e6813f70c64: Download complete
0738e5cb835e: Verifying Checksum
0738e5cb835e: Download complete
589002ba0eae: Pull complete
ef63511ea6cc: Pull complete
0738e5cb835e: Pull complete
3e6813f70c64: Pull complete
Digest: sha256:a9890c898f379c1905ee5b28342f6b408dc863f08db2dab20e46c267d1ff463a
Status: Downloaded newer image for traefik:v3.6.7
docker.io/library/traefik:v3.6.7
2026.6.0: Pulling from cloudflare/cloudflared
47de5dd0b812: Pulling fs layer
c172f21841df: Pulling fs layer
99515e7b4d35: Pulling fs layer
99ba982a9142: Pulling fs layer
d6b1b89eccac: Pulling fs layer
2780920e5dbf: Pulling fs layer
7c12895b777b: Pulling fs layer
3214acf345c0: Pulling fs layer
52630fc75a18: Pulling fs layer
dd64bf2dd177: Pulling fs layer
b839dfae01f6: Pulling fs layer
ebddc55facdc: Pulling fs layer
bdfd7f7e5bf6: Pulling fs layer
2d4d7adf6272: Pulling fs layer
40008157d8d2: Pulling fs layer
bd8962e29291: Pulling fs layer
cac2ae0193cb: Pulling fs layer
74d1dac84ecc: Pulling fs layer
b839dfae01f6: Waiting
ebddc55facdc: Waiting
bdfd7f7e5bf6: Waiting
2d4d7adf6272: Waiting
40008157d8d2: Waiting
bd8962e29291: Waiting
cac2ae0193cb: Waiting
74d1dac84ecc: Waiting
99ba982a9142: Waiting
d6b1b89eccac: Waiting
2780920e5dbf: Waiting
7c12895b777b: Waiting
3214acf345c0: Waiting
52630fc75a18: Waiting
dd64bf2dd177: Waiting
47de5dd0b812: Download complete
c172f21841df: Verifying Checksum
c172f21841df: Download complete
47de5dd0b812: Pull complete
99515e7b4d35: Verifying Checksum
99515e7b4d35: Download complete
99ba982a9142: Verifying Checksum
99ba982a9142: Download complete
d6b1b89eccac: Verifying Checksum
d6b1b89eccac: Download complete
2780920e5dbf: Verifying Checksum
2780920e5dbf: Download complete
7c12895b777b: Verifying Checksum
7c12895b777b: Download complete
c172f21841df: Pull complete
3214acf345c0: Verifying Checksum
3214acf345c0: Download complete
52630fc75a18: Verifying Checksum
52630fc75a18: Download complete
dd64bf2dd177: Verifying Checksum
dd64bf2dd177: Download complete
b839dfae01f6: Verifying Checksum
b839dfae01f6: Download complete
ebddc55facdc: Verifying Checksum
ebddc55facdc: Download complete
bdfd7f7e5bf6: Verifying Checksum
bdfd7f7e5bf6: Download complete
40008157d8d2: Verifying Checksum
40008157d8d2: Download complete
bd8962e29291: Verifying Checksum
bd8962e29291: Download complete
2d4d7adf6272: Verifying Checksum
2d4d7adf6272: Download complete
cac2ae0193cb: Verifying Checksum
cac2ae0193cb: Download complete
99515e7b4d35: Pull complete
74d1dac84ecc: Verifying Checksum
74d1dac84ecc: Download complete
99ba982a9142: Pull complete
d6b1b89eccac: Pull complete
2780920e5dbf: Pull complete
7c12895b777b: Pull complete
3214acf345c0: Pull complete
52630fc75a18: Pull complete
dd64bf2dd177: Pull complete
b839dfae01f6: Pull complete
ebddc55facdc: Pull complete
bdfd7f7e5bf6: Pull complete
2d4d7adf6272: Pull complete
40008157d8d2: Pull complete
bd8962e29291: Pull complete
cac2ae0193cb: Pull complete
74d1dac84ecc: Pull complete
Digest: sha256:ba461b8aa9c042156dbd39c38657fe7431bafa063220eab8d5330a523863da9f
Status: Downloaded newer image for cloudflare/cloudflared:2026.6.0
docker.io/cloudflare/cloudflared:2026.6.0
1.3.3-stable: Pulling from gtstef/filebrowser
6a0ac1617861: Pulling fs layer
ef8806083e82: Pulling fs layer
b74107c861c7: Pulling fs layer
adc935def003: Pulling fs layer
4f4fb700ef54: Pulling fs layer
18695ccc900a: Pulling fs layer
45d119d5c397: Pulling fs layer
dac52db4fc51: Pulling fs layer
6d598f86b2f2: Pulling fs layer
8aa349c8396c: Pulling fs layer
dac52db4fc51: Waiting
6d598f86b2f2: Waiting
8aa349c8396c: Waiting
4f4fb700ef54: Waiting
18695ccc900a: Waiting
45d119d5c397: Waiting
adc935def003: Waiting
6a0ac1617861: Verifying Checksum
6a0ac1617861: Download complete
adc935def003: Verifying Checksum
adc935def003: Download complete
6a0ac1617861: Pull complete
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
b74107c861c7: Verifying Checksum
b74107c861c7: Download complete
ef8806083e82: Verifying Checksum
ef8806083e82: Download complete
45d119d5c397: Verifying Checksum
45d119d5c397: Download complete
18695ccc900a: Verifying Checksum
18695ccc900a: Download complete
dac52db4fc51: Verifying Checksum
dac52db4fc51: Download complete
6d598f86b2f2: Verifying Checksum
6d598f86b2f2: Download complete
8aa349c8396c: Verifying Checksum
8aa349c8396c: Download complete
ef8806083e82: Pull complete
b74107c861c7: Pull complete
adc935def003: Pull complete
4f4fb700ef54: Pull complete
18695ccc900a: Pull complete
45d119d5c397: Pull complete
dac52db4fc51: Pull complete
6d598f86b2f2: Pull complete
8aa349c8396c: Pull complete
Digest: sha256:eb3733681db8757412632c61a99ad656f0d94ed6781bb2ea114b4d70babab78c
Status: Downloaded newer image for gtstef/filebrowser:1.3.3-stable
docker.io/gtstef/filebrowser:1.3.3-stable
1.1.0: Pulling from admin/felhom-samba
897d797d2723: Pulling fs layer
3051591aa250: Pulling fs layer
ce57a3f93416: Pulling fs layer
fb94eeec2fe1: Pulling fs layer
fb94eeec2fe1: Waiting
ce57a3f93416: Verifying Checksum
ce57a3f93416: Download complete
fb94eeec2fe1: Verifying Checksum
fb94eeec2fe1: Download complete
897d797d2723: Download complete
3051591aa250: Verifying Checksum
3051591aa250: Download complete
897d797d2723: Pull complete
3051591aa250: Pull complete
ce57a3f93416: Pull complete
fb94eeec2fe1: Pull complete
Digest: sha256:1c17c09422bec0366d7cf0e0fcfc1486ba6c90334a0a5d5c851073a9342f8f10
Status: Downloaded newer image for gitea.dooplex.hu/admin/felhom-samba:1.1.0
gitea.dooplex.hu/admin/felhom-samba:1.1.0
[golden] baking the controller-bootstrap unit (deploys the BAKED controller from the config mount) …
Created symlink '/etc/systemd/system/multi-user.target.wants/felhom-controller-bootstrap.service' → '/etc/systemd/system/felhom-controller-bootstrap.service'.
[golden] baking the controller-bootstrap PATH unit (starts the service on bootstrap-mount hot-plug — B1) …
Created symlink '/etc/systemd/system/multi-user.target.wants/felhom-controller-bootstrap.path' → '/etc/systemd/system/felhom-controller-bootstrap.path'.
[golden] baking the first-boot SSH host-key regeneration unit (F3) …
Created symlink '/etc/systemd/system/multi-user.target.wants/felhom-regen-hostkeys.service' → '/etc/systemd/system/felhom-regen-hostkeys.service'.
[golden] identity-clean + minimize …
[golden] stop + archive …
INFO: including mount point rootfs ('/') in backup
INFO: including mount point mp0 ('/var/lib/felhom') in backup
INFO: archive file size: 623MB
INFO: Finished Backup of VM 9100 (00:00:43)
[golden] DONE. golden archive volid: local:backup/vzdump-lxc-9100-2026_09_13-09_51_44.tar.zst (rootfs 32G + ONE data volume 24G @ /var/lib/felhom, all in the archive)
[golden] publishing golden (654115664 bytes, sha256 58a3cc24c61dc227…) → https://gitea.dooplex.hu/api/packages/admin/generic/felhom-golden/0.236.0/golden.tar.zst
[golden] pre-delete existing: HTTP 404 (404/204 expected)
[golden] upload OK (HTTP 201)
GOLDEN_VERSION=0.236.0
GOLDEN_SHA256=58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf
[golden] Record in the hub operator UI (Configs → Day-0 artifacts): golden 0.236.0 / 58a3cc24c61dc2271f2cb508ef5a269af97005f386b671f18011258df5f958bf
[golden] (the build guest 9100 is stopped; destroy it with: pct destroy 9100 --purge)
+11
View File
@@ -0,0 +1,11 @@
# documentation/tests/golden-waiver.yml — read by scripts/golden_currency_gate.py
#
# Goldens are on a CADENCE, not per release (operator ruling 2026-09-13, R-468): weekly, and always
# before any drill or fresh install. While this waiver is valid a golden BEHIND the record makes the
# gate ADVISORY instead of red. It never covers a golden that is UNRECORDED (R-385). At most 14 days
# after `issued`, or the gate refuses it. Renew with a new dated commit; delete it at the first
# external install. Issued AFTER the 0.236.0 bake landed — not over a bake that could have been done.
issued: 2026-09-13
expires: 2026-09-27
reason: pre-customer development; goldens on a weekly cadence (operator ruling 2026-09-13)
register_row: R-468