Gateway viewer

the call site asks for a task; config/model_policy.yaml picks the model

Document

Both boxes are sent, and both count — a hash names a document the parsing service already turned into text, and the model reads it exactly as it reads pasted text. Clear the box above to run on the parsed documents alone.

The result splits three ways: what the document says, what it omits (suggestions you accept or reject one by one), and what is too vague to state at all. Any entry in the first two lists can be revised: say what should change and the model rewrites that one entry, with the whole run in view — so it can tell you the thing you asked for is already requirement #3 rather than saying it twice. Untick the validators and run the same document twice to see what the semantic layer catches — and untick use cache first, or the second run comes back out of Redis for nothing and tells you so in the strip. Every stage here is cached on the hash of what it sends the model, so a reload or an identical retry is free; untick it to make the model answer again and replace what was stored. Pick a model with no vision or no schema support to watch the capability preflight reject it before any network call.

Result

Nothing run yet.

Ask — one question over all three contracts

Project name and purpose — stood in for the backend, sent with every question

The only stage that reads the requirement set, the design and the plan at once — which is what it is for: nothing else here can be asked which requirement caused the schedule to slip. Whatever this page currently holds is posted with the question, so the answer sharpens as you extract, synthesise and estimate; ask before any of that and you are told what does not exist yet rather than given a guess — except for the project's own name and purpose, which nothing here derives and which the real frontend should send on every turn. The document boxes at the top are read a second way here: not extracted but retrieved — chunked into passages and ranked against your question, because a specification is prose with no ids in it and may run to 800k characters. The strip under each answer says how many passages matched and how many were carried, and a quote from one is checked against the passage it names. The answer comes back already split into runs of prose and resolved references — each carrying what kind of thing it is, which part of the design it lives in, what it is called and a line about it — so a front end maps over segments rather than scanning a string. No indices, no counting: this page renders from that field with no pattern of its own. Hover an id below to see what came with it. No URL is returned, because routes belong to whoever owns them. Every id in an answer is checked against what was actually in the window — the prose as well as the citation list — so a model inventing CMP-009 earns a repair turn, and the strip below each answer says whether one was needed. Nothing here changes anything: the design, the set and the plan are read and never written.