147 lines
5.1 KiB
Markdown
147 lines
5.1 KiB
Markdown
# Flying Jib — Progress Log
|
||
|
||
> Append-only chronological log of decisions, blockers, and wins.
|
||
> Newest entries at the top.
|
||
|
||
---
|
||
|
||
## 2026-07-30 — Phase 4 mesh registry core
|
||
|
||
### Wins
|
||
|
||
- `lib/mesh-registry.js` — Autobase + Hyperbee regions/cells; Hyperswarm replication
|
||
- `lib/border.js` — pure border/neighbor/migrate advisory helpers
|
||
- CLI: `mesh-create`, `mesh-open`, `mesh-admit`, `mesh-enroll`, `mesh-list`
|
||
- Mesh `fj1.` invite type
|
||
- Tests: mesh registry + border (**17/17**)
|
||
- GitHub Actions `integrate.yml` (test + linux standalone smoke)
|
||
|
||
### Next
|
||
|
||
- Live border migrate via Squid plugin + tunnel switch
|
||
- Writer admission multi-peer e2e
|
||
|
||
---
|
||
|
||
## 2026-07-30 — Phase 3 chat/presence + standalone binary
|
||
|
||
### Wins
|
||
|
||
- `lib/peer-session.js` — Hyperswarm + Protomux (`flying-jib/presence|chat|control`)
|
||
- CLI host/join: stdin chat, `/peers`, `--name` display name
|
||
- Peer chat integration test
|
||
- **`scripts/bare-standalone.cjs`** peardock-style pack; **standalone binary runs Squid on 127.0.0.1 with PATH without Node**
|
||
- Postinstall patches: static Squid plugins, log.js bare-pack fixes, events polyfill vendor
|
||
|
||
### Notes
|
||
|
||
- Standalone ~500MB; size optimization later
|
||
- Dev path `bare-runtime/bin/bare bin.mjs` remains preferred for iteration
|
||
|
||
### Next
|
||
|
||
- Multi-host make:standalone:all in CI
|
||
- Phase 4 mesh
|
||
- Java multiplayer playtest
|
||
|
||
---
|
||
|
||
## 2026-07-30 — Phase 2 core: HyperDHT tunnel + fj1. invites
|
||
|
||
### Wins
|
||
|
||
- `lib/world-tunnel.js` — host/client HyperDHT TCP pipes with capability header (FJ1C||cap)
|
||
- `lib/invite.js` — `fj1.` z32 JSON invites (ADR-0009)
|
||
- `lib/tunnel-keys.js` — per-world tunnel seed/cap on disk (mode 0600)
|
||
- CLI: **`host`** (Squid + share) and **`join`** (client tunnel)
|
||
- Tests: invite codec + tunnel integration (**10/10**)
|
||
- Bare CLI smoke: host prints invite; guest binds 127.0.0.1; both listen
|
||
|
||
### Next
|
||
|
||
- bare-build standalone
|
||
- Java Edition multiplayer playtest
|
||
- Phase 3 presence/chat
|
||
|
||
---
|
||
|
||
## 2026-07-30 — Phase 1: Bare CLI + Flying Squid on loopback
|
||
|
||
### Wins
|
||
|
||
- Scaffolded Bare app: `bin.mjs`, `app.js`, `lib/*`, `plugins/fj-bind-guard.js`, pear worker stub, `package.json` imports.
|
||
- CLI: `create`, `list`, `start`, `status` with `--storage`.
|
||
- **Flying Squid runs under Bare** (`node_modules/bare-runtime/bin/bare`) listening on **127.0.0.1** (verified via `lsof`).
|
||
- Also verified under Node for local iteration.
|
||
- Unit tests for bind-guard + worlds pass.
|
||
- Bare interop tooling: `scripts/patch-engines-for-bare.js`, `scripts/generate-squid-imports.js`, shims for `events` (callable EE) and `readline`.
|
||
|
||
### Decisions
|
||
|
||
- Squid in main Bare process (not Node child) per ADR-0013.
|
||
- Use `bare-runtime` from node_modules for dev when system `bare` is too old.
|
||
|
||
### Next
|
||
|
||
- bare-build standalone package smoke
|
||
- Java Edition join playtest
|
||
- Phase 2 tunnel
|
||
|
||
---
|
||
|
||
## 2026-07-30 — ADR-0013: Bare/Pear-only runtime and single-executable distribution
|
||
|
||
### Wins
|
||
|
||
- Accepted **ADR-0013**: production runtime is **Bare only**; no system Node.js; no Node child for Squid.
|
||
- Superseded ADR-0004 (Electron + Node Squid child) and primary Electron Forge path in ADR-0011.
|
||
- Amended ADR-0002: Flying Squid loads via **`bare-node-runtime`** inside Bare.
|
||
- Updated living, developer, user, and agent docs for `hello-pear-bare` + `bare-build --standalone` + Pear OTA.
|
||
- Added open question **Q15** (Squid/Bare compatibility spike).
|
||
|
||
### Decisions
|
||
|
||
- CI product = single standalone Bare executables + pear stage/seed OTA.
|
||
- Electron is not the default shell; Node is build-time tooling only where unavoidable.
|
||
|
||
### Next
|
||
|
||
- Phase 1: scaffold hello-pear-bare; Bare Squid spike.
|
||
|
||
---
|
||
|
||
## 2026-07-30 — Phase 0 complete: research + architecture + docs scaffold
|
||
|
||
### Wins
|
||
|
||
- Inventoried Holepunch mirror at `holepunchto_repos` (~680 packages); selected stack versions for hyperswarm, hyperdht, corestore, autobase, protomux, pear-runtime, etc.
|
||
- Assessed Flying Squid (`createMCServer`, plugins, Anvil, versions through 1.21.4) as embeddable local authority — not global multi-peer sim.
|
||
- Studied peardock (control plane + invites) and holesail (TCP tunnel pattern); decided **Apache-2.0 HyperDHT tunnel** instead of AGPL Holesail dependency.
|
||
- Locked architecture: **Local Authority + Capability Tunnel + Federated Regions**.
|
||
- Product name: **Flying Jib**.
|
||
- Scaffolded full `living_docs/`, `developer_docs/`, `user_docs/`, `agent/` including ADRs 0000–0012 (later extended by 0013).
|
||
|
||
### Decisions
|
||
|
||
- No master/central servers ever; discovery only via Hyperswarm/HyperDHT.
|
||
- Squid always binds `127.0.0.1` (explicit; minecraft-protocol default is all interfaces).
|
||
- Process model initially hybrid; **revised same day to Bare/Pear-only (ADR-0013)**.
|
||
- Private worlds: HyperDHT byte pipe; invites `fj1.`.
|
||
- Mesh: Autobase region registry; border = session migration, not global block CRDT.
|
||
- License: Apache-2.0.
|
||
|
||
### Blockers
|
||
|
||
- None for Phase 0 docs.
|
||
|
||
### Next
|
||
|
||
- Phase 1: Bare app shell + Squid on bare-node-runtime.
|
||
|
||
---
|
||
|
||
## 2026-07-30 — Investigation kickoff
|
||
|
||
- Empty repo `flying-jib` initialized as documentation-first project.
|
||
- Primary references: Prismarine flying-squid, full Holepunch ecosystem, local peardock/holesail experience.
|