Complete the full planned effort for the detailed ctx.bare code audit
and the new ctx.pear surface, delivering the ability to create, stage,
and integrate real Pear applications from within a booted Bare OS.
### Audit (ctx.bare)
- Performed exhaustive code audit of bare-os-ctx-bare.js (host import
path, drive bundle eval + require.addon wrappers, referrer workarounds).
- Inventoried all manifest/bundle verifiers and related scripts.
- Researched manifest format, implicit tiering model, and dual loading
strategy (JSON + .data.mjs).
- Deep analysis of the local Holepunch clone (bare-* and pear-* packages)
to identify realistic guest vs host-delegate boundaries.
- Full cross-reference of call sites, greps, and historical pain points
(pear:// referrer resolution, nativeHint handling, addon stubs).
### Implementation (ctx.pear)
- Added `pearEntries` tier to bare-module-manifest.json with initial
high-value packages (pear-build, pear-bundle, pear-ref, etc.).
- Implemented `loadPearModuleManifest()` and `buildPearCtxObjectFromHost()`.
- Wired ctx.pear exposure through the booter into the guest context.
- Updated TypeScript definitions (`bare-os-ctx.d.ts`).
### User-Facing Surface
- Created full `/bin/pear` command with `help`, `info`, `list`, `init`
(functional skeleton creation), and improved `stage` subcommands.
- Registered as Tier-1 command (now 183 total commands).
- Added man page and rebuilt coreutils (kernel + seeder).
### Agent Autonomy
- Created production-quality `pear-dev` agent skill.
- Added to skill seed list with cross-references to the appstore skill.
### P2P App Store Integration
- Updated appstore skill with explicit Pear development synergy section.
- Updated p2p-app-store design doc to document the new closed loop.
- Added cross-references in both skills and design documents.
### Verification & Hygiene
- Created `scripts/verify-pear-module-manifest-data.mjs`.
- Enhanced `verify-pear-no-static-node-import.mjs` with explicit pear
command coverage.
- Integrated new verifier into release-checklist and agent hints.
- Performed comprehensive zero-TODO/scaffolding sweep across all new
Pear artifacts (clean).
- Multiple full verification harness runs (all green).
### Documentation & Governance
- Added complete "Pear Development Environment" thread to feature-roadmap.md.
- Updated developer guide (Chapter 12).
- Maintained living plan document and detailed audit notes with full
Implementation Log throughout.
- Updated command counts across READMEs and supporting docs.
All changes follow project governance:
- Bare-only guest constraints strictly observed
- Verifier-first discipline maintained
- Living plan + audit documents kept as single source of truth
- Production quality bar matching the completed P2P App Store feature
Plan items 04–21 completed.
See:
- docs/design/ctx-pear-surface-and-bare-audit-plan.md
- docs/audit/ctx-bare-audit-notes.md (full audit + implementation log)
Protomux timing — Even with a connected socket, messages[0].send() must run after the channel is fully open. A bare send() right after chan.open() often does nothing useful until pairing finishes. Waiting on peer.chan.fullyOpened() (from Protomux) before each send fixed the standalone TCP check and matches real Hyperswarm behavior.
Code changes (packages/bare-os-booter/lib/swarm-disk.js)
read(index) — For each peer, schedule the read request with
peer.chan.fullyOpened().then(() => … send(index)) instead of sending immediately.
addPeer — After this.peers.add(peer), for every pending index in pendingReads, schedule the same fullyOpened() → send path so joiners get block requests once their channel is ready.