Update AGENTS.md to reflect central storage architecture

Amolith created

Change summary

AGENTS.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

Detailed changes

AGENTS.md 🔗

@@ -2,7 +2,7 @@
 
 ## What this repo is
 - Rust CLI app (`td`) for local task tracking aimed at agent workflows.
-- Storage is SQLite in a per-project `.td/tasks.db` database.
+- Storage is Loro CRDT in central storage (`~/.local/share/td/projects/<name>/`). Directory bindings map working directories to projects.
 - Entry flow is `src/main.rs` → `yatd::run()` (`src/lib.rs`) → `cmd::dispatch()` (`src/cmd/mod.rs`).
 - We use jj for version control, not git. DO NOT use Conventional Commits. Do use imperative, Linux kernel-style commits. Always check `jj st` before starting. If there are changes in progress, run `jj new -m ...` to create a new working copy describing the pending work. If there are no changes in the working copy, run `jj desc -m ...` to describe the pending work. `jj diff --git` is more understandable.
 - JSON mode is not for "agent consumers". It's for wiring things together, whether the wirer is human or LLM.
@@ -14,7 +14,7 @@
 - Verify after changes: `make verify` (formats, typechecks, lints, and tests in one pass)
 
 ## Implementation details
-- Initialization requirement: most commands call `require_root()` and fail unless `.td/` exists somewhere in current dir ancestry (`db::find_root`). Only `project` and `skill` avoid this path.
+- Project resolution: most commands resolve the project via `db::resolve_project_name()` which checks `--project` flag, `TD_PROJECT` env var, or the directory binding in `~/.local/share/td/bindings.json`. Without a resolved project, commands fail with "no project selected". Only `project` and `skill` subcommands avoid this check.
 - DB schema is created in `src/db.rs` (`SCHEMA`):
 - Foreign keys are explicitly enabled on each connection (`PRAGMA foreign_keys = ON`).
 - Task IDs:
@@ -36,7 +36,7 @@
   1. create temp dir
   2. run `td project init`
   3. invoke command under test
-  4. assert output and/or inspect `.td/tasks.db` directly with `rusqlite`
+  4. assert output and/or inspect central storage in `~/.local/share/td/projects/<name>/` directly
 - When adding/changing behavior, prefer extending these CLI tests rather than only unit tests.
 
 ## Conventions and patterns to preserve
@@ -45,7 +45,7 @@
 - JSON structs rely on serde naming alignment (notably `Task.task_type` renamed to `"type"`). Maintain compatibility for import/export and tests.
 
 ## Gotchas
-- Running most commands outside an initialized tree yields `not initialized. Run 'td project init'` due to upward root search; tests should set `current_dir` to initialized temp dirs.
+- Running commands without a project binding (and without `--project` or `TD_PROJECT`) yields `no project selected`. Tests should set `current_dir` to directories with initialized bindings.
 - `Cargo.toml` uses `rusqlite` with `bundled` feature, so SQLite is vendored; build behavior differs from system-SQLite setups.
 
 ## Contributions