Building a foundation sizing tool where the AI part doesn't get to pick anything
It organizes the request, asks questions, looks up methods. The engineer OKs every assumption and the math runs in deterministic, tested code
Missing data stays pending, never passes by default
What the API for my foundation design tool looks like so far. Column, soil and materials in. Footing size, rebar and the checks out
Still in development, but it runs the same engine as the app. Engineer review comes back as not reviewed until a person does it
Every change in the foundation tool that moves a number the user sees, or flips pass, fail or pending, ships with a decision file in the same commit
Context, sources, decision, alternatives, effect, how it was checked. Agent-made calls need independent review before merge
An optional input in the foundation tool showed 0 on screen while the engine got undefined. The check that used it just disappeared and the footing could pass
A half-filled pair stays pending now. In the repro, actually typing that 0 made the same footing fail
burned through all 2,000 free github actions minutes this weekend lol. lots of shipping, a bit of engineering, a bit of the action rpg i'm building. any open source ci you'd self-host on a vps?
A pile result has several checks and the screen shows one as the reason. It was picking a pending check even when a firm failure was in the same list
A sweep of 1296 inputs found 392 like that. A firm failure goes first now
Angular distortion in the foundation tool was only checked for the combination with the most settlement. A lighter one can be worse if the neighbor settles more
One case showed 1/1084 and passed. Real worst was 1/277, limit 1/300. Every service combination is checked now
The foundation tool's screen showed the first column as the load origin while the calc was using values typed by hand. Nothing passed because of it, but the screen named a source that wasn't true
Now it asks you to pick the origin and stays pending until you do
The foundation tool checked eccentricity per axis, each under 1/6. But the field promised full compression, and with eccentricity both ways the core is a diamond, eA/A + eB/B ≤ 1/6
Outside it, Navier was 7.7% low on edge pressure. One footing went from 180×200 to 230×250 cm
Besides the published examples, the foundation tool runs 200 random footings and 150 pile cases with a fixed seed and checks properties every result has to hold
One already failed. Vesić was approving with φ above 50°. Now anything outside the 0 to 50° table gets blocked
The hard part of my foundation calc tool isn't the math, that's deterministic tested code. It's getting the inputs right
Claude already reads soil reports and load sheets. GPT-6.1 Terra says it interprets technical drawings, so the column plan with its loads is my next test

ALT Screenshot of OpenAI's GPT-6.1 Terra announcement page. The title "GPT-6.1 Terra" is shown next to an image of Earth. Below it is the first paragraph, with the phrase "drafting proposals and interpreting technical drawings" highlighted. Source: openai.com/index/introducing-gpt-6-1-terra, 26 Oct 2026.
Every calc run gets an id from a sha256 of the engine version, the methods and the input
Same input, same id. Comparing two engine versions is basically a diff between runs
0.3 + 28 × 1.15 in JS is 32.49999999999999. Exact is 32.5
On a drawing's pixel height, that half rounds the wrong way: 56 instead of 57. Fix was toPrecision(12) before Math.round. 17 of 141 sample drawings moved by 0.1, all sitting on a half













