# ONB upstream reconciliation — 2026-10-08 Focused inspection only. No build, replacement, save migration, deployment or runtime modification was performed. Existing release evidence is retained as written; this document corrects and supplements its licensing interpretation. ## Result and correction The **43 packed-path findings represent 10 distinct PNGs**, not 43 independently sourced artworks. All 43 original paths and SHA-256 values are accounted for below and in [per-file.csv](per-file.csv). The prior shorthand treating GPL as relevant only to engine code was too narrow. ONB has a repository-level [GPL-3.0 license](https://github.com/TheMaverickProgrammer/OpenNetBattle/blob/d8dce1a1225a16c7a941bcf7cfb88233f9b878e8/LICENSE.md). That is positive licensing evidence for included resources as well as code; absence of a separate license beside each PNG does **not** establish a rights gap. A match with the unlicensed donor repository also does not prove that repository is the original or only source. The earlier “local-only” label was our handling classification, not an explicit upstream prohibition. However, this upstream also contains a specific [intro-screen notice](https://github.com/TheMaverickProgrammer/OpenNetBattle/blob/d8dce1a1225a16c7a941bcf7cfb88233f9b878e8/BattleNetwork/bnIntroScene.cpp#L20): “This software is non profit” and “IP rights belong to Capcom.” This is a concrete third-party-IP acknowledgement to reconcile with the root license. It is not a permission grant from Capcom, a per-file ownership map, or an extra noncommercial restriction we can add to GPL. Neither “everything is cleared by the root license” nor “every asset needs its own license” follows from the evidence. **No complete flagged file can be reclassified as an exact ONB-upstream copy from this inspection.** There are useful upstream frame counterparts for StarRain and StarMan, and a different Protoman summon sheet. Their provenance is more specific than the earlier audit recorded, but partial artwork matches do not establish the complete donor file's licensing chain. No publication approval is issued by this reconciliation. ## What was compared - Verified GitHub `master` is `d8dce1a1225a16c7a941bcf7cfb88233f9b878e8`, also the project's pinned upstream revision. Compared all **1414 Git blobs** in that tree by content identity, independent of filenames. - Checked exact Git-blob identity against all **10 current branch tips**, including `development`; all recursive API trees were complete. Zero matches to the 10 flagged whole files. Branch revisions and root-license blob identities are retained in [upstream-branch-snapshots.json](upstream-branch-snapshots.json). - Decoded **423 upstream raster files** and compared whole-image dimensions and RGBA pixels, normalizing invisible RGB channels to zero. No flagged whole-image match; no decode errors. GIF comparisons use the first frame. - Inspected the two published official archives, `ONB_v207_072925.zip` and `ONB_v206_072725.zip`: **434 files each**, including any nested ZIP entries, zero exact flagged matches. Archives were read in memory, never installed or executed; hashes and counts are in [official-release-archive-checks.json](official-release-archive-checks.json). - Compared selected donor animation rectangles against the related upstream StarMan/Protoman sheets. Cropped only transparent margins, with no scaling or recoloring. Exact and near matches are separate; “near” means every channel differs by at most one unit, not a legal conclusion about derivation or originality. Full rectangle coordinates are in [reconciliation.json](reconciliation.json). - Protoman's embedded edit metadata mentions `navi_proto_atlas.png` in an Open NetBattle release directory. This is a provenance lead, not permission or proof of a public upstream release. A targeted GitHub history query for `BattleNetwork/resources/navis/protoman/navi_proto_atlas.png` returned no commits. Other PNGs carried no textual licensing metadata. No exhaustive historical-commit or image-crop search is claimed. - Searched upstream text for relevant credits/licensing/third-party notices. Found the Capcom intro notice plus separate crypto and MIDI license files. These dependencies retain their own notices; no resource-wide code-only exclusion was found. Binary artwork is not assumed independently owned merely because no textual notice was found. ## Ten distinct-image reconciliation Codes: **S** = upstream StarMan frame content identified, complete file differs; **P** = related Protoman summon asset exists, tested frames differ; **N** = no counterpart identified within the stated search scope. For every code, original-file permission remains unestablished by this comparison; none means “proven unlawful.” | Asset | Packed copies | SHA-256 prefix | Result | Specific evidence | | --- | ---: | --- | --- | --- | | [StarRain / falling-star effects](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/players/starman/falling_star/effects.png) | 3 | `1b404fcfddbf` | S | All 10 declared frame rectangles have counterparts in upstream StarMan: 1 exact, 9 with at most one RGB/alpha channel unit of difference. Complete PNG layout differs. | | [Champy portrait](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/enemies/champy/preview.png) | 1 | `842e1a059724` | N | No counterpart identified. | | [Champy battle atlas](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/enemies/champy/shared/battle.png) | 1 | `e85792e8409d` | N | No counterpart identified. | | [Colonel portrait](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/incomplete/players/colonel/preview.png) | 8 | `b4fd53b386b5` | N | No counterpart identified. | | [Colonel battle atlas](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/incomplete/players/colonel/battle.png) | 8 | `090ba50185a3` | N | No counterpart identified. | | [StarMan portrait](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/players/starman/preview.png) | 3 | `8eda7d3500db` | N | No counterpart identified; the upstream battle atlas is not this portrait. | | [StarMan battle atlas](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/players/starman/battle.png) | 3 | `8ea9395b92f0` | S | 36 declared unique rectangles checked: 3 exact trimmed-frame matches, 19 additional near matches within one channel unit, 14 without such a match. Complete PNG layout differs. | | [Protoman battle atlas](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/players/protoman/battle.png) | 12 | `d52e6e376ac7` | P | Upstream has a Protoman summon sheet, not this player atlas. None of the 39 tested frame rectangles matched it exactly or within one channel unit. | | [Big Brute portrait](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/enemies/big_brute/preview.png) | 2 | `98b89ce4d4b1` | N | No counterpart identified. | | [Big Brute battle atlas](https://github.com/Keristero/keristero-onb-mods/blob/bce928551af02c994de7666f4e677f28376d8b69/mods/enemies/big_brute/character/battle.png) | 2 | `66b1b0a06d26` | N | No counterpart identified. | Upstream candidate sheets: [StarMan atlas](https://github.com/TheMaverickProgrammer/OpenNetBattle/blob/d8dce1a1225a16c7a941bcf7cfb88233f9b878e8/android/app/src/main/assets/resources/navis/starman/navi_starman_atlas.png) with [animation definitions](https://github.com/TheMaverickProgrammer/OpenNetBattle/blob/d8dce1a1225a16c7a941bcf7cfb88233f9b878e8/android/app/src/main/assets/resources/navis/starman/starman.animation); [Protoman summon sheet](https://github.com/TheMaverickProgrammer/OpenNetBattle/blob/d8dce1a1225a16c7a941bcf7cfb88233f9b878e8/android/app/src/main/assets/resources/spells/protoman_summon.png) with [animation definitions](https://github.com/TheMaverickProgrammer/OpenNetBattle/blob/d8dce1a1225a16c7a941bcf7cfb88233f9b878e8/android/app/src/main/assets/resources/spells/protoman_summon.animation). These are potential alternate inputs, not tested drop-in replacements. The source-specific third-party notice above still applies to the provenance assessment. ## All 43 findings Paths below are relative to `/resources/mods/` inside the immutable browser preload. Full paths, full hashes, donor links, candidate links, license link, contrary-notice link and dispositions are provided in the CSV. Codes refer to the distinct-image findings immediately above. | # | Packed file | Asset | Result | | ---: | --- | --- | --- | | 1 | `cards/StarRain/effects.png` | StarRain / falling-star effects | S | | 2 | `enemies/champy-champion/visual-champy-portrait.png` | Champy portrait | N | | 3 | `enemies/champy-champion/visual-champy.png` | Champy battle atlas | N | | 4 | `enemies/expansion-drain/effects.png` | StarRain / falling-star effects | S | | 5 | `enemies/expansion-drain/visual-colonel-portrait.png` | Colonel portrait | N | | 6 | `enemies/expansion-drain/visual-colonel.png` | Colonel battle atlas | N | | 7 | `enemies/expansion-drain/visual-starman-portrait.png` | StarMan portrait | N | | 8 | `enemies/expansion-drain/visual-starman.png` | StarMan battle atlas | S | | 9 | `enemies/expansion-identity/battle.png` | Protoman battle atlas | P | | 10 | `enemies/expansion-identity/visual-colonel-portrait.png` | Colonel portrait | N | | 11 | `enemies/expansion-identity/visual-colonel.png` | Colonel battle atlas | N | | 12 | `enemies/expansion-identity/visual-protoman.png` | Protoman battle atlas | P | | 13 | `enemies/expansion-lateral/visual-colonel-portrait.png` | Colonel portrait | N | | 14 | `enemies/expansion-lateral/visual-colonel.png` | Colonel battle atlas | N | | 15 | `enemies/mission-cipher/effects.png` | StarRain / falling-star effects | S | | 16 | `enemies/mission-cipher/visual-starman-portrait.png` | StarMan portrait | N | | 17 | `enemies/mission-cipher/visual-starman.png` | StarMan battle atlas | S | | 18 | `enemies/mission-lookup/visual-big-brute-portrait.png` | Big Brute portrait | N | | 19 | `enemies/mission-lookup/visual-big-brute.png` | Big Brute battle atlas | N | | 20 | `enemies/mission-swarm/visual-colonel-portrait.png` | Colonel portrait | N | | 21 | `enemies/mission-swarm/visual-colonel.png` | Colonel battle atlas | N | | 22 | `enemies/proto-duel/battle.png` | Protoman battle atlas | P | | 23 | `enemies/proto-duel/visual-protoman.png` | Protoman battle atlas | P | | 24 | `players/expansion-drain/battle.png` | Protoman battle atlas | P | | 25 | `players/expansion-drain/visual-colonel-portrait.png` | Colonel portrait | N | | 26 | `players/expansion-drain/visual-colonel.png` | Colonel battle atlas | N | | 27 | `players/expansion-identity/battle.png` | Protoman battle atlas | P | | 28 | `players/expansion-identity/visual-colonel-portrait.png` | Colonel portrait | N | | 29 | `players/expansion-identity/visual-colonel.png` | Colonel battle atlas | N | | 30 | `players/expansion-lateral/battle.png` | Protoman battle atlas | P | | 31 | `players/expansion-lateral/visual-colonel-portrait.png` | Colonel portrait | N | | 32 | `players/expansion-lateral/visual-colonel.png` | Colonel battle atlas | N | | 33 | `players/free-protoman/battle.png` | Protoman battle atlas | P | | 34 | `players/mission-cipher/battle.png` | Protoman battle atlas | P | | 35 | `players/mission-cipher/visual-starman-portrait.png` | StarMan portrait | N | | 36 | `players/mission-cipher/visual-starman.png` | StarMan battle atlas | S | | 37 | `players/mission-lookup/battle.png` | Protoman battle atlas | P | | 38 | `players/mission-lookup/visual-big-brute-portrait.png` | Big Brute portrait | N | | 39 | `players/mission-lookup/visual-big-brute.png` | Big Brute battle atlas | N | | 40 | `players/mission-swarm/battle.png` | Protoman battle atlas | P | | 41 | `players/mission-swarm/visual-colonel-portrait.png` | Colonel portrait | N | | 42 | `players/mission-swarm/visual-colonel.png` | Colonel battle atlas | N | | 43 | `players/protoman/battle.png` | Protoman battle atlas | P | ## Shared resources outside the 43 A cross-check found **439 other packed paths with exact upstream blob matches**: 4 font files, 110 UI files, 68 sound effects, 12 music loops, 7 tiles, 122 scene files, 35 overworld files, 30 shader files, 50 files under mods and the config template. [shared-upstream-matches.json](shared-upstream-matches.json) maps every path to its upstream counterpart. These are positive upstream-source findings, not 439 new “cleared” or “blocked” decisions. They should be reviewed under the root license plus applicable notices and third-party ownership evidence; they do not all need replacement merely for lacking separate license files. ## Preservation and conclusion The original `preflight.json`, `packed-assets.csv`, source manifests and `RELEASE-STATUS.md` remain unchanged. The local bundle remains `b46ce9fde751b7018dd4`. Its recorded seven file hashes still match; the engine checkout remains clean. No browser was opened, save storage touched, native file changed or cloud action performed. This focused reconciliation establishes source relationships and corrects the earlier license-scope assumption. It does not establish a complete distribution basis for the 43 donor-derived copies, nor decide the rights of every upstream resource. The new concrete evidence requiring resolution for franchise artwork is the upstream Capcom ownership acknowledgement, rather than a demand for individual asset license files. The broader public-edition implementation remains unperformed during this focused inspection, as requested.