Skip to content
This repository was archived by the owner on Apr 8, 2026. It is now read-only.

Commit 9a8c526

Browse files
Site: add @fix, Cloud, compliance positioning (Session C)
Landing: compliance urgency in hero, @fix convergence certificates section (L0/L1/L2 cards), Cloud independent witnessing section (env var, deployment tiers, source-available), explain() in Art. 86 card, test counts updated (~1,400). Learn: @fix stratified fixpoint section with convergence certificates, Cloud witnessing section with CloudClient code example. GetStarted: Cloud setup step in MCP quickstart (FLOWSCRIPT_API_KEY env var), test counts updated in bottom CTA. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 74973e7 commit 9a8c526

4 files changed

Lines changed: 186 additions & 9 deletions

File tree

web/src/pages/GetStarted.tsx

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,25 @@ export function GetStarted() {
130130
<code>query_audit</code>, <code>verify_audit</code>, <code>verify_integrity</code>.
131131
</p>
132132

133-
<h3>4. Add the CLAUDE.md snippet</h3>
133+
<h3>4. (Optional) Stream to FlowScript Cloud</h3>
134+
<p>
135+
Add one environment variable to stream audit events to{" "}
136+
<a href="https://api.flowscript.org" target="_blank" rel="noopener noreferrer">FlowScript Cloud</a>{" "}
137+
for independent cryptographic witnessing:
138+
</p>
139+
<div className="code-block">
140+
{`"env": {
141+
"OPENAI_API_KEY": "your-key",
142+
"FLOWSCRIPT_API_KEY": "your-cloud-key"
143+
}`}
144+
</div>
145+
<p>
146+
Every audit event &mdash; including convergence certificates &mdash; streams automatically.
147+
Chain verification and witness attestation happen server-side. Your local audit trail remains
148+
the source of truth.
149+
</p>
150+
151+
<h3>5. Add the CLAUDE.md snippet</h3>
134152
<p>
135153
This is what turns tools into a workflow. Copy the{" "}
136154
<a href="https://github.com/phillipclapham/flowscript-agents/blob/main/examples/CLAUDE.md.example" target="_blank" rel="noopener noreferrer">
@@ -139,7 +157,7 @@ export function GetStarted() {
139157
into your project's CLAUDE.md. It tells your agent <em>when</em> to record decisions, surface tensions before new decisions, and check blockers at session start, automatically, without you asking. Without it, the tools are available but passive. With it, your agent proactively tracks your project's reasoning.
140158
</p>
141159

142-
<h3>5. Try it: your first 5 minutes</h3>
160+
<h3>6. Try it: your first 5 minutes</h3>
143161
<p>With the MCP server and CLAUDE.md snippet configured above, start a conversation with your agent:</p>
144162
<div className="code-block">
145163
{`"I need to decide between PostgreSQL and MongoDB for our user data.
@@ -402,11 +420,11 @@ with UnifiedMemory("agent-memory.json", embedder=OpenAIEmbeddings(), llm=llm) as
402420
<div className="gs-links">
403421
<a href="https://github.com/phillipclapham/flowscript" target="_blank" rel="noopener noreferrer" className="gs-link-card">
404422
<h3>flowscript-core</h3>
405-
<p>TypeScript SDK &mdash; npm package, full API, 731 tests</p>
423+
<p>TypeScript SDK &mdash; npm package, full API, 779 tests</p>
406424
</a>
407425
<a href="https://github.com/phillipclapham/flowscript-agents" target="_blank" rel="noopener noreferrer" className="gs-link-card">
408426
<h3>flowscript-agents</h3>
409-
<p>Python SDK &mdash; 9 adapters, consolidation, 581 tests</p>
427+
<p>Python SDK &mdash; 9 adapters, CloudClient, 586 tests</p>
410428
</a>
411429
<Link to="/playground" className="gs-link-card">
412430
<h3>Playground</h3>

web/src/pages/Landing.css

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,23 @@
4242
font-size: 19px;
4343
line-height: 1.6;
4444
color: var(--text-secondary);
45-
margin-bottom: var(--space-xl);
45+
margin-bottom: var(--space-md);
4646
max-width: 640px;
4747
margin-left: auto;
4848
margin-right: auto;
4949
}
5050

51+
.hero-compliance {
52+
font-size: 15px;
53+
line-height: 1.5;
54+
color: var(--color-primary);
55+
font-style: italic;
56+
margin-bottom: var(--space-xl);
57+
max-width: 560px;
58+
margin-left: auto;
59+
margin-right: auto;
60+
}
61+
5162
.hero-actions {
5263
display: flex;
5364
gap: var(--space-md);

web/src/pages/Landing.tsx

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ export function Landing() {
1919
</h1>
2020
<p className="hero-subtitle">
2121
Five typed queries no vector store can answer: <code>why()</code>, <code>tensions()</code>, <code>blocked()</code>, <code>alternatives()</code>, <code>whatIf()</code>.
22-
Hash-chained audit trail. Structural compliance. MIT licensed.
22+
Hash-chained audit trail. Convergence certificates. Cloud witnessing. MIT licensed.
23+
</p>
24+
<p className="hero-compliance">
25+
EU AI Act enforcement begins August 2026. Audit trails can't be backdated.
26+
FlowScript is the compliance engine that makes your agents audit-ready from day one.
2327
</p>
2428
<div className="hero-actions">
2529
<Link to="/get-started" className="btn btn-primary">Get Started</Link>
@@ -267,7 +271,7 @@ mem.query.tensions();{"\n"}
267271
</div>
268272
<div className="problem-card">
269273
<h3>EU AI Act Art. 86</h3>
270-
<p>Right to explanation. <code>alternatives()</code> reconstructs what was considered, what was chosen, and the rationale.</p>
274+
<p>Right to explanation. <code>explain()</code> generates deterministic compliance documents from <code>why()</code> results &mdash; three audience modes, no LLM in the loop, reproducible.</p>
271275
</div>
272276
</div>
273277
<p className="query-note" style={{ marginTop: '1.5rem' }}>
@@ -289,6 +293,61 @@ mem.query.tensions();{"\n"}
289293
</div>
290294
</section>
291295

296+
{/* @fix — Convergence Certificates */}
297+
<section className="section">
298+
<div className="section-inner">
299+
<h2 className="section-title">@fix &mdash; Convergence certificates</h2>
300+
<p className="section-lead">
301+
When FlowScript resolves contradictions, it doesn't just update the graph. It produces a <strong>convergence certificate</strong> &mdash; a hash-chained attestation proving how the reasoning changed and that the transformation hasn't been tampered with.
302+
</p>
303+
<div className="problem-grid">
304+
<div className="problem-card">
305+
<h3>L0 &mdash; Pure Description</h3>
306+
<p>No computation. Static knowledge and observations. Always terminates.</p>
307+
</div>
308+
<div className="problem-card">
309+
<h3>L1 &mdash; Bounded Fixpoint</h3>
310+
<p>Consistency enforcement, belief propagation. Closed domain, inflationary. Always terminates (Knaster-Tarski).</p>
311+
</div>
312+
<div className="problem-card">
313+
<h3>L2 &mdash; General Fixpoint</h3>
314+
<p>Abductive reasoning, hypothesis generation. Turing-complete, bounded. For when you need full computational power.</p>
315+
</div>
316+
</div>
317+
<p className="query-note" style={{ marginTop: '1.5rem' }}>
318+
Each certificate records: <code>initial_graph_hash</code> &rarr; <code>delta_sequence</code> &rarr; <code>final_graph_hash</code> &rarr; <code>certificate_hash</code>. An auditor can verify not just what your agent decided, but how it got there.
319+
</p>
320+
</div>
321+
</section>
322+
323+
{/* FlowScript Cloud */}
324+
<section className="section section--alt">
325+
<div className="section-inner">
326+
<h2 className="section-title">FlowScript Cloud &mdash; Independent witnessing</h2>
327+
<p className="section-lead">
328+
Local audit trails are tamper-evident but self-attested. <a href="https://api.flowscript.org" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--color-primary)' }}>FlowScript Cloud</a> adds independent third-party witnessing: your SDK streams hash-chained events to the Cloud service, which verifies chain continuity and stores witness attestations.
329+
</p>
330+
<div className="install-grid">
331+
<div className="install-card">
332+
<h3>One environment variable</h3>
333+
<div className="code-block install-cmd">export FLOWSCRIPT_API_KEY=your-key</div>
334+
<p>Every audit event &mdash; including convergence certificates &mdash; streams to api.flowscript.org automatically. Chain verification and witness attestation happen server-side.</p>
335+
</div>
336+
<div className="install-card">
337+
<h3>Three deployment tiers</h3>
338+
<p><strong>SaaS</strong> at api.flowscript.org. <strong>Self-hosted Cloudflare</strong> &mdash; deploy to your own account. <strong>Docker on-premise</strong> for regulated industries. One codebase, three deployment models.</p>
339+
</div>
340+
<div className="install-card">
341+
<h3>Source-available</h3>
342+
<p>BSL 1.1 licensed. Full source on GitHub. Converts to Apache 2.0 after 4 years. Audit the code that audits your agents.</p>
343+
<a href="https://github.com/phillipclapham/flowscript-cloud" target="_blank" rel="noopener noreferrer" className="install-link">
344+
View on GitHub &rarr;
345+
</a>
346+
</div>
347+
</div>
348+
</div>
349+
</section>
350+
292351
{/* What FlowScript Actually Is — Layer 1 (condensed for web) */}
293352
<section className="section">
294353
<div className="section-inner">
@@ -314,9 +373,9 @@ mem.query.tensions();{"\n"}
314373
{/* Bottom CTA */}
315374
<section className="section cta-section">
316375
<div className="section-inner" style={{ textAlign: 'center' }}>
317-
<h2 className="section-title">Open source. MIT licensed. 1,315 tests.</h2>
376+
<h2 className="section-title">Open source. MIT licensed. ~1,400 tests.</h2>
318377
<p className="section-lead">
319-
731 TypeScript + 584 Python. Same audit trail format across both SDKs.
378+
779 TypeScript + 586 Python + 68 Cloud. Same audit trail format across all three.
320379
</p>
321380
<div className="hero-actions" style={{ justifyContent: 'center' }}>
322381
<Link to="/get-started" className="btn btn-primary">Get Started</Link>

web/src/pages/Learn.tsx

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,95 @@ mem.query.alternatives(dbQuestion);{"\n"}
385385
</p>
386386
</section>
387387

388+
{/* @fix — Stratified Fixpoint Computation */}
389+
<section className="learn-section">
390+
<h2>@fix &mdash; Stratified fixpoint computation</h2>
391+
<p>
392+
FlowScript includes <code>@fix</code>, a formal fixpoint operator over typed reasoning graphs.
393+
When an agent needs to reason iteratively &mdash; resolving contradictions, propagating beliefs,
394+
converging on decisions &mdash; <code>@fix</code> provides three computational levels with
395+
guaranteed termination properties.
396+
</p>
397+
398+
<div className="tier-list">
399+
<div className="tier tier--current">
400+
<div className="tier-label">L0</div>
401+
<div className="tier-desc">
402+
<strong>Pure description</strong> &mdash; no <code>@fix</code>. Static knowledge, observations. Always terminates.
403+
</div>
404+
</div>
405+
<div className="tier tier--developing">
406+
<div className="tier-label">L1</div>
407+
<div className="tier-desc">
408+
<strong>Bounded fixpoint</strong> &mdash; closed domain, inflationary. Always terminates (Knaster-Tarski). Consistency enforcement, belief propagation.
409+
</div>
410+
</div>
411+
<div className="tier tier--proven">
412+
<div className="tier-label">L2</div>
413+
<div className="tier-desc">
414+
<strong>General fixpoint</strong> &mdash; Turing-complete, bounded. Abductive reasoning, hypothesis generation.
415+
</div>
416+
</div>
417+
</div>
418+
419+
<p>
420+
L1 can contain bounded L2 sub-computations &mdash; constraint escalates, never de-escalates.
421+
This is a <em>computational metamaterial</em>: tunable constraint radius within a single
422+
reasoning structure. The consolidation engine is a degenerate L1 fixpoint (single iteration).
423+
</p>
424+
425+
<h3>Convergence certificates</h3>
426+
<p>
427+
When consolidation resolves contradictions, FlowScript produces a <strong>convergence
428+
certificate</strong> &mdash; a hash-chained attestation: <code>initial_graph_hash</code> &rarr;{" "}
429+
<code>delta_sequence</code> &rarr; <code>final_graph_hash</code> &rarr; <code>certificate_hash</code>.
430+
This is concrete Article 86 compliance infrastructure. An auditor can verify not just <em>what</em>{" "}
431+
your agent decided, but <em>how it got there</em> &mdash; and prove the record hasn't been altered.
432+
</p>
433+
<p>
434+
Every other agent memory system treats contradiction resolution as a black box. FlowScript
435+
makes the resolution process itself auditable.
436+
</p>
437+
<p>
438+
Formal grounding: Datalog stratification (Abiteboul-Hull-Vianu 1995), Knaster-Tarski
439+
fixed-point theory, and OWL's three-layer decidability model (Baader et al. 2003). Full spec:{" "}
440+
<a href="https://github.com/phillipclapham/flowscript/blob/main/spec/fixpoint_spec.md" target="_blank" rel="noopener noreferrer">
441+
fixpoint_spec.md
442+
</a>.
443+
</p>
444+
</section>
445+
446+
{/* FlowScript Cloud */}
447+
<section className="learn-section">
448+
<h2>FlowScript Cloud &mdash; Independent witnessing</h2>
449+
<p>
450+
Local audit trails are tamper-evident but self-attested. <a href="https://api.flowscript.org" target="_blank" rel="noopener noreferrer">FlowScript Cloud</a>{" "}
451+
adds independent third-party witnessing: your SDK streams hash-chained events to the Cloud
452+
service, which verifies chain continuity and stores witness attestations. A compliance officer
453+
can't get this from your own database &mdash; independent verification requires an independent party.
454+
</p>
455+
<div className="code-block">
456+
{`# One environment variable. That's it.
457+
export FLOWSCRIPT_API_KEY=your-key
458+
459+
# In your Python code:
460+
from flowscript_agents.cloud import CloudClient
461+
462+
cloud = CloudClient() # reads FLOWSCRIPT_API_KEY from env
463+
mem = Memory.load_or_create("agent.json", options=MemoryOptions(
464+
audit=AuditConfig(on_event=cloud.queue_event)
465+
))
466+
# Every audit event streams to api.flowscript.org automatically`}
467+
</div>
468+
<ul className="audit-features">
469+
<li><strong>Chain verification on ingestion:</strong> Cloud verifies hash chain continuity. Breaks trigger immediate alerts.</li>
470+
<li><strong>Witness attestations:</strong> Independent proof your chain was intact at time T.</li>
471+
<li><strong>Batch buffering:</strong> Events accumulate and flush in batches. Lock-free I/O &mdash; network never blocks your agent.</li>
472+
<li><strong>Three deployment tiers:</strong> SaaS at api.flowscript.org, self-hosted Cloudflare, or Docker on-premise. One codebase.</li>
473+
<li><strong>Source-available:</strong> BSL 1.1 (converts to Apache 2.0 after 4 years). <a href="https://github.com/phillipclapham/flowscript-cloud" target="_blank" rel="noopener noreferrer">Full source on GitHub</a>.</li>
474+
</ul>
475+
</section>
476+
388477
{/* FlowScript as Notation */}
389478
<section className="learn-section">
390479
<h2>FlowScript as a notation</h2>

0 commit comments

Comments
 (0)