The first phase a client can actually use. Ask a question in plain language; the system picks a query, runs it against the graph, solves the schedule with a constraint solver, and lets the local LLM write the sentence around results it is not allowed to invent. Every number is substituted, never generated. Every claim carries a fact ID.
Milestone M3 is not achievable on its current date. The earliest feasible completion is 20 June 2026, which is 9 days beyond the committed date gbx:event10042.
The driver is a vendor deliverable that slipped three weeks gbx:event9981. It sits on the critical path through PROJ-142, so its slack is negative and no resequencing of the remaining tasks recovers the date solve:cpsat-4471.
Note that this slip was true from 28 April but only reached the system on 6 May, three days after the go decision gbx:event9981.
✓ 3 of 3 claims cited · citations verified against source factsPhase 0's foundation gets its first four consumers: structured retrieval, the constraint solver, a tightly bounded LLM, and the interface a client actually touches. The canvas and full GraphRAG come later.
Answer console, critical-path Gantt, as-of slider, proof explorer v1. React · frappe-gantt
newTwo jobs only: pick a query template from the question, and narrate results with enforced citations. LM Studio · temp 0
newClient-specific rules arrive next phase. React Flow
phase 2Critical path, slack, resource-levelled projection, what-if scenarios. OR-Tools
newA library of about 30 parameterized SPARQL templates. Vectors and prose come in Phase 3. SPARQL 1.1
partialBuilt in Phase 0, now queried in anger. Oxigraph
runningNow also logs every question, query, solve, and model call. PostgreSQL
runningUnchanged from Phase 0. webhooks + backfill
runningPhase 1 is where your team can start asking questions in ordinary English and getting answers they can defend. It adds four things to the foundation: a library of the questions project managers actually ask, a scheduling engine that works out what is genuinely on the critical path, a local AI that writes the answer, and a screen that shows the working behind every claim.
This is the phase that wins or loses the business case, because it is the first time anyone outside the build team sees value.
Read the diagram left to right and the design argument is visible: the language model sits in two small amber boxes at the edges, and everything that produces a number, a date, or a comparison sits in the deterministic band between them. The dashed line is the boundary that agent products do not have.
This is the most important picture in the whole proposal. The amber boxes are the AI. They appear only at the two ends: understanding what you asked, and phrasing the reply. Everything between them, every date, comparison and calculation, happens in the deterministic middle band.
Put bluntly: the language model is never given a calculator, a calendar, or a decision to make. It receives finished figures and writes prose around them. If the model has a bad day, the sentence reads oddly. The number is still right.
The boundary is the whole design: the LLM chooses which question to ask the graph and writes prose around the result. It never computes, compares, or dates anything.
About 30 parameterized SPARQL queries covering the questions PMs actually ask. Template-first beats free-form generation, and every query is shown before it runs.
SPARQL 1.1Resource-aware critical path, slack, and earliest feasible dates. Classic CPM without resource constraints misidentifies critical tasks, so we never use it.
OR-Tools (Apache-2.0)The model writes only from retrieved facts, and every sentence must carry fact IDs. Numbers are substituted from query results after generation.
local LLM · temp 0A post-hoc check that each cited ID exists and supports its claim. Uncited or unsupported sentences are flagged or dropped before display.
NLI-style checkCritical path and slack overlays, redrawn from historical graph state as the slider moves. Time-scrubbing a schedule is the demo people remember.
frappe-gantt (MIT)Click any claim to unfold facts, queries, solver runs, source events, and both timestamps. Ugly is acceptable in v1; complete is not optional.
PROV-O traversalTwo of these deserve attention. The scheduling engine is the same class of technology used in industrial planning: it accounts for who is actually available, rather than assuming unlimited resources. That is why its view of the critical path can differ from your current tool's, and usually why it is right.
The citation checker is the other. It is an automated referee that reads the AI's answer and deletes any sentence it cannot trace to a record. You only ever see the sentences that survived.
Five stages, and the language model touches only the first and the fourth. Everything load-bearing happens in between.
The model classifies intent and fills parameters. The chosen query is shown to the user.
Exact, deterministic results, scoped to the selected as-of date and clock.
Critical path, slack, feasible dates. Every number in the answer originates here.
The model writes prose around the results and must cite each claim.
Unsupported sentences are flagged or removed. Then the answer is shown.
You ask something. The system decides which of its known question types you meant and shows you the query it is about to run. It fetches exact records, calculates the schedule, hands the finished figures to the AI to phrase, then checks that phrasing against the records before displaying it.
The guardrails listed underneath are contractual commitments, not aspirations. Every prompt, every reply, and the exact model version are stored, so an answer given today can be reproduced and explained years later.
This is the phase that wins deals, so its acceptance bar is the sales demo itself.
The acceptance test is a specific scenario run on your own data. We take a status report your team received on a past date, regenerate it exactly, then switch to the other clock and reveal the facts that were true that morning but had not yet reached anyone. Finally we open one claim and follow it down to the original ticket.
No competing product can perform this demonstration, because their reasoning happened in a context window that no longer exists.