Repository navigation
docs: localized AGENTS.md for spaced, net-gateway, cluster-controller, internal-api and vol-mgr - #316
Conversation
3e479db to
bed6cfe
Compare
…, internal-api and vol-mgr Add change rules, each with a CLAUDE.md symlink, where an agent changing these crates is most likely to go wrong: - crates/libs/spaced: one file for every spaced crate, which share the proto/spaced wire contract and the guest compatibility range. Covers additive proto changes retired only with every version using them, the worker protocol version, the Unimplemented-only legacy fallback and its removal markers, host and bridge-host peer authorization, and the featureless guest release build. - crates/libs/net/gateway: server and client. Namespace, nft and privilege changes belong to node-manager and the runtime supervisor; new egress sockets carry the outbound mark; policy is pulled; state changes go through the writer lock; control RPCs pick an allowlist. - crates/libs/cluster/controller/server: loop wiring under the leadership token, guarded writes to shared Postgres public.sandboxes and nodes rows, node-drain CAS and UID re-checks, the credentials pool, dry-run and test-hook knobs, and the stuck-pod GC's dependency on two other loops' configs. - crates/libs/internal/api/server: node identification by registered address, pre-existing registrations for destructive role-based work, the publish transaction, guarded lifecycle writes on Postgres public.sandboxes, and certification on the server's own verdict. - crates/libs/vol/mgr/server: jobs ownership by pplx-space-common-jobs, hard exit while holding the service lock, btrfs send-source leases, and the space-volmgr identity. Each file points to docs/rust/space-conventions.md for the CI and log-target guidance instead of repeating it.
bed6cfe to
151681f
Compare
Review: no findingsI checked every sentence in the five files that asserts a mechanism, path, symbol or command against the code at the head. Each one has a source location that makes it true. A few examples:
Budget: the root file is 5745 B. The largest chain is still root + Not checked in depth: I didn't trace every restored, stopped and quarantined projection in Verified against |
the-gigi-pplx
left a comment
There was a problem hiding this comment.
Approved. No findings; the review comment above lists what I checked.
Adds a localized
AGENTS.md, each with aCLAUDE.mdsymlink, for five more crates. They match the style of the files from #275: rules for changes, verified against the code at bea0d3f, and a one-line pointer todocs/rust/space-conventions.mdfor the CI and log-target guidance instead of repeating it.Where each file sits, and why
crates/libs/spaced/AGENTS.mdproto/spacedand the guest rangeSUPPORTED_SPACED_GUEST_VERSIONS. Legacy-compat markers sit on both sides. One file at the parent also covers crates that #16 adds underspaced/.crates/libs/net/gateway/AGENTS.mdcrates/libs/cluster/controller/server/AGENTS.mdcrates/libs/internal/api/server/AGENTS.mdcrates/libs/vol/mgr/server/AGENTS.mdBudget: the root
AGENTS.mdis 5745 bytes. The deepest chain this PR adds is root plus spaced, 7920 bytes. The largest chain in the repo is unchanged: root plusinfra/space/kind/AGENTS.md, 12475 bytes. All are well under 32 KiB.Table qualification
SPACE has two
sandboxesstores. The cluster-controller and internal-api files say up front that every table they name is in the control-plane Postgres store, and they name columns as Postgressandboxes.lifecycleandsandboxes.active_node_id. The vol-mgr file says its tables are in volume-manager's own SQLite database. No file names sbx-mgr's SQLitesandboxes.state.Deliberately left out
buf*.yamlor descriptor set. In their place the file states the additive-change rule for the compatibility range indocs/versioning.md.docker/Dockerfile.rust-build-commoninstead.orphaned_restore_pod_gc's test-hook dry-run knob, which [cluster-controller] read the orphaned-restore-pod gc dry-run and tunables from the environment #234 fixes, so it is not named as a violation.store.rs": six single-file loops have inline SQL.destructive_gate": four retention loops have no gate.UPDATE sandboxesgrep hint, which would also match sbx-mgr's SQLitesandboxes.Validation
CLAUDE.mdsymlinks resolve toAGENTS.md(mode 120000).🤖 Generated with Claude Code