Skip to content
โ—‡ AirawatOS Developer
๐Ÿšง Under development โ€” this portal is being built track by track. Content will keep growing, and some sections are still placeholders.

Build ยท AI-native SDLC

AI-native SDLC โ€” spec-driven development

On AirawatOS you don't hand an AI a blank repository and hope. You author one governed artifact โ€” a Service Specification โ€” and agents generate, certify and reconcile a running service against it. Because the AI generates into a narrow, governed space (a shared vocabulary of nouns and verbs, certified components, one interaction spine, and a constitution), what it produces is far more likely to be correct โ€” and every claim is checkable.

Why this is reliable

Most AI code generation fails because the target is unbounded โ€” any name, any shape, no contract, no way to tell right from merely plausible. AirawatOS inverts that. Generation is boxed in by four rails:

Governed vocabulary

Only nouns and verbs that the network already governs. The AI reuses them; it never invents a file-grievance.

Certified components

Reuse what exists; the only I/O is the kernel broker. A narrow surface, not a blank canvas.

One interaction spine

A handful of generic lifecycle verbs โ€” request / decide / update / withdraw / status โ€” carry the domain in the record + workflow, not in bespoke plumbing.

A constitution

House rules (attributed writes, human-decides, governed vocabulary, โ€ฆ) inherited by every generation as non-negotiable constraints.

The Service Specification is the source of truth

A human authors one artifact โ€” a governed platform.service_spec โ€” that declares the service, not the code:

Every element carries a status (built / roadmap) and an impl: pointer to the governed id that realizes it โ€” or null when nothing does yet. The spec is both the plan and the live map of what's been built.

Stratified: spec-first and code-first

Two layers, meeting at a seam:

They meet at conformance (next) rather than one dictating the other.

Conformance is the reconciliation seam

The declared contract (the spec) is checked against an independently derived / tested view at certify time. Implementation and its check can't share a misunderstanding, so a plausible-but-wrong component is caught. Acceptance criteria become executable conformance tests; authoring-time checks (e.g. every operation must bind to a governed verb) catch drift even earlier.

The loop, and who drives it

You stay in control at every gate โ€” the AI writes, the human enacts.

  1. Author a spec โ€” describe (or upload) a brief; the assistant refines it; Compile turns it into a governed spec; you review and Govern it. (Studio โ†’ Contracts โ†’ โœ๏ธ Author a spec.)
  2. Generate โ€” pick a spec + a target; the Solution Architect scaffolds the component, grounded in the spec's reads/writes, the acceptance criteria, and the constitution. (A component's โœจ Generate with AI.)
  3. Certify โ€” conformance + the clean-room checks.
  4. Compose & install into your sandbox.
  5. Run & observe.
  6. Reconcile โ€” spec elements flip roadmap โ†’ built with the id of what realized them; a change-request loops back to the author step.

Two front doors onto the same pipeline: Studio (in the browser) and the aos CLI (code-first).

A tiny example

Say a resident wants to report a broken streetlight. You don't invent anything โ€” you describe the service in plain words, and it compiles to governed pieces:

Brief (what you type): "A resident files a grievance about a civic issue; an officer resolves or rejects it; the resident can track it or withdraw it."

Compiles to (service spec, abridged):

noun    grievance.complaint                              the record
roles   civic.resident ยท civic.grievance-officer

operations
  lifecycle.request   ยท grievance.complaint ยท file       resident files it
  lifecycle.decide    ยท grievance.complaint ยท resolve     officer resolves / rejects
  lifecycle.status    ยท grievance.complaint ยท track        anyone tracks it
  lifecycle.withdraw  ยท grievance.complaint ยท withdraw     resident withdraws it

Notice there is no file-grievance verb. "Filing" is the governed lifecycle.request verb acting on the grievance.complaint noun โ€” the domain lives in the noun, not in a bespoke verb. From this spec, Generate scaffolds the component that implements each operation, and conformance checks it against the acceptance criteria. Change the brief ("add a priority", "route by ward") and you re-compile โ€” the spec stays the single source of truth.

What's live today

Live: โ— platform.service_spec governed + instances (Property Tax, Basic ERP) โ— Studio: Author a spec โ†’ Compile โ†’ Govern โ— Generate a component from a spec target โ— Governed-verb validation at compile โ— Constitution + traceability graph โ—‹ Constitution as an active certify gate โ€” in progress

Honest note: the LLM's draft โ€” of a spec or of code โ€” is always a starting point you review, never blind-accepted. The reliability comes from the governed space it generates into and the conformance that checks it, not from trusting the model.