Skip to content

Add cfgit-agent coordination plugin#14

Open
AusafMo wants to merge 5 commits into
mainfrom
codex/agent-coordination-v1
Open

Add cfgit-agent coordination plugin#14
AusafMo wants to merge 5 commits into
mainfrom
codex/agent-coordination-v1

Conversation

@AusafMo

@AusafMo AusafMo commented Jul 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • add optional cfgit-agent package for multi-agent coordination over live datastore records
  • implement sessions, leases, intents, idempotency, conflicts, events, JSON Patch validation/apply, and MCP wrappers
  • add in-memory, Mongo, and Postgres agent-state adapters plus plugin-local [agent] config parsing
  • add deterministic policy guardrails for claim scopes, deny paths, configured secret fields, and review-required paths
  • route review-required agent patches to cfgit branch/PR flow without mutating runtime
  • add an optional agent manager panel to the localhost cfgit UI
  • document cfgit-agent in README, agent docs, skill, publishing docs, and the coordination spec

Verification

  • .venv/bin/python -m pytest -q (100 passed, 4 skipped) twice
  • .venv/bin/ruff check src tests plugins/cfg_impact/cfg_impact plugins/cfg_agent/cfg_agent
  • git diff --check
  • python -m build + twine check for cfgit, cfgit-impact, and cfgit-agent
  • private-string scan across new public files

Notes

  • cfgit-agent is in-repo only for now; docs keep it out of the PyPI publish workflow until its project/trusted publisher is configured
  • no remote or cross-project Mongo write operations were used

AusafMo and others added 5 commits July 4, 2026 01:09
…ion-v1

# Conflicts:
#	skills/cfgit/SKILL.md
#	tests/test_ui_server.py
Drove the plugin end-to-end as a real human+agent against live Mongo seeded with real AI-Studio
data (modelgarden_models/agent_configs). 10 PASS / 2 GAP surfaced two gaps unit tests missed
(they always pass canonical shapes); both fixed → eval now 12/0/0.

- base_moved FAILED OPEN on shape mismatch: validate_patch keyed expected_base by record, so a
  flat {head_seq,head_oid} (the obvious shape, and the shape base= wants) silently skipped the
  stale-write check with no error. Add _resolve_expected_base to accept flat OR nested from either
  base= or the intent. Regression: base_moved accepts all 4 shapes.
- No public lease renewal (spec §10): adapter had renew_lease but nothing exposed it. Add
  coordinator.renew + AgentActions.renew + cfg_agent_renew MCP tool (ownership-checked).

docs/AGENT_COORDINATION_EVAL.md records the findings; deferred items (session takeover, review
tools, conflict semantics, require_intent/allow_path_expansion knobs, Postgres hardening) marked
explicitly. 194 pass, ruff clean. (eval/ harness stays local, gitignored.)
…le spec doc

Complete the eval-driven pass:
- Add two policy knobs the spec implied were configurable but weren't:
  * require_intent (default true) — set false to allow validation without an open intent
  * allow_path_expansion (default false) — set true to let a patch touch paths beyond the
    intent's planned_paths
  Wired through config (.cfg.toml [agent.policies]) → StaticAgentPolicy → validate_patch. When an
  intent IS supplied it's still scope-checked even if not required. Guarded None-intent paths.
- Reconcile docs/AGENT_COORDINATION_SPEC.md with a top-of-file 'Implementation status' section:
  what's implemented+validated, what was just added, and what's DEFERRED (session takeover, review
  approval tools, conflict-resolution semantics, idempotency key-scope wording) — so the 1200-line
  design doc no longer over-promises vs the runtime.

Tests: +3 (allow_path_expansion permits out-of-plan path; require_intent=false proceeds; default
still blocks) + config parsing asserts the new keys. 197 pass, ruff clean, live eval 12/0/0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant