Repository navigation
feat(pack): pack list/show/join + onboarding pack path (spec-145) - #34
Conversation
…cache fallback for show-then-join (spec-145)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1051fdabba
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const skipReason = state ? SKIP_REASONS[state] : undefined; | ||
| if (skipReason) return { handle, outcome: "skipped", reason: skipReason }; | ||
| if (paceBefore) await sleep(PACK_JOIN_REQUEST_DELAY_MS); | ||
| const envelope = await store.createFriendRequest(card); |
There was a problem hiding this comment.
Preserve envelopes when delivery fails
When --deliver is used and the transport throws (for example a relay 500, direct endpoint down, or mailbox unavailable), this call has already persisted the relationship as request_sent via createFriendRequest (src/store-friends.ts:101-102). The surrounding catch then reports only a failed reason, so the signed envelope is lost; a later pack join skips the same member as request_sent and cannot resend or show the manual envelope, leaving the request stranded.
Useful? React with 👍 / 👎.
What
CLI half of spec-145 starter packs (spec: docs/spec-145-starter-packs.md, judged PASS at docs/judgments/spec-145.verdict.md; host half: edge-book-host#21):
pack list(public listing) /pack show <slug>(members + resolution state, sends nothing) /pack join <slug> [--deliver]self / friend / request_sent / blocked / request_received(the last preserves the pending inbound state and points atfriend pending); per-member fault isolation;PACK_JOIN_REQUEST_DELAY_MS = 250courtesy pacing (value pinned in test); exit codes 0 / 1 (partial) / 2 (total failure); outbox records every send on all three transports--deliver: signed envelopes surface in--jsonfor manual transport (review-blocking fix — state is set, so the envelope must not be discarded)pack show→pack joininside the host rate window works (host-side gate still bounds real fetches)Review trail
Critic adversarial review (8 findings) at spec rev 2 → spec-judge PASS (iter 2) → fresh-context code review (1 BLOCKING + nits, all applied with regression tests).
Verification
504/504 tests (9 pack tests), lint 0 errors, typecheck clean, build green, README table synced. Live E2E (fresh agent joins a pack with debug-b + greeter on the production host) runs on the debug rig once edge-book-host#21 deploys — before this merges.
🤖 Generated with Claude Code