|
Download docs/DEPENDENCIES.md from nmarshall/nanobrush: direct link, hf CLI and curl.
- Browser
- Download file 6.62 kB
-
https://huggingface.co/nmarshall/nanobrush/resolve/main/docs/DEPENDENCIES.md
- Command line
-
hf download hf://nmarshall/nanobrush/docs/DEPENDENCIES.md
-
curl -L -o DEPENDENCIES.md https://huggingface.co/nmarshall/nanobrush/resolve/main/docs/DEPENDENCIES.md
6.62 kB
| # Dependency and build map | |
| Source-level finding F22, 2026-10-21. Baseline paths are relative to `assets/references/extracted/2016-03-10-c/`. All five builds are indexed in [source-map.json](../assets/analysis/source-map.json); source hashes and line anchors accompany each edge. | |
| ## Compile-time include graph | |
| `tools/includePaths.txt` declares five search directories relative to tools: `data/sources/include/core`, `include/IXPL`, `include/IXPL/general`, `include/IXPL/files`, and `include`. The index additionally considers a source-local file candidate. Actual compiler search precedence is unmeasured. | |
| | Build | IXPL files | Include directives | Missing or ambiguous candidate sets | | |
| | --- | ---: | ---: | ---: | | |
| | 2015-10-03 | 42 | 91 | 0 | | |
| | 2015-11-15 | 42 | 91 | 0 | | |
| | 2015-11-24 | 42 | 91 | 0 | | |
| | 2015-12-08 | 43 | 96 | 0 | | |
| | 2016-03-10-c | 47 | 118 | 0 | | |
| Every directive has exactly one existing candidate in this corpus. This establishes source closure under the stated candidate policy, not successful compilation. The index retains direct/transitive include edges and plugin-qualified Core method references; virtual calls, branches and dynamic handler invocations are not a typed execution graph. | |
| ## Build and execution boundaries | |
| ```mermaid | |
| flowchart TD | |
| Start[First-start BAT] --> ModelBuild[IXPL cxo model build] | |
| Start --> PluginBuild[IXPL cso plugin build] | |
| ModelBuild --> IXM[Generated models/ixm] | |
| PluginBuild --> Plugin[Generated plugins/plugin] | |
| Editor[Native editor / Akula host] --> Plugin | |
| Editor --> IXM | |
| Plugin --> API[Core interrupt APIs] | |
| Plugin --> Tasks[Named task interfaces] | |
| Menu[Main-menu plugin] --> Batch[Conversion BAT wrappers] | |
| Batch --> Converter[Managed file-formats tool] | |
| Converter --> DAT[MB3 DAT intermediates] | |
| Editor --> DAT | |
| ``` | |
| Arrows represent source/build dependencies, not a measured temporal load order. | |
| The first-start script compiles top-level model and plugin sources before moving the editor executable to the archive root. Model BAT wrappers use `IXPL.exe cxo <source> <output.ixm>`; plugin wrappers use `cso <source> <output.plugin>`. Top-level `build all.bat` enumerates only `*.ixpl` in its current directory; experimental sources in `extra stuff/` require manual promotion. The runtime plugin enumeration and exact ordering are still host implementation questions. | |
| GPU configuration BAT files only switch the presence of root `ATI.ix-workaround-marker` / `NVIDIA.ix-workaround-marker`; they do not themselves run a graphics probe or modify shader source. The cache-clear BAT deletes `data/shaders/*.cache`. Sources: the two configure scripts and `clear shader cache.bat`, all lines 1–3. | |
| The three EXEs are separately inventoried native-editor/managed-tool artifacts, as recorded in F03. E01 did not identify PE imports, CLR target versions, external DLL resolution or executable resource tables. E02 now maps both converter assemblies: .NET Framework 4.0, PE bootstrap import `mscoree.dll!_CorExeMain`, references to mscorlib/System/System.Core 4.0.0.0, no managed resources or P/Invoke entries, and successful unmodified Mono 6.14.1 execution on ARM64 macOS. See [F24](MB3_DAT.md) and [E02](experiments/converter-2026-10-21.md). Editor and IXPL compiler executable dependencies remain open. The historical Wine/.NET recipe remains reported evidence. | |
| ## File/resource edge classification | |
| The machine index records a literal expression and same-name archive candidates for config/text/texture/process/world-file calls. It keeps dynamically computed names unresolved. Same-name matches are candidate dependencies, not proof of host path resolution. | |
| | Resource family | Observation | Disposition | | |
| | --- | --- | --- | | |
| | Plugin settings | Most literal CFG names have bundled settings files | Map consumer rules and generated saves before porting | | |
| | `main menu.cfg` | Requested by `main menu.ixpl:261,301`, absent in the latest archive | Optional/generated settings candidate; loader declaration says missing config is silent, not automatically a startup failure | | |
| | Three icon atlases | Calls request names without the shipped `56` suffix | Loader naming rule unresolved; retain both requested and shipped names | | |
| | `conversion.log`, `load.mb3dat`, `save.mb3dat` | Absent as archive members but created/used by conversion workflows | Expected generated intermediates, not missing distribution downloads | | |
| | `content textures/index.cfg` | Named by root MB3 config but absent | External/optional content dependency; effect unknown | | |
| | SIL font notice | ReadMe names a file absent from every ZIP | Unresolved provenance/redistribution requirement | | |
| | Compiled plugins/models/shader caches | No regular compiled plugin/model samples bundled | Generated build/runtime products; keep separate from immutable sources | | |
| The source map does not classify every literal as a resource. Translation keys, tool names and help text are separate domains. It also does not treat a missing exact-name candidate as proof of an error. | |
| ## Version differences | |
| Adjacent builds change as follows (regular paths; byte hashes): | |
| | Transition | Added | Removed | Changed same-path files | | |
| | --- | ---: | ---: | ---: | | |
| | October 3 → November 15 | 0 | 1 | 8 | | |
| | November 15 → November 24 | 1 | 0 | 8 | | |
| | November 24 → December 8 | 1 | 0 | 24 | | |
| | December 8 → March 10-c | 21 | 7 | 72 | | |
| No adjacent transition has an identical-byte removed-to-added rename candidate. The latest has several identical-copy candidates for minimal `main.shown=false` settings, which do not imply a shared implementation or semantic equivalence. The older `Mb3 tools` and base-window modules change names/content and need semantic comparison. The report records hash identity separately from same-basename candidates. | |
| ## Native rewrite dependency cuts | |
| 1. Specify Core/world/grid semantics independently of Akula's original execution engine. | |
| 2. Replace BAT/process conversion with native codecs and isolated CLI tools. | |
| 3. Replace cursor/model generation with deterministic native geometry after IXModel contracts are validated. | |
| 4. Port bundled plugin functionality into Rust modules/services; decide third-party IXPL compatibility separately. | |
| 5. Keep preferences, view state, document data, derived meshes and task messages distinct. | |
| 6. Validate missing-resource fallbacks and plugin service ordering before promoting source declarations to runtime contracts. | |
| Next: P2.11 resource lookup semantics and semantic version diffs; P3.06 executable dependencies; P4.04/P4.05 lifecycle; P9 shader/asset integration. No target-native Rust implementation is introduced by this pass. | |