zara-coding: fail closed if branch inventory changes during read #200

Closed
opened 2026-09-08 02:03:12 +00:00 by nsaspy · 0 comments
Owner

Advances #1.

RepositoryInspector.branches() already performs a bounded second for-each-ref probe to detect overflow, but it currently discards the probe result after parsing. A concurrent local ref mutation between the first inventory and the probe can therefore return stale branch evidence while claiming success.

Acceptance:

  • deterministic RED proving a changed branch/ref snapshot between the two reads fails closed;
  • retain the existing branch-count bound and structured parser behavior;
  • compare canonical parsed snapshots, not raw output ordering assumptions;
  • emit a useful local incompatibility/error instead of returning mixed evidence;
  • no new mutation/tool surface or Core dependency;
  • focused tests, registry compatibility gate, nix flake check, generated package build, exact-head merge.
Advances #1. `RepositoryInspector.branches()` already performs a bounded second `for-each-ref` probe to detect overflow, but it currently discards the probe result after parsing. A concurrent local ref mutation between the first inventory and the probe can therefore return stale branch evidence while claiming success. Acceptance: - deterministic RED proving a changed branch/ref snapshot between the two reads fails closed; - retain the existing branch-count bound and structured parser behavior; - compare canonical parsed snapshots, not raw output ordering assumptions; - emit a useful local incompatibility/error instead of returning mixed evidence; - no new mutation/tool surface or Core dependency; - focused tests, registry compatibility gate, `nix flake check`, generated package build, exact-head merge.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/zara-plugins#200
No description provided.