Skip to content

docs: add GUIDE.md (extensive walkthrough + internals)#11

Open
srnnkls wants to merge 6 commits into
mainfrom
docs/guide
Open

docs: add GUIDE.md (extensive walkthrough + internals)#11
srnnkls wants to merge 6 commits into
mainfrom
docs/guide

Conversation

@srnnkls

@srnnkls srnnkls commented Jun 9, 2026

Copy link
Copy Markdown
Owner

A long-form companion to the README, following the ripgrep README/GUIDE split: the README stays terse and flag-level; this is the depth.

What's in it

  • A config-first walkthrough: a minimal phora.toml, what phora sync does step by step, then list/verify/update.
  • The mental model (source / artifact / target / lock / registry) and the one pipeline every source runs through.
  • Sources in depth — git (literal + host/path), URL (formats, auto-strip, digest, determinism), and when to reach for each.
  • Choosing what ships, layouts (with the multi-source collision case), staying in sync, link mode, and worktree includes.
  • An "Under the hood" section covering the internals honestly:
    • the content-addressed store (~/.phora, MirrorKey/ProjectId keying, synthetic refs/heads/phora),
    • the git fetch path (gix bare mirror) and the URL fetch path (download → verify-before-extract → guarded extraction + bomb cap → import),
    • why a URL import is deterministic (fixed identity/epoch+1/sorted trees → content-only commit id),
    • projection and the framed blake3 digest,
    • lock identity (and why URL sources match on url + config_digest),
    • verification, and the execution model — single-writer state.lock + deploy journal + recovery sweep (no fictional concurrency; sync is sequential).

Every technical claim is grounded in the implementation. The README links here for depth (that link lands with #10).

Marked as its own PR per request; can be split into README-guide + internals-guide later if it grows.

@srnnkls
srnnkls force-pushed the docs/guide branch 3 times, most recently from 8728d22 to 2794914 Compare June 11, 2026 17:03
@srnnkls
srnnkls force-pushed the docs/guide branch 4 times, most recently from e1d418c to b5d2419 Compare June 15, 2026 09:49
@srnnkls
srnnkls force-pushed the docs/guide branch 2 times, most recently from db667d4 to 29491ca Compare June 24, 2026 14:16
@srnnkls
srnnkls changed the base branch from main to feat/selection-model-redesign June 24, 2026 14:16
srnnkls added 3 commits June 24, 2026 23:36
Stacked on the selection-model-redesign branch (PR #44). Adds GUIDE.md, the
long-form companion to the README, written to the source-offer / target-take
model: source owns the offer (`root` + gitignore `include`/`exclude`), binding
owns the `take` (literal / glob / `{ src = dest }` rename), artifacts are
path-identified leaves, and a `collapse` opt folds a wholly-taken directory into
one artifact.

Adds use-case scrut walkthroughs that drive the shipped binary against real
upstreams and double as runnable, CI-verified usage docs: showcase, drift,
versions, release-assets, mapped (take renames), hooks, templates, and transitive.
These sit alongside the branch's hermetic suites (selection, query, manage,
lifecycle); the README testing section indexes both.
…t prose

Sweep flagged by a review pass. Replaces editorializing and overclaims with
plain, mechanism-grounded statements, e.g.:
- "precise enough to prove nothing drifted" -> "detect whether anything drifted"
- "stronger story than curl|tar: nothing touches your disk" -> "not extracted
  until the digest check passes"
- "the order is the security property" -> "the order matters: digest before extraction"
- "a malicious archive cannot escape" -> "a crafted archive path cannot escape the
  extraction root"
- drops scene-setting ("you at midnight", "the box under the desk", "Alice changes
  jobs"), strained metaphors ("annotates the divorce"), and anthropomorphisms
  ("release tarballs love to 302", "the registry says so instead of pretending").

Prose-only; all 12 scrut suites still pass against the new-model binary.
@srnnkls
srnnkls changed the base branch from feat/selection-model-redesign to main June 24, 2026 21:39
@srnnkls srnnkls closed this Jun 24, 2026
@srnnkls srnnkls reopened this Jun 24, 2026
srnnkls added 3 commits June 25, 2026 14:11
Replace invented nvim/helix/vscode/editor/modules examples with the actual
~/dotfiles tree: srnnkls/dotfiles rooted at .config (zellij, ripgrep, codex,
anax, mise), .shared/AGENTS.md fanned out to CLAUDE.md/codex.md, ~/projects/loqui
for link mode, mise GOBIN for templating, mise hooks. Paths verified against the
layout kernel and scrut tests.
…dual risk

Track the 16ad1a4..6281e9d range across guide + scrut:

- trust inspection (THI): document `trust <source> --show <path>` and the
  first-trust composed-file listing in README + GUIDE; extend transitive.md
  with --show (file/dir/absent/no-source) and the composed-surface assertion.
- drift gate (DGI): GUIDE Verification now describes the size+mtime fast path
  escalating to recorded blake3, the Revalidated reclassification, and the
  persisted stat refresh; drift.md gains a 'touch is not a change' case.
- residual risk (TDEP-DOCS-001): state the honest v1 hook-trust limits (no
  sandbox, full env+privileges, whole-commit re-prompt) in README + GUIDE.

transitive.md's `phora verify` assertion is reconciled with the post-16ad1a4
verify hook-gate so the suite passes against the feature-complete binary.
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