About
Applied Physics
AI Solutions
Team Contact
PHASE 2 · THE CANVAS · 4–6 WEEKS

Your business logic, drawn instead of coded.

Capturing how a company actually runs projects is the hard part of every deployment. Phase 2 turns it into a drag-and-drop canvas: a delivery lead wires policy nodes together, and the canvas compiles to formal, versioned, provable rules. No prompts, no code, no consulting engagement.

GlassBox Rule Studio staleBlockerEscalation · draft v8
Nodes
Nodes
Inputs
JRJira source
CSCSV / SFTP
MPField mapping
Logic
IFCondition
Duration test
%Threshold / KPI
CALCalendar guard
Derive
RLRule
Outputs
ESEscalation
RPReport section
TKOpen ticket

Drag a node onto the canvas, or click it to drop one in. Drag from a right-hand port to a left-hand port to wire them.

✦ Copilot "escalate blocked tickets older than 3 days"
100%
Inspector
Inspector
Nothing selected
canvas

Click a node to edit it. Click a wire to remove it.

Compile checks
recompiles on every edit
✓ compiled 5 nodes · 5 wires as-of: transaction time rule changes recorded as events
End-of-phase demo A non-programmer encodes three real escalation policies on the canvas, dry-runs them against six months of project history, publishes one, and watches it fire in the proof explorer, with the rule version cited in the derivation.
01 · Where phase 2 fits

The stack after this phase

Phases 0 and 1 built the truth (events, graph) and grounded answers (queries, Gantt, proofs). Phase 2 adds the layer that makes GlassBox yours: authored judgment. Amber marks what is new in this phase; gray is already running; dashed is still ahead.

L7Presentation

Gantt, as-of slider, proof explorer. Phase 2 adds the rule editor screen. React

running
L6Local LLM · copilot

New job: propose canvas nodes from a plain sentence. Human wires and approves. LM Studio API

new
L5Business-logic canvas

The whole layer arrives: editor, palette, compiler, versioning, dry-run. React Flow → IR

new
L4Symbolic core · rules

Compiled rules execute to fixpoint; every firing is recorded as an event. SPARQL CONSTRUCT · SHACL

new
L3GraphRAG · full hybrid

Entity-linked vectors and community summaries arrive in Phase 3. pgvector · RRF

phase 3
L2Knowledge graph

RDF graph with PROV-O provenance, built in Phase 0. Oxigraph

running
L1Dual-clock EventDB

Append-only bitemporal store. Now also records rule versions and firings. PostgreSQL

running
L0Connectors · Jira

More connectors arrive in Phase 4. webhooks + backfill

running
The phase that makes it yoursexecutive briefing

Until now the system reports facts. Phase 2 lets it apply your judgement. Your definition of "at risk", your escalation ladder, your thresholds and your exceptions get drawn onto a canvas and enforced automatically from then on.

This is normally the part that fails. Companies pay consultants to document how they run projects, the document is out of date within a quarter, and nothing enforces it. Here the rule is the enforcement, and changing it takes minutes rather than a change request.

DurationFour to six weeks. The most valuable phase commercially, and the hardest to copy.
Who operates itYour delivery leads, not our engineers. That is the point, and it is tested as an acceptance criterion.
Why it defends the accountOnce your operating model lives in the canvas, replacing the system means re-deriving that knowledge somewhere else.
02 · Phase 2 architecture

Two planes: authoring and execution

The canvas never executes. It compiles. Authoring happens in the upper plane, where a human and a copilot are free to be imprecise; execution happens in the lower plane, where only type-checked artifacts are allowed to run. The compiler between them is the reason a no-code surface can stay auditable.

AUTHORING PLANE · HUMANS AND COPILOT · NOTHING HERE CAN EXECUTE Canvas copilot plain sentence to candidate nodes local LLM · proposals only Rule Studio · React Flow editor 7 node types · no loops · no code nodes live wire validation · pan, zoom, undo 1 human approves every node Node palette · typed schema source · mapping · condition · threshold rule · escalation · report Canvas document · JSON { nodes: [...], edges: [...], calendars: [...], meta: {author, ts} } 2 compile step, the only way across the boundary Compiler · canvas JSON to typed intermediate representation type-check conditions · resolve business calendars and holidays · bind terms to ontology IRIs · reject dangling wires and unbounded conditions the IR is the contract: engines behind it can change without touching a single canvas EXECUTION PLANE · ONLY COMPILED ARTIFACTS RUN HERE · EVERY FIRING RECORDED 3 SPARQL CONSTRUCT rule set evaluated to fixpoint over the graph · derives escalations, risks, findings SHACL shapes continuous data-quality checks CP-SAT fragments threshold nodes feeding what-ifs Knowledge graph · Oxigraph read: project facts as of a date write: derived facts in a named graph Rule execution service runs on ingest and on schedule emits one firing record per derived fact Event store · PostgreSQL rule_versions · firings · canvas saves append only, so history stays provable 4 Dry-run harness replays a draft rule over past events, no side effects executed 5 6 results return to the editor before anything is published Proof explorer renders firings, rule version cited
phase 2 component execution plane, deterministic neural, authoring only persistent store
Why drawing and running are kept apartexecutive briefing

The top half of this diagram is where people work, and people are imprecise. The bottom half is where rules run, and it accepts nothing that has not been formally checked. The compiler in the middle is the only route between them, and it refuses anything ambiguous with a plain-language error.

This is why a no-code tool can still be audit-grade. The friendly canvas is not what executes. What executes is a checked, versioned artefact produced from it.

The governance you getVersions, approvals, an audit trail of who changed what, and simulation before anything goes live.
Deliberate limitsNo loops, no free-form code. A constrained palette is what keeps every rule explainable to an auditor.
The AI's role hereIt suggests rules from a sentence you type. A human always approves before anything is wired in.
03 · What gets built

Six components, one constrained palette

The canvas is deliberately not a general workflow engine. No loops, no code nodes. A constrained palette that compiles to sound rules beats an expressive one that compiles to mush.

Canvas editor

Pan, zoom, minimap, undo, click-to-configure nodes, live validation of dangling wires.

React Flow (MIT)

Node palette

Source, mapping, condition, rule, threshold/KPI, escalation, and report nodes. Calendars understand business days and local holidays.

typed node schema

Compiler

Canvas JSON to a typed intermediate representation, then to SPARQL CONSTRUCT rules and SHACL shapes. The IR is the contract; engines behind it can change.

canvas → IR → rules

Rule versioning

Every save is a version; every version is an event in the bitemporal store. "Why did this escalate in April but not now?" has a provable answer.

events, like everything else

Dry-run against history

Replay any draft rule over past project events before publishing. See exactly what it would have flagged, and when. Competitors cannot do this; their systems have no replayable past.

bitemporal replay

Canvas copilot

Describe a policy in one sentence; the local LLM proposes candidate nodes. The human wires and approves. Neural at authoring time, symbolic at runtime.

local LLM · human-approved
The one capability competitors cannot matchexecutive briefing

Five of these six components are what you would expect from a decent rules tool. The sixth, testing a draft rule against real history before switching it on, is the one that matters and the one nobody else can offer.

Because we keep a complete, replayable record of the past, you can ask "if this rule had been live since January, what would it have flagged?" and get a precise answer before committing to it. Competitors cannot do this: they have no replayable past to test against.

Practical benefitRules are tuned against evidence rather than intuition. You see the false alarms before your team does.
Change confidenceEditing a live rule is low risk, because the effect of the change is measured before it is published.
Audit valueEvery rule version and every firing is stored, so historical escalations remain explainable years later.
04 · The canvas itself

Every policy fits the same grammar

The studio above shows an escalation policy. The same seven node types express thresholds and reporting rules too. "When budget burn crosses 80% before 60% of the timeline has elapsed, raise a finance risk and add it to the steering pack":

source
CSV · finance actuals
threshold
budget burn > 80%
condition
timeline elapsed < 60%
rule · draft v3
derive: finance risk
severity medium
escalation
notify program lead
report
steering pack · risks

In process-mining terms, a published rule is a continuous conformance check: the project is monitored against your own operating model, not a generic template. Rule governance matches what mature decision-engine buyers expect: versions, approvals, audit trail, and simulation before publish.

One grammar for every policyexecutive briefing

The escalation example above and the budget example here use exactly the same building blocks. That consistency is what keeps the tool learnable: a delivery lead who understands one rule understands all of them, and the palette does not grow every time a new requirement appears.

It also has a useful framing for anyone who has bought process-mining software: a published rule is a continuous check of your projects against your own operating model, rather than a generic industry template.

Typical first rulesStale blockers, milestone risk, budget burn against elapsed time, unassigned work in an active sprint.
Training effortUnder an hour for someone who already runs projects. There is no query language to learn.
Scope disciplineSeven node types, deliberately. Expressive enough for real policy, narrow enough to stay provable.
05 · Under the hood

From drawing to derivation

Nothing on the canvas executes directly. It compiles, and only the compiled artifact runs. That is what keeps a no-code surface auditable.

draw

Canvas JSON

Nodes and wires, validated live in the editor.

compile

Typed IR

The contract. Type-checked conditions, resolved calendars, bound graph terms.

emit

SPARQL + SHACL

CONSTRUCT rules run to fixpoint over the graph; shapes validate continuously.

record

Rule firings

Every firing stored as an event: rule ID, version, input facts, derived fact.

explain

Proof tree

The explorer renders firings directly. Same events + same rules = same output.

$ dry-run rule:staleBlockerEscalation@draft-v8 · window: 2026-01-01 → 2026-06-30
replaying 14,206 events across 2 sprints/mo · as-of semantics: transaction time
✓ would have fired 11 times · earliest 2026-02-12 (PROJ-88), latest 2026-06-19 (PROJ-142)
⚠ 2 firings during code-freeze week · consider an exception condition, copilot suggests: calendar != freeze
no side effects executed · publish creates version v8 and records the change event
From a drawing to an enforceable ruleexecutive briefing

The canvas is saved as a document, translated into a formally checked intermediate form, and only then turned into something the engine runs. Each time the rule fires, the system writes down which rule version fired, on which facts, and what it concluded.

That recording is what makes the proof screen possible. The explanation you show an auditor is not reconstructed after the fact; it is the actual execution record.

DeterminismThe same events and the same rules always produce the same conclusions. Escalations are reproducible, not probabilistic.
Safe evolutionThe intermediate form is the contract, so we can improve the engine underneath without anyone redrawing a rule.
Error handlingIncomplete or contradictory rules are rejected at compile time with an explanation, not left to misbehave in production.
06 · Acceptance

Exit criteria and the client demo

The 10-minute client demo

  1. Client states one of their real escalation policies out loud.
  2. Copilot proposes the nodes; the client's own PM wires and adjusts them.
  3. Dry-run over the last two quarters: "this would have caught PROJ-88 on Feb 12."
  4. Publish. Trigger a matching test event. Watch the escalation fire.
  5. Open the proof tree: rule v1, input facts, source Jira payload, both timestamps.
Proving a non-programmer can run itexecutive briefing

The acceptance test is deliberately uncomfortable for us: one of your project managers, not one of our engineers, encodes three of your real escalation policies with no help beyond the on-screen assistant. If they cannot, the phase is not finished.

We test the handover, not the software. A rules engine only your vendor can operate is a consulting dependency wearing a product badge.

What we need from youThree genuine policies and about two hours of a delivery lead's time.
The convincing momentThe dry-run showing a rule would have caught a specific problem months earlier, on a ticket the team remembers.
After this phaseThe system is genuinely operational. Phases 3 and 4 add depth and hardening rather than core capability.