architecture.
7 of 130 decisions. Back to the full index.
| # | Title | Summary | Status |
|---|---|---|---|
| ADR-077 | Publish a nested record as a section of its parent site, staged by its own config | site.include_records mounts a whole record inside another’s vault. Each is staged by its own config, because the source-versus-view test reads from the reading config’s schemes — so a parent publishing a child’s files directly emits both a fragment and the view it renders into. | Active |
| ADR-078 | A nested record’s views are generated and committed with the parent’s | luria index regenerates every nested record’s views from the root, and --check fails on a stale one, so they are committed like this project’s own. include_records moves out of [luria.site] in the same change: it says a project contains other projects, which generation needs as much as publishing does. | Active |
| ADR-094 v2 | A cited document gets a page, and where a citation points is configurable | A render = "document" scheme’s sources are published as pages, and a new cite key chooses whether a citation of its codes resolves to that page or to an anchor in the assembled view. This record sets “page”; unset keeps today’s behaviour. Rejected: emitting anchors that survive each publisher, and shipping the key without the pages, which sends citations off-site. | Active |
| ADR-095 | An acknowledgement can carry its own deadline | A directive may be written until <YYYY-MM-DD>; after that date find stops returning it, so every check behaves as if it were never written, and luria lint reports what expired. Rejected: a relative duration, which needs an anchor the file does not carry; and a version milestone, which needs a project-version concept luria does not have. | Active |
| ADR-127 | A logic core in clingo, behind a procedural shell | The parts of luria that decide things about the record’s graph — converse pairs, invariants, chain edges, config consistency, and which acknowledgement answers for a citation — move from hand-written Python walks to Answer Set Programming rules evaluated by clingo, over facts the Python extracts. Python keeps parsing, rendering, editing, git and the network, and turns derived facts into findings, edits and pages. The move is one subsystem at a time, each held to byte-identical luria lint and luria index output against the last release on every real record. Rejected: a full rewrite, Cypher or an embedded graph database, SQLite recursive CTEs, a hand-rolled Datalog evaluator, and staying in Python. | Proposed |
| ADR-128 | Configuration is the only source of relation semantics | No relation is supplied by the code: the successor and influenced_by become ordinary declared references, roles point at declarations instead of creating them, references may target declared remotes, the facts give every reference value a declared type, and relations.lp no longer infers a type from an absence. luria upgrade explicit-relations writes down what older versions supplied. Rejected: emitting the built-ins as facts, an explicit any-scheme target, and undeclared roles with the old defaults. | Proposed |
| ADR-130 | A view may be a Jinja template over the record | A record may declare views: a Jinja template, rendered by luria index into any file in the repository, with the record as its context. A template selects documents with doc, docs and vocabulary, and walks the graph with match, a path pattern written inline in ADR-129’s syntax. It writes codes bare, and the output passes through the link fixer in the output’s own frame, so no template spells a link target. Templates compose with Jinja’s own include, import and extends, so a hand-written file with a generated region is a template that holds the prose. The environment is sandboxed, strict about undefined names and blind to the clock, so a view stays a pure function of the tree. Rejected: generated regions in hand-written files, str.format, a logic-less engine, a Python hook, a link filter, named patterns only, and a manuscript scheme. | Active |