summaryrefslogtreecommitdiffstats
path: root/news/phase0-foundation
diff options
context:
space:
mode:
Diffstat (limited to 'news/phase0-foundation')
-rw-r--r--news/phase0-foundation/index.html125
-rw-r--r--news/phase0-foundation/index.html.gzbin0 -> 2680 bytes
2 files changed, 125 insertions, 0 deletions
diff --git a/news/phase0-foundation/index.html b/news/phase0-foundation/index.html
new file mode 100644
index 0000000..783c9e6
--- /dev/null
+++ b/news/phase0-foundation/index.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Phase 0: Foundation Laid — Tesseras</title>
+ <meta name="description" content="The foundation crates for Tesseras are now in place — core domain types, cryptographic primitives, SQLite storage, and a working CLI.">
+ <!-- Open Graph -->
+ <meta property="og:type" content="article">
+ <meta property="og:title" content="Phase 0: Foundation Laid">
+ <meta property="og:description" content="The foundation crates for Tesseras are now in place — core domain types, cryptographic primitives, SQLite storage, and a working CLI.">
+ <meta property="og:image" content="https://tesseras.net/images/social.jpg">
+ <meta property="og:image:width" content="1200">
+ <meta property="og:image:height" content="630">
+ <meta property="og:site_name" content="Tesseras">
+ <!-- Twitter Card -->
+ <meta name="twitter:card" content="summary_large_image">
+ <meta name="twitter:title" content="Phase 0: Foundation Laid">
+ <meta name="twitter:description" content="The foundation crates for Tesseras are now in place — core domain types, cryptographic primitives, SQLite storage, and a working CLI.">
+ <meta name="twitter:image" content="https://tesseras.net/images/social.jpg">
+ <link rel="stylesheet" href="https://tesseras.net/style.css?h=21f0f32121928ee5c690">
+
+
+ <link rel="alternate" type="application/atom+xml" title="Tesseras" href="https://tesseras.net/atom.xml">
+
+
+ <link rel="icon" type="image/png" sizes="32x32" href="https://tesseras.net/images/favicon.png?h=be4e123a23393b1a027d">
+
+</head>
+<body>
+ <header>
+ <h1>
+ <a href="https:&#x2F;&#x2F;tesseras.net/">
+ <img src="https://tesseras.net/images/logo-64.png?h=c1b8d0c4c5f93b49d40b" alt="Tesseras" width="40" height="40" class="logo">
+ Tesseras
+ </a>
+ </h1>
+ <nav>
+
+ <a href="https://tesseras.net/about/">About</a>
+ <a href="https://tesseras.net/news/">News</a>
+ <a href="https://tesseras.net/releases/">Releases</a>
+ <a href="https://tesseras.net/faq/">FAQ</a>
+ <a href="https://tesseras.net/subscriptions/">Subscriptions</a>
+ <a href="https://tesseras.net/contact/">Contact</a>
+
+ </nav>
+ <nav class="lang-switch">
+
+ <strong>English</strong> | <a href="/pt-br&#x2F;news&#x2F;phase0-foundation&#x2F;">Português</a>
+
+ </nav>
+ </header>
+
+ <main>
+
+<article>
+ <h2>Phase 0: Foundation Laid</h2>
+ <p class="news-date">2026-02-14</p>
+ <p>The first milestone of the Tesseras project is complete. Phase 0 establishes the
+foundation that every future component will build on: domain types,
+cryptography, storage, and a usable command-line interface.</p>
+<h2 id="what-was-built">What was built</h2>
+<p><strong>tesseras-core</strong> — The domain layer defines the tessera format: <code>ContentHash</code>
+(BLAKE3, 32 bytes), <code>NodeId</code> (Kademlia, 20 bytes), memory types (Moment,
+Reflection, Daily, Relation, Object), visibility modes (Private, Circle, Public,
+PublicAfterDeath, Sealed), and a plain-text manifest format that can be parsed
+by any programming language for the next thousand years. The application service
+layer (<code>TesseraService</code>) handles create, verify, export, and list operations
+through port traits, following hexagonal architecture.</p>
+<p><strong>tesseras-crypto</strong> — Ed25519 key generation, signing, and verification. A
+dual-signature framework (Ed25519 + ML-DSA placeholder) ready for post-quantum
+migration. BLAKE3 content hashing. Reed-Solomon erasure coding behind a feature
+flag for future replication.</p>
+<p><strong>tesseras-storage</strong> — SQLite index via rusqlite with plain-SQL migrations.
+Filesystem blob store with content-addressable layout
+(<code>blobs/&lt;tessera_hash&gt;/&lt;memory_hash&gt;/&lt;filename&gt;</code>). Identity key persistence on
+disk.</p>
+<p><strong>tesseras-cli</strong> — A working <code>tesseras</code> binary with five commands:</p>
+<ul>
+<li><code>init</code> — generates Ed25519 identity, creates SQLite database</li>
+<li><code>create &lt;dir&gt;</code> — scans a directory for media files, creates a signed tessera</li>
+<li><code>verify &lt;hash&gt;</code> — checks signature and file integrity</li>
+<li><code>export &lt;hash&gt; &lt;dest&gt;</code> — writes a self-contained tessera directory</li>
+<li><code>list</code> — shows a table of stored tesseras</li>
+</ul>
+<p><strong>Testing</strong> — 67+ tests across the workspace: unit tests in every module,
+property-based tests (proptest) for hex roundtrips and manifest serialization,
+integration tests covering the full create-verify-export cycle including
+tampered file and invalid signature detection. Zero clippy warnings.</p>
+<h2 id="architecture-decisions">Architecture decisions</h2>
+<ul>
+<li><strong>Hexagonal architecture</strong>: crypto operations are injected via trait objects
+(<code>Box&lt;dyn Hasher&gt;</code>, <code>Box&lt;dyn ManifestSigner&gt;</code>, <code>Box&lt;dyn ManifestVerifier&gt;</code>),
+keeping the core crate free of concrete crypto dependencies.</li>
+<li><strong>Feature flags</strong>: the <code>service</code> feature on tesseras-core gates the async
+application layer. The <code>classical</code> and <code>erasure</code> features on tesseras-crypto
+control which algorithms are compiled in.</li>
+<li><strong>Plain-text manifest</strong>: parseable without any binary format library, with
+explicit <code>blake3:</code> hash prefixes and human-readable layout.</li>
+</ul>
+<h2 id="what-comes-next">What comes next</h2>
+<p>Phase 0 is the local-only foundation. The road ahead:</p>
+<ul>
+<li><strong>Phase 1: Networking</strong> — QUIC transport (quinn), Kademlia DHT for peer
+discovery, NAT traversal</li>
+<li><strong>Phase 2: Replication</strong> — Reed-Solomon erasure coding over the network,
+repair loops, bilateral reciprocity (no blockchain, no tokens)</li>
+<li><strong>Phase 3: Clients</strong> — Flutter mobile/desktop app via flutter_rust_bridge,
+GraphQL API, WASM browser node</li>
+<li><strong>Phase 4: Hardening</strong> — ML-DSA post-quantum signatures, packaging for
+Alpine/Arch/Debian/FreeBSD/OpenBSD, CI on SourceHut</li>
+</ul>
+<p>The tessera format is stable. Everything built from here connects to and extends
+what exists today.</p>
+
+</article>
+
+ </main>
+
+ <footer>
+ <p>&copy; 2026 Tesseras Project. <a href="/atom.xml">News Feed</a> · <a href="https://git.sr.ht/~ijanc/tesseras">Source</a></p>
+ </footer>
+</body>
+</html>
diff --git a/news/phase0-foundation/index.html.gz b/news/phase0-foundation/index.html.gz
new file mode 100644
index 0000000..31efa2d
--- /dev/null
+++ b/news/phase0-foundation/index.html.gz
Binary files differ