Skip to content

Commit 066fa20

Browse files
committed
docs: Record the 2026-08-08 cascade and review round in the branch map
Adds the symbol-joiner and dehyphenation rows, marks the apache#1167 restack and the morfologik reconciliation, and moves the state line to fc9824a.
1 parent 3025986 commit 066fa20

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

RESEARCH_BRANCHES.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Research branch map
22

3-
This fork's layout: `main` mirrors `apache/opennlp` main exactly and never diverges, keeping the fork a clean base for upstream work; `kristian-3.x-features` is the research arm and the default branch, a regenerated integration line that merges every open pull request head and every admitted feature branch (each build records its exact inputs in `PIPESTREAM-PROVENANCE.txt`, and artifacts publish only as the `3.x-preview-SNAPSHOT` Maven snapshot); everything else is one feature per branch, stacked on its true dependency. Feature branches may be numerous and unvetted; a branch joins the research arm through a pull request based on `kristian-3.x-features`, whose merge adds it to the regeneration list. Nothing ever merges out of the research arm, and none of this touches the upstream project's own process. Read the warning at the top of [README.md](README.md) before using anything here. State below is as of 2026-07-31, measured against apache main `014c0182a` (OPENNLP-1898 #1196 and OPENNLP-1899 #1197 landed after the `opennlp-3.0.0-M5` cut; main carries on as `3.0.0-SNAPSHOT`). Fork `main` and every admitted tip were cascaded onto that cut the same day.
3+
This fork's layout: `main` mirrors `apache/opennlp` main exactly and never diverges, keeping the fork a clean base for upstream work; `kristian-3.x-features` is the research arm and the default branch, a regenerated integration line that merges every open pull request head and every admitted feature branch (each build records its exact inputs in `PIPESTREAM-PROVENANCE.txt`, and artifacts publish only as the `3.x-preview-SNAPSHOT` Maven snapshot); everything else is one feature per branch, stacked on its true dependency. Feature branches may be numerous and unvetted; a branch joins the research arm through a pull request based on `kristian-3.x-features`, whose merge adds it to the regeneration list. Nothing ever merges out of the research arm, and none of this touches the upstream project's own process. Read the warning at the top of [README.md](README.md) before using anything here. State below is as of 2026-08-08, measured against apache main `fc9824a97` (five commits past `014c0182a`: dependency bumps, a NOTICE regeneration, and the OPENNLP-1900 security-model documentation). Every admitted tip was cascaded onto that head on 2026-08-08 with true parent stacking (carried copies refreshed to current parent content), followed by a fleet-wide review pass to the krickert-review standard.
44

55
## Merge strategy
66

@@ -88,7 +88,7 @@ Every head below was rebased onto `014c0182a` on 2026-07-31 (cascading OPENNLP-1
8888
| [#1182](https://github.com/apache/opennlp/pull/1182) | OPENNLP-1888 | The document container: immutable `Document`, typed layers with positional/document scope, namespaced layer keys, adapters for the classic tools, manual chapter | Draft. The branch is review-ready; it sits as a draft because the upstream queue is not ready to take it, not because the work is unfinished. Rebased onto `014c0182a`, mergeable | The foundation every staged annotator below builds on |
8989
| [#1166](https://github.com/apache/opennlp/pull/1166) | OPENNLP-1886 | Sixteen UniNE light/minimal stemmer tiers | Draft; rebased onto `014c0182a`, mergeable. That rebase dropped the 13 OPENNLP-1883 commits it used to carry, now that #1163 is upstream as one squash, leaving 3 commits of its own | Parity fixtures regenerated from the original implementations. Manual cites `LightStemmerUsageExampleTest` |
9090
| [#1155](https://github.com/apache/opennlp/pull/1155) | OPENNLP-1880 | Lexical knowledge base seam with WN-LMF and WNDB readers and a Morphy lemmatizer | Draft; rebased onto `014c0182a`, mergeable | Manual: `wordnet.xml`, pinned by `WordNetUsageExampleTest` |
91-
| [#1167](https://github.com/apache/opennlp/pull/1167) | OPENNLP-1887 | Weighted lexical expansion, synset similarity, hypernym-anchored typing | Draft, based on main and not on #1155: it carries the #1155 seam commit and #1182's `StringUtil.isBlank` as drop-on-rebase copies. Rebased onto `014c0182a` (via the 2026-07-31 cascade); earlier rebase onto `a8642301f` cleared the conflict it was reporting; mergeable | Manual expansion section cites `LexicalExpansionUsageExampleTest`. It also carries the clean-room morfologik CFSA2/FSA5 readers and the PoliMorf table lemmatizer under `formats:`/`lemmatizer:` titles with no JIRA key. Those five commits were copied onto `morfologik-fsa` on 2026-07-24 and build standalone there; dropping them from this branch is a separate rebase, not yet done |
91+
| [#1167](https://github.com/apache/opennlp/pull/1167) | OPENNLP-1887 | Weighted lexical expansion, synset similarity, hypernym-anchored typing | Draft, based on main and not on #1155: it carries the #1155 seam commit and #1182's `StringUtil.isBlank` as drop-on-rebase copies. Rebased onto `014c0182a` (via the 2026-07-31 cascade); earlier rebase onto `a8642301f` cleared the conflict it was reporting; mergeable | Manual expansion section cites `LexicalExpansionUsageExampleTest`. On 2026-08-08 it was restacked onto the `wordnet-api` branch proper and its five carried morfologik `formats:`/`lemmatizer:` commits were dropped; their unique review improvements were reconciled into `morfologik-fsa` first |
9292
| [#1165](https://github.com/apache/opennlp/pull/1165) | OPENNLP-1885 | Pure-Java SentencePiece inference with exact original-text spans, plus a WordPiece encoder | Ready for review; rebased onto `014c0182a`, mergeable | 6.47M pieces/s single-thread on the T5-small vocabulary, 1.42x the C++ reference measured through its Python binding. Tokenizer manual cites `SentencePieceUsageExampleTest` |
9393
| [#1152](https://github.com/apache/opennlp/pull/1152) | OPENNLP-1877 | Static text embeddings, pure JVM | Draft, stacked on #1165. Its base is the apache-hosted `sentencepiece` branch, which had diverged from the refreshed head and made the pull request read as conflicting; that base now tracks the head, so the diff is the 30 commits this change actually owns and it reports mergeable | 12.9x single-thread and about 7x peak throughput of the Python reference at 0.22x the memory (potion-base-8M, output parity asserted first). Manual cites `StaticEmbeddingUsageExampleTest` |
9494
| [#1154](https://github.com/apache/opennlp/pull/1154) | OPENNLP-1879 | Gazetteer and geocoder seam, bundled Natural Earth table, GeoNames and Overture loaders, place hierarchy, user-supplied overlay (additions, suppressions, bounding boxes) | Draft; rebased onto `014c0182a`, mergeable | Bring-your-own-gazetteer reference in test sources. Geocoder section cites `GeocoderUsageExampleTest` |
@@ -112,7 +112,7 @@ All staged branches are based on a recent apache main (each rebases fully before
112112
| `ff-postagger` | Feedforward neural POS tagger on the same trainer recipe, with opt-in pretrained word-vector input features and a coverage lexicon | Staged | 94.68% on UD English EWT vs 93.75% for the best classical configuration in-tree; 95.51% with the opt-in vector block (potion-base-8M vectors plus a dictionary lexicon), defaults unchanged. Manual section cites `FeedforwardPOSTaggerUsageTest` |
113113
| `bilstm-tagger` | Bidirectional LSTM tagger tier: character BiLSTM word representations, learned plus frozen pretrained embeddings, optional stacked encoder, CRF decoding, and multi-task auxiliary training; every layer gradient-checked against finite differences | Experimental, accuracy gate pending | 96.00% on UD English EWT so far vs the 97.0% gate; active lever is pretrained-table fine-tuning. Manual section cites `BilstmPOSTaggerUsageTest` |
114114
| `resource-installer` | User-supplied-URL model and data installer, SHA-256 verified before unpacking | Staged | Enabled a UD lemmatizer run at 87.76% lemma accuracy on EWT with the stock `LemmatizerME`. Model-loading manual cites `ResourceInstallerTest#testInstallEndToEndUsageExample` |
115-
| `morfologik-fsa` | Clean-room readers for the morfologik CFSA2 and FSA5 automaton formats behind a shared `FsaSequenceReader`, decoding into a `DictionaryLemmatizer`, plus a PoliMorf morphological-table reader | Staged, on current main, 389 formats tests green | Split out of #1167 on 2026-07-24, where these commits were written under `formats:`/`lemmatizer:` titles with no JIRA key. Unlike `opennlp-extensions/opennlp-morfologik`, which depends on `morfologik-stemming` and `morfologik-tools`, this adds no dependency. The PoliMorf reader's `StringUtil.isBlank` call became a private helper, since that method is an OPENNLP-1888 addition absent from main; #1167 still carries these commits until it is rebased |
115+
| `morfologik-fsa` | Clean-room readers for the morfologik CFSA2 and FSA5 automaton formats behind a shared `FsaSequenceReader`, decoding into a `DictionaryLemmatizer`, plus a PoliMorf morphological-table reader | Staged, on current main, 389 formats tests green | Split out of #1167 on 2026-07-24, where these commits were written under `formats:`/`lemmatizer:` titles with no JIRA key. Unlike `opennlp-extensions/opennlp-morfologik`, which depends on `morfologik-stemming` and `morfologik-tools`, this adds no dependency. The PoliMorf reader's `StringUtil.isBlank` call became a private helper, since that method is an OPENNLP-1888 addition absent from main. The second review pass #1167 carried over these files was reconciled back into this branch on 2026-08-08 (folded header check, truncated-header pins); #1167 no longer carries the commits |
116116
| `place-profiles` | Metadata-grounded place similarity over user-supplied profiles | Staged, stacked on #1154 | `geo.xml` cites `PlaceProfilesUsageTest` |
117117
| `glossary` | Dictionary/glossary matching as a document layer | Staged, needs #1182 | `glossary.xml` cites `GlossaryUsageExampleTest` |
118118
| `pii` | PII detection and masking layers | Staged, needs #1182 | `pii.xml` cites `PiiUsageExampleTest` |
@@ -128,6 +128,8 @@ All staged branches are based on a recent apache main (each rebases fully before
128128
| `depparse-annotator` | Per-sentence dependency parses as a document layer | Staged, on `depparse` | `dependency.xml` cites `DependencyAnnotatorPipelineTest` |
129129
| `relation` | Predicate-driven relation mentions over dependency parses | Staged, on `depparse-annotator` | `relation.xml` cites `RelationExtractionExampleTest` |
130130
| `embedding-annotator` | Embedding vectors for any span layer (tokens, sentences) | Staged, on #1152 | `embeddings.xml` annotator section cites `EmbeddingAnnotatorUsageTest` |
131+
| `OPENNLP-XXXX-symbol-joiner` | Whole-token symbol spell-out normalizer (`&` to `and`, `§` to `section`, IP marks) | Staged, on main | Row in the normalizer chapter table; identity passthrough pinned by parameterized tests |
132+
| `OPENNLP-XXXX-dehyphenation` | Line-break de-hyphenation normalizer with exact alignment, plus `RetokenizingTermVectorAnnotator` for count-changing normalizers | Staged, on OPENNLP-1897 | Normalizer chapter section cites `RetokenizingTermVectorAnnotatorTest` |
131133

132134
## The path upstream
133135

0 commit comments

Comments
 (0)