Skip to content

Add engineering reference documentation - #31

Merged
op-q merged 1 commit into
mainfrom
docs/engineering-reference
Aug 19, 2026
Merged

Add engineering reference documentation#31
op-q merged 1 commit into
mainfrom
docs/engineering-reference

Conversation

@op-q

@op-q op-q commented Aug 19, 2026

Copy link
Copy Markdown
Owner

What

Adds a docs/ directory holding Drop's durable contracts and its working plans. Documentation only — no behavior changes.

File Owns
docs/protocol.md The HTTP and WebSocket contract as implemented: control messages, status strings, framing, limits
docs/security.md Trust boundaries, hostile-input rules, resource bounds, known weaknesses
docs/decisions.md The seven choices that are costly to reverse
docs/implementation-checklist.md Tactical status mirror
docs/plans/ One full plan per work item
docs/release-checklist.md Evidence gate for tagging
docs/validation/ Repeatable transfer shakeout recipe
docs/commands.md Command index

Why

The reasoning behind the current shape lived in the README, AGENTS.md, and PR descriptions. The teardown defect is the clearest example: it was diagnosed in #30, written into that PR's description as a follow-up, and had no other home.

The plan contract is the load-bearing rule — a plan is saved in full, never compressed to a summary, so phases, risks, validation steps, and open questions survive for whoever picks the work up next.

Plans recorded

All three are proposed; no implementation work has started.

  1. Relay teardown reset — the intermittent Connection reset by peer a sender sees after a successful transfer, deferred out of Stop the CLI transfer tests failing on relay teardown resets #30. The plan records the verified mechanism: the upload receive task breaks on Complete and drops ws_receiver, so the peer's closing handshake reply lands in a socket nobody reads, and the socket is dropped with data queued — RST instead of FIN. It also records why the obvious fix does not work: the send task owns the sink, not the stream, so the drain has to live in the receive task.
  2. Receiver preview and confirmation — show name, size, type, and destination, and require y/n before any bytes move.
  3. End-to-end encryption — blocked on Phase 0, a product decision, because it would replace the AGENTS.md invariant forbidding an end-to-end-encrypted claim.

Suggested order and its one cost are in docs/plans/README.md.

Notes

  • security.md documents the session code as roughly 24 bits (six hex characters from a UUIDv4) and states honestly what does and does not bound an attacker guessing it.
  • docs/README.md tracks one known inconsistency: MAX_UPLOAD_SIZE_LABEL reads 4 GB while the enforced limit is 4 GiB.
  • AGENTS.md gains a Documentation section pointing at the plan contract.

Verification

  • scripts/check-secrets.sh passes.
  • git diff --check clean.
  • Every relative link in docs/ resolves to an existing file.

No code changed, so the Rust and web checks are unaffected.

🤖 Generated with Claude Code

Drop's design detail lived in the README, AGENTS.md, and pull request
descriptions, so the reasoning behind the current shape was spread across
places that are hard to search and easy to lose.

This adds a docs/ directory holding the durable contracts and the working
plans:

- protocol.md documents the HTTP and WebSocket contract as implemented,
  including the status strings, control messages, and limits a third client
  would need to interoperate;
- security.md states the trust boundaries, the hostile-input rules, and the
  weaknesses that are known and accepted, including the ~24-bit session code;
- decisions.md records the seven choices that are costly to reverse, so they
  are not re-litigated;
- implementation-checklist.md is the tactical status view;
- plans/ holds a full plan per work item, with the rule that a plan is never
  compressed to a summary, so work can resume with no chat history;
- release-checklist.md is the evidence gate for tagging;
- validation/ holds a repeatable transfer shakeout recipe;
- commands.md indexes the commands, including the workspace-wide invocations
  that a root-package-only run would miss.

Three plans are recorded as proposed: the relay teardown reset deferred out
of #30, a receiver preview and confirmation step, and end-to-end encryption.
The encryption plan is blocked on a product decision, because it would replace
a stated invariant in AGENTS.md.

Documentation only; no behavior changes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@vercel

vercel Bot commented Aug 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
drop Ready Ready Preview Aug 19, 2026 12:31pm

@op-q
op-q merged commit 0f67953 into main Aug 19, 2026
8 checks passed
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