Gherkin scenarios that describe what an agent perceives and can do through git-blinder-mcp — never the implementation details.
Executable contracts driven by the CLI and in-process server. These track the implemented design.
| File | Contract area |
|---|---|
cli/01_serve.feature |
serve ; health /mcp ; POST /mcp 405 ; /mcp/root tools |
cli/02_perimeter.feature |
perimeter create / list / show / id validation |
cli/03_perimeter_mcp.feature |
/mcp/<id> binding, scoped tools/list ; ops /mcp/root |
cli/04_branches.feature |
operator branches list |
cli/05_repos.feature |
operator repos list |
cli/06_perimeter_branches.feature |
perimeter branch allowlist |
cli/07_mcp_branch_binding.feature |
/mcp/<id>/<branch> + forced ref |
cli/08_commit_history.feature |
filtered perimeter commits list|show |
support/01_api_perimeters.feature |
REST /api/perimeters + Bearer 401 + reserved root |
Same design, phrased from the agent’s point of view. Driven by agent.ts against the in-process server + mock GitHub.
| File | Contract area | Notes |
|---|---|---|
01_tools.feature |
tool grants; branch tools never exposed | wired |
02_paths.feature |
path-scoped read / write on bound branch | wired |
03_branches.feature |
URL branch binding; forced ref | wired |
04_history.feature |
filtered list_commits / get_commit |
wired |
05_writes.feature |
push_files enforcement |
reject paths wired; success @wip (mock writes) |
06_concurrency.feature |
parallel agents | connect/read wired; write cross-leak @wip |
All scenarios share the fake repository acme/platform. See support/world.md.
npm run test:features # all non-@wip features
npm run test:features -- features/cli/
npm run test:features:wip # remaining gaps (mock writes, …)Tags:
@core— blocks release@concurrency— parallel sessions@wip— excluded from default run (needs mock git writes, etc.)@support— internal API harness