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

Commit dd067b8

Browse files
Reframe landing page: dev utility first, compliance as structural property
- Enterprise section → "Already compliance-ready" (property not product) - Kill standalone Security section (folded into compliance card) - @fix L0/L1/L2 breakdown → brief "Under the hood" mention - Cloud → "(coming soon)" with honest status - Cut philosophy section (duplicated on Learn page) - Fix test counts: 586→717 Python, ~1,400→~1,500 total Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c2f527d commit dd067b8

2 files changed

Lines changed: 22 additions & 71 deletions

File tree

web/src/pages/GetStarted.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ with UnifiedMemory("agent-memory.json", embedder=OpenAIEmbeddings(), llm=llm) as
424424
</a>
425425
<a href="https://github.com/phillipclapham/flowscript-agents" target="_blank" rel="noopener noreferrer" className="gs-link-card">
426426
<h3>flowscript-agents</h3>
427-
<p>Python SDK &mdash; 9 adapters, CloudClient, 586 tests</p>
427+
<p>Python SDK &mdash; 9 adapters, CloudClient, 717 tests</p>
428428
</a>
429429
<Link to="/playground" className="gs-link-card">
430430
<h3>Playground</h3>

web/src/pages/Landing.tsx

Lines changed: 21 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -260,85 +260,58 @@ mem.query.tensions();{"\n"}
260260
</div>
261261
</section>
262262

263-
{/* Enterprise & Compliance */}
263+
{/* Already compliance-ready */}
264264
<section className="section">
265265
<div className="section-inner">
266-
<h2 className="section-title">Enterprise &amp; Compliance</h2>
266+
<h2 className="section-title">Already compliance-ready</h2>
267267
<p className="section-lead">
268-
FlowScript's typed reasoning chains are compliance-ready audit infrastructure. Not a separate product &mdash; a structural property of how it works.
268+
You don't install FlowScript for compliance. You install it for reasoning memory. But because every decision traces through typed causal chains with a hash-chained audit trail, what you get is inherently compliant.
269269
</p>
270270
<div className="problem-grid">
271271
<div className="problem-card">
272-
<h3>EU AI Act Art. 12</h3>
273-
<p>Record-keeping. Hash-chained audit trail, append-only, tamper-evident, 7-year default retention.</p>
272+
<h3>Hash-chained audit trail</h3>
273+
<p>SHA-256 linked, append-only, crash-safe, 7-year default retention. Tampering breaks the chain. Framework attribution on every entry.</p>
274274
</div>
275275
<div className="problem-card">
276-
<h3>EU AI Act Art. 13</h3>
277-
<p>Transparency. <code>why()</code> queries return typed causal chains &mdash; not reconstructions, actual reasoning records.</p>
276+
<h3>Typed provenance</h3>
277+
<p><code>why()</code> returns the actual causal chain, not a reconstruction. <code>explain()</code> generates deterministic compliance documents &mdash; no LLM in the loop, same input always produces same output.</p>
278278
</div>
279279
<div className="problem-card">
280-
<h3>EU AI Act Art. 86</h3>
281-
<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>
280+
<h3>Structural prevention</h3>
281+
<p>The type system makes untraceable decisions, silent contradictions, and unaudited state changes structurally unrepresentable. Prevention at the architecture level, not behavioral detection.</p>
282282
</div>
283283
</div>
284284
<p className="query-note" style={{ marginTop: '1.5rem' }}>
285-
Enforcement begins August 2026. Audit trails can't be backdated. Organizations using FlowScript today have unbroken reasoning records from day one. You can turn on logging tomorrow &mdash; you can't manufacture the last 18 months of decision provenance.
285+
Maps to EU AI Act Articles 12 (record-keeping), 13 (transparency), and 86 (right to explanation). Enforcement begins August 2026. You can turn on logging tomorrow &mdash; you can't manufacture the last year of decision provenance.
286286
</p>
287287
</div>
288288
</section>
289289

290-
{/* Security */}
290+
{/* Under the hood */}
291291
<section className="section section--alt">
292292
<div className="section-inner">
293-
<h2 className="section-title">Security: Can't Patch, Must Architect</h2>
293+
<h2 className="section-title">Under the hood</h2>
294294
<p className="section-lead">
295-
Three independent CVE clusters dropped in the same week &mdash; MCPwned, ClawHub, and ClawJacked (CVSS 8.8, 15,200 affected instances). Same structural root cause: unvalidated content flowing through agent invocation paths.
295+
When the consolidation engine resolves contradictions, it produces a <strong>convergence certificate</strong> &mdash; a hash-chained attestation recording the initial graph state, every delta applied, and the final state. An auditor can verify not just what your agent decided, but how it got there.
296296
</p>
297297
<p className="section-lead">
298-
FlowScript doesn't prevent every attack class. What it makes structurally impossible is <strong>reasoning corruption</strong> &mdash; untraceable decisions, silent contradictions, unaudited state changes. The type system makes them unrepresentable. Same architectural insight as <a href="https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--color-primary)' }}>CHERI</a>: structural prevention over behavioral detection.
299-
</p>
300-
</div>
301-
</section>
302-
303-
{/* @fix — Convergence Certificates */}
304-
<section className="section">
305-
<div className="section-inner">
306-
<h2 className="section-title">@fix &mdash; Convergence certificates</h2>
307-
<p className="section-lead">
308-
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.
309-
</p>
310-
<div className="problem-grid">
311-
<div className="problem-card">
312-
<h3>L0 &mdash; Pure Description</h3>
313-
<p>No computation. Static knowledge and observations. Always terminates.</p>
314-
</div>
315-
<div className="problem-card">
316-
<h3>L1 &mdash; Bounded Fixpoint</h3>
317-
<p>Consistency enforcement, belief propagation. Closed domain, inflationary. Always terminates (Knaster-Tarski).</p>
318-
</div>
319-
<div className="problem-card">
320-
<h3>L2 &mdash; General Fixpoint</h3>
321-
<p>Abductive reasoning, hypothesis generation. Turing-complete, bounded. For when you need full computational power.</p>
322-
</div>
323-
</div>
324-
<p className="query-note" style={{ marginTop: '1.5rem' }}>
325-
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.
298+
The formal spec includes <code>@fix</code>, a stratified fixpoint operator with three computational levels and guaranteed termination properties. The consolidation engine is a degenerate case. Full spec: <a href="https://github.com/phillipclapham/flowscript/blob/main/spec/fixpoint_spec.md" target="_blank" rel="noopener noreferrer" style={{ color: 'var(--color-primary)' }}>fixpoint_spec.md</a>.
326299
</p>
327300
</div>
328301
</section>
329302

330303
{/* FlowScript Cloud */}
331-
<section className="section section--alt">
304+
<section className="section">
332305
<div className="section-inner">
333-
<h2 className="section-title">FlowScript Cloud &mdash; Independent witnessing</h2>
306+
<h2 className="section-title">FlowScript Cloud <span style={{ fontSize: '0.6em', fontWeight: 400, opacity: 0.7 }}>(coming soon)</span></h2>
334307
<p className="section-lead">
335-
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.
308+
Local audit trails are tamper-evident but self-attested. FlowScript Cloud will add independent third-party witnessing: your SDK streams hash-chained events to the Cloud service, which verifies chain continuity and stores witness attestations.
336309
</p>
337310
<div className="install-grid">
338311
<div className="install-card">
339312
<h3>One environment variable</h3>
340313
<div className="code-block install-cmd">export FLOWSCRIPT_API_KEY=your-key</div>
341-
<p>Every audit event &mdash; including convergence certificates &mdash; streams to api.flowscript.org automatically. Chain verification and witness attestation happen server-side.</p>
314+
<p>Every audit event streams automatically. Chain verification and witness attestation happen server-side. Your local audit trail remains the source of truth.</p>
342315
</div>
343316
<div className="install-card">
344317
<h3>Three deployment tiers</h3>
@@ -355,34 +328,12 @@ mem.query.tensions();{"\n"}
355328
</div>
356329
</section>
357330

358-
{/* What FlowScript Actually Is — Layer 1 (condensed for web) */}
359-
<section className="section">
360-
<div className="section-inner">
361-
<h2 className="section-title">What FlowScript actually is</h2>
362-
<p className="section-lead">
363-
The six queries and the audit trail are what FlowScript <em>does</em>. Here's what it <em>is</em>.
364-
</p>
365-
<p className="section-lead">
366-
Musical notation didn't record what musicians were already playing. It made polyphony <em>possible</em>. Bach's fugues are literally unthinkable without it &mdash; not "hard to remember" but impossible to compose, because the interaction of independent voices requires a representational system precise enough to reason about counterpoint.
367-
</p>
368-
<p className="section-lead">
369-
FlowScript does the same thing for AI cognition. It doesn't record what agents are already thinking. It makes a new category of reasoning possible &mdash; the kind where you can have multiple reasoning chains interacting, query across causal paths, and turn contradictions into structured tensions. This is impossible in the vector-search paradigm because vector search has no representation for <em>why</em>.
370-
</p>
371-
<p className="section-lead">
372-
FlowScript is infrastructure. Not a tool. Not a framework. Infrastructure &mdash; like SQL gave us queryable data, TCP/IP gave us addressable communication, and Git gave us trackable changes. FlowScript gives AI agents queryable reasoning. Everything else &mdash; compliance, security, memory, observability &mdash; is an application of that infrastructure.
373-
</p>
374-
<p className="section-lead" style={{ fontWeight: 600, color: 'var(--color-text)' }}>
375-
The applications are what you install FlowScript for. The infrastructure is why it matters.
376-
</p>
377-
</div>
378-
</section>
379-
380331
{/* Bottom CTA */}
381-
<section className="section cta-section">
332+
<section className="section section--alt cta-section">
382333
<div className="section-inner" style={{ textAlign: 'center' }}>
383-
<h2 className="section-title">Open source. MIT licensed. ~1,400 tests.</h2>
334+
<h2 className="section-title">Open source. MIT licensed. ~1,500 tests.</h2>
384335
<p className="section-lead">
385-
779 TypeScript + 586 Python + 68 Cloud. Same audit trail format across all three.
336+
779 TypeScript + 717 Python + 68 Cloud. Same audit trail format across all three.
386337
</p>
387338
<div className="hero-actions" style={{ justifyContent: 'center' }}>
388339
<Link to="/get-started" className="btn btn-primary">Get Started</Link>

0 commit comments

Comments
 (0)