Skip to content

Portable shell

Portable shell

majordomus://rule/project.portable-shell@1active shellportability

it references

Nothing. This object declares no reference.

Rationale

The tool runs on the machine the repository is on, which is a Mac as often as a Linux host; a construct that works on one and not the other is a bug that shows up only where nobody is looking.

Required behaviour

bash 3.2 and BSD userland are the floor: no associative arrays, no mapfile, no GNU-only flags, and shellcheck -x -s bash passes on every script.

Failure behaviour

No command decides this rule; a reviewer does, and a change that violates it is not merged. Where a behavioural case covers part of it, that case is named below.

Verification

Review. shellcheck -x -s bash -S warning bin/majordomus lib/*.sh test/run.sh test/lib.sh test/cases/*.sh runs in CI (.github/workflows/validate.yml) and test/cases/08_no_forbidden_constructs.sh scans for the constructs SECURITY.md forbids.

Where this comes from

canonical file
.ai/repo/rules/project/portable-shell.v1.md
identity
project.portable-shell@1
also served as
MCP resource majordomus://rule/project.portable-shell@1 · majordomus entity show rule/project-portable-shell-1 · GET /api/v1/entity?uri=majordomus://rule/project.portable-shell@1
in the Cockpit
/cockpit/objects/rule/project-portable-shell-1

This page is generated from the file above by scripts/generate-site-data; editing the page changes nothing, editing the file changes every surface. The relations above are edges of docs/generated/graph.json, which the executable writes from the same index.

Searches the titles and descriptions of every page this site publishes.