Tech Stack for NLPg-Driven AI-Assisted SDLC
A language-first SDLC design: from intent and compiled instruction to governed execution, validation, and delivery.
Key takeaways
- Vibe coding optimizes for local speed. NLPg SDLC optimizes for reliable delivery over time.
- In NLPg, language is the primary artifact and code is an execution artifact.
- The differentiator is not model choice. It is instruction quality, policy gates, and traceability.
- If the method does not reduce ambiguity, defect rate, and rollback frequency, it is still a concept, not a system.
This document defines a staged, method-aligned stack for NLPg-driven AI-assisted SDLC. The goal is to move from “prompt to deploy” toward a repeatable flow: intent, structure, execution, validation, and governed change. If you want the higher-level framing behind this page, start with Dual NLP for AI-assisted SDLC, then return here for the stack design.
Act I: The fundamentals
Why this is not vibe coding
The distinction is not semantic. It changes where engineering control lives.
| Approach | Flow | Primary optimization | Main failure mode |
|---|---|---|---|
| Vibe coding | Prompt -> Generate -> Ship | Local speed | Hidden assumptions ship to production |
| Surface AI-assisted SDLC | Prompt -> Code -> Fix -> Deploy | Code throughput | Governance arrives late, after behavior exists |
| NLPg-driven SDLC | Language -> Logic -> Structure -> Execution -> Validation -> Governance | Reliability over time | Overhead if teams skip compiler and gates |
In NLPg, language is not ad hoc input. It is a structured interface for system behavior. That places language above code in the design pyramid: intent first, implementation second.
Altitude analogy: blueprint vs bricklaying
A useful analogy is construction. Bricklaying speed matters, but a faster crew cannot rescue a bad blueprint.
- Vibe coding treats the request like a sketch on a napkin and optimizes how quickly the wall appears.
- NLPg treats the request as a blueprint with load assumptions, safety constraints, and inspection checkpoints.
Another analogy is air traffic control.
- The pilot is execution.
- Air traffic control is governance.
- Weather radar is validation.
- The flight plan is the instruction spec.
Without the plan and checkpoints, takeoff is fast and arrival is uncertain. This is also why Prompting Is Not the Skill You Think It Is matters: prompting is only useful when it feeds a repeatable runtime instead of acting as a one-off trick.
The NLPg SDLC loop
- Intent
- Instruction spec
- Compilation
- Execution
- Validation
- Approval
- Delivery
- Telemetry back into learning
Most software failures begin before code: ambiguity, hidden assumptions, and unstated constraints. NLPg reduces this by forcing intent into machine-interpretable structure before any file is changed.
Instruction spec as contract
The minimum contract for safe execution is explicit and versionable.
objective: Add role-based access control for dashboard
inputs:
- routes
- api_handlers
constraints:
- do_not_modify_billing_routes
- preserve_existing_session_model
acceptance_criteria:
- unauthorized_users_receive_403
- role_persisted_in_users_table
risk:
category: auth-change
level: high
approval_gates:
- before_db_migration
- before_middleware_deploy
rollback:
- revert_migration
- revert_middleware
Act II: The modern paradigm
Staged rollout plan
You can stage this method from documentation to runtime without overbuilding early.
| Stage | Goal | Core deliverables | Signal of readiness |
|---|---|---|---|
| Stage 0: Documentation-only method | Make the process usable manually | Spec format, risk taxonomy, approval gates, work-note format, examples | Two humans produce similar plans from the same intent |
| Stage 1: GitHub template repo | Create a reproducible baseline | Next.js + Supabase + Stripe + Resend + CI + policy rules + demo flows | New contributors can run the full loop in one day |
| Stage 2: CLI system | Turn method into executable workflow | Spec validation, plan compilation, approval checks, ledger, PR context | High-risk changes are auto-paused without manual policing |
| Stage 3: SaaS layer | Enable team-wide adoption | Spec UI, approval queue, policy UI, ledger browser, roles/permissions | Non-dev stakeholders can approve with full context |
| Stage 4: Agent runtime and integrations | Embed in existing work loops | GitHub app, Slack gates, preview deploy hooks, telemetry integrations | Workflow runs where teams already collaborate |
Stack layers, method-aligned
The familiar execution stack still matters. It moves down the hierarchy while language and policy move up.
| Layer | Purpose | Artifacts and tools | Quality question |
|---|---|---|---|
| Layer 1: Intent and instruction | Convert request into clear constraints | instruction.yaml, plan.yaml, JSON Schema or Zod | Do we know exactly what success and failure mean? |
| Layer 2: Execution | Generate and apply change safely | Next.js, Supabase, Stripe, Resend, Vercel | Can the change be reproduced by another agent or engineer? |
| Layer 3: Governance and approvals | Pause risky actions intentionally | Risk classification, policy rules, approval checkpoints | Who is accountable for high-impact decisions? |
| Layer 4: Validation and evaluation | Verify behavior before merge | Schema checks, diff checks, tests, secret scanning, dependency checks | What objective evidence supports merge confidence? |
| Layer 5: Delivery and telemetry | Ship and learn from production | CI checks, preview deploys, telemetry feedback into spec and policy | What feedback updates next run quality? |
Workflow diagram: intent to governed delivery
Mindmap: NLPg system surface
Act III: Principles in practice
Governance primitives
To keep NLPg operational, four primitives are non-negotiable.
- Instruction schema: objective, inputs, constraints, acceptance criteria, risk, rollback.
- Prompt compiler: natural language to structured execution plan.
- Execution ledger: what changed, why, risk score, approvals, validation outcomes.
- Validation harness: lint, schema validation, tests, static risk checks before merge.
This is where many teams stall. They add an agent runtime before they define policy grammar. The result is automated output without accountable control.
Risk gate matrix
| Risk category | Examples | Mandatory gates | Minimum validation |
|---|---|---|---|
| auth-change | role model, middleware, token/session flow | Before DB migration, before middleware deploy | access matrix tests, regression on protected routes |
| billing-change | Stripe webhook, entitlement checks, pricing logic | Before webhook deploy, before entitlement enforcement | signature verification tests, replay protection checks |
| db-migration | schema change, destructive update | Before migration apply in staging and production | migration dry-run, rollback rehearsal |
| external-api | new provider call, data egress change | Before secret registration and live traffic | contract tests, timeout and retry behavior |
Workflow example A: RBAC (auth risk)
Instruction spec
objective: Add role-based access control for dashboard
scope:
- dashboard_routes
- api_route_handlers
roles:
- admin
- editor
- viewer
constraints:
- do_not_change_billing_routes
- preserve_session_model
acceptance_criteria:
- unauthorized_users_receive_403
- role_stored_in_users_table
risk:
category: auth-change
level: high
approval_gates:
- before_db_migration
- before_middleware_deploy
rollback:
- revert_migration
- revert_middleware
Compiled plan
- Add
rolecolumn tousers. - Add role seed and defaults.
- Add dashboard middleware gating.
- Add API authorization checks.
- Add access-matrix tests.
- Verify no impact to billing routes.
Gate behavior
The run halts before migration and middleware deploy. The ledger stores risk category, approver identity, and validation traces.
Workflow example B: Stripe billing (billing risk)
Instruction spec
objective: Add subscription billing using Stripe
constraints:
- no_secrets_committed
- verify_webhook_signature
acceptance_criteria:
- subscription_status_stored_in_db
- premium_routes_gated_by_entitlement
risk:
category: billing-change
level: high
approval_gates:
- before_webhook_deploy
- before_entitlement_enforcement
rollback:
- disable_webhook
- revert_entitlement_middleware
Compiled plan
- Install Stripe SDK.
- Create
subscriptionstable. - Implement webhook endpoint with signature verification.
- Update entitlement state on webhook events.
- Gate premium routes.
- Add tests for verification and entitlement checks.
This is the practical break from vibe coding: billing changes are treated as high-risk operations with mandatory controls.
Operating metrics for this method
A method is real only if outcomes move.
| Metric | Why it matters | Target trend |
|---|---|---|
| Spec completeness score | Measures ambiguity before execution | Upward |
| Approval bypass incidents | Detects governance drift | Downward |
| Rollback frequency (high-risk changes) | Shows production quality under risk | Downward |
| Mean lead time from spec to merge | Balances control with throughput | Stable to downward |
| Post-merge defect rate | Core quality outcome | Downward |
Template repo shape
nlpg-sdlc-template/
docs/
method/
01-intent-to-spec.md
02-spec-schema.md
03-risk-taxonomy.md
04-approval-gates.md
05-ledger-format.md
06-validation-harness.md
examples/
rbac.md
stripe-billing.md
nlpg/
schemas/
instruction.schema.json
plan.schema.json
ledger.schema.json
policy/
policy.yaml
specs/
plans/
ledger/
app/
supabase/
migrations/
.github/
workflows/
ci.yaml
Minimal CLI surface
nlpg init
nlpg spec new
nlpg spec validate
nlpg plan
nlpg run
nlpg gate
nlpg ledger view
nlpg pr create
A practical storage model is file-first: specs and plans as YAML, ledger as append-only JSONL.
What this changes in practice
NLPg-assisted SDLC changes your engineering center of gravity. The differentiator is no longer how fast code appears. It is how reliably intent becomes governed, verifiable change.
Treat language as contract, compilation as control, and governance as default. Speed then compounds instead of amplifying risk.