Markdown for LLMs
Inventory the act
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Inventory the act ## Task and place Inventory turns pinned text into a dispositioned map before any rule is written. Each article is read, split into content units, and given an explicit fate: formalize now, exclude with a reason, or leave unprocessed. Pinning guarantees the text; inventory guarantees that nothing in it is silently skipped or silently reinterpreted. ## Inputs - The pinned edition and its local bytes from the previous stage. - The source card with the scope boundary from acquisition. - The [source inventory template](/handbook/files/templates/source-inventory.md), which carries the fate map. ## Actions - Walk the act article by article, in the order of the pinned bytes. - Split each article into content units: definitions, conditions, exceptions, tables, formulas, and cross-references to other articles or acts. - Give every unit a fate: formalize in this package version, exclude with a written reason, or mark unprocessed when its disposition is genuinely not yet decided. - Cross off each locator as it is dispositioned, so the map visibly covers the whole act. - Flag tables, formulas, and boundary readings that need a written decision before rules may cite them. ## Decisions - The fate of every content unit, with reasons for every exclusion. - Which flagged items need a decision record before rule drafting. In the running example these are the tariff table shape (EAI-D1), the inclusive lower bound of the payout condition (EAI-D2), and the penalty rounding policy (EAI-D3). Records start from the [decision record template](/handbook/files/templates/decision-record.md); two filled examples are the [EAI tariff decision](/handbook/files/filled/eai-decision-tariff.md) and the [EAI threshold decision](/handbook/files/filled/eai-decision-threshold.md). ## Artifact The artifact is a per-unit fate map that includes the excluded and the unprocessed units alongside the included ones, so a reader can tell deliberate scope from oversight. Start from the [source inventory template](/handbook/files/templates/source-inventory.md); the [filled EAI inventory](/handbook/files/filled/eai-source-inventory.md) shows the v1 map at article granularity, the [v2 inventory](/handbook/files/filled/eai-source-inventory-v2.md) revises article 19 at branch granularity, and the [v3 inventory](/handbook/files/filled/eai-source-inventory-v3.md) extends the same treatment to articles 16 and 17 after finding EAI-R3. ## Worked example The local copy of the example act holds articles numbered one through twenty-eight. The v1 map includes four articles, each mapped to the rules it yields — and article 19 carries the flaw this handbook is built around: one row, one fate, one rule, while the article holds two adjacent branches. | Article | Content units | Fate | |---|---|---| | Eight | duty condition: an employer with employees must conclude the insurance contract | formalize: the employer duty rule | | Nine | penalty formula: unpaid amount times one and a half percent per day of delay | formalize: the penalty rule | | Seventeen | twenty-two-class tariff table plus premium formula | formalize: twenty-two strict tariff rules plus the premium rules — v1 row; the minimum floor hides inside it, as the employer branch hid in the article-19 row | | Nineteen | payout condition with inclusive bounds from thirty to one hundred percent loss | formalize: the payout rule — v1 row; the employer branch hides inside it | The steepest tariff row belongs to class twenty-two at rate 0.0296. On an insured sum of one million, the base premium is twenty-nine thousand six hundred; a two-day delay on one hundred thousand unpaid yields a penalty of three thousand. A thirty percent loss qualifies for payout while twenty-nine percent does not. The remaining twenty-four articles are excluded by the scope recorded on the scope card, and the unprocessed bucket of the map lists whatever is seen but not yet dispositioned; both are visible in the [filled EAI inventory](/handbook/files/filled/eai-source-inventory.md). The v2 map re-inventories article 19 unit by unit, which is what exposes finding EAI-R1 as a row that should have existed: | Locator | Content unit | Fate | |---|---|---| | 19.1, line 364 | insurer payout branch, loss thirty through one hundred | formalize: PayoutForThirtyToHundred, decision EAI-D2, two boundary pairs | | 19.1, line 363 | employer reimbursement branch, loss five through twenty-nine | formalize: LowLossEmployerReimburses, finding EAI-R1 closed, two probes | | 19.1, line 362 | harm measured per the Civil Code | exclude: referenced act outside the slice | | 19.1–19.6, rest | caps, annuity mechanics, death benefit, expenses, burial, recovery, transfer, prevention | exclude, each unit named with its basis | One article, mixed status: two units formalized, the rest excluded by name, none unprocessed. The full chain for the R1 branch reads: source line 363 → inventory unit (employer branch) → no decision record (direct transcription, not a close call) → rule LowLossEmployerReimburses → probes EAI-R1-LOW-LOSS-TWENTY / FOUR. A whole-article row could never carry that chain — which is exactly why the branch went missing. The v3 map repeats the lesson for articles 16 and 17, this time caught by finding EAI-R3: the base multiplies the insured sum rather than payroll, the minimum floor gets its own rule, and the S ≥ F constraint is recorded as an assumed input rather than silently dropped: | Locator | Content unit | Fate | |---|---|---| | 16.1, line 212 | insured sum set by the contract, not below payroll | assume: case input, S ≥ F unchecked | | 17.1, line 222 | premium from tariff times the insured sum | formalize: PremiumBaseFromInsuredSum, PremiumBaseStands, decision EAI-D4 | | 17.2-1, line 273 | below-floor base rises to the minimum wage | formalize: PremiumMinimumFloor, three probes | | 17-1, lines 284–355 | correction coefficient, no-claim discount | exclude: no case category asks | ## Pitfall The classic failure is inventorying from memory or from a recollection of the act instead of the pinned bytes, which quietly substitutes a remembered reading for the text. Its twin is dropping dull articles silently instead of marking them excluded. A subtler one is starting to interpret during inventory: choosing between readings belongs in decision records, not in the fate map. ## Verification The stage is done when each of the following holds: - Every content unit of the local copy has exactly one fate, and the counts reconcile at unit granularity: included plus excluded plus unprocessed covers the act with nothing left over. An article-level count that reconciles while a branch hides inside one row fails this check — the v1 map is the worked counterexample. - Every included unit traces forward to rules or to a decision record that unblocks them, and every branch of a covered article owns its row, its rule, and its probes. - The package checks pass for the inventoried slice. Observed on the accepted candidate with the pinned tool (`law` 0.1.0, semantics law.core/0.2, published build), R1 excerpt: ```text ok [kz.corpus.employee_accident_insurance#authored] tests/r1.lawtest / EAI-R1-LOW-LOSS-TWENTY-EMPLOYER-REIMBURSES ok [kz.corpus.employee_accident_insurance#authored] tests/r1.lawtest / EAI-R1-LOW-LOSS-FOUR-SILENT total: 37 checked, 37 passed, 0 failed, 0 not run; code 0 ``` ## Limits Inventory disposes; it does not interpret. Boundary readings and table shapes decided later must cite back to inventory rows, and findings raised at review go on the [review record template](/handbook/files/templates/review-record.md) rather than into the fate map; the [filled EAI review record](/handbook/files/filled/eai-review-agent.md) opens finding EAI-R1, the [candidate review record](/handbook/files/filled/eai-review-candidate.md) closes it with the v2 row as evidence, and the [R3 review record](/handbook/files/filled/eai-review-candidate-r3.md) closes finding EAI-R3 with the v3 rows as evidence. ## Next step Continue with [Vocabulary first](/handbook/vocabulary/), which turns the included inventory rows into named relations before any rule cites them. ## Sources - [From article text to norm](/tutorials/real-article-rules/) — bound variables, the expressiveness boundary, and constraints versus rules. - [Reconciliation with the pinned edition](/tutorials/pinned-edition/) — the pinned bytes the inventory must read.