Commit graph

71 commits

Author SHA1 Message Date
00dd745ef2 refactor: remove WAT/WASM generator (superseded by IR→Rust→WASM path)
- Deleted compiler/src/generators/wasm.ts (472 lines)
- Deleted compiler/src/runtime/wasm-host.ts (165 lines)
- Deleted compiler/__tests__/e2e-wasm.test.ts (203 lines)
- Removed WASM import and generation call from compiler/src/index.ts
- Removed WASMGenerated from TS generator state enum literals
- Removed WASM codegen tests from parser.test.ts
- All 37 tests passing

The WASM generator was architecturally wrong: every Map/Set operation
crossed the WASM→JS boundary, creating 45-55% overhead for a module
that doesn't compute anything. WASM will be a byproduct of the Rust
backend via wasm-pack instead (M2.1).

Closes #19
2026-05-09 22:03:20 -07:00
Scott Scoble
bc067d239c docs: Show HN demo script — 2-min terminal recording walkthrough for launch day
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
2026-05-09 07:11:50 -07:00
Scott Scoble
31fcbce425 docs: Show HN launch day operations checklist — minute-by-minute runbook for May 12-13
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
2026-05-09 02:09:22 -07:00
Scott Scoble
ea8392f7db docs: Show HN comment response playbook — 14 pre-written replies for launch day
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
2026-05-09 01:08:36 -07:00
Scott Scoble
45ee6fc1bc docs: sync Phase 2 content pipeline — all 5 blog posts + publishing toolkit
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
blog-01: Spec-Code Drift Is a Provenance Problem (~1,500 words)
blog-02: Designing SpeckDL (~1,800 words)
blog-03: How Speckl's Compiler Works (~1,900 words)
blog-04: Embedded Provenance (~1,200 words)
blog-05: Consensus Protocols in SpeckDL (~1,300 words)
publishing-toolkit: Dev.to/Medium/Reddit/HN formatting + objection prep (~3,500 words)

Total Phase 2 pipeline: ~11,200 words across 6 files.
Previously existed only in workspace copy (posts 1/3/toolkit) or
as untracked files (posts 2/4/5). All now committed to Forgejo.
2026-05-09 00:11:29 -07:00
Scott Scoble
e23c16fa1e Rewrite demo page for current product + add demo link to landing page
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Demo page was from May 2 and described non-existent features:
- Z3 solver, constraint/verify keywords, 'speck' keyword → all removed
- 'Reference Agent Architecture' diagram → removed
- RetryHandler example with fake CLI output → replaced

New demo page uses ToggleSwitch as canonical example:
- Real SpeckDL syntax (spec/state/init/action)
- 5-artifact pipeline (PROV-O, CycloneDX, SPDX, TS, WASM)
- TLA+ comparison table
- Consensus protocol examples (TwoPhaseCommit, Paxos, Raft)
- Known issues section (engineering#9, engineering#11)
- Updated stats (11 examples, 41 tests, v0.3.1)
- Honest note about engineering#9 regression

Landing page: added 'Live Demo →' as primary hero CTA button.
2026-05-08 17:09:31 -07:00
Scott Scoble
d571d40fd5 tools: add validate-all.sh — CI-style batch compiler validation
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Runs full pipeline (parse → generate → TS check) on all 11 examples.
Produces structured pass/fail report with artifact counts.
Supports --quick (skip WAT) and --verbose (show errors).

Current state: 5/11 clean (AccessControl, DrugDosageCalculator,
PaymentService, RetryHandler, TemperatureMonitor). 6/11 have TS errors
from known issues (engineering#9: precondition drops, record type refs,
spurious this.state prefix).
2026-05-08 11:12:25 -07:00
Scott Scoble
d6e8bf906a landing: rewrite to match current Speckl reality
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Replace 'dark provenance' / constraint-based / Z3 messaging with what Speckl
actually does: state machine compilation to 5 auditable artifacts (PROV-O,
CycloneDX, SPDX, TypeScript, WASM). Update code example from old 'speck' syntax
to current 'spec' / state / init / action keywords. Add pipeline grid, real
examples (TwoPhaseCommit, Paxos, Raft, Forgejo workflow), strategy ladder with
completion status, quickstart section with real CLI commands.

The old landing page described a completely different product — one that didn't
exist. This version accurately reflects the compiler, examples, and whitepaper
v2 that are actually built and working.
2026-05-08 09:11:48 -07:00
Scott Scoble
65546fa6ba docs: modernize README — state machine compiler, TLA+ examples, whitepaper v2 links
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Drop outdated 'dark provenance' framing. Add current capabilities:
- Working state machine compiler (WASM + TypeScript dual-target)
- 5 artifact generation (WASM, TS, PROV-O, CycloneDX, SPDX)
- TLA+ trilogy validation (TwoPhaseCommit, Paxos, Raft)
- Complete whitepaper v2 (8 sections, ~19K words)
- Speckl by Example tutorial
- Distribution strategy
- Strategy ladder with completion status

Remove old roadmap table. Add known issues section linking engineering#9.
2026-05-08 02:07:55 -07:00
Scott Scoble
44a8406855 docs: distribution strategy — prioritized roadmap from Show HN to consulting
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
P0: Show HN May 12-13 (post ready)
P1: arXiv preprint + 5-part blog series from whitepaper
P2: 2027 conference targets (FMCAD, FM, ICSE, ASE, NFM, SPLASH)
P3: QCon SF talk proposal (~Jun 2026)
P4: TOSEM/JAR journal (rolling submissions)
P5: Cold email → first consulting client (summer 2026)

Includes verified 2026/2027 conference deadlines, blocker inventory (7 items),
decision framework by Show HN traction tier, and anti-patterns.
2026-05-07 21:06:35 -07:00
Scott Scoble
6121fd6a8f Whitepaper v2 Section 8: Future Work & Roadmap (~2,900 words)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 1s
Completes the whitepaper. Covers:
- 8.1 Compiler completeness (record types, action bodies, in operator, Map ops, host binding, TigerBeetle E2E)
- 8.2 Language extensions (temporal properties, function types, modules, parametric types)
- 8.3 Tooling ecosystem (LSP, IDE plugins, package registry, CI/CD)
- 8.4 Strategic roadmap (Open Standard → Consulting → SaaS → Compliance API)
- 8.5 What Will Not Change (small language, mandatory provenance, MIT, evidence over proof)
- Conclusion: the case for accountable software

All 8 sections complete. ~19,000 words total.
2026-05-07 01:14:24 -07:00
Scott Scoble
940b959efb Whitepaper v2 Section 7: Related Work (~2,500 words)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Comprehensive comparison of SpeckDL against:
- TLA+/PlusCal (model checking vs. runtime compilation)
- Alloy (structural vs. behavioral modeling)
- Coq/Rocq (static proofs vs. dynamic enforcement)
- Dafny (verified code vs. spec-as-code)
- Event-B, UML/SysML, P (Microsoft), OpenAPI/gRPC
- SBOM tools: Syft/Grype, SLSA, in-toto

Includes positioning table across 7 tools on 6 dimensions.
Defines niche: specification language with compiler-level provenance,
designed for teams that need evidence of correctness more than proof.
2026-05-07 00:18:59 -07:00
Scott Scoble
627c46235c whitepaper: Section 6 — Compliance & Supply Chain Security (~2,800 words)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Covers: regulatory landscape (EO 14028, CRA, DORA, FedRAMP), NIST SA-11 control
mapping (sub-controls 2/4/6/7), the evidence problem, compliance automation workflow,
judgement transport model, 4 real-world use cases (FDA, CISA, DORA, SLSA), clear
boundaries on what Speckl does not do, and cost equation with before/after comparison.
Completes the bridge between provenance (S4) and practical regulatory value.
2026-05-06 22:07:06 -07:00
Scott Scoble
2ede8445e4 whitepaper v2: Section 5 - Consensus Protocols in SpeckDL (~2,800 words)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
- 2PC, Paxos, Raft case studies with full protocol descriptions
- Why consensus protocols are ideal SpeckDL case studies
- Per-protocol: state model, action breakdown, safety invariants
- TLA+ vs SpeckDL side-by-side comparison table
- Raft bridging from academic consensus to production (etcd/Consul)
- Natural progression: 2PC → Paxos → Raft → TigerBeetle curriculum
- Sections complete: 1-5 of 8
2026-05-06 21:14:57 -07:00
Scott Scoble
322d54781a whitepaper v2: Section 4 — Embedded Provenance (~2,000 words)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Covers: supply chain blind spot problem, provenance-by-construction approach,
PROV-O audit trail (Turtle example), CycloneDX SBOM (JSON example),
SPDX license metadata (JSON example), NIST SA-11 control mapping,
5 design implications of provenance as first-class compiler concern.
2026-05-06 20:08:18 -07:00
Scott Scoble
fa896dec77 whitepaper v2: Section 3 - Compiler Architecture (~2,500 words)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Covers full compilation pipeline: parser (~850 lines), AST design, all 5
generators (PROV-O, CycloneDX, SPDX, TypeScript, WASM), WASM host runtime,
test infrastructure (41 tests, 3 suites), and architectural design decisions
(TypeScript throughout, zero external services, independent generators,
text-first WASM, DIST DESYNC guard, CLI-first).

Sections 1-3 complete; 4-8 remain.
2026-05-06 19:07:12 -07:00
Scott Scoble
66ecdd69b9 whitepaper v2: Section 2 - SpeckDL language specification
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Full technical writeup covering:
- Design philosophy (spec as source of truth, state machines, type-safe, emit)
- Structure of a speck (types, state, init, invariant, action, next)
- Type system (Bool, Nat, Int, String, Set, Map, List, Records, Optional)
- Actions (require, assignments, let bindings, if, emit, return, forall)
- Invariants (documentation + runtime verification, quantified, logical ops)
- Action composition (next: non-deterministic interleaving)
- Complete Two-Phase Commit example (48-line spec)
- What SpeckDL deliberately omits (no functions, no loops, no concurrency, no I/O, no error handling)
- ~2,000 words
2026-05-06 18:07:53 -07:00
Scott Scoble
2ed6c13026 whitepaper v2: Section 1 (The Spec-Code Gap) with executable specs framing
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 3s
Rewrites the whitepaper from the old 'Dark Provenance' concept to reflect
what Speckl actually is now: specifications that compile to software.

Section 1 covers:
- The Archaeology Problem (specs that rot in docs)
- The Formal Methods Gap (verified spec ≠ running system)
- The SpeckDL Approach (compile spec directly to code + provenance)
- Concrete ToggleSwitch example (14 lines → 5 artifacts)

Whitepaper outline restructured around current compiler capabilities
(TypeScript, WASM, PROV-O, CycloneDX, SPDX generators).
2026-05-06 17:07:50 -07:00
Scott Scoble
d03b5b41a6 docs: add Show HN announcement post draft
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Ready-to-publish HN announcement covering:
- Spec-first development pitch (spec-code drift problem)
- 5-artifact compilation (TS, WASM, PROV-O, CycloneDX, SPDX)
- Example suite: ToggleSwitch → Raft, TLA+ comparison table
- Tech stack, roadmap, publishing tips

Content asset for HN, Reddit, Dev.to distribution
2026-05-06 16:06:46 -07:00
Scott Scoble
bba95b70af docs: Speckl by Example tutorial — guided tour from ToggleSwitch to Raft
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 3s
Covers ToggleSwitch → AccountLedger → TwoPhaseCommit → Raft
with progressive introduction of SpeckDL concepts:
- state/init/action/invariant structure
- Map, Set, List types with operations
- require guards, let bindings, emit events
- quantified invariants and safety properties
- multi-role distributed protocols
- TLA+ comparison table
- compilation pipeline diagram
2026-05-06 15:07:22 -07:00
Scott Scoble
acb464f957 fix(wasm): remove spurious i32.const from uncompiled assignment placeholders
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 4s
Undcompiled map/record/unrecognized assignments emitted (i32.const 1)
placeholders that left values on the WASM stack. Combined with
the default return i32.const 1 at end of function, this caused
type mismatch errors (expected [], got [i32, i32] or [i32]).

Fix: make uncompiled assignments emit comment-only output with
no stack effect. Scalar assignments already work correctly since
emitExpr feeds into global.set which consumes the value.

Closes #9 WASM E2E portion — parser fix for precondition:/postcondition:
keyword handling still needed.
2026-05-06 05:14:33 -07:00
Scott Scoble
a2f7b7b2e9 fix: add dist-check guard + List<T> type parsing + state machine examples
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
- check-dist.sh: Prevents DIST DESYNC by verifying all dist/*.js files
  are newer than their src/*.ts sources. Fails build if stale.
- Makefile: Standard build targets (build/check-dist/test/recompile/clean)
- src/index.ts: Integrated dist freshness check before compilation
- src/parser.ts: Added List<T> type parsing alongside existing Set<T>/Map<K,V>
  (e.g., 'log: List<LogEntry>' now parses as { type: 'list', elementType })
- examples/: Restored v0.3 state machine specs (TigerBeetleLedger,
  AccountLedger, ToggleSwitch, TwoPhaseCommit)
- DIST DESYNC is a known recurring anti-pattern — this guard prevents it

Tests: 39/41 pass (2 pre-existing E2E WASM failures due to missing wabt)
2026-05-05 03:11:53 -07:00
Scott Scoble
7230650628 feat(compiler): self-hosting spec + generator multi-enum support
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
- Add speckl-compile.speckdl — compiler formally specified in SpeckDL
- Generator: multi-enum detection, value→enum mapping, trailing comma cleanup
- Emit blocks collapsed to single-line (parser limitation)
- Generated artifacts: provenance, BOMs, WAT, TypeScript (2 known bugs → engineering#8)
2026-05-03 14:42:03 -07:00
Scott Scoble
39436b4382 WASM E2E test: Speckl specs compile to runnable WebAssembly
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 3s
- Add __tests__/e2e-wasm.test.ts: full pipeline test
  - Parse Counter speck → generate WAT → assemble with wabt → instantiate → run
  - Verify init, action calls, guard pass/fail, state mutations
  - TigerBeetle WAT validation test (wabt parse + validate + toBinary)
- Fix wasm.ts bugs found by E2E:
  - Guard condition inverted: added i32.eqz to negate comparison
  - Missing local declarations: locals now inserted before body
  - Uncompiled guards left stack values: now emit comments only (no i32.const 1)
- Install wabt npm package for WAT→WASM assembly in tests
- 41/41 tests passing (39 original + 2 E2E)

Milestone: Speckl produces runnable WebAssembly from specs.
2026-05-03 13:13:55 -07:00
Scott Scoble
7ffd65f6b3 speckl: TypeScript state machine generator + Forgejo issue workflow spec
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Adds a first-class TypeScript code generator to speckl-compile that emits:
- Const enum for workflow states (IssueWorkflowState)
- Strongly-typed class with guards, state transitions, decision log
- Proper this. prefixing (state vars only, not local params)
- Enum references instead of string literals for state comparisons
- Clean tsc --noEmit compilation

Also includes:
- specs/forgejo-issue-workflow.speckdl — full workflow with 9 actions,
  8 constraints, 5 temporal verifications
- Generator deduplication of duplicate AST nodes
- Support for init block initialization of state variables

The generator was validated against the Forgejo issue workflow spec,
producing IssueWorkflow.ts that compiles with zero errors.

Refs: heartbeat conversation re: speckl-compile extensibility
2026-05-03 12:23:33 -07:00
Scott Scoble
cbee677a11 fix: support hyphenated speck names + provenance block parsing (v0.3.1)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
- Fixed speck name regex to allow hyphens (\w → [\w-])
- Added provenance { } block handling in parseMember()
- Updated hyphenated name test from 'My' to 'My-Service-Handler'
- All 48 tests passing (27 parser + 21 validator)
2026-05-02 23:12:27 -07:00
Scott Scoble
a009bacef9 Add Speckl demo page — live pipeline showcase (RetryHandler end-to-end)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
2026-05-02 20:08:08 -07:00
Scott Scoble
8facd5c6c7 Wire up compiler generators + fix parser for SpeckDL edge cases
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 3s
- Connected PROV-O, CycloneDX, and SPDX generators to CLI entry point
- Fixed parseAuthor regex to handle angle-bracket email format
- Fixed parseDerives to handle hyphenated names and quoted rationale
- Fixed parseSatisfies to handle hyphenated requirement IDs
- Fixed parseSource to handle ref keyword with quoted value
- Added graceful fallbacks (warn instead of throw) for parse errors
- All 5 example .speck files compile and validate successfully
2026-05-02 15:14:31 -07:00
Scott Scoble
11875df2f0 Center last row of 5-card features flexbox
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
- Switched from grid auto-fit to flexbox with justify-content: center
- Cards: flex-basis 30%, min 260px, max 360px
- Bottom row of 2 cards now centered under 1-2 and 2-3 positions
2026-04-30 20:19:53 -07:00
Scott Scoble
aaf89d7d18 Expand features from 4 to 5 cards: split Reference into Compiler + Reference Tools
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
2026-04-30 20:17:30 -07:00
Scott Scoble
567d85e9b4 narrow waist -> shared space
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
2026-04-30 20:16:09 -07:00
Scott Scoble
9b459560e3 Balance Two-Species to single crisp sentence
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
2026-04-30 20:13:50 -07:00
Scott Scoble
479775dbb3 Tighten Two-Species card to match other philosophy cards
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
- One sentence, pithy, same weight as Small and Stable and Review the Boundary
2026-04-30 20:12:29 -07:00
Scott Scoble
ac30c1d121 Landing: collapse philosophy section to 3 cards (Two-Species includes Wasm)
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
- Merged 'Compiles to Wasm' into 'Two-Species Collaboration' card
- 3 philosophy cards now fit cleanly in the grid
2026-04-30 20:09:25 -07:00
Scott Scoble
14fcde3e57 Update framing: SpeckDL is the narrow waist humans and AI can work in
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
- Replace 'AI-generated, human-owned' with 'Two-Species Collaboration'
- Add 'Compiles to Wasm' as a distinct philosophy point
- README: new 'Chain of Custody for Intent' section
- Landing: updated hero tagline and philosophy cards
- SpeckDL compiles directly to Wasm through deterministic pipeline

Human intent is encoded in SpeckDL because it is judgeable by a person.
SpeckDL is useful for agentic work because it is easy for AI to write and reason about.
2026-04-30 19:54:32 -07:00
Scott Scoble
4f86848ebb Remove emojis from landing page — too AI-looking
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
2026-04-29 17:26:01 -07:00
Scott Scoble
a7399e17d7 Simplify deploy workflow: direct git clone instead of actions/checkout
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
2026-04-29 17:16:41 -07:00
Scott Scoble
33ad2a35dd Simplify deploy workflow: use actions/checkout, nix run rclone
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 6s
2026-04-29 17:13:24 -07:00
Scott Scoble
db8726d442 Remove paths filter from workflow to ensure triggers on any push
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 0s
2026-04-29 17:09:11 -07:00
Scott Scoble
8403b29898 Trigger deploy: landing page update 2026-04-29 17:07:54 -07:00
Scott Scoble
6f1fbe2e95 Add Forgejo Actions workflow for landing page deployment
- Creates .forgejo/workflows/deploy-landing.yml
- Triggers on pushes to main affecting landing/
- Syncs landing/ directory to Storj speckl bucket
- Uses STORJ_ACCESS_KEY / STORJ_SECRET_KEY secrets
2026-04-29 17:00:29 -07:00
Scott Scoble
6a53b8fdf7 Fix: correct 'What is Speckl?' positioning from multi-agent system to open standard
- Removed inaccurate multi-agent system description and architecture SVG
- Replaced with honest framing: Speckl is an open standard (methodology + language spec)
- Removed Discord CTA button per Scott's request
- Removed stale favicon.svg from landing dir
- General polish: hero layout, mobile breakpoints
2026-04-29 16:58:04 -07:00
Scott Scoble
8f05e8f6de fix: remove Join Discord CTA from hero — not ready yet 2026-04-29 16:33:20 -07:00
Scott Scoble
e5a817a0ca fix: landing page layout — centered content, 2×2 feature grid, tighter spacing
- Hero: reduced padding, centered glow effect properly
- Sections: max-width 960px for better wide-screen centering
- Features: 2×2 grid (was auto-fit causing orphaned 4th card)
- Roadmap: 4-column grid (was flex causing wrap issues)
- Diagram: centered with display:block + margin:auto
- Philosophy: 3-column grid (was auto-fit)
- All grids: proper responsive breakpoints at 768px and 1024px
- Tighter vertical spacing throughout
2026-04-29 16:24:07 -07:00
Scott Scoble
1f5ee67404 Add .gitignore for compiler dependencies and build artifacts 2026-04-29 15:12:37 -07:00
Scott Scoble
f19a43fd5f Add SpeckDL compiler scaffold
- CLI entry point with yargs parsing for speckl-compile <file> --output-dir --bom-format
- TypeScript parser with AST types for all SpeckDL primitives
- Generator for PROV-O JSON-LD provenance graphs
- Generator for CycloneDX v1.6 BOMs
- Generator for SPDX 3.0.1 BOMs
- E2E test verifying RetryHandler.speck parsing and all output formats

All tests pass.
2026-04-29 15:12:08 -07:00
Scott Scoble
448819104a Merge v0.2-DP into SPEC.md — unified v0.2 spec
- Integrated §3.6 Dark Provenance primitives (provenance, review, derives, satisfies, author, source)
- Added §3.6.5 Provenance-Aware Event Semantics
- Added §3.6.6 SpeckBOM (bom block)
- Added §3.6.7 Import Version Pinning
- Expanded §4.4 Provenance Graph with PROV-O node/edge types
- Added §4.5 Compilation Manifest with dual CycloneDX v1.6 + SPDX 3.0.1 output
- Updated EBNF grammar with all new primitives
- Updated examples 5.3 and 5.5 with provenance/bom/import-pinning
- Added Appendix B reference tables (B.1-B.4)
- Updated tooling section with CLI flags and speckl-compile status
- Preserved v0.2-DP reference file (not deleted)
2026-04-29 15:05:26 -07:00
Scott Scoble
712ec94495 Add SpeckDL examples with Dark Provenance primitives 2026-04-29 14:44:00 -07:00
Scott Scoble
9bcbb3d77c Landing page polish: favicon, OG tags, inline diagram, mobile responsiveness, canonical URL, CTA 2026-04-29 14:42:52 -07:00
Content Agent
707185a203 fix: remove 'dark' from provenance mention on landing page 2026-04-28 23:59:17 -07:00