Berlin column spike: stream order already reads correctly

The plan assumed the two-column Berlin gazette would need x-coordinate
column detection. It does not: the content stream already emits the left
column fully before the right one, so commands come out in reading order.
The test pins that finding.

What does go wrong there is different, and two parts of it are fixed:

  * The article's amendment formula carries its own target ("§ 2 Satz 1
    des Gesetzes zur Errichtung … wird wie folgt geändert"), but the
    following items never inherited it. The pattern's leading \b could
    never match before "§" — a non-word character needs a word character
    in front of it — so the paragraph branch was dead code and only the
    Bavarian "Art." branch ever fired.

  * The running page header is not a line of its own; it sits inside the
    body text of the following column, so it has to be cut out rather
    than dropped as a column title.

Two blockers remain and are recorded rather than papered over: Article 1
amends an *Anlage* with its own numbering, which the model does not carry
(the same gap that shelved Baden-Württemberg), and full-width frames
(title block, imprint) sit elsewhere in the stream than on the page,
which would need a real XY-cut. Stems are unobtainable either way —
gesetze.berlin.de is an authenticated juris app like the Schleswig-
Holstein portal.

229 tests green; all pinned figures unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I4619dbe96a023d61104d7107a9a34533123d1bc5
7 files changed
tree: 179aa5b90857750bbaf41b20a401985206b6817f
  1. .mvn/
  2. src/
  3. .gitignore
  4. COPYING
  5. FASSUNGEN.txt
  6. mvnw
  7. mvnw.cmd
  8. pom.xml
  9. README.adoc