Skip to content

fix(release): externalize runtime assets and harden VT verification - #1501

Merged
DeusData merged 13 commits into
mainfrom
fix/external-ui-assets
Aug 8, 2026
Merged

DeusData merged 13 commits into
mainfrom
fix/external-ui-assets

Conversation

@DeusData

@DeusData DeusData commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Externalize the generated UI bundle into a content-addressed sidecar and keep integration programs in a verified adjacent asset instead of native byte arrays.
  • Remove native in-process update/download behavior, delegate replacement to the shipped installers, and harden native plus package-wrapper runtime-set publication and recovery.
  • Bind release archives to exact member inventories, verify vendored inputs, scan each distinct release object exactly once, and publish durable zero-tolerance VirusTotal evidence.

Verification

  • scripts/lint.sh --ci
  • scripts/test.sh: 7,452 passed, 0 failed, 4 documented platform skips
  • macOS production build and runtime-asset verification
  • Linux arm64 production ELF plus canonical full smoke: ALL PASSED
  • npm wrapper publication tests: 19 passed
  • PyPI wrapper tests: 27 passed
  • focused Windows bundle, smoke fixture, archive extraction, UI pack, vendored integrity, and VirusTotal contracts

VirusTotal goal

This is the measurement candidate for naturally clean release binaries. The gate remains zero tolerance: no allowlisting, submission exception, or vendor-mercy path is introduced.

DeusData added 13 commits August 8, 2026 17:35
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData
DeusData merged commit 84219bd into main Aug 8, 2026
2 of 3 checks passed
thientrile pushed a commit to thientrile/codebase-memory-mcp that referenced this pull request Aug 10, 2026
Externalizing the integration templates (DeusData#1492/DeusData#1493) and the UI bundle
(DeusData#1501/DeusData#1503) was done to reduce the Microsoft `Wacatac.B!ml` surface. It did
not work: across dry runs the flagged artifact count stayed at ~3 and the
detections merely moved between artifacts.

Dissection of run 31286803592 shows there is no structural cause to fix. The
verdicts split across every axis at once — linux-amd64 (dynamic) flagged while
linux-amd64-portable (static) is clean, but linux-arm64 (dynamic) clean while
linux-arm64-portable (static) is flagged. The two macOS binaries have identical
segment structure and split clean/flagged. Siblings from one build landed in
different variant buckets (.B vs .C). Entropy is low everywhere
(code_vectors.bin 4.166, grammar tables 3.464 bits/byte, against 7.5-8.0 for
packed payloads), so the packed-payload hypothesis is excluded too.

So the complexity bought nothing, and installation goes back to being
self-contained: one binary that carries its own UI and agent integration
templates, with no adjacent data file that has to resolve before `install`
works. Only the UI-capable composition ships from now on, under the historical
unsuffixed archive name.

Removed: src/ui/asset_pack.{c,h}, asset_pack_stub.c, asset_manifest_stub.c,
scripts/pack-ui-assets.mjs, src/cli/integration_assets.{c,h},
assets/cbm-integrations.json, scripts/gen-integrations-hash.sh, the
--verify-runtime-assets probe (nothing adjacent left to verify), and the
composition gates A6/A7 whose property is now deliberately inverted.

Restored: scripts/embed-frontend.sh, src/ui/embedded_{assets.h,stub.c}, the
compiled-in hook/adapter template bodies, and the embed/EMBED_OBJS build path.

Kept from the reverted commits, re-applied by hand where a wholesale file
restore would have dropped them:
  - cbm_module_path_utf8() in both self-path sites. GetModuleFileNameA renders
    through the ANSI code page and mangles non-ASCII install paths.
  - the /__cbm/ui-readiness HMAC proof, secure_random and cbm_hmac_sha256, so
    `daemon start --open` still waits for a genuine CBM listener.
  - X-Content-Type-Options: nosniff on served assets.
  - the MinGW noexecstack gate, -lbcrypt, and the cppcheck/zip CI fixes.

Archives are now codebase-memory-mcp-<os>-<arch>[-portable] with exactly four
members (binary, LICENSE, installer, THIRD_PARTY_NOTICES.md). That restores the
names every static package manifest already points at — aur, chocolatey,
homebrew, scoop, winget and glama were all broken by the -ui- rename.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant