Build and contribute
This page is for people working on the harness or on this site. The first part explains how the repository is organized and why the build has the shape it does. The second part is the procedure: clone, build, test and run the docs locally.
How the repository fits together
Forgejo is the canonical source and review location. GitHub mirrors source and hosts this documentation.
Two artifacts, two names. The Rust workspace builds a native executable named
airs-harness. Users do not run that directly. The npm package provides the
user-facing airs launcher, selects the native package for the host, and bundles
the product CLI. A source binary alone is therefore not the complete distribution:
it lacks the launcher and the bundled CLI.
Why sandbox tests can mislead. Linux sandbox tests need working Bubblewrap namespaces. If the probe is skipped, the sandbox behavior went untested, so a skip is not runtime acceptance.
Why the docs are partly generated. Command pages come from the Rust help
snapshots, and some guides come from repository files listed in sources.json.
Generating them keeps the site in step with the code. It also means generated
pages are ignored by Git and rebuilt on every site build, so an edit made directly
to one is lost on the next build. Builds reject broken internal links and anchors
for the same reason: the site is assembled from several sources, and a link that
worked in one place can break in another.
What the published site records. source.json in the published site records
its commit, source package versions and input hashes, so you can tell exactly what
a deployed site was built from.
Build and test
Clone the canonical repository:
git clone git@git-ssh.cdot.io:cdot/prisma-airs-harness.git
cd prisma-airs-harness
Read AGENTS.md for current repository conventions, the pinned Rust toolchain
and testing requirements. Build the native executable from the Rust workspace:
cd codex-rs
cargo build --locked --release -p codex-cli --bin airs-harness
./target/release/airs-harness --version
Use just test for Rust verification, scoped to affected crates, and just fmt
for formatting. Package contracts also exercise the npm launcher, immutable
release inputs and installed acceptance scripts.
Develop the documentation
cd docs-site
npm ci
npm run check
npm start
Install Chromium once with npx playwright install chromium before browser tests.
Edit authored guides under docs-site/docs. The site uses the SDK/CLI Gruvbox
palette, fonts, syntax theme, sidebar and collapsible on-page navigation.
npm run generate exports the guides selected in sources.json, rewrites source
links and creates command pages from the Rust help snapshots. When commands
change, update the Rust help snapshots through their owning tests. Do not
hand-edit generated reference pages. Browser tests cover every published route,
navigation, diagrams and mobile layout.
See deployment for the Forgejo check and GitHub Pages handoff.