Method
The rulebook, rendered from the repository's METHOD.md. Short on purpose; it changes only with a journal entry saying why.
METHOD — the kit
The rules of this project. Short on purpose. Changed only with a journal entry saying why. Last changed: 2026-09-20.
1. What a record is
One file per thing, in records/: a source (one document), a person (one identity
hypothesis), a family (one couple and the filiation of their children), a question
(a conflict or an unknown), a prior (something believed before a document said so).
Sources live in records/sources/, people in records/people/, families in
records/families/, questions in records/questions/, priors in records/priors/.
Dated journal entries in journal/. Templates in docs/templates/.
IDs — S-0001, P-0001, F-0001, Q-0001, PK-0001 — are assigned once, in sequence,
and never reused or renumbered. F-0001 is the starting marriage. A merged-away person keeps
its file, marked merged_into:, so every old citation still resolves.
Filiation is written in one place only: the family file’s children:. A person file never
states its parents. (E013: a child of two families; E014: a child of their own family)
YAML traps. Quote any value that contains a comma or a colon — places especially:
place: "St-Cyprien, Napierville", never bare (unquoted, the part after the comma becomes a
stray key; W004). Never use bare on/off/yes/no as a key or a value — YAML reads them
as booleans. Dates are YYYY-MM-DD. sighted is null or { by: Who, date: YYYY-MM-DD }.
Lists are [a, b] or indented - rows, never a bare scalar (mentions: P-0001 is wrong;
mentions: [P-0001] is right).
2. Grades
Proven · Probable-Strong · Probable · Possible · Unproven · Disproven
Sources are classified original (first recording, in original form), derivative (a copy, extract or transcription), or authored (a compiled work); their information is primary (recorded at or near the event by someone who knew) or secondary. A source is sighted when it has been read directly — the act image, the répertoire page.
- Compiled never exceeds Probable. A répertoire, a PRDH family page, and an online index entry (
type: index— LAFRANCE at Généalogie Québec, added 21 Sept 2026) are all compiled: leads to the act, never the act. A claim resting only on derivative or authored sources cannot be graded Proven or Probable-Strong. (E006) - A Proven claim may not cite a source nobody has read. (E007)
- A chain is as strong as its weakest joint. Chain grades are computed by
build.py indexand never typed. (PEDIGREE.md) - Grade level does not decide what is printable. That is a separate, later question.
The Drouin two-part test. Au greffe is not “a later copy”: from 1679 every parish kept
two registers, both written by the priest, one deposited annually with the court. A greffe
volume is a duplicate original. What detects a transcription is the hand: uniform
copperplate, machine-ruled paper, sequential pagination, one hand across many years → grade
derivative. Several priests’ hands in one opening, strike-corrections certified in the act,
marginal headwords in the entry hand → contemporaneous, grade original. Record what you saw
in hand:.
3. Rules
- Identity is a claim. The same name in two documents is two person files until a document
or a stated argument links them. Look for the relational qualifier — père, fils, a stated
filiation, an age — never the name. Merging and splitting are logged events with reasons.
To merge: the loser gets
status: mergedandmerged_into: <survivor>, with the reason in its body; the survivor gets asame-person-asclaim citing the evidence; and every source whosementions:names the loser also adds the survivor — otherwise the survivor’s claims citing those sources fail E008.merged_intopoints at the survivor, never at itself or at another merged-away file. (E009, E010) - Mine both sides of every act. A marriage act names at least six people. Every one of
them goes in
mentions:or in “Names in this act without a person file”. (W001) - Check before calling anything new.
python3 tools/build.py who "<name>"for every name and place, before looking and again before writing. Anything returned is read and either cited or explicitly ruled irrelevant. - Never cite a source you have not opened. (E007; E004 catches an ID that does not exist at all)
- Count before pattern. A bare count of same-named people is never written in prose. Rosters are generated, and carry their population and date.
- Document-in-hand beats reasoning. Check the pixel dimensions; re-crop every proper name at magnification before typing it.
- Grade first, prose second. Write the YAML claim, then describe it.
- The no-peeking rule. Anything from memory, the GEDCOM, family lore or another tree is a
prior,unverified. It may direct a search. It may never be cited as a source. - Collaterals earn their file. A witness or sibling gets a person file only to serve an
identity argument or a question —
on_ascent: false, and say why. (E011) - Errors are logged in place, attributed, never deleted. Struck text stays. Journal entries
are never rewritten after their day; a correction is a new entry tagged
correction. - Rulings are Steve’s. A question changes status only on his say-so, recorded in
ruled_by:. - More, not less. Every session ends with a journal entry that includes what was found and not used, and what broke.
4. A session
Open: python3 tools/build.py status — the frontier. Pick a target.
| Who | What | |
|---|---|---|
| 0 | Claude | who every name involved. Read before looking. |
| 1 | Claude → Steve | Répertoire (NAS PDF) → PRDH (Steve’s screen) → Drouin image (Steve pulls it). Each stage is its own S- record. |
| 2 | Steve | Image into images/_inbox/, unrenamed, with one line saying what it is. |
| 3 | Claude | Read it whole. S- record; rename and move the image by ID; sha256. |
| 4 | Claude | who every name and place in the act. Cite or rule out. |
| 5 | Claude | P- and F- records. Grade first. |
| 6 | Claude | Conflicts → Q-. |
| 7 | Claude | python3 tools/build.py check — must pass. index. |
| 8 | Claude drafts, Steve approves | Journal entry. Commit, then cd site && npm run publish — the publish script refuses a dirty tree, so nothing goes live that is not in git. |
Close: journal committed, check passing, status printed. That is the handoff.
5. What the build enforces
| Code | Blocks? | Rule |
|---|---|---|
| E001 | yes | file failed to load |
| E002 | yes | required field missing or wrong shape |
| E003 | yes | value outside a controlled vocabulary (tools/genlib/vocab.py) |
| E004 | yes | referenced ID malformed or missing |
| E005 | yes | referenced ID of the wrong kind |
| E006 | yes | above Probable with no original source |
| E007 | yes | Proven cites an unsighted source |
| E008 | yes | cited source does not mention the claim’s subject |
| E009 | yes | merged status and merged_into disagree |
| E010 | yes | family references a merged-away person |
| E011 | yes | collateral without why_this_file_exists |
| E012 | yes | image set but sha256 missing / file missing / mismatch (--skip-images relaxes the file checks) |
| E013 | yes | a person listed as a child of more than one family |
| E014 | yes | a person listed as a child of a family they are husband or wife in |
| W001 | no | marriage act with fewer than six mentions |
| W002 | no | a place string seen only once |
| W003 | no | a person with no claims |
| W004 | no | unknown key inside a claim / marriage / child / name / sighted row (usually a YAML trap, §1) |
Commands: check [--skip-images] · who <tokens> · status · index [--check]. check
never raises: a wrong-shaped field is E002. Every command prints files that failed to load
(E001) to stderr; index refuses to write while any exist. The pre-commit hook blocks on
errors or failing tests and warns when generated/ is stale.
6. Images
Act images from the Fonds Drouin (via Généalogie Québec) are for internal use only and are never committed or
published (Steve’s ruling, 20 Sept 2026). They live in images/, git-ignored, named by
source ID, with their sha256 in the S- record. Back images/ up to the NAS. A clone without
them runs check --skip-images.
7. Sources, and what they cost
Subscriptions are highly preferable: PRDH (every Catholic act to 1849/1861, indexed by
family) and Généalogie Québec — the Drouin Institute’s own site, which holds the Fonds Drouin act images and leads into PRDH. (Corrected 21 Sept 2026: an earlier text said « Drouin via Ancestry »; Steve does not use Ancestry.) FamilySearch and BAnQ are free and are
recorded as such. Every S- record’s repository: says which, so the journal can say what a
subscription actually bought.