status
id: "status" slug: "status" title: "Ecosystem status" description: "Live status of every .curt consumer, rendered from the machine-readable capabilities tracker at build time."
Ecosystem status
Rendered from capabilities.json — the single source of truth, regenerated on every site build. Last audit 2026-10-17; tracker format version 1; spec revision [email protected]. Reference conformance: L1+L2+L3+L4.
Consumers (11)
| Consumer | Pkg | R/W | Dependency | Conformance | Evidence date |
|---|---|---|---|---|---|
| curt-openwith | viewer/curt-format.js (hand-rolled, unversioned) | R | hand-rolled | not audited | 2026-11-01 |
| curtis | [email protected] | R + W | vendored | not audited | 2026-10-17 |
| curtis-ai-chat-porter | [email protected] | R + W | vendored | not audited | 2026-10-17 |
| curtis-web | curtis-web (private monorepo), generator stamps [email protected] | W | hand-rolled | not audited | 2026-10-17 |
| curtis-cloud | @curtisai/[email protected] | R + W | vendored | not audited | 2026-10-17 |
| curtis-ai-tech | static site (public/porter-app.html inline app) | R + W | inline | not audited | 2026-10-17 |
| tractum | [email protected] | R + W | native | not audited | 2026-10-17 |
| curt-vcon | [email protected] (npm 2026-11-01) | R + W | npm | not audited | 2026-11-01 |
| curt-convert | [email protected] (npm 2026-11-01) | W | npm | not audited | 2026-11-01 |
| curt-wildchat | [email protected] (npm 2026-11-01) | W | npm | not audited | 2026-11-01 |
| curt-openwebui | [email protected] (unpublished) + pipelines/curt_export_pipeline.py v0.1.0 (draft) | W | npm + hand-rolled | not audited | 2026-11-01 |
Entries without an explicit evidenceDate predate that field; their evidence date is the tracker's lastAudited date.
Conformance notes
- curt-openwith — Docs-reconcile addition 2026-11-01, no code audit run — port claims verified only against the source comments, not vectors or a test suite.
- curtis — Fails L1 by the letter: parseCurt has no BOM tolerance. Naming divergent (L2 fail).
- curtis-ai-chat-porter — L1 pass-in-practice but fails by the letter (BOM stripped incidentally by TextDecoder, not parseCurt). L2 fail (own sanitizer).
- curtis-web — No reader exists; L1 untestable. Write-side conforms (verbatim envelope, generator stamped). L2 fail (title-only filenames).
- curtis-cloud — Fails L1: no BOM tolerance, drops top-level envelope extras.
- curtis-ai-tech — L1 pass-in-practice via porter-derived path; fails by the letter. L2 fail.
- tractum — Not yet run against conformance/ vectors (Python vs TS runner); validate_curt covers L1+L2 envelope+naming rules by construction. Audit pending.
- curt-vcon — Not run against conformance/ vectors. All v1 parsing/serialization is the reference implementation's by construction (single dependency, no vendored copy); the bridge's own lossy mapping is covered by 18 tests (pass 2026-11-01).
- curt-convert — Not run against conformance/ vectors. As a writer, L1 parse rules apply only via its self-check (parseCurt on every body before it is written). Validated 2026-11-01 against the author's full real-session corpus: 1168/1168 transcripts converted, 0 self-check failures, exit 0. Re-validated 2026-11-01 after the bulk collision fix: 1169/1169 transcripts (corpus grew by one), 1169 distinct output filenames, 0 self-check failures, identical file lists across two runs.
- curt-wildchat — Not run against conformance/ vectors. L3-style bulk artifact: CONFORMANCE-1K corpus run — 1000 records → 995 files, 100% independent re-parse, 1.126× envelope overhead. 17 tests pass 2026-11-01.
- curt-openwebui — Not run against conformance/ vectors. TS side validated by 15 tests incl. a fixture round-trip through reference parseCurt (pass 2026-11-01). Python side: own validator mirrors the v1 structural rules; cross-validated 2026-11-01 — a pipeline-written .curt body parses valid in the reference JS parseCurt (ad-hoc cross-check, not a vector run). The pipeline itself is draft: never exercised in a live Open WebUI pipelines runtime.
Out of ecosystem (8)
No .curt references; one grep to confirm still-out.
- curtis-compliance — no .curt references
- curtis-console — no .curt references
- curtis-os — no .curt references (old pre-rename monorepo)
- curtis-ai-chat-zed — no .curt references
- curtis-ai-symphony — no .curt references
- curtis-ai-crm — no .curt references
- curtis-ai-browser — no .curt references
- curtis-ai-theme — no .curt references
Ecosystem findings
- ZERO consumers depend on the npm curt-format package — all five implement or vendor their own copy of the rules.
- Only the dot_curt reference implements the 1.1.0 BOM rule; every consumer fails a BOM-prefixed file (porter only by accident of TextDecoder).
- Nobody implements the documented curtFilename naming convention — three different sanitizers, none matching SPEC.md.
- All copies are v1-strict on parse, which is the spec's most load-bearing rule — that part has held.
- Version lineage is broken: porter's oracle pins curtis-ai-chat v2.0.1 (1c7a19f) but that repo now self-identifies as [email protected].
- 2026-11-01: the first npm-dependency consumers exist — curt-vcon, curt-convert, and curt-openwebui (TS side) depend on [email protected] instead of vendoring the rules. The zero-dependency finding above still holds for the five original consumers.
- 2026-11-01: all three new consumers are same-author (JordanNewell) local builds — none published to GitHub or npm. Same-author emissions do not promote draft extensions: curt-convert's tool-linkage emission keeps the extension at draft (stable requires two independent implementations).
- 2026-11-01 (publish day, supersedes the previous finding's publication half): [email protected], [email protected], and [email protected] are live on npm; curt-vcon, curt-convert, curt-wildchat, and curt-openwith are public GitHub repos (Gitea-SSOT + GH mirror). curt-openwebui remains local/unpublished. Same-author rule unchanged: draft extensions stay draft.