All notable changes to this project will be documented in this file.
DocumentSampler— stateless service with a singlesample(string $text): SampledDocumentmethod; no configuration requiredSampledDocument— immutable value object (Results/) with public readonly properties:intro,outline,middle,tail,text,charCountDocumentPartenum — defines the four document zones (Intro,Outline,Middle,Tail) each with a fixedchars()windowSamplerInterface(Contracts/) — contract for custom sampler implementationsEmptyDocumentException(Exceptions/) — thrown on empty or whitespace-only input- Fixed extraction windows regardless of document size:
intro1000 chars from the start,outlineup to 500 chars of extracted heading lines,middle500-char window centred on the document midpoint,tail500 chars from the end - Outline extraction recognizes Markdown headings (
# Heading), numbered sections (1.1 Title), and ALL-CAPS lines - PHPStan at level
maxwith zero errors