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:
- Domain model โ the governed nouns it manages (
grievance.complaint,finance.payment, โฆ). - Operations โ each a governed verb acting on a noun via a transition (e.g.
lifecycle.request ยท grievance.complaint ยท file). - Workflows, business rules, roles, apps, and acceptance criteria (executable GIVEN/WHEN/THEN).
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:
- Service layer โ spec-first. Schemas, interfaces, workflows, rules and roles are declared in the spec and governed centrally.
- Component internals โ code-first. You write ordinary Python against
ctx;aos checkderives the component's contract (reads / writes / egress / scopes) from the code.
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.
- 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.)
- 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.)
- Certify โ conformance + the clean-room checks.
- Compose & install into your sandbox.
- Run & observe.
- Reconcile โ spec elements flip
roadmap โ builtwith 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
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.