Skip to content

wip(repoint): app runs on burrow-engine only (functional core)#288

Draft
caezium wants to merge 3 commits into
mainfrom
feat/app-on-engine
Draft

wip(repoint): app runs on burrow-engine only (functional core)#288
caezium wants to merge 3 commits into
mainfrom
feat/app-on-engine

Conversation

@caezium

@caezium caezium commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Draft — needs local build + hand-test. The functional core of the full repoint: the GUI shells the single burrow-engine binary (bundled as Resources/burrow, does all work + emits the envelope) instead of the burrow-cli conductor + burrow-digger engine.

Done (locally buildable via macos/scripts/build.sh with BURROW_ENGINE_SRC=<burrow-engine checkout>):

  • bundle-burrow.sh cargo-builds burrow-engine universal → Resources/burrow.
  • project.yml: one engine bundle phase (dropped the conductor phase); fclones kept.
  • MoleCLI.bundledExecutable → Resources/burrow.
  • BurrowStreamReport.swift: reduces clean/optimize --stream NDJSON → the existing TaskRunReport; OperationFlow.moleStream uses it. Every envelope pane (analyze/status/net/orphans/photos/dupes/history/uninstall) is unchanged.

Remaining (needs your build+test loop):

  1. mo→engine argv inversion for the direct/elevated .mo path (mo clean=live vs engine clean=dry-run+--apply) — streaming path is handled; elevated/streaming-off isn't.
  2. Swap the 3 submodules (burrow-cli ×2 + burrow-digger) for one caezium/burrow-engine.
  3. release.yml + windows-release.yml: build+bundle burrow-engine (ENGINE_PAT already wired), drop digger/conductor fetch/verify/sign.

Engine side is 100% done (52 PRs, 234 tests, streaming + preview streaming, CI-green ×3).

caezium added 3 commits July 14, 2026 11:33
… reducer

FUNCTIONAL CORE of the full repoint (GUI shells burrow-engine directly, dropping
the burrow-cli conductor + burrow-digger engine). LOCALLY BUILDABLE via build.sh
with BURROW_ENGINE_SRC pointed at a burrow-engine checkout; NOT yet wired into the
release pipeline or submodules (deliberate follow-up after local validation).

- macos/scripts/bundle-burrow.sh: cargo-builds the ONE burrow-engine binary
  universal (arm64+x86_64 lipo) → Resources/burrow (kept the name so
  BurrowConductor.executableURL is unchanged). Replaces the digger Go build.
- macos/project.yml: dropped the 'Bundle burrow (conductor)' phase; the 'Bundle
  burrow-engine' phase now cargo-builds the engine from BURROW_ENGINE_SRC. fclones
  phase kept (dupes still shells it via $BURROW_FCLONES).
- MoleCLI.bundledExecutable: Resources/engine/mole → Resources/burrow.
- BurrowStreamReport.swift (new): reduces the engine's clean/optimize --stream NDJSON
  (removed/would_remove/failed/protected/task/would_run + done) into the same
  TaskRunReport the views render; OperationFlow.moleStream now uses it instead of the
  human-text parseTaskReport. Every envelope-based pane (analyze/status/net/orphans/
  photos/dupes/history/uninstall) is UNCHANGED — the engine emits the same envelope.

KNOWN REMAINING (needs your build+test loop):
1. mo→engine argv inversion for the DIRECT/ELEVATED .mo path: mo 'clean' = live but
   engine 'clean' = dry-run (+--apply). streamArgv handles it for the streaming path
   (default), but elevated/streaming-off clean/optimize/uninstall/purge/installer via
   resolveMo pass mo-style argv → wrong semantics. Needs a MoActions-level translation.
2. Submodules: swap the 3 (.gitmodules: burrow-cli x2 + burrow-digger) for a single
   caezium/burrow-engine submodule (macos + windows).
3. release.yml + windows-release.yml: build burrow-engine (ENGINE_PAT auth already
   present), bundle as Resources/burrow, drop the digger/conductor fetch + verify + sign.
4. analyze --progress streaming is already OFF by default (uses capture) — no change.
…ract

The one CI failure: OperationFlowTests fed the OLD digger human-text ('Potential
space: …') to moleStream's reducer, which now consumes the engine's NDJSON. Converted
cannedClean to the equivalent clean --stream PREVIEW NDJSON (would_remove + a dry-run
done with would_free_human) — it reduces to the same summary, so the existing
assertions (space '383.8MB', groups 1, 'Cleaned 383.8MB · 372 items') still hold.

Added BurrowStreamReportTests locking the contract directly: clean preview ('Cleaned'),
clean live ('Freed', freed_human → freeChange), optimize task events, garbage-line
tolerance, and hudLine label extraction.
…oleStream

The cleanOp() fixture uses the old parseTaskReport (text) reducer, while only the
moleStream op uses the new NDJSON BurrowStreamReport reducer. Reverted cannedClean to
its text form (so the cleanOp-based gate tests parse '383.8MB' again) and added a
separate cannedCleanStream (NDJSON) used only by the moleStream final-detail test.
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