MB684 turns Debian 13 support from a documented claim into an automated CI contract.
The codebase was already compatible with the target platform, but the public proof lagged behind: the repository documented Debian 13 validation while the main CI coverage still relied on Ubuntu.
MB684 closes that gap without changing Mediabot runtime behaviour.
Final commit:
Version : 3.4dev-20260822_080103
Commit : 6c9c414
Branch : master
π§ͺ Make Debian 13 Prove It Can Enter the Castle
MB684 is deliberately focused on installation/readiness proof.
Changed:
.github/workflows/debian13.yml
README.md
docs/CONFIGURE.md
t/cases/886_mb684_debian13_fresh_install_gate.t
VERSION
Unchanged:
Mediabot runtime code
database schema
database migrations
configure implementation
installer implementation
service runtime
No runtime restart was required.
Mediabot already documented Debian 13 as a validated platform.
However, documentation alone is not enough for release readiness.
Before MB684, CI could not prove that a clean Debian 13 environment could satisfy the bootstrap requirements and execute the real configuration path.
That left an avoidable gap between:
"supported"
and:
"continuously verified"
MB684 makes Debian 13 support testable on every relevant repository change.
MB684 adds:
.github/workflows/debian13.yml
The workflow uses:
debian:13-slim
and verifies the platform from a clean container rather than relying on packages inherited from the GitHub runner.
The gate checks the Debian 13 baseline, including:
system Perl 5.40.x
MariaDB client tooling
MariaDB Connector/C development prerequisites
build toolchain required by CPAN
runtime Perl dependencies
The important principle is that Mediabot dependencies are validated against the Perl shipped by Debian 13 itself.
Mediabot intentionally keeps its Perl runtime module installation path CPAN-based.
The Debian workflow therefore validates that model instead of replacing it with distribution-specific Perl module packages.
The workflow installs the native prerequisites required to build the runtime modules, then validates the resulting Perl environment with the existing project verifier:
install/cpan_install.sh --verify-only
This reuses the projectβs real dependency contract instead of inventing a separate CI-only list.
The CI gate does not merely grep the configure script.
It executes the real fresh configuration workflow as a dedicated non-root user:
mediabot
using:
./configure --sync-only --skip-db --skip-cpan --yes
The database phase is intentionally excluded from this gate because MB684 focuses on bootstrap and fresh configuration readiness. Live DB/service/IRC validation remains a separate end-to-end boundary.
The generated configuration is checked for important safety properties.
The gate verifies:
mediabot.conf mode : 0600
PARTYLINE_EVAL_ENABLED=0
strict configuration audit passes
This means Debian 13 CI checks not only that a configuration can be generated, but also that the fresh result keeps the expected security posture.
README.md and docs/CONFIGURE.md now explain what the Debian 13 validation actually covers.
The public Debian 13 support statement is therefore backed by a live workflow rather than a historical/manual claim.
The documentation also keeps the boundary explicit:
bootstrap / CPAN / fresh configure : covered by Debian 13 CI
live database
systemd service
IRC connectivity
real production runtime
: separate integration/runtime validation
MB684 adds:
t/cases/886_mb684_debian13_fresh_install_gate.t
The contract protects the relationship between:
the Debian 13 workflow
the installation documentation
the configure contract
the public platform claim
This prevents the CI workflow or documentation from silently drifting away from the intended fresh-install model.
The installer/docs/CI contract group passed:
PASSED : 192/192 (12s)
The covered area included existing configure, CPAN, MariaDB-driver, CI/public-checkout and documentation contracts plus the new MB684 contract.
perl t/test_commands.pl --fast --progress
Result:
Selected: 324 of 769 discovered test file(s)
[====================] 100% [324/324 files | 5992 tests]
PASSED : 5992/5992 (65s)
perl t/test_commands.pl --progress
Result:
[====================] 100% [769/769 files | 15502 tests]
PASSED : 15502/15502 (211s)
Before commit:
OK: no runtime/product file modified
The final pre-commit worktree contained only:
M README.md
M docs/CONFIGURE.md
A .github/workflows/debian13.yml
A t/cases/886_mb684_debian13_fresh_install_gate.t
VERSION was then updated automatically by commit.sh.
Version : 3.4dev-20260822_080103
Commit : 6c9c414
π§ͺ Make Debian 13 Prove It Can Enter the Castle
Commit summary:
5 files changed
353 insertions
2 deletions
New files:
.github/workflows/debian13.yml
t/cases/886_mb684_debian13_fresh_install_gate.t
The commit was successfully pushed to GitHub.
A release candidate should not depend on somebody remembering that an installation once worked on a particular machine.
MB684 converts one of the most important deployment assumptions into repeatable evidence:
clean Debian 13
β
bootstrap prerequisites
β
system Perl / native MariaDB build environment
β
Mediabot Perl dependency verification
β
real non-root fresh configure path
β
safe generated configuration
That is a much stronger foundation for 3.5 readiness.
The next round is MB685.
Its exact scope must be derived from a fresh post-6c9c414 snapshot.
The remaining readiness areas now include candidates such as:
real fresh database initialization
upgrade/migration path
schema drift detection
service/bootstrap integration
security and public artefact hygiene
final installation/runtime acceptance
No MB685 implementation should be chosen before the fresh snapshot is audited.
π§ͺ Debian 13 no longer gets into the castle because the documentation says so. It now has to pass the entrance exam.
You must be logged in to reply.