Conventions
Conventions
Conventions
Back to README · notes index
Files
doctrines/<tier>/<id>-<slug>/_index.md: one page per doctrine, with its verdicts (tier, doctrine and question list in front matter; see structure).doctrines/<tier>/<id>-<slug>/reasoning.md: numbered questions and steps (S04.1.1Scripture,.2patristic evidence,.3weighing,.4source proximity).notes/shared/<former-category>.md: shared plan notes and post-750 development by tradition (anchorspost-<tradition>).categories/andnotes/reasoning/hold only moved-page stubs that redirect old links.notes/sources/<father>.md: one file per father or council, entries S1, S2, …
Front matter
Every markdown file starts with YAML front matter: title (required), plus category, status (skeleton / plan / draft / final) and last_updated where relevant.
Links and anchors
- Use relative links to
.mdfiles only, e.g.../notes/sources/augustine.md#augustine-s3. No absolute site URLs. Jekyll on GitHub Pages rewrites.mdlinks (jekyll-relative-links); MkDocs resolves them natively. - Stable anchors are explicit HTML tags placed right before a heading:
<a id="augustine-s3"></a>. This works in both Jekyll and MkDocs without extensions. Never renumber or reuse an ID; mark withdrawn entries as withdrawn. - ID patterns. Justification (the first category): sources
<slug>-sN, reasoningqN,qN-stepM. Later categories put their entries in the same per-father file, under a## Topic:section, with anchors<slug>-<topic>-sN. Topic codes:bapbaptism,salsalvation,euceucharist,atnatonement,osnoriginal sin,relrelics,icoicons,aftafterlife. Reasoning anchors use the category’s question IDs (b1,s1,e1,a1,o1,r1,i1,l1…, each with-stepM), pluspost-<tradition>.
Citation rules
- Every claim cites the exact patristic passage (work, book.chapter.section, edition/translation, page) and the exact Scripture text (book chapter:verse, LSB in English, Greek/Hebrew for key terms).
- Anything not checked against the primary text is marked (to verify).
- Status levels for each source entry:
verified (English)means checked against a public-domain translation online.verified (… key Greek/Latin)means the original wording was also checked.secondary-attestedmeans the wording comes from scholarly or secondary quotation of a named edition, with the primary text not inspected; such entries count at reduced weight.to verifymeans not accessed, and these carry no weight.
Verdicts and weighing
- Each verdict links to its reasoning steps and the source notes behind them.
- Each weighing step states the readings considered, the one chosen, and why: date, context, original-language sense, breadth of witness. It also says why each rejected reading lost and gives a confidence level. Splits are allowed.
Source proximity
On every question that is not developmental, evidence is weighed in this order. Full rules and weights are in scoring.md.
| Tier | Span | Weight | Read how |
|---|---|---|---|
| S | Scripture (shared 66-book canon; deuterocanon noted, not scored) | benchmark, scored on its own axis | grammatical-historical exegesis: original language, immediate and book context, genre, author’s intent |
| T1 | Apostolic Fathers, to c. 150 | 1.0 | each father in their own setting |
| T2 | c. 150–250 | 0.8 | |
| T3 | c. 250–451 | 0.6 | |
| T4 | c. 451–750 (Nicaea II, 787, is counted here for the icons category) | 0.4 |
- Every reasoning section has a Step X.4: Source-proximity weighing (anchor
<q>-step4). It states the Scripture reading, lists the key sources by tier, and says explicitly where a later consensus lacks early or biblical support. - Developmental questions ask when or whether something is attested, or what the history of a dispute was (B2, R1, R4, I3). They are not proximity-weighted and not scored against Scripture, because a late date is the finding itself, not a weakness.
- A verdict changes only when the re-weighing supports the change. Every change is logged in proximity-changes.md.
Rendering
Plain CommonMark plus pipe tables. No Liquid/Jinja tags or engine-specific syntax. Don’t commit build output.
Tier and doctrine IDs (since the tier migration)
- Doctrine IDs: a tier letter and two digits,
F01–F16(first-order),S01–S20(second-order),T01–T18(third-order). They are shown without the leading zero (F1, S4). The catalogue is inscripts/doctrines.json, from triage §2. - Question IDs: the doctrine ID, a dot and a number, for example
S04.1. A step isS04.1.3. - Legacy codes (
B1,Q3,salvation/S3…) are kept forever as aliases indata/legacy_map.yaml. In prose, always write them with their former category (salvation/S3), because bareS3andT1collide with doctrine IDs. - Father eras: the source-proximity tiers are now called Era I–IV (Era I to c. 150, Era II 150–250, Era III 250–451, Era IV 451–750). Research written before the migration calls them T1–T4. Read those as Era I–IV, not as third-order doctrines.
Stable anchors
- Canonical anchors:
#s04-1for a question#s04-1-step3for a step#originfor a doctrine’s origin block#tier-sensitivityon the scores page
- Legacy anchors: every moved question and step also carries its old anchor as an empty
<a id>right before the heading (for example<a id="s03-1"></a><a id="b1"></a>).scripts/migrate_tiers.pywrites them from front matterquestions[].legacy_anchor, so authors never type them. - Source anchors (
#justin-martyr-bap-s1) are never renamed. The topic infix is only part of the ID, not a location. - Origin anchors: when one doctrine page holds origin blocks from several former categories, those blocks’ anchors are prefixed with the category (
#icons-unverified). - Checks:
scripts/check_anchors.py publicfails the build check on any duplicate id.scripts/check_map.pyfails on any unmapped legacy question.
- Old URLs:
/categories/<x>/and/notes/reasoning/<x>/are kept as moved-page stubs. They redirect#fragmentlinks to the exact new anchor in the browser.- Whole-page moves and the
/d/<id>/and/q/<id>/short links are 301s insite/static/_redirects.