Contributing & code style
How a change gets into the omega8cc repos, and the style contract it is
reviewed against. Code enters at each repo's default branch — 5.x-dev
everywhere except the Drush fork — is promoted selectively through the
-base branches, and once tagged on 5.x-pro/5.x-lts is picked up by
SKYNET-enabled production servers, which on their daily release check
self-upgrade as root wherever the optional self-upgrade cron is configured —
no operator in the loop. That deployment model, not taste, sets the review
strictness: reworks are about fleet safety.
Two mechanics dominate review feedback. First, fleet delivery is
serial-gated: tools under aegir/tools/ reach deployed boxes only through
_fetch_versioned() (BOA.sh.txt:1056), which refetches when the stamp
<name>.ctrl.<serial>.<tree>.<xsrl>.pid no longer matches and cleans old
stamps on refresh (BOA.sh.txt:1097) — so a tool change without a
same-commit fNN serial change at its BOA.sh.txt call site is invisible to
the fleet. Files under lib/ ride the release version serial instead.
Second, the backend PHP floor is old: the PHP-CLI options in
lib/settings/barracuda.sh.cnf still include 5.6, so Provision/Hosting/Drush
PHP must stay parse- and behaviour-safe far below current syntax.
The non-negotiables, each grounded in the tree:
| Contract | Ground truth |
|---|---|
PRs target the default branch; release lines (5.x-lts/5.x-pro, -base, -edge) are maintainer-managed promotion branches |
origin/HEAD → 5.x-dev on omega8cc/boa |
Every bug report links a boa info Gist |
docs/CONTRIBUTING.md; _display_info() at aegir/tools/bin/boa:2384, dispatch boa:3038 |
| One logical change per PR, single-concern commits | -base promotion is selective; a mixed commit cannot be cherry-picked cleanly |
fNN serial bumped in the same commit as any fetched-tool change |
_fetch_versioned() BOA.sh.txt:1056; stamp cleanup :1097 |
Bash: two-space indent, no tabs, quoted "${_VAR}" expansions, _SNAKE_CASE script vars, lowercase_with_underscores functions, ShellCheck-clean |
house style throughout BOA.sh.txt/BARRACUDA.sh.txt/OCTOPUS.sh.txt + lib/; justified inline # shellcheck disable= only (BOA.sh.txt:1071) |
Output via _msg with INFO:/NOTE:/OOPS:/ERROR:/FATAL ERROR: prefixes in main scripts and lib/functions/; standalone aegir/tools/bin/ tools define their own local _alrt/_die |
_msg() lib/functions/helper.sh.inc:16; e.g. clearwebbans:55-56, renameaegirhost:84 |
master.sh.inc and satellite.sh.inc are deliberate parallel copies — mirror a fix into both, never DRY them into one |
never co-loaded: BARRACUDA.sh.txt:275 sources master, OCTOPUS.sh.txt:266 sources satellite |
| Fork PHP holds the 5.6 floor — no post-5.6 syntax, no silently divergent runtime behaviour | PHP-CLI version options include 5.6, lib/settings/barracuda.sh.cnf |
Shell commands built in PHP: escapeshellarg() at the caller; the transit layer is a backstop that refuses \n/\r/NUL |
Provision_Context_server::shell_exec(), Provision/Context/server.php:164-173 |
Caller-supplied paths and SQL identifiers in bash pass the safe-value helpers, never raw chmod/chown or string-built SQL |
_is_safe_ident aegir/tools/system/mysql_cleanup.sh:113; _validate_path_prefix/_chmod_safe aegir/tools/bin/fix-drupal-platform-permissions.sh:31,47 |
Pages in this topic
- Contributing to BOA — the mechanics: where to file (the
omega8cc/boaqueue is the single tracker for the whole stack, forks included), what separates an actionable bug report from a closed one (boa infoGist,_DEBUG_MODE=YEScapture, log locations), per-repo PR targets, what gets a PR merged instead of reworked (single-concern commits, serial bumps, the PHP floor), private security disclosure, and what the promotion pipeline does with a merged change. - Code style & conventions — the enforceable contract: bash layout, naming, quoting and the output-helper/locking exemplars, ShellCheck discipline, the hard PHP 5.6 floor with the forbidden-syntax list, the shell-escaping and safe-value-helper contracts, commit style, and the pre-submission checklist.
Adjacent developing topics
- Maintainer overview & fork model — the repo set these rules apply to, the sourced library layout, and why omega8cc is upstream.
- Release model & SKYNET pipeline — the branch/tag promotion path and the serial mechanics in full: what a tag triggers on deployed fleets.
- Build & test — how to verify a change before the PR: local checks and the disposable-VM install/upgrade gate.
Reference
- Variables and Commands — the consolidated knob and CLI tables cited from both leaves.
- Discontinued features — retired subsystems and legacy queues old bug reports still reference.