← BACK TO HOME/ FIELD GUIDE 002

AI can write code.
Who makes it trustworthy?

A practical distinction between using AI as an engineering tool and deploying software you haven't meaningfully verified.

01 / TERMS MATTER

“Vibe coding” and AI-assisted engineering aren't necessarily the same practice.

The phrase vibe coding is often used for a hands-off approach: prompting an AI, accepting the result and moving on with limited understanding of the implementation. In everyday conversation, people also use it more broadly for almost any AI-assisted coding.

That ambiguity makes the argument less useful. A person who blindly ships generated code and a person who specifies, verifies and maintains AI-assisted code may use the same tools, but their engineering practices are different.

Explanation level
How it works · Your choice is saved across lessons

AI can generate code quickly, but the developer still has to understand the product, verify requirements and check failure cases. Blindly accepting output is different from responsibly using AI as a tool.

The principle: Judge software by the quality of its design, evidence and maintenance, not only by who typed the source code.
02 / A HARD EXAMPLE

A working interface can conceal a broken permission boundary.

Imagine a dashboard that correctly loads your own account. A browser test passes. But the backend accepts any account ID without verifying ownership. Someone can request another user's records directly from the API.

Explanation level
How it works · Your choice is saved across lessons

A dashboard can look correct while its API allows one account to read another account's records. A strong test must sign in as a different user and confirm the server denies access, not just check the webpage.

Visual checks and happy-path end-to-end tests will not necessarily detect that vulnerability. You need negative tests, server-side authorization enforcement, and review of the code or its equivalent trusted implementation evidence.

×Weak validation

“I can log in and the dashboard looks correct.”

✓Stronger validation

“A second user is denied access to this record even with a direct API request.”

Architecture graphs and automated agents can make review more efficient, but they cannot independently prove security merely by visualizing a system. Sensitive paths sometimes require direct source review and adversarial tests.

03 / A BETTER LOOP

Prompt. Generate. Prove. Improve.

01

Specify

Write down the behavior, security boundaries, failure cases and acceptance criteria before generating code.

02

Generate

Use AI to draft an implementation. Treat every generated diff as a proposal, not as proof of correctness.

03

Inspect

Examine architecture and data flow. Review risky code paths such as authentication, authorization, secrets, payments and migrations.

04

Verify

Run unit, integration and end-to-end tests, plus negative authorization cases and independent security checks.

05

Review

Confirm the implementation meets the original criteria. Don't rely solely on tests generated from the same mistaken assumptions as the code.

06

Deploy and observe

Release with monitoring, error reporting, recovery and rollback. Production feedback is not a substitute for pre-release checks.

Explanation level
How it works · Your choice is saved across lessons

A safe development loop starts with requirements, uses AI to help implement them, then verifies the code with reviews, automated tests, security checks and real-world monitoring. Failures go back through the loop.

If a check fails, go back to the implementation, change it and rerun the relevant checks. The loop is valuable because it produces evidence, not simply because it repeats.

Important: “All tests pass” only means that the specific tests passed in that environment. Coverage gaps, correlated mistakes and real-world failures are still possible.
04 / INDEPENDENT REFERENCES

Standards beat slogans.

BACK TO THE MECHANISM

Now watch a network calculate.

Open the playground ↗