Add IF.TTT marketing site (hero, verticals, API, about)
This commit is contained in:
parent
2938ab2c9f
commit
cea7e100df
17 changed files with 2304 additions and 2 deletions
165
ifttt/about/index.html
Normal file
165
ifttt/about/index.html
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — About</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="IF.TTT is a receipt-first governance protocol: traceable, transparent, trustworthy. This page explains the who/why/what/where/when/how and the traps that break open verification."
|
||||
/>
|
||||
<link rel="stylesheet" href="../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">About</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../#how">How</a>
|
||||
<a href="../#trust">Trust</a>
|
||||
<a href="../#verify">Verify</a>
|
||||
<a href="../verticals/">Verticals</a>
|
||||
<a href="../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Why this exists</p>
|
||||
<h1>We built the skeleton first.</h1>
|
||||
<p class="lede">
|
||||
Most systems produce answers and call that “governance”. IF.TTT starts earlier: it produces receipts that a third party can verify without
|
||||
joining your internal world.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Who / Why / What / Where / When / How</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Who</div>
|
||||
<div class="bw__v">InfraFabric operators shipping public, no‑login verification artifacts.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Why</div>
|
||||
<div class="bw__v">Because “trust us” fails the moment a reviewer asks for proof.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">What</div>
|
||||
<div class="bw__v">A receipt‑first protocol: bind <code>source_sha256</code> ↔ <code>output_sha256</code> under a trace receipt.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Where</div>
|
||||
<div class="bw__v">On a stable public share surface (no login): trace, dossier, packs, and source.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">When</div>
|
||||
<div class="bw__v">At publication time: the receipt is generated and can be verified later during disputes.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">How</div>
|
||||
<div class="bw__v">Hashes + receipts + optional offline bundles; nothing magical, just opposable proof.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cta" style="margin-top: 12px">
|
||||
<a class="btn btn--primary" href="../#verify">Try a live trace</a>
|
||||
<a class="btn" href="../api/">Developer surface</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Traps to avoid">
|
||||
<div class="card">
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">TRAPS</div>
|
||||
<div class="badge">HOW RECEIPTS BREAK</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ul class="list" style="margin: 0; padding-left: 18px">
|
||||
<li><strong>Broken share surface:</strong> moving URLs or forcing login turns receipts into theater.</li>
|
||||
<li><strong>Mixing identifiers:</strong> <code>shareId</code> is public; <code>trace_id</code> is chain‑of‑custody. Don’t swap them.</li>
|
||||
<li><strong>“Compliance” claims:</strong> receipts support audits; they do not guarantee program scope or behavior.</li>
|
||||
<li><strong>Unverifiable artifacts:</strong> screenshots and PDFs are not gates unless bound to machine‑checkable signals.</li>
|
||||
<li><strong>WAF surprises:</strong> some clients can fetch HTML but reject binary downloads—publish HTML views.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>What a receipt proves (and what it doesn’t)</h2>
|
||||
<div class="grid2">
|
||||
<div class="panel">
|
||||
<h3>Proves</h3>
|
||||
<ul class="list">
|
||||
<li>Integrity binding: the published bytes match the hashes on the receipt.</li>
|
||||
<li>Traceability: a reviewer can point to a stable, no‑login receipt.</li>
|
||||
<li>Replay: verification still works during disputes (offline bundles when needed).</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Does not prove</h3>
|
||||
<ul class="list">
|
||||
<li>Intent, interpretation, or “correctness” of a narrative.</li>
|
||||
<li>That a control is effective—only that the evidence exists and is bound to the record.</li>
|
||||
<li>Compliance scope (people, policy, contracts); receipts are inputs to governance.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>Read the paper (and verify the examples)</h2>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">IF.TTT: The Skeleton of Everything (review pack)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">InfraFabric • IF.TTT receipts are designed to be legible to the governed.</div>
|
||||
<div class="muted">
|
||||
<a href="../">IF.TTT</a> · <a href="../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../verticals/finance/">Finance</a>
|
||||
<a href="../verticals/legal/">Legal</a>
|
||||
<a href="../verticals/sciences/">Sciences</a>
|
||||
<a href="../verticals/government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
186
ifttt/api/index.html
Normal file
186
ifttt/api/index.html
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Developers / API</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Developer-facing overview of the IF.TTT public receipt surface: stable no-login URLs, HTML fallbacks for sandboxes, and offline verification bundles."
|
||||
/>
|
||||
<link rel="stylesheet" href="../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Developers / API</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../#verify">Verify</a>
|
||||
<a href="../verticals/">Verticals</a>
|
||||
<a href="../about/">About</a>
|
||||
<a href="https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html" target="_blank" rel="noreferrer"
|
||||
>Paper</a
|
||||
>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Public receipt surface (no login)</p>
|
||||
<h1>Stable URLs, predictable verification.</h1>
|
||||
<p class="lede">
|
||||
IF.TTT is intentionally boring from a developer perspective: compute hashes, publish receipts, and keep the proof surface stable. The
|
||||
system is designed for third parties who are not inside your network.
|
||||
</p>
|
||||
<div class="panel">
|
||||
<h3>What “VERIFIED” means (black/white)</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Verified</div>
|
||||
<div class="bw__v">The bytes you can download hash to the same values shown on the trace receipt.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Quantum ready</div>
|
||||
<div class="bw__v">A post‑quantum signature receipt exists (additive; integrity hashes still stand).</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Not implied</div>
|
||||
<div class="bw__v">Compliance, intent, or correctness of interpretation.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Share surface reference">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../assets/red-team-stamp-600.png" alt="EYES ONLY // DAVE stamp" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">SHARE SURFACE</div>
|
||||
<div class="badge">NO‑LOGIN</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<pre class="code"><code>https://infrafabric.io/static/trace/<shareId>
|
||||
https://infrafabric.io/static/dossier/<shareId>
|
||||
https://infrafabric.io/static/dossier/<shareId>/download
|
||||
https://infrafabric.io/static/pack/<shareId>.md
|
||||
https://infrafabric.io/static/review/<shareId>.md
|
||||
https://infrafabric.io/static/marketing/<shareId>.md
|
||||
https://infrafabric.io/static/source/<source_sha256>.pdf</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>HTML fallback (for sandboxed reviewers)</h2>
|
||||
<p class="sub">
|
||||
Some external review environments can load HTML but reject downloadable binaries or raw markdown. For those, we publish HTML views alongside
|
||||
the raw assets.
|
||||
</p>
|
||||
<div class="grid2">
|
||||
<div class="panel">
|
||||
<h3>Raw</h3>
|
||||
<pre class="code"><code>/static/pack/<shareId>.md
|
||||
/static/review/<shareId>.md
|
||||
/static/marketing/<shareId>.md</code></pre>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>HTML view</h3>
|
||||
<pre class="code"><code>/static/pack/<shareId>
|
||||
/static/review/<shareId>
|
||||
/static/marketing/<shareId></code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Offline verification (triage bundles)</h2>
|
||||
<p class="sub">Download a bundle (lightweight/standard/full) and verify without relying on the live site.</p>
|
||||
<div class="verify">
|
||||
<div class="panel">
|
||||
<h3>Bundle selector (demo)</h3>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/review/trace-bundles/d70ed99a/index.html" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Triage selector (HTML)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/review/trace-bundles/d70ed99a/index.html</span>
|
||||
</a>
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/iftrace.html" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Verifier (HTML)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/iftrace.html</span>
|
||||
</a>
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/iftrace.py" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Verifier (download)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/iftrace.py</span>
|
||||
</a>
|
||||
</div>
|
||||
<p class="fine">
|
||||
Note: some “web fetchers” reject <code>.tar.gz</code> with a client-side error even when browsers/curl succeed. Use the HTML views and
|
||||
download bundles locally.
|
||||
</p>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Verify (CLI)</h3>
|
||||
<pre class="code"><code>curl -fsSL -o iftrace.py 'https://infrafabric.io/static/hosted/iftrace.py'
|
||||
python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha256 <sha256></code></pre>
|
||||
<p class="fine">If hashes match, the receipt’s integrity claim is satisfied.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>Docs</h2>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">IF.TTT paper update (review pack)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">InfraFabric • IF.TTT receipts are designed to be legible to the governed.</div>
|
||||
<div class="muted">
|
||||
<a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a> · <a href="../">IF.TTT</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../verticals/finance/">Finance</a>
|
||||
<a href="../verticals/legal/">Legal</a>
|
||||
<a href="../verticals/sciences/">Sciences</a>
|
||||
<a href="../verticals/government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
150
ifttt/app.js
Normal file
150
ifttt/app.js
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
(() => {
|
||||
const typewordEl = document.getElementById("typeword");
|
||||
if (typewordEl) startTypewriter(typewordEl);
|
||||
|
||||
const quoteTextEl = document.getElementById("quoteText");
|
||||
const quoteMetaEl = document.getElementById("quoteMeta");
|
||||
const quoteWrapEl = quoteTextEl?.closest?.(".quote");
|
||||
if (quoteTextEl && quoteMetaEl && quoteWrapEl) startQuoteTicker({ quoteWrapEl, quoteTextEl, quoteMetaEl });
|
||||
})();
|
||||
|
||||
function startTypewriter(typewordEl) {
|
||||
const words = ["Transparent", "Traceable", "Trustworthy", "TTT"];
|
||||
const typeMs = 42;
|
||||
const deleteMs = 26;
|
||||
const holdMs = 780;
|
||||
const finalHoldMs = 1100;
|
||||
const betweenMs = 180;
|
||||
|
||||
let wordIndex = 0;
|
||||
let charIndex = 0;
|
||||
let isDeleting = false;
|
||||
|
||||
const tick = () => {
|
||||
const word = words[wordIndex] || "";
|
||||
if (!isDeleting) {
|
||||
charIndex = Math.min(word.length, charIndex + 1);
|
||||
} else {
|
||||
charIndex = Math.max(0, charIndex - 1);
|
||||
}
|
||||
|
||||
typewordEl.textContent = word.slice(0, charIndex);
|
||||
|
||||
const atEnd = !isDeleting && charIndex === word.length;
|
||||
const atStart = isDeleting && charIndex === 0;
|
||||
|
||||
if (atEnd) {
|
||||
isDeleting = true;
|
||||
const wait = wordIndex === words.length - 1 ? finalHoldMs : holdMs;
|
||||
window.setTimeout(tick, wait);
|
||||
return;
|
||||
}
|
||||
|
||||
if (atStart) {
|
||||
isDeleting = false;
|
||||
wordIndex = (wordIndex + 1) % words.length;
|
||||
window.setTimeout(tick, betweenMs);
|
||||
return;
|
||||
}
|
||||
|
||||
window.setTimeout(tick, isDeleting ? deleteMs : typeMs);
|
||||
};
|
||||
|
||||
tick();
|
||||
}
|
||||
|
||||
async function startQuoteTicker({ quoteWrapEl, quoteTextEl, quoteMetaEl }) {
|
||||
const quotes = await loadQuotes();
|
||||
if (!Array.isArray(quotes) || quotes.length === 0) return;
|
||||
|
||||
quoteWrapEl.classList.add("quote--show");
|
||||
|
||||
let idx = Math.floor(Math.random() * quotes.length);
|
||||
|
||||
const show = (q) => {
|
||||
quoteWrapEl.classList.remove("quote--show");
|
||||
quoteWrapEl.classList.add("quote--fade");
|
||||
|
||||
window.setTimeout(() => {
|
||||
quoteTextEl.textContent = q.text || "";
|
||||
renderQuoteMeta({ quoteMetaEl, q });
|
||||
|
||||
quoteWrapEl.classList.remove("quote--fade");
|
||||
quoteWrapEl.classList.add("quote--show");
|
||||
}, 220);
|
||||
};
|
||||
|
||||
const loop = () => {
|
||||
const q = quotes[idx] || {};
|
||||
show(q);
|
||||
idx = (idx + 1) % quotes.length;
|
||||
|
||||
const duration = estimateReadMs(q.text || "");
|
||||
window.setTimeout(loop, duration);
|
||||
};
|
||||
|
||||
loop();
|
||||
}
|
||||
|
||||
async function loadQuotes() {
|
||||
try {
|
||||
const resp = await fetch("./assets/ifttt-quotes.json", { cache: "no-store" });
|
||||
if (resp.ok) {
|
||||
const data = await resp.json();
|
||||
if (Array.isArray(data)) return data;
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
return [
|
||||
{
|
||||
text: "Footnotes aren't decorations. They're load-bearing walls.",
|
||||
source: "IF.TTT paper",
|
||||
href: "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html",
|
||||
},
|
||||
{
|
||||
text: "If there's no IF.TTT trace, it didn't happen—or shouldn't be trusted.",
|
||||
source: "IF.TTT doctrine",
|
||||
href: "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html",
|
||||
},
|
||||
{
|
||||
text: "Trust isn't claimed. It's proven.",
|
||||
source: "IF.TTT paper",
|
||||
href: "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html",
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
function renderQuoteMeta({ quoteMetaEl, q }) {
|
||||
while (quoteMetaEl.firstChild) quoteMetaEl.removeChild(quoteMetaEl.firstChild);
|
||||
|
||||
const source = String(q.source || "").trim();
|
||||
const href = String(q.href || "").trim();
|
||||
if (!source) return;
|
||||
|
||||
if (href) {
|
||||
const a = document.createElement("a");
|
||||
a.href = href;
|
||||
a.target = "_blank";
|
||||
a.rel = "noreferrer";
|
||||
a.textContent = source;
|
||||
quoteMetaEl.appendChild(a);
|
||||
return;
|
||||
}
|
||||
|
||||
quoteMetaEl.textContent = source;
|
||||
}
|
||||
|
||||
function estimateReadMs(text) {
|
||||
const cleaned = String(text || "").trim();
|
||||
if (!cleaned) return 4000;
|
||||
|
||||
const words = cleaned.split(/\s+/).filter(Boolean).length;
|
||||
const wpm = 220;
|
||||
const ms = (words / wpm) * 60000 + 1200;
|
||||
return clamp(ms, 3200, 11000);
|
||||
}
|
||||
|
||||
function clamp(v, min, max) {
|
||||
return Math.max(min, Math.min(max, v));
|
||||
}
|
||||
|
||||
60
ifttt/assets/if-logo-simple.svg
Normal file
60
ifttt/assets/if-logo-simple.svg
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1024"
|
||||
height="1024"
|
||||
viewBox="0 0 512 512"
|
||||
role="img"
|
||||
aria-labelledby="title desc"
|
||||
>
|
||||
<title id="title">if. mark</title>
|
||||
<desc id="desc">Stylized “if.” mark with subtle gradient and shadow.</desc>
|
||||
|
||||
<defs>
|
||||
<linearGradient id="ifBlue" x1="70" y1="0" x2="440" y2="0" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#0b253b" />
|
||||
<stop offset="0.44" stop-color="#164d7a" />
|
||||
<stop offset="0.56" stop-color="#1b5a8e" />
|
||||
<stop offset="1" stop-color="#0b253b" />
|
||||
</linearGradient>
|
||||
|
||||
<filter id="ifShadow" x="-40%" y="-40%" width="180%" height="180%">
|
||||
<feOffset in="SourceAlpha" dx="0" dy="14" result="off" />
|
||||
<feGaussianBlur in="off" stdDeviation="12" result="blur" />
|
||||
<feColorMatrix
|
||||
in="blur"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0
|
||||
0 0 0 0 0
|
||||
0 0 0 0 0
|
||||
0 0 0 0.28 0"
|
||||
result="shadow"
|
||||
/>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadow" />
|
||||
<feMergeNode in="SourceGraphic" />
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!--
|
||||
Mark group:
|
||||
- i (stem + dot)
|
||||
- f (stem + top bar + crossbar)
|
||||
- period dot
|
||||
-->
|
||||
<g filter="url(#ifShadow)" transform="translate(75 15)" fill="url(#ifBlue)">
|
||||
<!-- i -->
|
||||
<circle cx="35" cy="125" r="32" />
|
||||
<rect x="0" y="170" width="70" height="220" rx="8" />
|
||||
|
||||
<!-- f -->
|
||||
<rect x="120" y="140" width="86" height="250" rx="10" />
|
||||
<rect x="120" y="110" width="150" height="90" rx="45" />
|
||||
<rect x="120" y="240" width="140" height="80" rx="28" />
|
||||
|
||||
<!-- . -->
|
||||
<circle cx="330" cy="358" r="32" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
57
ifttt/assets/ifttt-quotes.json
Normal file
57
ifttt/assets/ifttt-quotes.json
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
[
|
||||
{
|
||||
"text": "Footnotes aren't decorations. They're load-bearing walls.",
|
||||
"source": "IF.TTT paper (v2.3)",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "If there's no IF.TTT trace, it didn't happen—or shouldn't be trusted.",
|
||||
"source": "IF.TTT doctrine",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "No trace, no trust. Simple as that.",
|
||||
"source": "IF.TTT doctrine",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "Trust isn't claimed. It's proven.",
|
||||
"source": "IF.TTT paper (v2.3)",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "Receipts must be readable and verifiable without credentials.",
|
||||
"source": "IF.TTT public receipt surface",
|
||||
"href": "https://infrafabric.io/static/hosted/ifttt/"
|
||||
},
|
||||
{
|
||||
"text": "Design constraint: black/white clarity. No “maybe”.",
|
||||
"source": "IF.TTT ops (full stack)",
|
||||
"href": "https://infrafabric.io/static/hosted/ifttt/api/"
|
||||
},
|
||||
{
|
||||
"text": "We do not claim “quantum-secure”. We claim “quantum-ready”.",
|
||||
"source": "IF.TTT tech stack",
|
||||
"href": "https://infrafabric.io/static/hosted/ifttt/api/"
|
||||
},
|
||||
{
|
||||
"text": "The stenographer doesn't make the therapy cold. The stenographer makes it accountable.",
|
||||
"source": "IF.emotion on IF.TTT",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "That's the moat.",
|
||||
"source": "IF.TTT paper (v2.3)",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "The moat is not the AI. The moat is the proof.",
|
||||
"source": "IF.TTT paper (v2.3)",
|
||||
"href": "https://infrafabric.io/static/hosted/review/ifttt-paper-update/2025-12-28/review-pack.html"
|
||||
},
|
||||
{
|
||||
"text": "If it’s not verifiable, label it as a gap. Do not endorse it.",
|
||||
"source": "IF.TTT stance",
|
||||
"href": "https://infrafabric.io/static/hosted/ifttt/"
|
||||
}
|
||||
]
|
||||
|
|
@ -8,14 +8,25 @@
|
|||
name="description"
|
||||
content="IF.TTT (Traceable, Transparent, Trustworthy) is a receipt-first governance layer: bind a source artifact to an output with a verifiable trace, no-login proof links, and optional offline bundles."
|
||||
/>
|
||||
<meta property="og:title" content="IF.TTT — Open Verification for AI Governance" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Receipts, not vibes. IF.TTT binds a source artifact to an output with verifiable traces, no-login proof links, and optional offline bundles."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:image" content="https://infrafabric.io/static/hosted/ifttt/assets/red-team-doc-1024-559.jpg" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="theme-color" content="#111827" />
|
||||
<link rel="icon" href="./assets/if-logo-simple.svg" type="image/svg+xml" />
|
||||
<link rel="stylesheet" href="./style.css" />
|
||||
<script src="./app.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="#top" aria-label="IF.TTT home">
|
||||
<span class="brand__mark" aria-hidden="true"></span>
|
||||
<img class="brand__logo" src="./assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Traceable • Transparent • Trustworthy</span>
|
||||
|
|
@ -28,6 +39,8 @@
|
|||
<a href="#verify">Verify</a>
|
||||
<a href="#verticals">Verticals</a>
|
||||
<a href="#faq">FAQ</a>
|
||||
<a href="./api/">Developers</a>
|
||||
<a href="./about/">About</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
|
@ -38,6 +51,14 @@
|
|||
<div class="hero__copy">
|
||||
<p class="kicker">Open governance, readable by outsiders</p>
|
||||
<h1>Receipts, not vibes.</h1>
|
||||
<div class="type" aria-label="Typing animation">
|
||||
<span class="type__prefix">if.</span><span id="typeword"></span><span class="type__suffix">></span
|
||||
><span class="type__caret" aria-hidden="true"></span>
|
||||
</div>
|
||||
<div class="quote" aria-live="polite" aria-label="Rotating quote">
|
||||
<div class="quote__text" id="quoteText"></div>
|
||||
<div class="quote__meta" id="quoteMeta"></div>
|
||||
</div>
|
||||
<p class="lede">
|
||||
IF.TTT is a receipt‑first governance layer. It binds a <strong>source artifact</strong> to an <strong>output</strong> with a
|
||||
<strong>trace page</strong>, stable <strong>no‑login links</strong>, and optional <strong>offline bundles</strong> anyone can verify.
|
||||
|
|
@ -282,6 +303,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">Evidence that controls existed at the right time, in the right scope, with receipts.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Publishing no‑login receipts and offline bundles for disputes and audits.</p>
|
||||
<a class="vcard__more" href="./verticals/saas/">B2B SaaS →</a>
|
||||
</article>
|
||||
|
||||
<article class="vcard">
|
||||
|
|
@ -299,6 +321,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">Non‑repudiation, dispute workflows, and “show your work” provenance.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Binding outputs to sources and creating a defensible, replayable receipt trail.</p>
|
||||
<a class="vcard__more" href="./verticals/finance/">Finance →</a>
|
||||
</article>
|
||||
|
||||
<article class="vcard">
|
||||
|
|
@ -316,6 +339,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">Clear boundaries: what’s verified, what’s inferred, and what must be reviewed by humans.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Making evidence legible to outsiders while preserving strict, machine‑verifiable receipts.</p>
|
||||
<a class="vcard__more" href="./verticals/healthcare/">Healthcare →</a>
|
||||
</article>
|
||||
|
||||
<article class="vcard">
|
||||
|
|
@ -332,6 +356,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">Offline‑verifiable bundles and unambiguous chain‑of‑custody.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Providing triage bundles that can be verified without trusted network access.</p>
|
||||
<a class="vcard__more" href="./verticals/government/">Government →</a>
|
||||
</article>
|
||||
|
||||
<article class="vcard">
|
||||
|
|
@ -349,6 +374,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">Provable provenance for outputs (“why did it say that?”) without internal access.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Making trace receipts shareable, replayable, and dispute‑friendly.</p>
|
||||
<a class="vcard__more" href="./verticals/ai/">AI products →</a>
|
||||
</article>
|
||||
|
||||
<article class="vcard">
|
||||
|
|
@ -367,6 +393,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">To verify AI summaries against raw evidence and keep chain‑of‑custody intact.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Binding “what the system said” to “what the system saw” via receipts and bundles.</p>
|
||||
<a class="vcard__more" href="./verticals/secops/">SecOps →</a>
|
||||
</article>
|
||||
|
||||
<article class="vcard">
|
||||
|
|
@ -384,6 +411,7 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
<p class="vcard__v">Proof of change control and traceability that survives contractor handoffs.</p>
|
||||
<p class="vcard__k">IF.TTT helps by</p>
|
||||
<p class="vcard__v">Standardizing receipts so handoffs remain verifiable across organizational boundaries.</p>
|
||||
<a class="vcard__more" href="./verticals/supply-chain/">Supply chain →</a>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -454,5 +482,21 @@ python3 iftrace.py verify trace_bundle_<id>_standard.tar.gz --expected-sha
|
|||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="./verticals/finance/">Finance</a>
|
||||
<a href="./verticals/legal/">Legal</a>
|
||||
<a href="./verticals/sciences/">Sciences</a>
|
||||
<a href="./verticals/government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="./api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="./api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
163
ifttt/style.css
163
ifttt/style.css
|
|
@ -23,10 +23,11 @@ html {
|
|||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
|
||||
font-family: Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
line-height: 1.5;
|
||||
padding-bottom: 62px;
|
||||
}
|
||||
|
||||
a {
|
||||
|
|
@ -106,6 +107,14 @@ pre.code code {
|
|||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.brand__logo {
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
display: block;
|
||||
border-radius: 12px;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.brand__text {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -171,6 +180,75 @@ h1 {
|
|||
letter-spacing: -0.4px;
|
||||
}
|
||||
|
||||
.type {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0;
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
font-size: 14px;
|
||||
color: #374151;
|
||||
margin: 0 0 10px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.type__prefix,
|
||||
.type__suffix {
|
||||
color: #111827;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.type__caret {
|
||||
width: 8px;
|
||||
height: 16px;
|
||||
margin-left: 6px;
|
||||
border-radius: 2px;
|
||||
background: rgba(17, 24, 39, 0.65);
|
||||
animation: caretblink 1s steps(1, end) infinite;
|
||||
}
|
||||
|
||||
@keyframes caretblink {
|
||||
50% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.quote {
|
||||
margin: 0 0 12px;
|
||||
padding: 10px 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
background: #ffffff;
|
||||
box-shadow: var(--shadow);
|
||||
max-width: 72ch;
|
||||
}
|
||||
|
||||
.quote__text {
|
||||
font-size: 13px;
|
||||
color: #111827;
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.quote__meta {
|
||||
margin-top: 6px;
|
||||
font-size: 12px;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.quote__meta a {
|
||||
color: var(--muted);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 2px;
|
||||
}
|
||||
|
||||
.quote--fade {
|
||||
opacity: 0;
|
||||
transition: opacity 250ms ease;
|
||||
}
|
||||
|
||||
.quote--show {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.lede {
|
||||
margin: 0 0 14px;
|
||||
color: #374151;
|
||||
|
|
@ -372,6 +450,7 @@ h2 {
|
|||
}
|
||||
|
||||
.step {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: 44px 1fr;
|
||||
gap: 12px;
|
||||
|
|
@ -382,6 +461,20 @@ h2 {
|
|||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.step::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 30px;
|
||||
top: 54px;
|
||||
bottom: -10px;
|
||||
width: 2px;
|
||||
background: linear-gradient(to bottom, rgba(229, 231, 235, 0.95), rgba(229, 231, 235, 0));
|
||||
}
|
||||
|
||||
.step:last-child::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.step__n {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
|
|
@ -550,6 +643,24 @@ h2 {
|
|||
color: #374151;
|
||||
}
|
||||
|
||||
.vcard__more {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
font-size: 12px;
|
||||
color: var(--muted);
|
||||
padding: 6px 10px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 999px;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.vcard__more:hover {
|
||||
color: var(--text);
|
||||
border-color: rgba(17, 24, 39, 0.22);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.faq {
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
|
|
@ -617,6 +728,52 @@ details p {
|
|||
font-size: 12px;
|
||||
}
|
||||
|
||||
.bottombar {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 25;
|
||||
background: rgba(255, 253, 247, 0.92);
|
||||
backdrop-filter: blur(10px);
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.bottombar__inner {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
padding: 10px 0;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.bottombar__left,
|
||||
.bottombar__right {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.bottombar a {
|
||||
color: var(--muted);
|
||||
padding: 6px 8px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.bottombar a:hover {
|
||||
color: var(--text);
|
||||
background: #ffffff;
|
||||
border: 1px solid var(--border);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.bottombar__sep {
|
||||
color: rgba(107, 114, 128, 0.7);
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.hero__grid {
|
||||
grid-template-columns: 1fr;
|
||||
|
|
@ -636,4 +793,8 @@ details p {
|
|||
h1 {
|
||||
font-size: 34px;
|
||||
}
|
||||
|
||||
body {
|
||||
padding-bottom: 74px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
119
ifttt/verticals/ai/index.html
Normal file
119
ifttt/verticals/ai/index.html
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — AI Products</title>
|
||||
<meta name="description" content="IF.TTT for AI product companies: provable provenance for outputs (“why did it say that?”) without giving third parties internal access." />
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">AI product companies</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#how">How</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">AI product reality</p>
|
||||
<h1>“Why did it say that?” becomes a contract clause.</h1>
|
||||
<p class="lede">
|
||||
Enterprise buyers increasingly require provenance: what source material fed the output, what version produced it, and what can be
|
||||
verified after the fact. IF.TTT turns that requirement into a repeatable receipt surface.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Enterprise buyers demand defensible provenance without joining your internal stack.</li>
|
||||
<li>Incident responders demand integrity-bound artifacts for “what happened.”</li>
|
||||
<li>GRC teams demand a black/white boundary between verified evidence and interpretation.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Receipts</div>
|
||||
<div class="bw__v">Trace pages + stable no‑login URLs for outputs and sources.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Disputes</div>
|
||||
<div class="bw__v">Offline bundles for verification after access or context changes.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Clarity</div>
|
||||
<div class="bw__v">Proves integrity and publication; does not claim intent or correctness.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Example receipt">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-doc-1024-559.jpg" alt="Dossier cover" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">RECEIPTS</div>
|
||||
<div class="badge">DISPUTE‑READY</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Example trace receipt</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">The output isn’t the product. The proof is.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
166
ifttt/verticals/finance/index.html
Normal file
166
ifttt/verticals/finance/index.html
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Finance</title>
|
||||
<meta name="description" content="IF.TTT for fintech and regulated finance: prove provenance, non-repudiation, and dispute-ready receipts for auditors and regulators." />
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Fintech / regulated finance</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Finance reality</p>
|
||||
<h1>Regulators don’t buy narratives. They buy receipts.</h1>
|
||||
<p class="lede">
|
||||
In regulated finance, the first question after an incident is not “what did the model mean?” It’s “show me the evidence chain: inputs,
|
||||
outputs, timestamps, and who approved what.”
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Model risk / validation teams need reproducibility.</li>
|
||||
<li>Internal audit needs non‑repudiation and time‑scoped proof.</li>
|
||||
<li>Regulators need chain‑of‑custody that survives disputes.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Receipt</div>
|
||||
<div class="bw__v">A public trace page binding <code>source_sha256</code> ↔ <code>output_sha256</code>.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Dispute</div>
|
||||
<div class="bw__v">Offline bundles for later verification without relying on internal access.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Clarity</div>
|
||||
<div class="bw__v">Black/white separation of what’s verified vs what is interpretation.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first process">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-stamp-600.png" alt="EYES ONLY // DAVE stamp" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">PROCESS</div>
|
||||
<div class="badge">RECEIPT‑FIRST</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the source</div>
|
||||
<div class="step__d">Compute <code>source_sha256</code> of the exact bytes.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the output</div>
|
||||
<div class="step__d">Compute <code>output_sha256</code> of what is published.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Publish the trace</div>
|
||||
<div class="step__d">Receipt links hashes + trace id + version.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">4</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Share without login</div>
|
||||
<div class="step__d">Stable URLs keyed by <code>shareId</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Artifacts you can hand to third parties</h2>
|
||||
<p class="sub">This is the point: reviewers shouldn’t need your VPN.</p>
|
||||
<pre class="code"><code>Trace receipt: https://infrafabric.io/static/trace/<shareId>
|
||||
Output (rendered): https://infrafabric.io/static/dossier/<shareId>
|
||||
Output (raw): https://infrafabric.io/static/dossier/<shareId>/download
|
||||
Offline bundles: https://infrafabric.io/static/hosted/review/trace-bundles/<id>/index.html</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>Live example</h2>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Example trace receipt</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">Finance isn’t special. The auditors are just earlier.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
148
ifttt/verticals/government/index.html
Normal file
148
ifttt/verticals/government/index.html
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Government</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="IF.TTT for government and defense contractors: offline verification bundles and unambiguous chain-of-custody for assessors and supply chain reviews."
|
||||
/>
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Government / defense</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Government reality</p>
|
||||
<h1>Assurance is an offline problem.</h1>
|
||||
<p class="lede">
|
||||
In restricted environments, the “can you verify it?” question must be answered without assuming network access, SaaS consoles, or vendor
|
||||
portals. IF.TTT treats offline verification as a first‑class requirement.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Assessors demand chain‑of‑custody and unambiguous provenance.</li>
|
||||
<li>Procurement wants proof that survives vendor handoffs.</li>
|
||||
<li>Security teams need evidence that is portable across networks and time.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Offline bundles</div>
|
||||
<div class="bw__v">Triage bundles (lightweight/standard/full) with expected hashes for trustless verification.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Receipt surface</div>
|
||||
<div class="bw__v">Stable no‑login URLs for trace + output + source.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Black/white</div>
|
||||
<div class="bw__v">Clear statement of what integrity receipts prove—and what they don’t.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Triage bundle selector">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-doc-1024-559.jpg" alt="Dossier cover" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">OFFLINE</div>
|
||||
<div class="badge">TRIAGE BUNDLES</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/review/trace-bundles/d70ed99a/index.html" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Triage selector (HTML)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/review/trace-bundles/d70ed99a/index.html</span>
|
||||
</a>
|
||||
<a class="linkrow" href="https://infrafabric.io/static/hosted/iftrace.html" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Verifier (HTML)</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/hosted/iftrace.html</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>What you can hand to an assessor</h2>
|
||||
<p class="sub">No accounts required. No internal consoles required.</p>
|
||||
<pre class="code"><code>Trace receipt: https://infrafabric.io/static/trace/<shareId>
|
||||
Bundle selector: https://infrafabric.io/static/hosted/review/trace-bundles/<id>/index.html
|
||||
Verifier: https://infrafabric.io/static/hosted/iftrace.py</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>Live example</h2>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Example trace receipt</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">If it can’t be verified offline, it’s not a control.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
139
ifttt/verticals/healthcare/index.html
Normal file
139
ifttt/verticals/healthcare/index.html
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Healthcare</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="IF.TTT for healthcare: clear boundaries on what is verified vs inferred, and portable evidence for audits and incident review."
|
||||
/>
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Healthcare</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Healthcare reality</p>
|
||||
<h1>Clarity beats confidence.</h1>
|
||||
<p class="lede">
|
||||
Healthcare environments punish ambiguity. IF.TTT makes “what we can prove” explicit, and forces everything else to be labeled as
|
||||
interpretation or review-required.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Compliance wants evidence that is bounded and reviewable.</li>
|
||||
<li>Incident reviewers want provenance for outputs and decisions.</li>
|
||||
<li>Vendors and partners want proof without access to your internal tooling.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Verified</div>
|
||||
<div class="bw__v">Integrity binding (hashes), receipts, optional signatures.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Not verified</div>
|
||||
<div class="bw__v">Clinical intent, interpretation, or correctness of conclusions.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Outcome</div>
|
||||
<div class="bw__v">Evidence becomes legible to outsiders without pretending it is “the decision.”</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first process">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-stamp-600.png" alt="EYES ONLY // DAVE stamp" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">BLACK/WHITE</div>
|
||||
<div class="badge">BOUNDARIES</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash artifacts</div>
|
||||
<div class="step__d">Source and output bytes get stable hashes.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Publish receipts</div>
|
||||
<div class="step__d">Trace page shows what can be verified.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Export bundles (optional)</div>
|
||||
<div class="step__d">For constrained review environments.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">Healthcare needs boundaries more than optimism.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
168
ifttt/verticals/index.html
Normal file
168
ifttt/verticals/index.html
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Verticals</title>
|
||||
<meta name="description" content="Vertical fit overview for IF.TTT: third-party trust pressure mapped to receipts, bundles, and verification." />
|
||||
<link rel="stylesheet" href="../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Vertical fit</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../#how">How</a>
|
||||
<a href="../#trust">Trust</a>
|
||||
<a href="../#verify">Verify</a>
|
||||
<a href="../about/">About</a>
|
||||
<a href="../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Same mechanism, different pressure</p>
|
||||
<h1>Verticals are just different auditors.</h1>
|
||||
<p class="lede">
|
||||
IF.TTT doesn’t “solve compliance.” It solves the universal problem underneath compliance: third parties demanding proof without joining
|
||||
your internal world.
|
||||
</p>
|
||||
<div class="cta">
|
||||
<a class="btn btn--primary" href="../#verify">Try a live trace</a>
|
||||
<a class="btn" href="../api/">Developer surface</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first sequence">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../assets/red-team-doc-1024-559.jpg" alt="Red Team dossier cover" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">RECEIPT‑FIRST</div>
|
||||
<div class="badge">NO‑LOGIN</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the source</div>
|
||||
<div class="step__d">Compute <code>source_sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the output</div>
|
||||
<div class="step__d">Compute <code>output_sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Publish the trace</div>
|
||||
<div class="step__d">A receipt page binds source ↔ output.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Choose a vertical</h2>
|
||||
<p class="sub">Each page explains what third parties demand and what receipts make those demands tractable.</p>
|
||||
|
||||
<div class="cards">
|
||||
<article class="vcard">
|
||||
<h3>Fintech / Regulated Finance</h3>
|
||||
<p class="vcard__v">Model risk, non‑repudiation, dispute workflows.</p>
|
||||
<a class="vcard__more" href="./finance/">Finance →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>Legal</h3>
|
||||
<p class="vcard__v">Chain‑of‑custody for drafts, evidence, and decisions.</p>
|
||||
<a class="vcard__more" href="./legal/">Legal →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>Sciences / Research</h3>
|
||||
<p class="vcard__v">Provenance, reproducibility, and external reviewers.</p>
|
||||
<a class="vcard__more" href="./sciences/">Sciences →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>Government / Defense</h3>
|
||||
<p class="vcard__v">Offline verification and unambiguous custody.</p>
|
||||
<a class="vcard__more" href="./government/">Government →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>B2B SaaS (SOC 2 / ISO)</h3>
|
||||
<p class="vcard__v">Auditors, procurement, “prove it existed at the time.”</p>
|
||||
<a class="vcard__more" href="./saas/">B2B SaaS →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>SecOps / SOC</h3>
|
||||
<p class="vcard__v">Bind summaries to evidence; keep custody intact.</p>
|
||||
<a class="vcard__more" href="./secops/">SecOps →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>Healthcare</h3>
|
||||
<p class="vcard__v">Clear boundaries, audit trails, and dispute‑ready receipts.</p>
|
||||
<a class="vcard__more" href="./healthcare/">Healthcare →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>AI Product Companies</h3>
|
||||
<p class="vcard__v">Provable provenance for outputs: “why did it say that?”</p>
|
||||
<a class="vcard__more" href="./ai/">AI products →</a>
|
||||
</article>
|
||||
<article class="vcard">
|
||||
<h3>Industrial / Supply Chain</h3>
|
||||
<p class="vcard__v">Traceability that survives vendor and contractor handoffs.</p>
|
||||
<a class="vcard__more" href="./supply-chain/">Supply chain →</a>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">InfraFabric • IF.TTT receipts are designed to be legible to the governed.</div>
|
||||
<div class="muted">
|
||||
<a href="../">IF.TTT</a> · <a href="../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="./finance/">Finance</a>
|
||||
<a href="./legal/">Legal</a>
|
||||
<a href="./sciences/">Sciences</a>
|
||||
<a href="./government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
159
ifttt/verticals/legal/index.html
Normal file
159
ifttt/verticals/legal/index.html
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Legal</title>
|
||||
<meta name="description" content="IF.TTT for legal workflows: chain-of-custody for drafts, evidence, and decisions. Receipts, not recollections." />
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Legal</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Legal reality</p>
|
||||
<h1>Courts don’t accept “trust me.” They accept provenance.</h1>
|
||||
<p class="lede">
|
||||
Legal and compliance teams live in the difference between “we believe this happened” and “we can prove this happened.” IF.TTT is built to
|
||||
make that proof portable.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Disputes demand reproducibility: the exact input and the exact output.</li>
|
||||
<li>Evidence must be time‑scoped: “what did we know, when did we know it?”</li>
|
||||
<li>Chain‑of‑custody must survive handoffs (vendor → customer → counsel → auditor).</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Integrity</div>
|
||||
<div class="bw__v">Hash receipts bind the published bytes to what was reviewed.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Portability</div>
|
||||
<div class="bw__v">No‑login links and offline bundles for external review.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Clarity</div>
|
||||
<div class="bw__v">Explicit “proves / does not prove” framing reduces ambiguity.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first process">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-doc-1024-559.jpg" alt="Dossier cover" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">EVIDENCE</div>
|
||||
<div class="badge">CHAIN‑OF‑CUSTODY</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Define the artifact</div>
|
||||
<div class="step__d">Identify the exact bytes to be relied upon.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash it</div>
|
||||
<div class="step__d">Publish <code>sha256</code> as the integrity baseline.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Issue the receipt</div>
|
||||
<div class="step__d">Trace page binds source ↔ output with a trace id.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Artifacts that make disputes less expensive</h2>
|
||||
<p class="sub">You can hand these to an external reviewer without shipping your internal systems.</p>
|
||||
<pre class="code"><code>Trace receipt: https://infrafabric.io/static/trace/<shareId>
|
||||
Output (raw): https://infrafabric.io/static/dossier/<shareId>/download
|
||||
Review pack: https://infrafabric.io/static/review/<shareId>
|
||||
Offline bundles: https://infrafabric.io/static/hosted/review/trace-bundles/<id>/index.html</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>Live example</h2>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Example trace receipt</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">Legal is just governance with deadlines.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
146
ifttt/verticals/saas/index.html
Normal file
146
ifttt/verticals/saas/index.html
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — B2B SaaS</title>
|
||||
<meta name="description" content="IF.TTT for B2B SaaS: auditor-ready receipts, no-login proof surfaces, and dispute-friendly bundles for SOC 2 / ISO programs." />
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">B2B SaaS (SOC 2 / ISO)</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">SaaS reality</p>
|
||||
<h1>Audits are evidence requests with a deadline.</h1>
|
||||
<p class="lede">
|
||||
In B2B SaaS, the friction isn’t the control design. It’s proving the control existed at the right time, in the right scope, without
|
||||
granting auditors full internal access.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Auditors want integrity-bound artifacts (not screenshots in shared drives).</li>
|
||||
<li>Enterprise procurement wants reproducible proof without bespoke portals.</li>
|
||||
<li>Post‑incident reviewers want “what did it say?” tied to “what did it see?”</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">No‑login</div>
|
||||
<div class="bw__v">Stable URLs for trace + output + source, keyed by <code>shareId</code>.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Dispute‑ready</div>
|
||||
<div class="bw__v">Offline bundles with expected hashes for later verification.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Black/white</div>
|
||||
<div class="bw__v">Explicit “proves / does not prove” framing for auditor conversations.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first process">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-doc-1024-559.jpg" alt="Dossier cover" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">RECEIPTS</div>
|
||||
<div class="badge">AUDIT‑FRICTION</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the source</div>
|
||||
<div class="step__d">Compute <code>source_sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the output</div>
|
||||
<div class="step__d">Compute <code>output_sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Publish the receipt</div>
|
||||
<div class="step__d">Share a trace page with stable no‑login URLs.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Artifacts for auditors</h2>
|
||||
<p class="sub">The purpose is to make evidence portable and boring.</p>
|
||||
<pre class="code"><code>Trace receipt: https://infrafabric.io/static/trace/<shareId>
|
||||
Output (raw): https://infrafabric.io/static/dossier/<shareId>/download
|
||||
Pack (HTML): https://infrafabric.io/static/pack/<shareId></code></pre>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">If the evidence isn’t portable, the audit will be.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
159
ifttt/verticals/sciences/index.html
Normal file
159
ifttt/verticals/sciences/index.html
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Sciences</title>
|
||||
<meta name="description" content="IF.TTT for science and research: provenance and reproducibility for reports, analyses, and model outputs." />
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Sciences / research</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#how">How</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Research reality</p>
|
||||
<h1>Reproducibility is governance in a lab coat.</h1>
|
||||
<p class="lede">
|
||||
Scientific workflows already understand receipts: methods, datasets, and citations. IF.TTT is the same idea applied to AI outputs and
|
||||
operational decisions: publish what can be verified, and mark what can’t.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Peer reviewers need the ability to reproduce claims.</li>
|
||||
<li>Funding/compliance bodies need provenance for decisions and outputs.</li>
|
||||
<li>Collaborators need proof that the artifact they received is the artifact you published.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Integrity</div>
|
||||
<div class="bw__v">Hash receipts: same bytes, same hash, independent verification.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Clarity</div>
|
||||
<div class="bw__v">Explicitly separates evidence (verified) from interpretation (not verified).</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Portability</div>
|
||||
<div class="bw__v">Offline bundles for constrained or future review environments.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first process">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-stamp-600.png" alt="EYES ONLY // DAVE stamp" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">PROCESS</div>
|
||||
<div class="badge">PROVENANCE</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the source</div>
|
||||
<div class="step__d">Dataset / paper / prompt pack → <code>source_sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the output</div>
|
||||
<div class="step__d">The output you publish → <code>output_sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Publish the trace</div>
|
||||
<div class="step__d">Receipt binds source ↔ output with trace id and versions.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Portable verification artifacts</h2>
|
||||
<p class="sub">So reviewers can validate without trusting your infrastructure.</p>
|
||||
<pre class="code"><code>Trace receipt: https://infrafabric.io/static/trace/<shareId>
|
||||
Pack (raw): https://infrafabric.io/static/pack/<shareId>.md
|
||||
Pack (HTML): https://infrafabric.io/static/pack/<shareId>
|
||||
Offline bundles: https://infrafabric.io/static/hosted/review/trace-bundles/<id>/index.html</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="wrap">
|
||||
<h2>Live example</h2>
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Example trace receipt</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">If it can’t be reproduced, it can’t be governed.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
136
ifttt/verticals/secops/index.html
Normal file
136
ifttt/verticals/secops/index.html
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — SecOps</title>
|
||||
<meta name="description" content="IF.TTT for SecOps and SOC: bind AI summaries to evidence; preserve chain-of-custody for investigations and audits." />
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">SecOps / SOC</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">SecOps reality</p>
|
||||
<h1>Bind “what the system said” to “what the system saw.”</h1>
|
||||
<p class="lede">
|
||||
AI summaries can help, but only if they remain verifiable against raw telemetry. IF.TTT makes the custody chain explicit: source bytes,
|
||||
output bytes, and a receipt that can be validated by third parties.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Executives demand a narrative; auditors demand evidence.</li>
|
||||
<li>Incident response needs reproducible artifacts, not recollections.</li>
|
||||
<li>External assessors need proof without your SIEM credentials.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Trace receipt</div>
|
||||
<div class="bw__v">Integrity binding: <code>source_sha256</code> ↔ <code>output_sha256</code>.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Offline proof</div>
|
||||
<div class="bw__v">Bundles that can be verified after the fact, offline.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Clarity</div>
|
||||
<div class="bw__v">What’s verified is stated; what’s interpretation is labeled as such.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Example receipt links">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-doc-1024-559.jpg" alt="Dossier cover" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">EVIDENCE</div>
|
||||
<div class="badge">REPLAYABLE</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<div class="links">
|
||||
<a class="linkrow" href="https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n" target="_blank" rel="noreferrer">
|
||||
<span class="linkrow__t">Example trace receipt</span>
|
||||
<span class="linkrow__u">https://infrafabric.io/static/trace/6qRgcR01kw_qNo63Dbs_ob9n</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section--alt">
|
||||
<div class="wrap">
|
||||
<h2>Operational trap to avoid</h2>
|
||||
<p class="sub">Do not treat “AI summary” as evidence.</p>
|
||||
<div class="grid2">
|
||||
<div class="panel">
|
||||
<h3>Bad</h3>
|
||||
<p class="sub2">“The AI said this was resolved.”</p>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Good</h3>
|
||||
<p class="sub2">“Here is the output, here is the evidence artifact, here is the receipt binding them.”</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">Summaries don’t hold up. Receipts do.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
139
ifttt/verticals/supply-chain/index.html
Normal file
139
ifttt/verticals/supply-chain/index.html
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>IF.TTT — Supply Chain</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="IF.TTT for industrial and supply chain environments: change-control receipts that survive contractor handoffs and insurer/auditor review."
|
||||
/>
|
||||
<link rel="stylesheet" href="../../style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="top">
|
||||
<div class="wrap top__inner">
|
||||
<a class="brand" href="../../" aria-label="IF.TTT home">
|
||||
<img class="brand__logo" src="../../assets/if-logo-simple.svg" alt="" aria-hidden="true" />
|
||||
<span class="brand__text">
|
||||
<span class="brand__title">IF.TTT</span>
|
||||
<span class="brand__sub">Industrial / supply chain</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Primary">
|
||||
<a href="../">Verticals</a>
|
||||
<a href="../../#trust">Trust</a>
|
||||
<a href="../../#verify">Verify</a>
|
||||
<a href="../../about/">About</a>
|
||||
<a href="../../api/">Developers</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="wrap hero__grid">
|
||||
<div class="hero__copy">
|
||||
<p class="kicker">Supply chain reality</p>
|
||||
<h1>Handoffs are where proof dies.</h1>
|
||||
<p class="lede">
|
||||
Industrial systems accumulate contractors, vendors, and integrators. IF.TTT standardizes a receipt surface so chain‑of‑custody doesn’t
|
||||
collapse the moment responsibility moves.
|
||||
</p>
|
||||
|
||||
<div class="panel">
|
||||
<h3>Third‑party pressure</h3>
|
||||
<ul class="list">
|
||||
<li>Customers ask for change control evidence after outages.</li>
|
||||
<li>Insurers ask what controls existed at the time of the incident.</li>
|
||||
<li>Auditors ask for traceability across organizational boundaries.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="panel" style="margin-top: 12px">
|
||||
<h3>What IF.TTT provides</h3>
|
||||
<div class="bw">
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Receipts</div>
|
||||
<div class="bw__v">Stable no‑login trace + output + source URLs keyed by <code>shareId</code>.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Offline</div>
|
||||
<div class="bw__v">Bundles for verification when networks and portals are unavailable.</div>
|
||||
</div>
|
||||
<div class="bw__row">
|
||||
<div class="bw__k">Clarity</div>
|
||||
<div class="bw__v">Integrity binding is verifiable; interpretation remains process-owned.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero__card" aria-label="Receipt-first process">
|
||||
<div class="card">
|
||||
<div class="card__media">
|
||||
<img src="../../assets/red-team-stamp-600.png" alt="EYES ONLY // DAVE stamp" loading="lazy" />
|
||||
</div>
|
||||
<div class="card__hdr">
|
||||
<div class="badge badge--ok">PROCESS</div>
|
||||
<div class="badge">HANDOFF‑SAFE</div>
|
||||
</div>
|
||||
<div class="card__body">
|
||||
<ol class="steps">
|
||||
<li class="step">
|
||||
<div class="step__n">1</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Hash the artifact</div>
|
||||
<div class="step__d">Define the bytes and compute <code>sha256</code>.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">2</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Publish the receipt</div>
|
||||
<div class="step__d">Trace page binds source ↔ output.</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="step">
|
||||
<div class="step__n">3</div>
|
||||
<div class="step__b">
|
||||
<div class="step__t">Export bundles</div>
|
||||
<div class="step__d">Carry proof through constrained environments.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="wrap footer__inner">
|
||||
<div class="muted">When responsibility moves, the receipt shouldn’t.</div>
|
||||
<div class="muted">
|
||||
<a href="../">Verticals</a> · <a href="../../api/">Developers</a> · <a href="mailto:trace@infrafabric.io">trace@infrafabric.io</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="bottombar" aria-label="Quick links">
|
||||
<div class="wrap bottombar__inner">
|
||||
<div class="bottombar__left">
|
||||
<a href="../finance/">Finance</a>
|
||||
<a href="../legal/">Legal</a>
|
||||
<a href="../sciences/">Sciences</a>
|
||||
<a href="../government/">Government</a>
|
||||
</div>
|
||||
<div class="bottombar__right">
|
||||
<a href="../../api/">Developers</a>
|
||||
<span class="bottombar__sep">|</span>
|
||||
<a href="../../api/">API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Reference in a new issue