chore: remove duplicate top-level source tree (build only from work/)

Commit 2e1fb325 ("refactor: move source tree into work/, multi-stage Docker
build") COPIED the source tree into work/ but never removed the top-level
originals, so main has been tracking two full copies of the app ever since.

Only work/ is live:

  - CI (.github/workflows/docker-publish.yml, the sole workflow) builds with
    `context: work` / `file: work/Dockerfile`. It never references the
    top-level meshai/, Dockerfile, tests/, or pyproject.toml.
  - Production (CT 108) runs work/docker-compose.yml, whose build context is
    work/ and whose Dockerfile does `COPY meshai/ ./meshai/` relative to it.
  - work/ is self-contained: its own Dockerfile, docker-compose.yml,
    pyproject.toml, requirements.txt, config.example.yaml, dashboard-frontend/
    and tests/.

The top-level copy carried ZERO unique content. work/ is strictly newer
everywhere (migrations v19-v28 vs top-level's v18; whole subsystems the top
level never had: coverage, generic_http, satpass, wzdx, notifications/gating,
notifications/formatters, transport/). Every file that existed ONLY at the top
level is legacy code that work/ deliberately removed after the fork:

  - meshai/cli/configurator.py            removed from work/ in 5de683f7 (#45, legacy TUI configurator)
  - meshai/commands/subscribe.py          removed from work/ in 9e6a3715 / 04604624 (subscription backend)
  - meshai/subscriptions.py               removed from work/ in 9e6a3715 / 04604624 (subscription backend)
  - meshai/notifications/scheduled/fire_digest.py
                                          removed from work/ in b0b0697b (#107, fire digest feature)
  - meshai/notifications/pipeline/severity_router.py
                                          never existed in work/; superseded by notifications/gating + formatters
  - tests/test_fire_digest_recency.py     tests the removed fire digest
  - tests/test_meshcore_per_family_routing.py
                                          tests the top-level-only meshcore_channel impl, superseded in work/ by transport/
  - dashboard-frontend/src/pages/Alerts.tsx
                                          removed from work/ in 9e6a3715 (subscription backend)
  - dashboard-frontend/src/pages/Environment.tsx.bak
                                          stray backup file, never in any build

The duplication is an ACTIVE HAZARD, not just dead weight: a fix applied to the
top-level meshai/ passes review, gets merged, and then silently does nothing,
because neither CI nor prod ever reads that tree. This already happened --
ff3ded8c (#9, "independent per-family MeshCore channel") landed its config.py /
connector.py / channels.py / dispatcher.py changes in the DEAD top-level copy
while work/ got only the transport-layer half. (Nothing was lost there: work/
carries a full, later-generation implementation of the same feature wired
through config.py, connector.py, transport/base.py, transport/composite_transport.py,
transport/meshcore_transport.py and the dashboard routes.) Deleting the copy
makes that class of mistake impossible.

Removed (280 files): meshai/, tests/, dashboard-frontend/, config/, Dockerfile,
docker-compose.yml, docker-entrypoint.sh, config.example.yaml, pyproject.toml,
requirements.txt.

Also fixes README Quick start, which pointed at the now-deleted root paths
(main/docker-compose.yml, main/config.example.yaml -> main/work/...) and still
advertised `meshai --config`, the interactive TUI removed from work/ in 5de683f7.

Verification: work/ test suite unchanged before and after --
20 failed, 2240 passed, 72 skipped (identical failure list; all pre-existing).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt Johnson 2026-07-12 04:08:02 +00:00
commit df8a8c7b49
281 changed files with 4 additions and 110463 deletions

View file

@ -54,9 +54,9 @@ Everything is driven from the web UI, organized into **General**, **Meshtastic**
```bash
git clone https://github.com/zvx-echo6/meshai.git
cd meshai
cd meshai/work
pip install -e .
meshai --config # interactive setup TUI
cp config.example.yaml config.yaml # then edit config.yaml (or use the dashboard)
meshai
```
@ -64,8 +64,8 @@ Or with Docker:
```bash
mkdir -p meshai/data && cd meshai
curl -O https://raw.githubusercontent.com/zvx-echo6/meshai/main/docker-compose.yml
curl -o data/config.yaml https://raw.githubusercontent.com/zvx-echo6/meshai/main/config.example.yaml
curl -O https://raw.githubusercontent.com/zvx-echo6/meshai/main/work/docker-compose.yml
curl -o data/config.yaml https://raw.githubusercontent.com/zvx-echo6/meshai/main/work/config.example.yaml
# edit data/config.yaml, then:
docker compose up -d
```