owner: 3 distinct values across 153 notes, all one person spelled three ways — the opposite shape to canonical, less than its count suggested, not more. change_log: 38 empty / 51 real, and the real half carries FOUR incompatible entry schemas plus one malformed instance where the date became the key. related: 48% of 442 targets resolve by name, 47% unresolvable — and 385 of 442 are bare strings rather than wikilinks, so ~87% produce no clickable relation whatever they resolve to. Some targets are people who have no note. links: six dict schemas, and it carries sub-keys canonical and related that duplicate two top-level governance fields. 31% unresolvable — a first pass without an alias/title tier said 57%, the same resolver-too-strict error as this morning's canonical number, caught before quoting this time. Also relayed: a faithful section-by-section account of AldineXXI's OPERATIVE frontmatter specification, including its W1.12 prune of four unread fields and its §3 translation table, which rules by name on canonical, assurance, change_log, author, version, type, status, tags and review_cycle. Findings only. Nothing proposed, nothing decided, nothing changed in the vault. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
11 KiB
name, description, type
| name | description | type |
|---|---|---|
| obsidian-vault-governance-block-round2-2026-08-19 | Read-only round-2 investigation of owner, related, change_log and links, plus a faithful account of AldineXXI's frontmatter specification. Findings only; nothing proposed, nothing decided, nothing changed. | reference |
Governance block, round 2 — owner · related · change_log · links
2026-08-19. Read-only. No vault file was changed. Same method as the canonical/assurance
follow-up. Findings only.
1 · owner (153) — one job, three spellings, zero discrimination
| value | notes |
|---|---|
David Glidden |
136 |
David |
12 |
David F. Glidden |
5 |
Three distinct values across 153 notes, all naming the same person. The key does one job
consistently — and the job is constant. A field whose value never varies partitions nothing; a
GROUP BY owner returns three groups that are one person spelled three ways.
Unlike canonical, there is no second meaning hiding here. The finding is the opposite shape: not
more than its count suggested, but less.
2 · change_log (89) — real content, four incompatible schemas
| count | |
|---|---|
| empty list / null | 38 |
| carrying content | 51 |
The 51 are real and substantive ({date: 2025-09-28, change: 'Created alias stub pointing to canonical Learning & Mind organ', by: 'David'}). But they use four different entry shapes:
| entry keys | count |
|---|---|
(by, change, date) |
26 |
(change, date) |
11 |
(date, note) |
11 |
(date, summary, version) |
2 |
⚠ (datetime.date(2025,10,12),) — the date became the key |
1 |
So the answer to "template nobody filled in, or real content worth keeping?" is both, unevenly:
43% empty, 57% real, and the real half is four conventions rather than one. change / note /
summary are three names for the same slot; by is present on half of one schema and absent
everywhere else, recording an author who — per §1 — is invariant.
3 · related (121 instances, 442 link targets)
Pointer integrity, case-insensitive, tested at four strictnesses:
| count | ||
|---|---|---|
| note name resolves | 215 | 48% |
| matches an alias or title | 17 | 3% |
| unresolvable | 210 | 47% |
Two link conventions, and the minority one is the working one. 57 targets are wikilink-wrapped
('[[P3 Pattern Index]]'); 385 are bare strings ('White Abstraction – Moy Glidden'). A bare
string in frontmatter is not a link in Obsidian — so 87% of related entries do not produce a
clickable relation, whatever they resolve to.
A third job, as with canonical. Some targets are people, not notes — Divorce.md carries
related: [Lune, Marie, Briac Prud'homme]. These are unresolvable not because the link is stale but
because the referent was never a document. Relating-to-a-person and relating-to-a-note are different
operations sharing one field.
4 · links (77 instances, 286 link targets)
Six dict schemas:
| keys | count |
|---|---|
(children, parents, peers) |
31 |
(parents, peers) |
23 |
(related,) |
6 |
(children, parents) |
5 |
(canonical,) |
4 |
(parents,) |
4 |
⚠ links contains sub-keys that duplicate two other top-level governance fields. Four notes
carry links: {canonical: [[...]]} while canonical also exists as a top-level key on 161 notes;
six carry links: {related: ...} against a top-level related on 121. The same relation can be
expressed in two places, and nothing reconciles them.
Pointer integrity:
| count | ||
|---|---|---|
| full path resolves | 1 | 0% |
| note name resolves | 122 | 42% |
| matches an alias or title | 72 | 25% |
| unresolvable | 91 | 31% |
⚠ The alias/title tier is load-bearing and was nearly missed. A first pass without it reported
163 unresolvable (57%); adding alias and title matching moved that to 91 (31%). The stricter figure
would have overstated decay by nearly two to one. Same resolver-too-strict error as the canonical
"151 dead" number this morning, caught this time before it was quoted.
Some targets address a vault structure that does not exist here — places/pine-street,
people/moy-glidden, people/abg, GLOSSARY.md, all from 00. Atlas of Roots — Index.md. That is
not a stale path; it is a path shaped for a different repository layout.
The AldineXXI Frontmatter specification — faithful account
~/_Dev/animal-davidglidden-eu/docs/AldineXXI-Codex/frontmatter-specification.md · 310 lines /
3,268 words · Status: OPERATIVE 2026-05-22, drafted 2026-04-17.
Scope: every markdown document under content/. Stated as "the contract between the author (at
writing time), the versioning system (at revision time), and Hakyll (at build time). Publishing a new
piece or revising an existing one should not require re-deciding frontmatter shape." The document
declares itself the canonical record, expects to evolve, and rules that pre-convention pieces may be
backfilled or carry less metadata — "graceful degradation rather than demanded completeness."
§1 Design principles (five, verbatim in substance)
- Minimal required surface. A new essay needs only
title,date,class. Everything else is opt-in, driven by what the piece needs. - Dates, not versions. YYYY-MM-DD throughout. No semver, no
v1.0.0. - Public-facing naming. Field names appear in templates and occasionally in prose; they should be legible to a reader who sees them. No internal jargon.
- Flat where possible, nested when justified. Nesting only where the structure is load-bearing.
- Private editorial notes stay private. Author's stance, intent or mode live in separate notes files, not published frontmatter — "What's in the frontmatter is what the publication stands behind."
§2 Field reference
- §2.1 Identity (always present):
title(req),date(req, ISO — the origin date, stable through all revisions, drives archive location),class(req, one of 14 content types),location(opt, city-level),slug(opt, routing override). - §2.2 Sequence membership:
sequence,sequence_short,sequence_order,sequence_slug,sequence_order_roman,preceded_by,followed_by. Carries a known latent defect — the sequence marker's total is hardcoded"of V"and is ruled to become build-derived. - §2.3 Versioning:
revisions(chronological list of{date, location?, summary?}),edition_label,recants,recanted_by. Two are explicitly forward fields kept without carriers. - §2.4 Content metadata:
descriptionis the operative field the build reads;summaryis retained as drafted but not read by the head template.descriptionis required for Essay and Observation, soft-required elsewhere. - §2.6 Language [2026-05-14]:
lang(ISO 639-1, defaultsen),lang_secondary(list). Three contexts: French-primary, English-primary-with-passages, genuinely bilingual. - §2.7 Medium [2026-05-20]:
medium, orthogonal toclass;versethe first non-default value, which "surfaces because the corpus produced an instance" rather than by anticipation. - §2.8 Translated renderings [2026-06-05]:
work(slug of the work this piece renders),translator(absent = the author's own rendering; absence is the signal). The work file carries nowork:field — it is the work.
§2.4's prune — the precedent most directly on point
Four documented-but-unread fields removed (W1.12, 2026-06-07), on the stated ground that "the
audit found zero readers in the build for each": comments, epigraph, philosophical_lineage,
related_texts. The disposition rule: "Legacy carriers degrade gracefully (unread fields are inert);
strip them on touch. Re-entry of any of these is a new convention decision, not a revival."
§3 — the iA Writer → ARC translation table
⚠ Surfaced without comment, because it names this investigation's fields directly. The table rules on each Obsidian-side field it encounters:
| Obsidian field | ARC disposition, as written |
|---|---|
change_log (list of {date, change}) |
→ revisions: list, one entry per item; change → summary |
last_updated / last_modified / last_reviewed |
→ a single revisions: entry with that date |
canonical: "03. Writings/..." |
Drop. "Obsidian path — private authoring metadata." |
assurance: {evidence_level, risk_flags, scope} |
Drop. "Private editorial metadata." |
status: canonical |
Drop. "Publication IS canonicalization." |
author |
Drop. "Every piece is by the same author." |
version (semver) |
Drop. "Per ADR-005: dates, not versions." |
type: essay |
Drop. "Use class: instead." |
project |
Drop. "Redundant — every piece in this repo is ARC." |
tags |
Drop. Retired 2026-05-20; "topical organization is carried by class: and the corpus enfilade, not by tag indexes." |
related_texts (Obsidian [[...]] links) |
Drop. Pruned; the anticipated rendering was never built |
relations: preceded_by / followed_by |
Flatten to top level; use slug not title |
review_cycle |
Drop. "Private editorial metadata." |
notes: {intent, stance, mode} |
Drop from public frontmatter. "Preserve in separate private notes file if wanted." |
subproject |
Drop. "sequence: carries the same information publicly." |
external_references |
Drop. "External citations belong in the text, not in frontmatter." |
language |
→ lang: (ISO 639-1) |
languages |
decompose per §2.8 into one work + N renderings |
§4–§6 Recipes
Publish (decide class → create content/{class-folder}/YYYY-MM-DD-slug.md → required frontmatter →
optional fields → write → make build → commit). Revise (make revise → edit → append a
revisions: entry → build → commit new current + dated snapshot together). Recant (write the
retractation-piece with recants:, add recanted_by: to the original, commit both together).
§7 What is deliberately NOT in the frontmatter
Word count / reading time (derivable) · last-modified auto-timestamps ("Misleading (git tracks this; the frontmatter should reflect publication events, not filesystem touches)") · author name · license · copyright year · OG/Twitter card metadata.
§8 Open questions
Three of four are struck through as resolved (slug canonicalization; translated pieces; epigraph
rendering). One remains live: sequence wrapper pages — the running page uses
class: sequence-index, a working convention outside the 14-type enumeration, "not yet ratified".
The section closes: "These do not block publishing under the current convention."
Nothing above is proposed or decided. The reading of the spec against the vault findings is the jurist's, not the executor's.