D364 — Antigravity and Hermes get project-local cells; co-owned paths survive a prune¶
The Hermes half is superseded by D898; Antigravity's cells and the co-owned paths stay.
Decision. Antigravity projects all five kinds into a workspace: skill to .agents/skills/<n>/, agent to
.agents/agents/<n>.md (the global translation), hook to .agents/hooks/<n>/ registered in .agents/hooks.json,
mcp to .agents/mcp_config.json (the global mcpServers shape) and instructions to the AGENTS.md marker block.
The hooks file is chosen from the hook's own path (antigravityHooksPath), as Crush's is, and an emptied project
hooks.json is deleted; .agents/hooks.json is listed as owned beside the cells. Hermes projects skill only, to
.hermes/skills/<n>/, written like any client's skill (no inbox, no SOURCE.md), and the projection is reported
inactive unless the workspace is in skills.trusted_project_dirs of $HERMES_HOME/config.yaml
(HermesProjectTrusted, read-only; missing or unparsable means not trusted), with the hint hermes skills trust <dir>.
Every provider can now be bound to a workspace. A prune, in Apply and when an unbind removes an orphan projection,
skips any path another provider's lock for the same workspace still records (LockFile.CoOwnedPaths,
ApplyOptions.CoOwnedPaths). This amends D193 decision 11, which left both providers without a project cell.
Why. Probed on agy 1.3.2 against a negative control (#478): skills, agents, hooks.json, mcp_config.json and
AGENTS.md in the workspace take effect, the same files in a directory without .agents/ do not. On Hermes v0.21.5
project skills load only after hermes skills trust <dir>. .agents/skills/ is already Codex's project skill cell and
AGENTS.md is shared by Codex and OpenCode, so a second provider writing them makes one provider's prune delete a file
the other still depends on.
Alternatives rejected. .agents/rules/ for instructions: read only with trigger: always_on frontmatter, a plain
rule file would be written and ignored. Hermes in .agents/skills/: co-owned with Codex and Antigravity. A Hermes hook
cell: hooks live in config.yaml, operator-owned (D141), and gateway hooks did not fire from the CLI. Copying the
Antigravity agent tools / commandExecutionPolicy keys as D291 restrictions: the probed agent ran a shell command
anyway. A prune guard only for AGENTS.md: the per-name skill files have the same problem. Reference counting per
provider in the lock: the paths a lock records are already the reference.
Consequences. Antigravity and Hermes become bindable (workspace bind); ProjectScopeUnsupportedReason has no
per-provider case left. The Antigravity app was not probed: only the CLI's cells are claimed. A tracked
.agents/hooks.json or .agents/mcp_config.json makes the hygiene check refuse, as .mcp.json does. Only a path
recorded by another provider's lock is protected: a file two providers wrote and one lock lost is still pruned. A
future Hermes external_dirs or Antigravity app scope is added by a probe, not by inference.