This page collects known issues in Ordinal and outlines possible directions for improvement.
Markdown Rendering
- Bold and italics parsing relies on simple regular expressions. Certain edge cases break, especially around punctuation, underscores, and code-like text.
- The parser handles frontmatter, Markdown transformation, TOC collection, and backlink recording in a single pass. Ordering matters, and small changes can break unrelated behavior.
- External links open in new tabs but do not currently add
rel="noopener noreferrer".
Rendering Pipeline
- There are no incremental builds. Every run walks and renders everything in scope.
- Template validation is minimal. Missing templates log errors and produce empty output instead of failing fast.
- Sass is a hard runtime dependency.
File Management
- A category only exists if a folder contains a matching section file. You cannot define a category independently.
- Section files are regenerated on every run, even when their content has not changed.
- Orphan cleanup matches files by stem only. If two categories contain entries with the same stem, the wrong HTML file can be deleted.
- Media files are copied on every build. There is no checksum or timestamp comparison to skip unchanged files.
Context Assembly
- Slug handling is inconsistent. Some paths include category prefixes, others do not.
- Several context fields exist primarily to satisfy current templates. Template changes can quietly break context assumptions.
- Most failures log and fall back to defaults. This keeps the site building but makes data issues easy to miss.
last_modifiedconflates two meanings: rebuild time and content change time. Rebuild time currently overwrites author intent.
Taxonomy
get_articles_list()scans the filesystem on every call, rereading the same files repeatedly.- Only
content/articlesparticipates in taxonomy. Other categories are excluded unless logic is duplicated. - There is no shared cache between listing passes.
Revisions
- The fingerprint ignores changes to
domain,tags,division - Renames preserve GUID identity but do not record rename events.
--commit-allwrites many rows one by one. SQLite handles it, but the write pattern is inefficient.- Schema migration is additive only. There is no mechanism for altering existing tables. this should be a priority.
Snapshot System
- Snapshots only store files. There is no metadata describing what changed or why.
- Every snapshot copies all HTML files, even when nothing changed.
- Restoring a snapshot overwrites
public/directly. The previous output is not preserved. Which is very ironic.