Files
Skald-Circle/dev-docs
Daniele 0958264c6f
Nightly Build / build (push) Successful in 4m27s
feat(dashboard): LLM stats answer who/what spends tokens — member scope chips and spend breakdowns
The stats section was designed single-user: four global charts, no
attribution. Request metadata rows now carry the session's source and
the frame's agent_id/depth (additive ensure_column), denormalized at log
time by the LoggingModel from the owner's pool — off the turn's hot
path, degrading to NULLs, never to a lost row.

The dashboard gains member scope chips filtering every chart, and a
breakdown row splitting the range's billed tokens by member, kind
(chat / sub-agents / cron / system agents / channels), agent, model and
provider — a sub-agent's spend is attributed to the sub-agent itself.
Rows predating the columns group under 'older data'.
2026-09-10 14:03:22 +01:00
..

Skald dev-docs — architectural reference for coding agents. Entry point: ../CLAUDE.md

dev-docs — index

These files hold the design rationale of one subsystem each. They are not loaded into an agent's context automatically: ../CLAUDE.md is, and it names the file to open before touching a given area.

The split criterion is not importance. Everything here is load-bearing — most paragraphs exist to record a trap somebody already fell into ("the obvious alternative is X, and it is wrong because Y"). The criterion is blast radius: a rule a change anywhere can violate stays in CLAUDE.md; the mechanism of one subsystem lives here and is read on entry to that subsystem.

When you change one of these areas, update its file in the same change — same standing rule as docs/ and CHANGELOG.md. A doc written later is written from the diff, which is the version nobody can use.

File Read it before touching
users-auth-and-boot.md login, sessions, UserManager, UserContext, per-user DB encryption, what boot unlocks and spawns
database.md any table or accessor under db/, the registry/owner bucket split, memory notes, reports, prompt substitutions
filesystem-and-containers.md container/, the fs-tools, mounts, path routing, skills, the memory signposts, built-in tools
projects-and-files.md projects, shared folders, <file-explorer>, the #files page
agent-loop.md crates/agent-loop/, loop_adapters/, session/handler/, sub-agents, cancellation, restart recovery, the approval gate
context-and-compaction.md compaction, the history window, the cached system-prompt prefix
llm-stack.md LLM clients, providers.yaml, retriability, request logging, token streaming, multimodal attachments
mcp-connectors.md MCP runtimes, connectors, marketplace installs, OAuth, device/QR login
plugins.md plugin visibility, per-user config, HTTP routers, plugin-contributed web pages
default-access.md anything grantable (plugin, connector) and who receives it by default
system-agents.md event triage, the memory lints, the conversation review, their scheduler and settings
frontend.md anything under web/ — components, chat tabs, routing, i18n, theme, the security-group picker

Two sources of truth sit outside this directory and outrank it:

  • blueprint/project-family.md — the design document, gitignored and not under version control. Referenced by section number (§0.1, §5.1, §6, §7, §9, §11, §12, §14, §15, §16, §17, §19). Never assume a section says what you remember; open it.
  • ../CLAUDE.md — the always-loaded rules: the commit rule, the production/schema constraint, domain neutrality, the event-bus rule, the crate boundaries.