Mark paragraph-start verses from the module's markup (#12 part 3b) #114
No reviewers
Labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
schaefera/utStudyBIble!114
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/paragraph-starts"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #12 (part 3b of the split in comment 2328).
What
The sword reader now uses the module's own markup to say which verses start a paragraph:
x-pmilestone, a<p>, or a paragraphdiv, before the verse's first text.<p>.sword::shownreturns the runs plus this flag in one pass, andsword::runsstays as a wrapper.Reader::readsetsRow.para_start, and a chapter's first verse always counts. Nothing changes on screen yet; 3c uses this for running text.Blast radius
Tier: trunk
Trunk paths touched:
sword/src/filter.rs,sword/src/filter/{osis,thml,runs}.rs,core/src/bible/{chapter,reader}.rsTesting tier: standard (logic).
Gate / rollback: revert this merge. There is no schema, setting or UI change.
Proof
cargo makepassed with SWORD_TEST_PATH set: fmt, clippy, tests with coverage, release check, deny and audit.para_startforced false, 3 tests fail:filter::osis::tests::paragraph_starts_come_before_the_first_textmarks_the_verses_that_start_a_paragraphbible::reader::tests::marks_paragraph_starts5ab2be5: changes, rust, audit, app, e2e and click all passed.Review
Reviewer: fresh-context review at high on
5ab2be5(review 315). No findings.Review-Confidence: 100/100 (audit on
5ab2be5, CI green), with no deductions.Confidence by part
<p>: medium. It is a simple prefix check, and the fails-without-change run didn't cover it.🤖 Generated with Claude Code
Fresh-context review, level: high (trunk).
Reviewed commit:
5ab2be55a9Range: origin/main...HEAD (1 commit)
Files reviewed:
Findings: none (no high, medium or low defect with a concrete failure scenario).
What I checked:
para_startis set intag(), which only runs when no skip is active, so paragraph marks inside notes, titles, pre-verse matter and non-primary variants cannot count.seen_textis set only intext()(also not reached while skipping), so heading/note text before the mark does not hide it.<p eID/>and</p>do not count.extract()is unchanged: the new State fields default to false anddisplay: Nonestill avoids the run cost.<pprefix check requires>, space or/after it, so<pre>/<param>do not match.runs()still returns the same text as before.Rowis built in one place only, and the qt glue reads fields by name, so the new field breaks no other constructor. Rows with no data getpara_starttrue only for verse 1, as documented.sword::runsis kept as a wrapper, so the golden tests (unchanged) and other callers still compile and behave the same.marks_paragraph_startsagainst the cached KJV, and both new synthetic tests. All pass.Verse granularity (a break after text within a verse is not recorded) is documented in
Shownand covered by tests; the field has no consumer yet in this PR.Gate approval on head
5ab2be5. The single commit is the reviewed one and no commits came after the review. The review posted no findings, so none are open. CI is green on head for all six jobs (changes, rust, audit, app, e2e, click). Proof lists no unrun elevated, maximum or AI-behavior gate. The audit gives Review-Confidence 100.WIP: Mark paragraph-start verses from the module's markup (#12 part 3b)to Mark paragraph-start verses from the module's markup (#12 part 3b)