Skip to content

docs: a documentation site at openblox.sh - #14

Merged
Lutherwaves merged 2 commits into
mainfrom
docs/site
Aug 13, 2026
Merged

docs: a documentation site at openblox.sh#14
Lutherwaves merged 2 commits into
mainfrom
docs/site

Conversation

@Lutherwaves

Copy link
Copy Markdown
Member

Closes #13.

Everything lived in README.md and ARCHITECTURE.md, which were carrying the pitch, the quick start, the security model and the limitations at once — for audiences that want quite different things.

The site

Page What it is for
Home the pitch, and what openblox is not
Quick start prerequisites, install, exec/files/processes/previews, the defaults table
Security model threat model, what isolates it, what is not claimed
The image contract the three things an image must provide
Contributing the short version, plus how to work on the docs

Two pages worth reviewing properly

The security model gets its own page rather than a README section, because it is the page that decides whether someone adopts a sandboxing library. It states what is isolated and how — and the part usually left out: gVisor is not a hypervisor, side channels are not addressed, revocation is best-effort, capacity planning is yours. It also names the caller as the weakest link in a default deployment and links #2 and #6.

The image contract was folklore that surfaced as a broken preview. It is now written down: a shell, a non-root USER, and nc-or-python3.

Deploy

  • pull request → build only, no deploy, so a broken docs build is a red check rather than a broken site
  • main → build and deploy to Pages
  • mkdocs build --strict turns a dead internal link or a page missing from the nav into a failure instead of shipping it

Emits llms.txt and llms-full.txt — a large share of readers are agents, and this project's subject matter is running the code they write.

Verified

Built locally with the exact command CI runs (mkdocs build --strict): clean, CNAME ships in the artifact, both llms files generate. Every pinned action SHA checked to resolve.

DNS and Pages are already configured — apex A records point at GitHub (grey-clouded so the certificate can issue), www is a CNAME to blox-eng.github.io, and the custom domain is bound. Merging this is what puts content behind it.

Deliberately not doing

No mike versioning. At one released version it is gh-pages complexity for nothing; easy to add when there is a v0.2 whose docs differ.

Everything lived in README.md and ARCHITECTURE.md, which were carrying the
pitch, the quick start, the security model and the limitations at once
for audiences that want different things.

Five pages, built with mkdocs-material and deployed to GitHub Pages:
home, quick start, security model, the image contract, contributing.

The security model gets its own page rather than a README section,
because it is the page that decides whether someone adopts a sandboxing
library. It states the threat model, what is isolated and how, and — the
part usually left out — what is NOT claimed: gVisor is not a hypervisor,
side channels are not addressed, revocation is best-effort. It also names
the caller as the weakest link in a default deployment and links the two
issues tracking that.

The image contract was folklore that surfaced as a broken preview. It is
now a page: a shell, a non-root user, and nc-or-python3.

CI builds on pull requests without deploying, so a broken docs build is a
red check rather than a broken site. `mkdocs build --strict` turns a dead
internal link into a failure instead of shipping it.

Emits llms.txt: a large share of readers are agents, and this project's
subject matter is running the code they write.

Docs are markdown in the repository, so a behaviour change and its
documentation move in the same pull request.
main now requires Lint, Test, Integration Tests and the commit-message
check to pass before merge. A skipped check never reports a conclusion,
so with paths-ignore in place a docs-only pull request would sit forever
with four required checks pending and no action available to its author.

Dropping the filter costs a couple of CI minutes on documentation
changes. A category of pull request that silently cannot land costs more.

Side effect worth knowing: Release fires on green CI, so it now also runs
for docs-only commits. It is a no-op there — `docs:` does not bump a
version under conventional commits — but it will appear in the run list
where it previously did not.
@Lutherwaves
Lutherwaves merged commit 777f823 into main Aug 13, 2026
6 checks passed
@Lutherwaves
Lutherwaves deleted the docs/site branch August 13, 2026 09:57
@Lutherwaves Lutherwaves mentioned this pull request Aug 13, 2026
Lutherwaves added a commit that referenced this pull request Aug 17, 2026
* docs: a documentation site at openblox.sh

Everything lived in README.md and ARCHITECTURE.md, which were carrying the
pitch, the quick start, the security model and the limitations at once
for audiences that want different things.

Five pages, built with mkdocs-material and deployed to GitHub Pages:
home, quick start, security model, the image contract, contributing.

The security model gets its own page rather than a README section,
because it is the page that decides whether someone adopts a sandboxing
library. It states the threat model, what is isolated and how, and — the
part usually left out — what is NOT claimed: gVisor is not a hypervisor,
side channels are not addressed, revocation is best-effort. It also names
the caller as the weakest link in a default deployment and links the two
issues tracking that.

The image contract was folklore that surfaced as a broken preview. It is
now a page: a shell, a non-root user, and nc-or-python3.

CI builds on pull requests without deploying, so a broken docs build is a
red check rather than a broken site. `mkdocs build --strict` turns a dead
internal link into a failure instead of shipping it.

Emits llms.txt: a large share of readers are agents, and this project's
subject matter is running the code they write.

Docs are markdown in the repository, so a behaviour change and its
documentation move in the same pull request.

* ci: run CI on every pull request, without path filters

main now requires Lint, Test, Integration Tests and the commit-message
check to pass before merge. A skipped check never reports a conclusion,
so with paths-ignore in place a docs-only pull request would sit forever
with four required checks pending and no action available to its author.

Dropping the filter costs a couple of CI minutes on documentation
changes. A category of pull request that silently cannot land costs more.

Side effect worth knowing: Release fires on green CI, so it now also runs
for docs-only commits. It is a no-op there — `docs:` does not bump a
version under conventional commits — but it will appear in the run list
where it previously did not.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Documentation site

1 participant