Icecream / .NET 8
Icecream Canon
The design principles behind readable intent and explicit composition.
Intent before execution
An icedoc is a document that turns a model into text. That text may describe an action, a decision or an evaluation. The receiving application decides whether and how to act on it.
Icecream is the sheet music. Engines are the instruments. Agents are the musicians.
This is an architectural principle. The C# ProjectionEngine performs parsing and rendering; the host supplies data access, validation, permissions and external effects.
Keep the language small
- Readable first: keep literal text and substitutions visible.
- Explicit composition: use named includes, passed models and simple branches.
- Formatting stays formatting: filters transform values into forms suitable for output.
- Predictability over breadth: prepare complex calculations in the model.
The aspiration is a strict, dependable core. The implementation reference records the places where current parsing is permissive; this page does not override them.
Make instructions editable
Separating templates from application code lets a host load new documents without rebuilding its renderer. The host must provide template storage and a loading strategy. Icecream itself has no file watcher, deployment mechanism or document database.
A common form for intent
The same notation can generate reports, JSON requests, prompts, HTML source and configuration. A type such as sys.call is meaningful because a receiving application recognizes it, not because Icecream executes it.
Small documents, composed
The term “neuron” describes an icedoc that captures one reusable projection pattern. A “lattice” describes documents composed together. These are architectural metaphors, not additional runtime objects or a workflow scheduler.
Decisions, actions and evaluations
These labels describe the meaning of a projection. The library returns a string in every case. Claims, constraints or permissions written into that string still need validation and enforcement by the consumer.
Keep effects in the host
The language exposes no instructions for launching processes, calling services or mutating databases. The host controls the resolver, model accessors and output consumers. Rendering is not an isolation boundary and is not a substitute for authorization or resource limits.
Graph → lattice → projection
- Graph
- Application facts and canonical data, supplied as the model.
- Lattice
- A collection of reusable icedocs.
- Projection
- The resulting text.
- Host and agents
- Systems that validate, interpret and use that text.
The Icecream library implements document projection. Graph persistence, agent orchestration and execution are separate components.
Inspection and audit
Readable templates and explicit inputs make behaviour easier to inspect. A host can retain document versions, input provenance and output for an audit trail, subject to its data policy. The library does not create that trail automatically.
Icecream and Skyebase
Icecream’s published MIT license covers the notation’s software and accompanying documentation. Skyebase’s platform, services and runtime systems are separate. Portability is a design goal; the implementation reference describes the current .NET-specific behaviour.
The guiding idea
Logos before force.
Meaning before motion.
Sheet music before instruments.
Keep the intent inspectable, and keep the responsibility for acting on it explicit.
