# Module 3 practice · keep a rule attached to its conditions Use the [lesson](../lessons/03-build-a-source-collection.md), then compare [the separate solutions](../solutions/03-sources-chunks.md). **A. Trace offsets.** Create a `Document` with text `one two three four five`. Run `word_windows` with size 3 and overlap 1. Predict both chunk texts first. Verify for each chunk that `source.text[chunk.start:chunk.end] == chunk.text`. Explain why the same offsets cannot be reused after adding a word at the start of the parent. **B. Surface an oversized atom.** Create a parent containing `Renew only if no hold exists.\n\nAsk early.` where `\n` in the written Python literal becomes an actual newline. Run `paragraph_chunks` with `max_chars=10`. Predict which paragraph is flagged `over_budget`. Explain why this flag differs from truncation and why it does not guarantee a later context packet includes the rule. **C. Choose a boundary.** A source table has headings “Member type” and “Maximum loan” and a row “Public | 14 days.” A proposed chunk contains only `14 days`. Explain what meaning was lost. Write an original, labeled text representation that preserves the relationship without claiming the project includes a table parser. **D. Review source identity.** Two files share ID `hours-v2` but contain different schedules. Should the loader accept the second as an update? Describe an explicit safer source-version procedure for this synthetic collection. What can a checksum detect, and what cannot it establish? Self-review: require exact span equality, visible oversized paragraphs, preserved table labels and unambiguous version identity. These checks are distinct from factual correctness and production access control.