Commit graph

49 commits

Author SHA1 Message Date
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
Content Agent
4419ccb32a fix: mention dark provenance in SpeckDL section intro 2026-04-28 23:57:42 -07:00
Content Agent
30122ccadb fix: wrap code block in pre tag for proper formatting 2026-04-28 23:54:48 -07:00
Content Agent
28843cc93f fix: update source code link to codeberg.org 2026-04-28 23:40:22 -07:00
Content Agent
362548caad refactor: rename phases to sequential A→B→C→D
Old: D (Open Standard) → C (Consulting) → A (SaaS) → B (Compliance)
New: A (Open Standard) → B (Consulting) → C (SaaS) → D (Compliance)

Updated: README.md, strategy.md, plan-flow.svg, landing page
2026-04-28 21:09:42 -07:00
Content Agent
316fe424ea feat: add landing page for speckl.scoble.me
Static dark-mode site with hero, features, SpeckDL code example,
philosophy section, and roadmap. Deployed via NixOS module to
speckl.scoble.me with Cloudflare ACME DNS challenge.
2026-04-28 20:54:18 -07:00
Content Agent
ba70962f8c feat: dual BOM output — support both CycloneDX v1.6 and SPDX 3.0.1
SpeckBOM compilation manifest now supports two output formats:

- CycloneDX v1.6 JSON (OWASP/ECMA-424) — preferred for security tooling
- SPDX 3.0.1 JSON-LD (ISO 5962:2023) — preferred for regulated environments

Key changes:
- §4.5: Restructured as 'Compilation Manifest (SpeckBOM Output)' with dual format
  support, comparison table (CycloneDX vs SPDX capabilities), both JSON examples,
  and separate field mapping tables for each format
- Added compiler output section: --bom-format cdx|spdx|both (default: both)
- Appendix B restructured into 4 sections:
  B.1 Provenance Graph (JSON-LD / PROV-O) — intent layer
  B.2 SpeckBOM — CycloneDX v1.6 mapping table
  B.3 SpeckBOM — SPDX 3.0.1 mapping table
  B.4 Three-layer architecture: intent (PROV-O) + composition (CycloneDX or SPDX)

Rationale: Different regulators mandate different formats. DO-178C shops
need SPDX (ISO normative), security teams need CycloneDX (OWASP ecosystem).
Supporting both makes SpeckBOM universally adoptable.
2026-04-28 17:11:31 -07:00
Content Agent
4a7d9d967a feat: adopt CycloneDX v1.6 as SpeckBOM output format
Replace custom JSON-LD compilation manifest with valid CycloneDX v1.6
documents using bomType: specBOM and speckl: property namespace.

Key changes:
- §4.5: Compilation manifest now outputs CycloneDX v1.6 JSON
- Added 'Why CycloneDX' section comparing CycloneDX vs SPDX for this use case
- Full CycloneDX JSON example for DrugDosageCalculator
- Added CycloneDX field mapping table (SpeckDL primitive → CycloneDX location)
- Added path to standardization (community proposal → OWASP recognition)
- Appendix B restructured into three sections:
  B.1 Provenance Graph (JSON-LD / PROV-O) — intent layer
  B.2 SpeckBOM (CycloneDX v1.6) — composition layer
  B.3 Two-Layer Architecture — how they complement each other

This extends an existing OWASP/ECMA-424 standard rather than defining
a bespoke format, ensuring compatibility with Dependency-Track and
the full CycloneDX tooling ecosystem.
2026-04-28 16:51:27 -07:00
Content Agent
bba505a7a3 refactor: remove marketing/pricing docs to private repo
Moved to sscoble/speckl-marketing (private):
- consulting-packages.md (pricing, ICP, pipeline)
- business-brief.md (competitive positioning, revenue model)
- content-calendar.md (content schedule)
- warp-monitoring.md (competitor tracking)
- warp-engagement.log (engagement log)
- blog/2026-04-28-why-dark-provenance.md (marketing manifesto)
- PUSH_SUMMARY.md (campaign tracking)

Also scrubbed strategy.md of all pricing, budgets, revenue targets,
and competitive details. Full version in speckl-marketing repo.
2026-04-28 16:35:50 -07:00
Content Agent
973a665948 feat: add SpeckBOM primitives and import version pinning to SpeckDL v0.2-DP
New language features:
- bom {} block: declares toolchain dependencies (compiler, solver, runtime),
  license, and content hash — the spec analog of an SBOM
- Import version pinning: hash and version on import statements for
  reproducible builds and dependency integrity
- §3.6.6: SpeckBOM semantics — maps each bom clause to JSON-LD/SPDX
- §3.6.7: Import pinning semantics — hash verification at compile time
- §4.5: Compilation manifest — auto-generated audit-ready JSON-LD output
  with spec hash, dependency integrity, toolchain versions, artifact hashes,
  verification results, and reproducibility flag
- Updated EBNF grammar for bom_def and import hash/version
- Updated examples (InfusionPumpController shows bom block, PaymentService
  shows import pinning)
- Updated Appendix B with SpeckBOM JSON-LD mappings

Together with existing DP primitives (provenance, review, derives, satisfies,
author, source), SpeckBOM provides the full picture: intent provenance +
composition manifest + verification evidence = audit-ready specification.
2026-04-28 16:32:19 -07:00
Content Agent
2fe706436d fix: clean up architecture and plan-flow SVGs — simpler connector routing, tighter arrow spacing 2026-04-28 16:24:11 -07:00
Content Agent
ec1edc9f0f feat: SpeckDL v0.2-DP spec with dark provenance primitives
New language members: provenance, review, derives, satisfies, author, source

- provenance block: declare intent sources (regulation, design_decision, parent_spec, external_doc)
- review directive: mark verification boundaries (manual, auto, hybrid)
- derives/satisfies: spec-to-spec and spec-to-requirement edges
- author/source: who wrote it and what drove it
- Provenance-aware event semantics: runtime events trace back to intent
- Updated EBNF grammar, semantics, examples, and JSON-LD mapping
- Three new examples: regulated medical device, auto-verified service, compliance audit trail
- All primitives optional — Specks without provenance still compile fine
2026-04-28 16:16:04 -07:00
Content Agent
0ea2204d5b fix: compact speckdl-pipeline.svg — was way too tall for a 4-box flow 2026-04-28 16:15:42 -07:00
Content Agent
c9b746d7d4 fix: redo consulting-pipeline.svg — proper arrows and layout 2026-04-28 16:14:35 -07:00
Content Agent
7b3a09f48a fix: redo plan-flow.svg — fix overlapping elements and arrow connections 2026-04-28 16:13:20 -07:00
Content Agent
f59488a197 feat: replace ASCII art diagrams with SVG
- README: SpeckDL pipeline and architecture diagrams
- docs/strategy.md: Plan D→C→A→B flow diagram
- docs/consulting-packages.md: consulting pipeline flow diagram
- New: docs/diagrams/ with 4 static SVGs (dark-mode compatible, responsive viewBox)
2026-04-28 16:01:00 -07:00
Content Agent
75aed78a43 docs(content): Add push summary for build-in-public campaign 2026-04-28 15:38:12 -07:00
Content Agent
4f75737b15 chore(content): Add Warp engagement log for tracking interactions 2026-04-28 15:37:39 -07:00
Content Agent
288cad0dda feat(content): Add build-in-public manifesto and content calendar
- docs/blog/2026-04-28-why-dark-provenance.md: First blog post explaining the vision
- docs/content-calendar.md: 2-week content plan with themes and targets
- docs/warp-monitoring.md: Process for monitoring Warp and engaging thoughtfully

Part of the build-in-public campaign for Speckl (Dark Provenance for AI agents).
2026-04-28 15:37:33 -07:00
7297b5ec58 feat: whitepaper sections 2-6, README overhaul, SpeckDL spec v0.1, reference agent scaffold
- Dark Provenance whitepaper: complete sections 2-6 (What Is Dark Provenance,
  The Speckl Approach, Semantic Preservation & SA-11, Implications, Call to Action)
- README: public launch-ready with architecture, roadmap, getting started
- SpeckDL SPEC.md: v0.1 language specification with EBNF grammar,
  type system, compilation pipeline, 5 example Specks
- Reference agent: TypeScript scaffold with Orchestrator, TeamLead, SMEs
  (VerificationSME, CodegenSME), TillDone condition tracking,
  ProvenanceGraph, and CLI with example Specks
2026-04-28 09:33:48 -07:00
fedecf6c3f feat: add strategy, business brief, consulting packages, and dark provenance whitepaper draft 2026-04-28 09:08:53 -07:00
Marcus (@cos)
a97a532a3c Initial commit: Speckl project scaffold
- MIT license
- README with project overview, Dark Provenance intro, and structure
- Empty directories: speckdl/, reference-agent/, examples/
- Placeholder whitepaper with Dark Provenance outline

Parent: Greybeard Holdings, LLC
Status: Early / Pre-Alpha
2026-04-28 01:20:22 -07:00