Repository navigation
What's new
Step 9 is complete. Klatch's biggest release since Step 8. Files become first-class citizens with their own domain model, scope-aware context injection at Layers 3 and 4, and upward promotion through scopes. The dimension is rich context: can you share files, code, and documents with entities in a way that respects how knowledge actually accumulates?
This release also marks Klatch's transition from "tools for xian" to "tools other people can try."
Features
File Domain Model (Phases 1–5)
- Files and file_refs tables with scope-aware references (message, channel, project, entity)
- Channel file pinning — pinned files appear in Layer 4 system prompt automatically
- Project knowledge base — uploaded files appear in Layer 3 system prompt automatically
- File promotion — files can be promoted upward (message → channel → project), idempotent and additive
- Dual-write completion — all file creation paths consistently populate both
message_artifactsand the file domain model - Five new API endpoints for file queries by scope
File upload & artifacts (Steps 9a–d)
- Multipart upload with attachment cards in messages
- Inline artifact rendering
- Code block save with smart filename detection
- Native
save_filetool for entity-initiated file creation - Kit briefing file awareness in Layer 1
Per-entity effort parameter
- New
effortcolumn on entities (low/medium/high/max) - Model-aware defaults (Sonnet → medium, others → high)
maxavailable on Opus 4.6 only- Effort selector in entity settings, filtered by model capabilities
Tuned compaction
- Threshold raised from 80K to 160K (research-backed for 1M-context models)
- Entity-attribution preservation for roundtable/directed compaction summaries
AAXT Scaffolded Probing Phase 1
- Probe generator reads prompt-debug layer status, generates targeted behavioral questions
- Scorer classifies responses against the AXT taxonomy (six failure modes)
- Auxiliary LLM client (GPT-4o-mini default, Haiku fallback) avoids self-evaluation bias
- New endpoints:
POST /api/channels/:id/aaxt-probe,GET /api/aaxt/status
Nomenclature
- "System prompt" → "Channel context" (Layer 4) and "Role prompt" (Layer 5) across all UI surfaces
- Full terminology guide at
docs/NOMENCLATURE.md
Technical
- 849 tests passing (710 server + 139 client), zero failures. Up from 727 at v0.8.9.
- New tables:
files,file_refs. New columns:entities.effort. - New shared types:
FileRefScope,FileRefType,KlatchFile,FileRef,FileWithRef,EffortLevel. - Vitest workspace config at repo root (
vitest.config.ts) — root-level test runs are now clean. - Compaction config in
streamClaudeCoreextended with conditional instructions for non-panel modes. - Effort passed via
output_config: { effort }in API calls.
Quality
- Rounds 13–18 of test infrastructure work: Round 14 (FDM Phase 1, 31 tests), Round 15 (Phases 2+3, 16 tests), Round 16 (Phases 4+5, 11 tests), Round 17 (compaction + effort, 18 tests), Round 18 (AAXT × FDM intersection, 12 tests).
- Compaction threshold deep dive (
docs/research/compaction-threshold-deep-dive.md) — 80K was firing at 8% of available context on 1M-token models. - Effort parameter evaluation (
docs/research/effort-parameter-evaluation.md). - AuditBench methodology review (
docs/research/auditbench-methodology-review.md) — four cross-pollination recommendations for AXT, the highest-priority of which (scaffolded probing) is implemented in Phase 1. - Five new agent team members across the release: Iris (UX designer/developer, April 5), Metis (Cowork coordination, April 1).
Documentation & writing
- RFC-001 Five-Layer Context Model response filed with Dispatch — Klatch authored the original model that's now being adopted as a cross-project standard.
- Nomenclature guide (
docs/NOMENCLATURE.md) — full terminology map across Klatch, Claude Code, claude.ai, Cowork, RFC-001. - File Domain Model design doc (
docs/plans/FILE-DOMAIN-MODEL.md). - Three new blog posts: "Your Model or Theirs" (Tesler's Law), "What Doesn't Transfer" (Layer 5 calibration gap), and "Paste It Again" (the file domain model in plain language, with a library zones metaphor).