Skip to content

docs(spec): reconcile spec with shipped wire + front-door README + ADR-0034#139

Merged
phall1 merged 1 commit into
mainfrom
docs/spec-coherence-readme-adrs
Jun 17, 2026
Merged

docs(spec): reconcile spec with shipped wire + front-door README + ADR-0034#139
phall1 merged 1 commit into
mainfrom
docs/spec-coherence-readme-adrs

Conversation

@phall1

@phall1 phall1 commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Docs/markdown only — no Rust changes. Brings the spec docs back into agreement with the shipped code, refreshes the project front door, and adds one design ADR.

Spec / code coherence

  • CONCEPTS.md: protocol version 0.3.0 -> 0.5.0 (verified against PROTOCOL_VERSION in crates/phux-protocol/src/lib.rs). Dropped the now-dead "current reality" paragraph — the collection-tier dissolution has shipped, so the leaked-verb caveat no longer holds.
  • proto.md: spec version 0.4.0 -> 0.5.0. Documented the leaf str/bytes length prefix as a u32 big-endian count (matching Encoder::write_bytes / Decoder::read_bytes), kept distinct from the varint the field-tagged TLV envelope uses. Reconciled the ErrorCode catalog with the shipped #[non_exhaustive] enum: OUT_OF_TIER = 5 and UNSAFE_PASTE = 203 marked reserved / not-yet-emitted; 102/103 now read under the shipped SESSION_NOT_FOUND / WINDOW_NOT_FOUND names.
  • appendix-encoding.md: added §2.1 spelling out the u32-BE leaf prefix vs the envelope varint.
  • CHANGELOG.md: 0.5.0-draft.7 clarification entry. Core version stays 0.5.0, so spec-version-sync stays green. No wire bytes change — this corrects the spec to the code.

ADRs

  • ADR-0015 and ADR-0021: amendment / superseded banners pointing at ADR-0030 (L2 collection tier dissolved), matching the ADR-0002/0006/0007 banner convention. The standing decisions (L1/L3 layering; client-side selector resolution) are preserved; only the "L2 will own the session" framing is marked superseded.
  • ADR-0034 (Proposed, design only): kitty graphics / image passthrough through the cell renderer. Server forwards APC _G verbatim (phux-server::downsample::handle_apc) but the client re-renders cells only (attach::render), so images drop on repaint/reattach. Prefers the Kitty Unicode-placeholder approach with an APC re-emit fallback; notes the snapshot-replay and pixel-size-reporting prerequisites. No code in this ADR.
  • ADR/README.md: added the missing 0031-0034 index rows.

README

Top-tier OSS front door in the existing deadpan / peer-thesis voice: centered banner with a logo placeholder (HTML comment), wordmark + tagline, only badges that resolve today (CI + license), HTML-comment TODOs for crates.io / version / Homebrew, a demo placeholder pointing at docs/assets/demo.gif, and honest install tiers — from source works today, prebuilt binary and Homebrew marked coming, no fake cargo install. The "What phux deliberately won't do" section is preserved.

Architecture (vocabulary only)

  • module-structure.md: a note aliasing the legacy PANE_* frame names to the canonical TERMINAL_* frames per ADR-0016.

Verification

  • just docs-check: green (83 files, 0 violations).
  • PROTOCOL_VERSION, write_bytes/read_bytes (u32 BE), and the ErrorCode enum were read directly to confirm the spec now matches the shipped bytes.
  • No crates/**, docs/consumers/tui.md, or docs/CONFIG.md touched.

🤖 Generated with Claude Code

…E + ADR-0034

Make the spec docs match the shipped code and refresh the project front
door, no Rust changes.

Spec/code coherence:
- CONCEPTS.md: protocol version 0.3.0 -> 0.5.0 (matches PROTOCOL_VERSION
  in phux-protocol) and drop the dead "current reality" paragraph now that
  the collection-tier dissolution has shipped.
- proto.md: version 0.4.0 -> 0.5.0; document a leaf str/bytes length prefix
  as u32 big-endian (matching Encoder::write_bytes / Decoder::read_bytes),
  distinct from the TLV envelope's varint; reconcile the ErrorCode catalog
  with the #[non_exhaustive] shipped enum (OUT_OF_TIER and UNSAFE_PASTE
  marked reserved/not-yet-emitted; 102/103 carry the shipped
  SESSION_NOT_FOUND / WINDOW_NOT_FOUND names).
- appendix-encoding.md: add the u32-BE leaf length-prefix rule (§2.1) and
  clarify the varint-vs-u32 split.
- CHANGELOG.md: 0.5.0-draft.7 clarification entry; core version stays 0.5.0
  so spec-version-sync stays green. No wire bytes change.

ADRs:
- ADR-0015 / ADR-0021: amendment/superseded banners pointing at ADR-0030
  (L2 collection tier dissolved), matching the ADR-0002/0006/0007 convention.
- ADR-0034 (Proposed, design only): kitty graphics / image passthrough
  through the cell renderer. Server forwards APC _G verbatim but the client
  re-renders cells only, so images drop; prefer the Unicode-placeholder
  approach with an APC re-emit fallback, with snapshot-replay and pixel-size
  prerequisites noted.
- ADR/README.md: add the missing 0031-0034 index rows.

README: top-tier OSS front door keeping the deadpan/peer-thesis voice and
the "What phux won't do" section: centered banner with logo placeholder,
only badges that resolve today (CI + license), HTML-comment TODOs for
crates.io/version/brew, demo placeholder, and honest install tiers (from
source today; prebuilt + Homebrew marked coming; no fake cargo install).

architecture/module-structure.md: vocabulary note aliasing the legacy
PANE_* frame names to the canonical TERMINAL_* frames.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@phall1 phall1 merged commit 1906ea0 into main Jun 17, 2026
3 checks passed
@phall1 phall1 deleted the docs/spec-coherence-readme-adrs branch June 17, 2026 20:39
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