--- name: obsidian-vault-governance-block-round2-2026-08-19 description: 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. type: 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) 1. **Minimal required surface.** A new essay needs only `title`, `date`, `class`. Everything else is opt-in, driven by what the piece needs. 2. **Dates, not versions.** YYYY-MM-DD throughout. No semver, no `v1.0.0`. 3. **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. 4. **Flat where possible, nested when justified.** Nesting only where the structure is load-bearing. 5. **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:** `description` is the operative field the build reads; `summary` is retained as drafted but **not read** by the head template. `description` is required for Essay and Observation, soft-required elsewhere. - **§2.6 Language [2026-05-14]:** `lang` (ISO 639-1, defaults `en`), `lang_secondary` (list). Three contexts: French-primary, English-primary-with-passages, genuinely bilingual. - **§2.7 Medium [2026-05-20]:** `medium`, orthogonal to `class`; `verse` the 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 no `work:` 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.