diff --git a/AGENTS.md b/AGENTS.md index fce45fe..f48bdfe 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,17 +6,17 @@ This file is the standing context for any AI assistant working in this repo. Rea ## Phase -**MVP code complete on `main`; repo went public 2026-05-22.** The original 2026-05-26 ship target was pulled forward from a planned 2026-08-11 and then again pulled in by four days when the hardening sprint closed faster than expected. Full v1.0 scope is preserved; design-partner onboarding (originally roadmap Week 12) is post-launch. As of 2026-05-22 the implementations for roadmap weeks 1–11 have all landed: object store, atomic memory snapshot, rollback (incl. reverse migrations), MCP fingerprinting, six-dimension diff, Python SDK + LangGraph checkpointer, and the broken-prompt demo (`examples/langgraph-rollback/scripts/run-demo.sh`). Remaining work is verification + outreach, not new features — see [`docs/product/sprint-2026-05-20.md`](docs/product/sprint-2026-05-20.md) for the current sprint and [`docs/architecture/benchmarks.md`](docs/architecture/benchmarks.md) for early performance numbers. Note: the "< 5 min from `git clone` on a fresh machine" claim is still aspirational — the cold-start timing has only been measured on developer machines with warm cargo caches; a fresh-machine timing is sprint item A1. The MVP target is a single named demo — ["the broken prompt"](docs/product/demo-scenario.md) — running reliably from `git clone` to working rollback in under 5 minutes. Every design decision must trace back to making that demo crisp. +**MVP code complete on `main`; repo went public 2026-05-22.** The original 2026-05-26 ship target was pulled forward from a planned 2026-08-11 and then again pulled in by four days when the hardening sprint closed faster than expected. Full v1.0 scope is preserved; design-partner onboarding (originally roadmap Week 12) is post-launch. As of 2026-05-22 the implementations for roadmap weeks 1–11 have all landed: object store, atomic memory snapshot, rollback (incl. reverse migrations), MCP fingerprinting, six-dimension diff, Python SDK + LangGraph checkpointer, and the broken-prompt demo (`examples/langgraph-rollback/scripts/run-demo.sh`). Remaining work is verification + outreach, not new features — the 2026-05-20 hardening sprint that drove the verification push is fully executed and archived at [`docs/archive/sprint-2026-05-20.md`](docs/archive/sprint-2026-05-20.md); [`docs/architecture/benchmarks.md`](docs/architecture/benchmarks.md) has early performance numbers. The "< 5 min from `git clone`" demo claim is CI-verified as of 2026-07-10: the `demo` CI job runs `run-demo.sh` end-to-end on a fresh ubuntu runner in under 2 minutes (with cached cargo dependencies; a fully cold cache adds build time but has ample headroom in the 5-minute budget). The MVP target is a single named demo — ["the broken prompt"](docs/product/demo-scenario.md) — running reliably from `git clone` to working rollback in under 5 minutes. Every design decision must trace back to making that demo crisp. If a feature, abstraction, or dependency is not on the path to the demo, it does not ship in MVP. See [`docs/product/mvp-spec.md`](docs/product/mvp-spec.md) §"Explicitly out of scope" — the boundary is hard. ## Authoritative decisions -Three ADRs anchor the architecture; the full set lives in [`docs/adr/`](docs/adr/). Read these three before designing anything substantial: +Three ADRs govern the architecture. Read all three before designing anything substantial: - [`docs/adr/0001-architecture-foundations.md`](docs/adr/0001-architecture-foundations.md) — the 10 foundational decisions: tuple-as-version, content-addressed store, Rust core + Python SDK split, Postgres+pgvector only, LangGraph + Claude Agent SDK (per ADR-0003), Apache 2.0, CLI-first, self-hosted Docker compose. - [`docs/adr/0002-substrate-and-supercommit.md`](docs/adr/0002-substrate-and-supercommit.md) — Approach C (Git core + content-addressed blob store + coordinator), the extended Commit object as the platform API contract, the mandatory 2PC staging order, bounded rollback for destructive migrations. -- [`docs/adr/0003-claude-agent-sdk-integration.md`](docs/adr/0003-claude-agent-sdk-integration.md) — the first platform-partner integration as the first non-LangGraph integration in v1.0, with atomic real-time integration via a sidecar `agenticd` (topology specified in ADR-0004). Amends ADR-0001 Decision 7. +- [`docs/adr/0003-claude-agent-sdk-integration.md`](docs/adr/0003-claude-agent-sdk-integration.md) — the first platform-partner integration as the first non-LangGraph integration in v1.0, with **atomic real-time integration** via a sidecar `agenticd` (topology specified in ADR-0004). Hard runtime dependency, full product parity with LangGraph on rollback. Amends ADR-0001 Decision 7. [`docs/architecture/snapshot-model.md`](docs/architecture/snapshot-model.md) is the technical heart — object model, segment-based snapshot algorithm, rollback semantics, performance targets. [`docs/architecture/overview.md`](docs/architecture/overview.md) is the runtime topology and component boundaries. @@ -26,7 +26,7 @@ The in-repo MVP spec (May 2026) targets **stateful LangGraph teams of 2–15 eng Recent strategy work (also May 2026) shifted the long-arc positioning toward **"the git host built for when most commits are written by agents,"** with a **platform-led GTM toward the very agent platforms** the MVP spec disqualifies. ADR-0002's extended Commit object is the substrate-level commitment to that direction (Commit object IS the platform API contract). -These two framings are not yet reconciled. The 12-week build remains anchored on the LangGraph-team ICP and the broken-prompt demo. When working on MVP-path code, default to the in-repo spec. When making decisions that lock in long-term API or substrate (object schemas, daemon protocol, SDK surface), prefer choices that don't preclude the platform-led direction — for example, the storage layer must stay swappable per ADR-0002 Decision 6. If a decision genuinely splits between the two framings, flag it rather than picking silently. +ADR-0003 reconciles these by accepting the first platform-partner integration (Claude Agent SDK) as the first platform-led integration alongside the LangGraph MVP work — at **full product parity, including atomic rollback**. The broken-prompt demo discipline still runs on LangGraph; the Executor integration is real-time via a sidecar `agenticd` per [ADR-0004](docs/adr/0004-realtime-agenticd-for-executor.md), which also pulls the GCS-backed `ObjectStore` forward from v2+ (exercising ADR-0002 Decision 6's swappable storage). If the sidecar/GCS work threatens the broken-prompt demo, the documented escape hatch (ADR-0003 Decision 2, end-of-week-8 decision point) is to revert to a layered manifest-export shape for v1.0 and defer atomic to v1.1. When working on MVP-path code, default to the in-repo spec. When making decisions that lock in long-term API or substrate (object schemas, daemon protocol, SDK surface), prefer choices that don't preclude the platform-led direction — in particular the SDK contract must stay framework-neutral per ADR-0003 Decision 3 (no framework-specific Commit fields). If a decision genuinely splits between the two framings, flag it rather than picking silently. ## Repository layout @@ -38,7 +38,7 @@ crates/ agentic-cli/ the `agentic` binary agenticd/ the daemon (single binary, tokio, one commit at a time) sdk/python/ `agentic-sdk` package + LangGraph integration -examples/ demo agent code (placeholder until ~week 9) +examples/ the broken-prompt demo (langgraph-rollback/, incl. run-demo.sh) docs/ product/ mvp-spec, roadmap, demo-scenario adr/ accepted architectural decision records @@ -65,7 +65,21 @@ ruff check . mypy agentic ``` -`docker-compose.yml` for the full Postgres + agenticd + demo-agent stack lands in week 11 of the roadmap. +`examples/langgraph-rollback/docker-compose.yml` brings up Postgres + pgvector for the demo on port 54322. `agenticd` and the Python agent are started by `scripts/run-demo.sh` (built locally from the Rust workspace, not containerised). + +## Worktree discipline + +Any time you are about to modify, create, or delete files in this repo you MUST do the work in a git worktree under `.worktrees//`, never directly in the main checkout. Toni edits this repo in parallel on the same machine, so `HEAD` in the main checkout can move under an agent at any moment — see [[feedback_check_git_state_before_amend]]. Worktrees isolate agent edits from that movement, keep each conceptual change on its own branch, and make abandoned attempts cheap to discard. + +How to apply: + +- Create with `git worktree add .worktrees/ -b `. Base is usually `main`; use the existing branch name (without `-b`) when continuing prior work. The slug is kebab-case and descriptive: `.worktrees/a8-reverse-migrations/`, `.worktrees/fix-clippy-warnings/`, `.worktrees/adr-0006-draft/`. +- Run `cargo`, `pytest`, `ruff`, `mypy`, and `scripts/run-demo.sh` from inside the worktree. Build artifacts (`target/`, `.venv/`, `.agentic/`) belong to the worktree, not the main checkout. +- When the branch is merged or abandoned, tear it down: `git worktree remove .worktrees/` and `git branch -D ` if the branch is no longer needed. +- Read-only operations may run in the main checkout. The rule is about *writes* — `git log`, `git diff`, `grep`, `cargo check` for inspection, and reading files are all fine in the main checkout. +- Exceptions, narrowly scoped: trivial single-line edits to `CLAUDE.md` itself or to ADR `Status:` lines may be made in the main checkout, because they are metadata maintenance and not code/doc work that warrants its own branch. + +`.worktrees/` is in `.gitignore` so worktree paths never leak into a parent tree. ## Code style @@ -78,12 +92,13 @@ mypy agentic - **Don't expand scope past the demo path.** If it isn't required for the broken-prompt demo, it's v1.1+ work. The deferral list in [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`docs/product/mvp-spec.md`](docs/product/mvp-spec.md) is the authoritative scope boundary. - **Don't add memory backends in MVP.** Postgres + pgvector only. Mem0 / Zep / Letta adapters are v1.1, behind the same `MemoryAdapter` trait. -- **Don't add framework integrations in MVP beyond LangGraph and the Claude Agent SDK** (per [ADR-0003](docs/adr/0003-claude-agent-sdk-integration.md)). CrewAI / AutoGen / LlamaIndex are v1.1, behind the same SDK contract. +- **Don't add framework integrations in MVP beyond LangGraph and the Claude Agent SDK (the first platform-partner integration), per [ADR-0003](docs/adr/0003-claude-agent-sdk-integration.md).** CrewAI / AutoGen / LlamaIndex are v1.1, behind the same SDK contract. The Executor integrates via a sidecar `agenticd` co-located with the Coding worker in its Cloud Run instance per [ADR-0004](docs/adr/0004-realtime-agenticd-for-executor.md), over the existing Unix-socket `agentic-proto` wire — through the framework-neutral SDK contract, never via a framework-specific adapter crate. Remote or in-process daemon deployments are explicitly out of scope for v1.0; if the sidecar path proves unworkable mid-MVP, the documented fallback is layered manifest-export (ADR-0003 Decision 2's original framing), not a different deployment shape. - **Don't mock Postgres for snapshot/restore tests.** The snapshot algorithm uses Postgres-specific features (logical decoding, advisory locks, pgvector storage); mocking defeats the test. Snapshot/restore code paths must exercise a real Postgres+pgvector via CI integration tests. - **Don't reorder the 2PC staging in commit code.** Per ADR-0002 Decision 3: blobs to object store → collect content hashes → build Commit blob → Git push (single commit point) → branch ref update. Failure-injection tests are required at each boundary. This is the plumbing that makes "atomic rollback" honest rather than aspirational. - **Don't expose storage-layer concepts to platform integrators.** Per ADR-0002 Decision 6, the SDK's public surface trades in `Commit` objects only. No Git ref names, no object store paths, no internal segment IDs in public types — those preclude the v2+ storage swap. - **Don't add a web UI.** CLI-first is a deliberate ADR-0001 Decision 9. v1.1 distribution lever, not MVP product. -- **Don't commit secrets.** [ADR-0013](docs/adr/0013-secret-scanner.md) specifies a `put_raw`-time pattern + entropy scanner that hard-rejects matched blobs with a typed `SecretDetected` error. The implementation lands in the v1.0 hardening sprint (PR-3); until it does, treat this control as not yet enforced and do not commit secrets to prompts or memory. +- **Don't commit secrets.** [ADR-0013](docs/adr/0013-secret-scanner.md) specifies a `put_raw`-time pattern + entropy scanner that hard-rejects matched blobs with a typed `SecretDetected` error. The scanner is implemented and enforced — do not bypass it; fix the input or add a blob-hash allowlist entry per ADR-0013 Decision 4. One sanctioned relaxation exists: blobs under declared checkpoint-path prefixes (default `__langgraph__/`, flag `--scanner-exempt-entropy-prefix`) skip **only the entropy heuristic** per [ADR-0017](docs/adr/0017-entropy-exemption-for-checkpoint-paths.md) — pattern rules always run. Do not widen that exemption without amending the ADR. +- **Don't edit files in the main checkout.** Use a worktree under `.worktrees//` — see "Worktree discipline" above. Toni works in parallel on the same machine, so `HEAD` can move under you mid-edit. ## The demo is the discipline @@ -98,6 +113,20 @@ What the demo requires: Performance targets (from [`snapshot-model.md`](docs/architecture/snapshot-model.md) §9): commit < 2s, rollback < 5s, diff < 1s, write overhead < 5ms p99, snapshot storage < 2× changed data amortized. These are commitments, not aspirations. +## Agent skills + +### Issue tracker + +Issues are tracked in GitHub Issues (`git-agentic/git.agentic`) via the `gh` CLI; external PRs are **not** a triage surface. See `docs/agents/issue-tracker.md`. + +### Triage labels + +Default vocabulary: `needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix` (the last already exists in the repo). See `docs/agents/triage-labels.md`. + +### Domain docs + +Single-context: one `CONTEXT.md` (not yet written) + `docs/adr/` at the repo root. See `docs/agents/domain.md`. + ## Canonical references When in doubt, these are authoritative: @@ -105,10 +134,16 @@ When in doubt, these are authoritative: - [`docs/product/mvp-spec.md`](docs/product/mvp-spec.md) — what we ship, for whom, what's out - [`docs/product/roadmap.md`](docs/product/roadmap.md) — 12-week build narrative; repo went public 2026-05-22 (pulled in from the original 2026-05-26 ship target) - [`docs/product/demo-scenario.md`](docs/product/demo-scenario.md) — the demo as discipline -- [`docs/adr/0001-architecture-foundations.md`](docs/adr/0001-architecture-foundations.md) — foundational decisions +- [`docs/adr/0001-architecture-foundations.md`](docs/adr/0001-architecture-foundations.md) — foundational decisions (Decision 7 amended by ADR-0003) - [`docs/adr/0002-substrate-and-supercommit.md`](docs/adr/0002-substrate-and-supercommit.md) — substrate, extended Commit, 2PC staging order +- [`docs/adr/0003-claude-agent-sdk-integration.md`](docs/adr/0003-claude-agent-sdk-integration.md) — first non-LangGraph integration target (the first platform-partner integration / Claude Agent SDK): real-time atomic sidecar integration per ADR-0004, with layered manifest-export only as the documented escape hatch +- [`docs/adr/0004-realtime-agenticd-for-executor.md`](docs/adr/0004-realtime-agenticd-for-executor.md) — sidecar `agenticd` topology for the Executor's real-time atomic integration: deployment shape, snapshot triggers, failure semantics, GCS-backed `ObjectStore` (Decisions 3 and 4 amended by ADR-0005) +- [`docs/adr/0005-sessionstore-amendment-to-adr-0004.md`](docs/adr/0005-sessionstore-amendment-to-adr-0004.md) — Accepted amendment (2026-05-22): snapshot primitive is the Claude Agent SDK's `SessionStore.append`; loud-fail preserved via a synchronising `PreToolUse` hook +- [`docs/adr/`](docs/adr/) — the full accepted set runs through ADR-0017; notably [ADR-0013](docs/adr/0013-secret-scanner.md) (secret scanner), [ADR-0016](docs/adr/0016-mcp-url-policy.md) (MCP URL policy), and [ADR-0017](docs/adr/0017-entropy-exemption-for-checkpoint-paths.md) (checkpoint-path entropy exemption) - [`docs/architecture/overview.md`](docs/architecture/overview.md) — runtime topology - [`docs/architecture/snapshot-model.md`](docs/architecture/snapshot-model.md) — the technical heart - [`CONTRIBUTING.md`](CONTRIBUTING.md) — what's accepted right now, code style, ADR process For anything that affects the architecture (new crate, wire-protocol change, new dependency in the daemon), open a new ADR under `docs/adr/` using ADR-0001's format. Submit it before the implementation so the design can be argued without the code in the way. + +## Imported Claude Cowork project instructions diff --git a/CLAUDE.md b/CLAUDE.md index 8e4b969..50d31ce 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -13,7 +13,7 @@ This file is the standing context for any AI assistant working in this repo. Rea ## Phase -**MVP code complete on `main`; repo went public 2026-05-22.** The original 2026-05-26 ship target was pulled forward from a planned 2026-08-11 and then again pulled in by four days when the hardening sprint closed faster than expected. Full v1.0 scope is preserved; design-partner onboarding (originally roadmap Week 12) is post-launch. As of 2026-05-22 the implementations for roadmap weeks 1–11 have all landed: object store, atomic memory snapshot, rollback (incl. reverse migrations), MCP fingerprinting, six-dimension diff, Python SDK + LangGraph checkpointer, and the broken-prompt demo (`examples/langgraph-rollback/scripts/run-demo.sh`). Remaining work is verification + outreach, not new features — see [`docs/product/sprint-2026-05-20.md`](docs/product/sprint-2026-05-20.md) for the current sprint and [`docs/architecture/benchmarks.md`](docs/architecture/benchmarks.md) for early performance numbers. Note: the "< 5 min from `git clone` on a fresh machine" claim is still aspirational — the cold-start timing has only been measured on developer machines with warm cargo caches; a fresh-machine timing is sprint item A1. The MVP target is a single named demo — ["the broken prompt"](docs/product/demo-scenario.md) — running reliably from `git clone` to working rollback in under 5 minutes. Every design decision must trace back to making that demo crisp. +**MVP code complete on `main`; repo went public 2026-05-22.** The original 2026-05-26 ship target was pulled forward from a planned 2026-08-11 and then again pulled in by four days when the hardening sprint closed faster than expected. Full v1.0 scope is preserved; design-partner onboarding (originally roadmap Week 12) is post-launch. As of 2026-05-22 the implementations for roadmap weeks 1–11 have all landed: object store, atomic memory snapshot, rollback (incl. reverse migrations), MCP fingerprinting, six-dimension diff, Python SDK + LangGraph checkpointer, and the broken-prompt demo (`examples/langgraph-rollback/scripts/run-demo.sh`). Remaining work is verification + outreach, not new features — the 2026-05-20 hardening sprint that drove the verification push is fully executed and archived at [`docs/archive/sprint-2026-05-20.md`](docs/archive/sprint-2026-05-20.md); [`docs/architecture/benchmarks.md`](docs/architecture/benchmarks.md) has early performance numbers. The "< 5 min from `git clone`" demo claim is CI-verified as of 2026-07-10: the `demo` CI job runs `run-demo.sh` end-to-end on a fresh ubuntu runner in under 2 minutes (with cached cargo dependencies; a fully cold cache adds build time but has ample headroom in the 5-minute budget). The MVP target is a single named demo — ["the broken prompt"](docs/product/demo-scenario.md) — running reliably from `git clone` to working rollback in under 5 minutes. Every design decision must trace back to making that demo crisp. If a feature, abstraction, or dependency is not on the path to the demo, it does not ship in MVP. See [`docs/product/mvp-spec.md`](docs/product/mvp-spec.md) §"Explicitly out of scope" — the boundary is hard. @@ -45,7 +45,7 @@ crates/ agentic-cli/ the `agentic` binary agenticd/ the daemon (single binary, tokio, one commit at a time) sdk/python/ `agentic-sdk` package + LangGraph integration -examples/ demo agent code (placeholder until ~week 9) +examples/ the broken-prompt demo (langgraph-rollback/, incl. run-demo.sh) docs/ product/ mvp-spec, roadmap, demo-scenario adr/ accepted architectural decision records @@ -104,7 +104,7 @@ How to apply: - **Don't reorder the 2PC staging in commit code.** Per ADR-0002 Decision 3: blobs to object store → collect content hashes → build Commit blob → Git push (single commit point) → branch ref update. Failure-injection tests are required at each boundary. This is the plumbing that makes "atomic rollback" honest rather than aspirational. - **Don't expose storage-layer concepts to platform integrators.** Per ADR-0002 Decision 6, the SDK's public surface trades in `Commit` objects only. No Git ref names, no object store paths, no internal segment IDs in public types — those preclude the v2+ storage swap. - **Don't add a web UI.** CLI-first is a deliberate ADR-0001 Decision 9. v1.1 distribution lever, not MVP product. -- **Don't commit secrets.** [ADR-0013](docs/adr/0013-secret-scanner.md) specifies a `put_raw`-time pattern + entropy scanner that hard-rejects matched blobs with a typed `SecretDetected` error. The scanner is implemented and enforced — do not bypass it; fix the input or add a blob-hash allowlist entry per ADR-0013 Decision 4. +- **Don't commit secrets.** [ADR-0013](docs/adr/0013-secret-scanner.md) specifies a `put_raw`-time pattern + entropy scanner that hard-rejects matched blobs with a typed `SecretDetected` error. The scanner is implemented and enforced — do not bypass it; fix the input or add a blob-hash allowlist entry per ADR-0013 Decision 4. One sanctioned relaxation exists: blobs under declared checkpoint-path prefixes (default `__langgraph__/`, flag `--scanner-exempt-entropy-prefix`) skip **only the entropy heuristic** per [ADR-0017](docs/adr/0017-entropy-exemption-for-checkpoint-paths.md) — pattern rules always run. Do not widen that exemption without amending the ADR. - **Don't edit files in the main checkout.** Use a worktree under `.worktrees//` — see "Worktree discipline" above. Toni works in parallel on the same machine, so `HEAD` can move under you mid-edit. ## The demo is the discipline @@ -143,9 +143,10 @@ When in doubt, these are authoritative: - [`docs/product/demo-scenario.md`](docs/product/demo-scenario.md) — the demo as discipline - [`docs/adr/0001-architecture-foundations.md`](docs/adr/0001-architecture-foundations.md) — foundational decisions (Decision 7 amended by ADR-0003) - [`docs/adr/0002-substrate-and-supercommit.md`](docs/adr/0002-substrate-and-supercommit.md) — substrate, extended Commit, 2PC staging order -- [`docs/adr/0003-claude-agent-sdk-integration.md`](docs/adr/0003-claude-agent-sdk-integration.md) — first non-LangGraph integration target (the first platform-partner integration / Claude Agent SDK), layered session-manifest path +- [`docs/adr/0003-claude-agent-sdk-integration.md`](docs/adr/0003-claude-agent-sdk-integration.md) — first non-LangGraph integration target (the first platform-partner integration / Claude Agent SDK): real-time atomic sidecar integration per ADR-0004, with layered manifest-export only as the documented escape hatch - [`docs/adr/0004-realtime-agenticd-for-executor.md`](docs/adr/0004-realtime-agenticd-for-executor.md) — sidecar `agenticd` topology for the Executor's real-time atomic integration: deployment shape, snapshot triggers, failure semantics, GCS-backed `ObjectStore` (Decisions 3 and 4 amended by ADR-0005) - [`docs/adr/0005-sessionstore-amendment-to-adr-0004.md`](docs/adr/0005-sessionstore-amendment-to-adr-0004.md) — Accepted amendment (2026-05-22): snapshot primitive is the Claude Agent SDK's `SessionStore.append`; loud-fail preserved via a synchronising `PreToolUse` hook +- [`docs/adr/`](docs/adr/) — the full accepted set runs through ADR-0017; notably [ADR-0013](docs/adr/0013-secret-scanner.md) (secret scanner), [ADR-0016](docs/adr/0016-mcp-url-policy.md) (MCP URL policy), and [ADR-0017](docs/adr/0017-entropy-exemption-for-checkpoint-paths.md) (checkpoint-path entropy exemption) - [`docs/architecture/overview.md`](docs/architecture/overview.md) — runtime topology - [`docs/architecture/snapshot-model.md`](docs/architecture/snapshot-model.md) — the technical heart - [`CONTRIBUTING.md`](CONTRIBUTING.md) — what's accepted right now, code style, ADR process diff --git a/README.md b/README.md index c50582b..d1649ae 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ A commit captures all six dimensions atomically. A rollback restores all six coh ## Status -**MVP code complete; repo went public 2026-05-22.** The 12-week build landed weeks 1–11 on `main`; the final week is verification, design-partner outreach, and demo polish. The cold-start "under 5 minutes from `git clone`" line in the demo is verified on developer machines with warm cargo caches; a fresh-machine timing is still in flight. See [`docs/product/roadmap.md`](docs/product/roadmap.md) for week-by-week progress and what's safe to depend on. +**Open-source MVP complete; repo went public 2026-05-22.** The 12-week build landed in full; production validation is in progress — design-partner use in real deployments is the bar before v1.0 language. The "under 5 minutes from `git clone`" demo claim is CI-verified: a `demo` CI job runs the whole broken-prompt scenario end-to-end on a fresh runner on every pull request (under 2 minutes with cached cargo dependencies). See [`docs/product/roadmap.md`](docs/product/roadmap.md) for the build's historical record. ## Why this exists @@ -26,7 +26,7 @@ We build it. ## What ships in the MVP -- **`agentic` CLI** — `init`, `commit`, `log`, `diff`, `rollback`, `branch`, `status`. +- **`agentic` CLI** — `init`, `commit`, `log`, `diff`, `rollback`, `status` (plus `ping`, `resolve`, `cat-object`). - **`agenticd` daemon** — Rust binary that owns the content-addressed object store and the snapshot/rollback engine. - **Python SDK (`agentic-sdk`)** — typed client, plus a drop-in LangGraph checkpointer. - **One memory backend:** Postgres + pgvector, deeply integrated. @@ -88,7 +88,7 @@ git.agentic/ │ │ ├── roadmap.md 12-week build narrative; repo went public 2026-05-22 │ │ └── demo-scenario.md the canonical demo │ ├── adr/ -│ │ └── 0001-architecture-foundations.md +│ │ └── 0001 … 0017 — accepted architectural decision records │ └── architecture/ │ ├── overview.md system diagram and component boundaries │ └── snapshot-model.md the technical heart @@ -115,7 +115,7 @@ pytest The broken-prompt walkthrough lives at [`examples/langgraph-rollback/`](examples/langgraph-rollback/). Everything below is rooted there: - [`scripts/run-demo.sh`](examples/langgraph-rollback/scripts/run-demo.sh) starts Postgres+pgvector via the local `docker-compose.yml`, `cargo build`s `agenticd` + `agentic` from the workspace, then drives the commit → break → rollback cycle end-to-end. -- The Python LangGraph agent runs locally via `python agent.py`, invoked by [`scripts/ask.sh`](examples/langgraph-rollback/scripts/ask.sh). Follow the venv + pip-install step in the demo's own [`README`](examples/langgraph-rollback/README.md) before running the script — the script itself does not bring up a Python environment. +- The Python LangGraph agent runs locally via `python agent.py`, invoked by [`scripts/ask.sh`](examples/langgraph-rollback/scripts/ask.sh). `run-demo.sh` bootstraps its own Python venv (with the SDK, LangGraph, and psycopg) at `examples/langgraph-rollback/.venv` on first run — no manual Python setup is needed; the demo's own [`README`](examples/langgraph-rollback/README.md) covers running the agent by hand. `agenticd` and the agent are both local processes, not containers. diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md index cdc4496..6d59feb 100644 --- a/docs/architecture/overview.md +++ b/docs/architecture/overview.md @@ -209,7 +209,21 @@ Total wall-clock target: < 5s for typical rollbacks. ## 6. Security model (MVP) -The daemon runs as the same user as the application. There is no authentication on the socket beyond filesystem permissions. The object store is unencrypted at rest. Secrets are not yet machine-rejected: [ADR-0013](../adr/0013-secret-scanner.md) specifies a `put_raw`-time pattern + entropy scanner that will hard-reject matched blobs with a typed `SecretDetected` error; the implementation lands in PR-3 of the v1.0 hardening sprint. Until it does, operators must not commit secrets to prompts or memory. +The daemon runs as the same user as the application. +Socket access is peer-authenticated per [ADR-0012](../adr/0012-socket-peer-authentication.md): +the daemon checks the connecting process's UID via `SO_PEERCRED` against an +`--allowed-uid` allowlist, and refuses to start without one unless +`--insecure-allow-any-uid` is passed explicitly (demo and development only). +Availability limits on the socket (connection caps, per-UID rate budget, idle +timeouts) ship per issue #118 as `agenticd` flags. +The object store is unencrypted at rest. +Secrets are machine-rejected at write time: the [ADR-0013](../adr/0013-secret-scanner.md) +pattern + entropy scanner hard-rejects matched blobs with a typed +`SecretDetected` error before any bytes touch disk. +Two sanctioned relaxations exist: a blob-hash allowlist (ADR-0013 Decision 4) +and a path-scoped entropy exemption for declared checkpoint blobs +([ADR-0017](../adr/0017-entropy-exemption-for-checkpoint-paths.md), default +prefix `__langgraph__/`) — pattern rules always run. Post-MVP, we add: diff --git a/docs/verification/agent-sdk-schema.md b/docs/archive/agent-sdk-schema.md similarity index 100% rename from docs/verification/agent-sdk-schema.md rename to docs/archive/agent-sdk-schema.md diff --git a/docs/product/sprint-2026-05-20.md b/docs/archive/sprint-2026-05-20.md similarity index 100% rename from docs/product/sprint-2026-05-20.md rename to docs/archive/sprint-2026-05-20.md diff --git a/docs/ops/2026-05-21-agenticd-architectural-analysis.md b/docs/ops/2026-05-21-agenticd-architectural-analysis.md index 9110e5a..98e95da 100644 --- a/docs/ops/2026-05-21-agenticd-architectural-analysis.md +++ b/docs/ops/2026-05-21-agenticd-architectural-analysis.md @@ -1,5 +1,13 @@ # Architectural Analysis — `crates/agenticd/` (the daemon) +> **Status (2026-07-10): CLOSED — historical record.** All eleven recommendations +> (A1–A11) landed on `main` and were verified code-grounded when tracking issue +> [#34](https://github.com/git-agentic/git.agentic/issues/34) closed on 2026-07-10. +> This document stays in place because accepted ADRs (0010, 0011) link to its +> finding anchors. Do not treat its "recommended" items as open work; the code +> on `main` is the current state. + + **Date:** 2026-05-21 **Focus area:** `crates/agenticd/src/` (six files, 1503 lines) + call-graph extensions into `agentic-core`, `agentic-memory`, `agentic-proto`. **Produced by:** the `han:architectural-analysis` skill — five agents in pipeline: `structural-analyst`, `behavioral-analyst`, `concurrency-analyst`, `risk-analyst`, `software-architect`. diff --git a/docs/plans/a8-reverse-migration/feature-implementation-plan.md b/docs/plans/a8-reverse-migration/feature-implementation-plan.md index 9c557b8..1b20c54 100644 --- a/docs/plans/a8-reverse-migration/feature-implementation-plan.md +++ b/docs/plans/a8-reverse-migration/feature-implementation-plan.md @@ -1,5 +1,10 @@ # Implementation plan — A8 reverse-migration outer tx + restore-guard fix + wire `accept_data_loss` +> **Status (2026-07-10): EXECUTED — historical record.** This plan shipped in +> May 2026 (issue #37). It is kept for the audit trail; the code on `main` is +> the current state. + + ## Source Specification - **GitHub issue #37** (`must-fix-v1.0`, milestone `v1.0`) — acceptance criteria. diff --git a/docs/product/demo-scenario.md b/docs/product/demo-scenario.md index de9963e..fc5914f 100644 --- a/docs/product/demo-scenario.md +++ b/docs/product/demo-scenario.md @@ -32,7 +32,7 @@ A `git revert` of the prompt change doesn't fix anything: the schema is still bu ## The demo walkthrough -The demo is a single shell session. It runs in under five minutes from `git clone`. +The demo is a single shell session. It runs in under five minutes from `git clone` — CI-verified: the `demo` job runs it end-to-end on a fresh runner on every pull request, in under 2 minutes with cached cargo dependencies. ```bash # Setup (one time) diff --git a/docs/product/mvp-spec.md b/docs/product/mvp-spec.md index 9a4999f..71b2bf9 100644 --- a/docs/product/mvp-spec.md +++ b/docs/product/mvp-spec.md @@ -55,7 +55,7 @@ A `git.agentic` commit content-addresses all six dimensions into one immutable o ### In scope -1. **CLI tool `agentic`** — `init`, `commit`, `log`, `checkout`, `rollback`, `diff`, `branch`. +1. **CLI tool `agentic`** — `init`, `commit`, `log`, `status`, `diff`, `rollback` (plus `ping`, `resolve`, `cat-object`). *As shipped:* the originally-specced `checkout` and `branch` subcommands did not land in v1.0 — branch refs exist in the daemon and the SDK's checkpointer uses per-thread branches, but branch manipulation from the CLI is v1.1 work. 2. **Rust core engine** — content-addressed object store, snapshot algorithm, rollback algorithm, schema-compat checks. 3. **Python SDK** — `agentic.commit(...)`, `agentic.rollback(version)`, context-manager hooks for capturing prompts/tools/model. 4. **One memory backend adapter: Postgres + pgvector.** Copy-on-write snapshots via Postgres logical replication slots and content-addressed embedding tables. Single backend, deep integration. diff --git a/docs/product/roadmap.md b/docs/product/roadmap.md index da9c3a4..48ff789 100644 --- a/docs/product/roadmap.md +++ b/docs/product/roadmap.md @@ -1,7 +1,7 @@ # 12-Week MVP Roadmap -**Status:** Draft v0.1 -**Last updated:** 2026-05-22 +**Status:** Historical record — weeks 1–11 shipped in full; only the post-launch design-partner track remains open +**Last updated:** 2026-07-10 **Public release:** 2026-05-22 — pulled in from the planned 2026-05-26, which itself was pulled forward from the originally-planned 2026-08-11. **Design partners:** moved post-launch (was roadmap Week 12). Full v1.0 scope preserved. @@ -23,128 +23,53 @@ This roadmap is organized around a single criterion: **at the end of each week, ## Week-by-week -### Week 1 — Skeleton & object store -**Goal:** the daemon starts, the CLI talks to it, blobs can be written and re-read. - -- [ ] Rust workspace builds (already scaffolded; ensure CI is green) -- [ ] `agenticd` listens on a Unix socket, responds to `Ping` -- [ ] `agentic ping` succeeds -- [ ] BLAKE3-keyed blob writes to `.agentic/objects/`; round-trip verified by test -- [ ] CI: `cargo test`, `cargo fmt`, `cargo clippy --deny warnings` -- [ ] CI: GitHub Actions matrix on Linux + macOS - -**Demo at end of week:** `agentic init && agentic blob put hello.txt && agentic blob get ` shows the same bytes. - -### Week 2 — Tree, commit, refs -**Goal:** the object model is real. We can commit a tuple of pure on-disk artifacts (no memory yet) and read back the history. - -- [ ] Tree objects implemented -- [ ] Commit objects implemented (with `parent`, `prompts`, `tools`, `model`, `code_sha` only — `memory_snapshot` and `schema_version` placeholder) -- [ ] `refs/heads/main` and `HEAD`; atomic ref updates via rename -- [ ] `agentic commit -m "..."` works against a directory of prompt files + a static tool manifest -- [ ] `agentic log` walks parents and prints -- [ ] WAL for crash recovery during commit - -**Demo at end of week:** `agentic commit` twice with a changed prompt, then `agentic log --oneline` shows both commits. +*All eleven build weeks shipped in full. The per-item checklists are collapsed +below; the original itemized plan is in git history +(`git log --follow docs/product/roadmap.md`, pre-2026-07-10 revisions).* -### Week 3 — pgvector adapter, segment writer (read-only) -**Goal:** the daemon attaches to a Postgres database and *reads* its tables into segments. Doesn't snapshot yet; just builds the segment store from a snapshot of current state. - -- [ ] Postgres connection via `sqlx` with pgvector type support -- [ ] `agentic init --postgres URL` validates pgvector and asks which tables to track -- [ ] Bulk segment build: full-table read → sealed 64MB segments, content-addressed -- [ ] Segment manifest object kind added to the object model -- [ ] Integration test with a 1M-row table - -**Demo at end of week:** `agentic memory bootstrap` produces a deterministic segment manifest for a fixed test database. +### Week 1 — Skeleton & object store ✅ +**Goal:** the daemon starts, the CLI talks to it, blobs can be written and re-read. +✅ Shipped: workspace + CI (Linux/macOS matrix, fmt/clippy/test), Unix-socket daemon with `Ping`, BLAKE3 content-addressed blob store under `.agentic/objects/`. -### Week 4 — Logical decoding stream -**Goal:** new writes to Postgres land in segments in real time. +### Week 2 — Tree, commit, refs ✅ +**Goal:** the object model is real — commit a tuple of on-disk artifacts, read back history. +✅ Shipped: Tree + Commit objects, atomic `refs/heads/*` + `HEAD` updates, `agentic commit`/`log`, crash-safe commit staging. -- [ ] Logical decoding client connecting to a replication slot -- [ ] Trigger-based fallback for managed Postgres without `wal_level=logical` -- [ ] Streamer batches writes into segments, seals at threshold -- [ ] Backpressure handling (slow segment writes don't block agent writes; we buffer to disk) -- [ ] Integration test: 10k writes through the agent show up in segments; checksums match +### Week 3 — pgvector adapter, segment writer ✅ +**Goal:** the daemon reads Postgres tables into content-addressed segments. +✅ Shipped: sqlx+pgvector adapter, tracked-table bootstrap, sealed segments + manifest object kind, 1M-row integration test. -**Demo at end of week:** start the daemon, write 10,000 rows from a test client, see them appear as new segments without restarting Postgres. +### Week 4 — Logical decoding stream ✅ +**Goal:** new Postgres writes land in segments in real time. +✅ Shipped: logical-decoding client with trigger-based fallback, batching streamer with disk-buffered backpressure. -### Week 5 — Atomic memory snapshot +### Week 5 — Atomic memory snapshot ✅ **Goal:** `agentic commit` captures a coherent memory snapshot. +✅ Shipped: advisory-lock snapshot algorithm, manifest in `Commit.memory_snapshot`, concurrent writes land in the next commit; < 2s target met (see [benchmarks](../architecture/benchmarks.md)). -- [ ] Snapshot algorithm: advisory lock, copy-on-write the active head, build manifest, release -- [ ] Snapshot manifest written into the commit's `memory_snapshot` field -- [ ] Commit-time concurrent writes are correctly placed in the *next* commit -- [ ] Benchmark: target < 2s on 1M rows / 100 deltas - -**Demo at end of week:** `agentic commit` with simulated concurrent traffic — verify atomicity by replaying the commit's snapshot and confirming the snapshotted state matches a known good baseline. - -### Week 6 — MCP fingerprinting, model versioning, schema versioning -**Goal:** the tuple is complete. Every commit captures all six dimensions. - -- [ ] MCP fingerprinter: connect, request `tools/list`, hash canonicalized JSON -- [ ] `.agentic/config.toml` schema; `agentic mcp pin ` -- [ ] Model version captured from SDK; refused if missing -- [ ] Schema version captured from `agentic_schema_version()` helper -- [ ] Schema migration directory + numbering convention; up-only execution +### Week 6 — MCP fingerprinting, model + schema versioning ✅ +**Goal:** every commit captures all six tuple dimensions. +✅ Shipped: MCP `tools/list` fingerprinter (URL policy per [ADR-0016](../adr/0016-mcp-url-policy.md)), model + schema version capture, migration directory convention. -**Demo at end of week:** `agentic commit` against a real LangGraph-shaped setup; the resulting commit object has all six dimensions populated. - -### Week 7 — Diff +### Week 7 — Diff ✅ **Goal:** `agentic diff` produces a useful behavioral diff. +✅ Shipped: per-dimension diff (prompts, tools, model, memory, schema) with `--json`. -- [ ] Prompt diff (line-based on text blobs) -- [ ] Tool diff (manifest hash changes; pinned-version changes) -- [ ] Model diff (string equality, version comparison) -- [ ] Memory diff (segment additions/removals + sampled row diffs) -- [ ] Schema diff (migration numbers) -- [ ] `--json` output - -**Demo at end of week:** modify a prompt + add 1000 memory rows + bump a tool version → `agentic diff HEAD^ HEAD` shows all three changes clearly. - -### Week 8 — Rollback (memory + schema) -**Goal:** `agentic rollback` restores memory and schema coherently. - -- [ ] Compute rollback plan; surface migration requirements -- [ ] Reverse schema migrations executed in correct order -- [ ] Memory restore: stream the diff back into Postgres inside a transaction -- [ ] Validation pass (row counts + sampled checksums) -- [ ] Rollback is itself committed (forward-recorded history) - -**Demo at end of week:** insert garbage rows + apply a schema change → roll back → garbage is gone, schema is back, agent behavior matches pre-garbage baseline. - -### Week 9 — Rollback (prompts + tools + model) -**Goal:** the remaining tuple dimensions roll back; failure modes are clean. - -- [ ] Prompt files written back to disk -- [ ] Tool pins updated in `config.toml` -- [ ] Model version surfaced (user must redeploy if the model has changed) -- [ ] Missing reverse migrations abort with clear error -- [ ] `--dry-run` prints the plan without executing -- [ ] `--yes` skips confirmation - -**Demo at end of week:** the full broken-prompt scenario, but driven from the CLI, end-to-end. Rollback runs in < 5s. - -### Week 10 — Python SDK + LangGraph integration -**Goal:** developers can use git.agentic from a real LangGraph application. - -- [ ] `agentic-sdk` package on test PyPI -- [ ] `agentic.commit()`, `agentic.rollback()`, `agentic.diff()`, `agentic.log()` -- [ ] `AgenticCheckpointer` implements LangGraph's checkpointer interface -- [ ] Drop-in replacement smoke test against a published LangGraph example - -**Demo at end of week:** a 20-line LangGraph script that uses `AgenticCheckpointer` and gets free commits on every graph step. +### Week 8 — Rollback (memory + schema) ✅ +**Goal:** memory and schema restore coherently. +✅ Shipped: rollback planning, ordered reverse migrations (destructive ones gated per [ADR-0014](../adr/0014-destructive-rollback-approval-gate.md)), transactional memory restore, forward-recorded rollback commits. -### Week 11 — The demo, polished -**Goal:** the broken-prompt demo runs reliably on a fresh machine in < 5 minutes. +### Week 9 — Rollback (prompts + tools + model) ✅ +**Goal:** the remaining dimensions roll back; failure modes are clean. +✅ Shipped: prompt write-back, tool pins, model-version surfacing, `--dry-run`/`--yes`, clear aborts on missing reverse migrations; < 5s end-to-end on the demo. -- [ ] Demo repo: minimal LangGraph agent, scripted scenario -- [ ] `docker-compose up` brings up Postgres + agenticd + the demo agent -- [ ] Scenario script: deploy → break → roll back; output is legible -- [ ] Recorded screencast / asciinema -- [ ] Quickstart documentation in `examples/langgraph-rollback/README.md` +### Week 10 — Python SDK + LangGraph integration ✅ +**Goal:** usable from a real LangGraph application. +✅ Shipped: `agentic-sdk` (TestPyPI + CI release job), typed client, `AgenticCheckpointer` drop-in. -**Demo at end of week:** YC-partner-style cold viewing: someone who hasn't seen it can run the demo from `git clone` in five minutes and see the rollback work. +### Week 11 — The demo, polished ✅ +**Goal:** the broken-prompt demo runs reliably from a fresh machine in < 5 minutes. +✅ Shipped: scripted scenario (`run-demo.sh` — self-contained venv + container bring-up), asciinema recording, quickstart README. Since 2026-07-10 the `demo` CI job replays it end-to-end on every PR (under 2 minutes on a fresh runner with cached cargo deps). ### Post-launch — Design partners *(originally Week 12; moved post-ship 2026-05-21)* **Goal:** three teams have run `agentic rollback` against their own staging environments. @@ -182,7 +107,7 @@ Touch points across the existing weeks: **Escape hatch — hard decision point at end of week 8.** If the GCS-backed `ObjectStore` is not passing **API-contract integration tests** (put / get / has / not-found roundtrips against `fsouza/fake-gcs-server` or a real GCS bucket) by end of week 8, revert ADR-0003 Decision 2 to its originally-drafted manifest-export shape, defer atomic Executor to v1.1, and ship the layered/offline path for v1.0. The demo is the discipline; atomic Executor is additive proof. This trade is non-negotiable. -*Status, 2026-05-20:* the API-contract bar is met against **both** fake-gcs and real GCS — `crates/agentic-core/tests/gcs_integration.rs` runs green against `fsouza/fake-gcs-server` in the `gcs` CI job (PR #20), and the same four tests have been run once against a real GCS bucket in `newcrm-493107` with bearer auth from `gcloud auth print-access-token` and all four passed (bucket + token ephemeral; teardown verified). **Production-readiness validation** — concurrent writers (multiple in-flight commits against the same bucket, per the ADR-0002 §3 2PC staging order), partial-upload failure injection (verify the 2PC boundary holds when GCS returns 5xx mid-stream), service-account auth (instead of user-account bearer), and large-blob streaming — is explicitly **not** gated by this kill-criterion. Those land as separate hardening work in v1.0 → v1.1 with their own milestones; see `docs/product/sprint-2026-05-20.md` for the immediate follow-up framing. +*Status, 2026-05-20:* the API-contract bar is met against **both** fake-gcs and real GCS — `crates/agentic-core/tests/gcs_integration.rs` runs green against `fsouza/fake-gcs-server` in the `gcs` CI job (PR #20), and the same four tests have been run once against a real GCS bucket in `newcrm-493107` with bearer auth from `gcloud auth print-access-token` and all four passed (bucket + token ephemeral; teardown verified). **Production-readiness validation** — concurrent writers (multiple in-flight commits against the same bucket, per the ADR-0002 §3 2PC staging order), partial-upload failure injection (verify the 2PC boundary holds when GCS returns 5xx mid-stream), service-account auth (instead of user-account bearer), and large-blob streaming — is explicitly **not** gated by this kill-criterion. Those land as separate hardening work in v1.0 → v1.1 with their own milestones; see the archived [`docs/archive/sprint-2026-05-20.md`](../archive/sprint-2026-05-20.md) for the immediate follow-up framing at the time. **Negative slack on this track.** Atomic in v1.0 means the plan no longer has zero slack — it has *negative* slack on the Executor track relative to the original 12-week budget. Closing the gap requires one of: additional engineering capacity dedicated to the Executor workstream, cutting another piece of MVP scope, or accepting that the ship date is at higher risk than ADR-0001 assumed. With the ship now 2026-05-22 (pulled forward from 2026-08-11), the Executor sidecar work that hasn't already landed is the most exposed item; treat any Executor-track slip as a candidate for the documented ADR-0003 escape hatch rather than a ship-date slip. Surface this to design partners up front; do not pretend the plan is unchanged. diff --git a/examples/langgraph-rollback/README.md b/examples/langgraph-rollback/README.md index 2495a17..f319156 100644 --- a/examples/langgraph-rollback/README.md +++ b/examples/langgraph-rollback/README.md @@ -26,14 +26,22 @@ A recorded asciinema of one end-to-end run is checked in at [`demo.cast`](demo.c ```bash cd examples/langgraph-rollback -python -m venv .venv +./scripts/run-demo.sh +``` + +The script bootstraps its own Python venv at `.venv` (SDK + LangGraph + +psycopg, idempotent) on first run — no manual Python setup is needed. To +drive the agent by hand instead, create the same venv yourself: + +```bash +python3 -m venv .venv .venv/bin/pip install -e '../../sdk/python[langgraph]' 'psycopg[binary]>=3.1' -PATH="$PWD/.venv/bin:$PATH" ./scripts/run-demo.sh ``` The script: -1. brings up Postgres + pgvector via `podman compose`, +1. brings up Postgres + pgvector via `podman compose` or `docker compose` + (auto-detected; override with `CONTAINER_RUNTIME=docker|podman`), 2. seeds 5 baseline `episodes` rows, 3. builds `agenticd` and `agentic`, starts the daemon bound to this directory with `--postgres … --tables episodes:id`, diff --git a/examples/langgraph-rollback/scripts/run-demo.sh b/examples/langgraph-rollback/scripts/run-demo.sh index 7aae8a0..3c8cb7b 100755 --- a/examples/langgraph-rollback/scripts/run-demo.sh +++ b/examples/langgraph-rollback/scripts/run-demo.sh @@ -176,7 +176,11 @@ step "11. ask again — empathetic answer + clean memory" "${DEMO_DIR}/scripts/ask.sh" "I'm thinking about cancelling my subscription." step "12. log" -"${AGENTIC_BIN}" --repo "${DEMO_DIR}" log --oneline | head -10 +# --limit instead of `| head`: head closing the pipe early makes the Rust +# CLI panic on SIGPIPE (broken pipe, exit 101) whenever the history has +# more than 10 entries — which depends on how many LangGraph steps the +# three asks produced (bug-135). +"${AGENTIC_BIN}" --repo "${DEMO_DIR}" log --limit 10 --oneline echo echo "✓ broken-prompt demo complete" diff --git a/website/src/pages/git-agentic.astro b/website/src/pages/git-agentic.astro index 154f579..a6debec 100644 --- a/website/src/pages/git-agentic.astro +++ b/website/src/pages/git-agentic.astro @@ -11,7 +11,7 @@ const repo = 'https://github.com/git-agentic/git.agentic';
- v1.0 shipped · v1.1 in progress + Open-source MVP complete · production validation in progress Apache 2.0 Rust core · Python SDK
@@ -100,9 +100,9 @@ $ cd git.agentic/examples/langgraph-rollback $ docker-compose up -d # Postgres + pgvector $ ./scripts/run-demo.sh # builds, runs, breaks, rolls back -

What shipped in v1.0

+

What's in the open-source MVP

    -
  • agentic CLI — init, commit, log, diff, rollback, branch, status
  • +
  • agentic CLI — init, commit, log, diff, rollback, status
  • agenticd daemon — Rust, owns the object store and snapshot engine
  • Python SDK — typed client, drop-in LangGraph checkpointer
  • One memory backend: Postgres + pgvector, deeply integrated
  • @@ -111,19 +111,21 @@ $ ./scripts/run-demo.sh # builds, runs, breaks

- Not in v1.0: web UI, hosted SaaS, eval/CI pipelines, MCP registry, + Not in the MVP: web UI, hosted SaaS, eval/CI pipelines, MCP registry, sandbox execution, A2A routing, additional memory backends, additional frameworks. See ADR-0001 §9–§10 for why.

Status

- v1.0 shipped May 2026 with the public repo release: object store, - atomic memory snapshot, rollback with reverse migrations, MCP - fingerprinting, six-dimension diff, Python SDK + LangGraph checkpointer, - and the broken-prompt demo. v1.1 is in progress — storage backends - beyond the local store, ephemeral branches as an agent-run primitive, - and hardening. + The open-source MVP went public May 2026: object store, atomic memory + snapshot, rollback with reverse migrations, MCP fingerprinting, + six-dimension diff, Python SDK + LangGraph checkpointer, and the + broken-prompt demo — CI replays the demo end-to-end on every pull + request. Production validation is in progress: design-partner use in + real deployments is the bar before we call it v1.0. In-progress + workstreams: storage backends beyond the local store, ephemeral + branches as an agent-run primitive, and hardening.

Design partners

diff --git a/website/src/pages/index.astro b/website/src/pages/index.astro index 4b27656..c939f91 100644 --- a/website/src/pages/index.astro +++ b/website/src/pages/index.astro @@ -45,7 +45,7 @@ const pkgRegistry = 'https://github.com/git-agentic/pkg-registry'; ✓ Memory restored in 2.1s ✓ Prompts restored in 0.0s ✓ HEAD now at i7j8k9l (rollback of v0.8 → v0.7) -

Rust core · Python SDK · v1.0 shipped, v1.1 in progress

+

Rust core · Python SDK · open-source MVP complete · production validation in progress

Full page →   GitHub →

@@ -89,7 +89,7 @@ $ sc work --agents 4 -- cargo test critical [secret-exfil] reads ~/.npmrc, AWS credentials… HTTP 403 x-sentinel-verdict: block -

TypeScript · full security layer built · open-source launch prep

+

TypeScript · security layer built · pre-1.0, packages not yet published

Full page →   GitHub →

diff --git a/website/src/pages/sentinel.astro b/website/src/pages/sentinel.astro index a77c042..a421c28 100644 --- a/website/src/pages/sentinel.astro +++ b/website/src/pages/sentinel.astro @@ -11,7 +11,7 @@ const repo = 'https://github.com/git-agentic/pkg-registry';
- Full security layer built · open-source launch prep + Security layer built · pre-1.0 · packages not yet published Apache 2.0 TypeScript
@@ -112,9 +112,12 @@ $ sentinel audit is-odd 3.0.1 detection, supply-chain identity and release-anomaly heuristics, whole-tree lockfile auditing with SBOMs and signed attestations, a CI-native GitHub Action, an agent-native MCP server, durable - observability, and a hardened network trust boundary. Current work is - open-source launch prep; the long arc is policy and install-time - permissions for the whole ecosystem. + observability, and a hardened network trust boundary. Sentinel is + pre-1.0 and not yet production-hardened: no packages are published + yet, and the next milestone is a published, installable release plus + design-partner evidence — blocked incidents, false-positive rate, + audit latency. The long arc is policy and install-time permissions + for the whole ecosystem.

diff --git a/website/src/pages/src-control.astro b/website/src/pages/src-control.astro index b2e3214..db78ef9 100644 --- a/website/src/pages/src-control.astro +++ b/website/src/pages/src-control.astro @@ -21,8 +21,8 @@ const repo = 'https://github.com/git-agentic/src-control';

A next-generation version control system built around a snapshot-and-tag model (Jujutsu-inspired), with in-memory virtual - worktrees, native committed secrets, and per-file permissions as the - long-term thesis. + worktrees, native committed secrets, and recipient-encrypted paths — + full path-level permissions are the long-term thesis.

@@ -68,7 +68,9 @@ $ sc clone https://github.com/org/repo.git ./mirror are shared, never copied

  • Content lives only in RAM and touches disk only on an explicit checkout — no FUSE mount, no kernel extension, which is what - makes "zero residual artifacts" provable rather than aspirational
  • + makes "zero residual artifacts" provable rather than aspirational. + Tools that need real files (compilers, test runners) get a + materialized temp checkout, auto-cleaned
  • Bounded blob budget with LRU eviction; optional spill to an auto-cleaned content-addressed temp dir keeps the zero-residue guarantee
  • @@ -106,6 +108,10 @@ $ sc clone https://github.com/org/repo.git ./mirror control, partial clone, security hardening, sealed agent-session transcripts, and listener resource limits (P22–31). Feature phases ship with runnable proof scripts — see demo/ in the repo. + Pre-1.0 and design-partner alpha: the cryptography has not had an + independent audit, and the sc-native HTTP transport does not yet + speak TLS — the near-term promise is parallel agent workspaces and + provenance, not production secret management.