templates for structuring documentation files. the files can be split as required.
the format can be anything that supports outlines, including plaintext formats.
text surrounded by {{}} is non-literal and the result replaces the text including the braces.
model.itnamed data carriers with fields; each field may state a type after a colon or a topology in round brackets structures with less than three fields should be avoided. collections can be designated by using the english plural on a type, by using an ellipsis, or round brackets for nested collections.
avoid confusing value identifiers (always means the exact same thing) with type identifiers (only means the same type or structure), as well as confusing descriptions with identifiers (which leads to a proliferation of identifiers when they contain descriptive phrasing).
function signatures that describe callable units, and associated input and output types with the following syntax:
signature: input " -> " output
multiple: element (" " element) ...
alternatives: element ("/" element) ...
names: type ":" alias ...
optional: "[" element ... "]"
repetition: element " " "..."
naming: name " :: " arguments "->" result
list: "(" element ... ")"
map_or_function: "{" key_or_input " -> " value_or_output "}"descriptions of function bodies by encoding the algorithmic identity just as far as is necessary to serve the overall system. the goal is to enable construction of suitable implementations.
procedure entries must not restate information already unambiguously determined by:
procedure entries encode only:
each procedure description is written at the highest abstraction level that still:
algorithmic identity is described only when:
role statements:
sequential structure, as semantics:
identity traits, when required:
algebraic and physical properties:
procedures is admissible if and only if removing it would permit at least one implementation that is type-correct, locally reasonable, but breaks a system-level intention, invariant, or compositional assumptiona sentence is invalid if:
it only improves readability
it only suggests a coding strategy
it narrows design freedom without protecting a semantic property
no concrete evaluation order:
signatures define:
procedures refine signatures only by:
adding nontrivial behavioral constraints and roles
not by introducing hidden carriers or narrowing representation unless representation affects correctness
procedures entries live:
procedures are expected to evolve as understanding matures:
early: identity- and role-heavy
later: compressed toward invariants and boundary guarantees
# {{model name}}
{{model description if not placed in general.it}}
## structures
{{name}}
{{field}}
{{field}}: {{type}}
{{field}}: ({{topology}})
...
## signatures
{{signatures}}
## procedures
{{procedure}}
...considerations.it{{question}}
{{context}}
option - selected
{{attributes}}
option
{{attributes}}
option
...notes.it{{topic}}
{{idea or fragment}}
{{sub-detail}}
{{topic}}
{{note text}}general.it