These docs track main. Latest release: v1.0.0.

antigravity-booster
Project

ADLC in this repo

How antigravity-booster applies the ADLC to itself: tickets, frozen rails, CI self-protection and archive-on-merge.

agb exists to apply the Agentic Development Lifecycle (ADLC) to other repositories, and this repository follows it too. The rules for contributors and agents are in AGENTS.md. This page explains how they are enforced.

Tickets come first

Non-trivial work starts as a ticket in the .adlc/tickets/ directory store, one file per ticket, created with adlc ticket create. A ticket names its scope (paths it may change), its rails (paths that must not change while it is open) and its edges (dependencies). See Rail enforcement for how agb uses these fields.

Frozen rails

The rails of every active ticket are combined, and those paths are frozen. Two layers enforce this:

  • In session: the PreToolUse policy guard blocks edits to frozen paths before they happen (Policy guard).
  • In CI: adlc-rails-guard.yml runs on every pull request. It runs adlc rails-guard against the rails declared by active tickets on the trusted base branch, so a write the hook missed is still rejected.

Rails come only from the rails arrays of active tickets; no path is frozen automatically. By convention, AGENTS.md names lib/lock.mjs (merge-lock correctness) and lib/gates.mjs (sandbox enforcement) as standing candidate rails: treat them as read-only unless a ticket's scope covers them, and declare them in a ticket's rails to have them enforced. To check a change locally, run adlc rails-guard --base <ref> --rails <globs>.

CI reads rails from the .adlc/tickets/ directory store since #87 (scripts/rails-guard-ci.mjs), which landed after v1.0.0. At v1.0.0 the workflow read only the legacy .adlc/tickets.json.

CI protects itself

A pull request runs the workflow files from its own branch, so a PR could otherwise disable the gate that checks it. Three things prevent this:

  • CODEOWNERS assigns .github/workflows/**, the bundles, hooks, .adlc/** and the ADLC bridge files to the owner. Per AGENTS.md, branch protection on main requires Code Owner review and applies to admins too (a repository setting, not something in the code).
  • The rails-guard job treats .adlc/config.json, CODEOWNERS and its own workflow and script as fixed trust roots (adlc-rails-guard.yml#L384).
  • ci.yml rebuilds dist/ and vendor/ and fails if they differ from the committed copies. It also checks that the vendored @adlc/antigravity tarball is byte-identical to the npm release (ci.yml#L115).

Only a person may set the acknowledgedNewRailBypass and trustedCodeownersAttested fields in .adlc/config.json, and only after explicitly confirming that exact change. An agent never sets them.

Prosecution before done

A change counts as done only with evidence. That means npm test output (run it and show the result; these docs deliberately quote no fixed test count, because it changes with every PR (C30)), adlc hollow-test for changes under lib/, and gate records added with adlc gate-manifest record. See Prosecution and Gate evidence.

Archive on merge

The ticket store holds only active work. In the CI gate, a completed ticket's rails no longer count, but they still block edits in session until the ticket is archived. After a ticket's PR merges, a follow-up chore PR runs:

npx adlc ticket complete <id> --write --authorize
npx adlc ticket archive <id> --write --authorize

The CI gate allows a PR to make only these changes to existing base tickets: mark one completed: true, or move it to .adlc/ticket-archive/ (rails-guard-ci.mjs#L180). Merging to main is always a person's decision.

On this page