You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(journal): session-dir marker fallback for empty-team snapshot dedup
Empty-team frames previously fail-opened past the shared content-hash
dedup marker (degenerate guard returns no target), making every eligible
snapshot emit unconditional. Anchor the fallback marker root at the
session dir — resolvable by construction whenever the journal is — so
dedup resolvability equals journal resolvability. Two-root scheme:
healthy-team markers do not move (default root_dir=None is byte-identical).
- agent_handoff_marker: keyword-only root_dir plumbing; guard/pin flow
stays single-copy; falsy or non-absolute root fails open as before
- task_metadata_snapshot: _snapshot_marker_root policy helper consumed by
both hard-bound wrappers (claim/rollback root symmetry by construction)
- pact_context: docstring note on the effective deferral target
- verification tests: fallback claim/suppress, two-root regression pin,
defer-before-claim, degenerate root fail-open
* test(journal): bidirectional certification for empty-team session-dir dedup fallback
Seam-level cert suite (19 tests) coexisting with the substrate-surface
verification file — one assertion per behavior across the two files:
- close direction: per-write emit through the real gate path on an
empty-team lead frame (delta-only payload pinned), symlink fault
fails open with a recovery control leg, changed payload supersedes
- open direction: identical repeat suppressed to one event, cross-seam
dedup on the shared namespace, compensating unclaim under both
append-failure shapes (claim/rollback root parity)
- both-modes standing gate: lead emits+claims under the session root;
in-process and tmux teammate frames stay fail-closed, keyed on
structural signals only
- guard-order pin: non-str team_name with degenerate task_id fails
open instead of raising
Non-vacuity proven by source-only revert (21 fail / 4 pass, passes are
the unchanged-behavior pins) plus a predicate-force-open probe for the
fail-closed matrix rows. Full suite: 11004 passed, 0 failed, 0 errors.
* chore: bump plugin version to 4.6.4
* fix(journal): materialize fallback marker base at 0o700
The fallback claim's mkdir gave only the namespace leaf 0o700; a
not-yet-materialized session dir was created as a mkdir parent at
umask default, diverging from every other session-dir creator. Pre-
create the base branch-locally (after the falsy/non-absolute guard,
before the marker-dir join); OSError refuses to a fail-open emit,
matching the shared flow's failure posture. exist_ok never chmods a
pre-existing base — pinned under explicit umask control alongside a
red-first mode pin.
* test(journal): pin healing-transition cost at exactly one duplicate
Team empty-to-healed with identical content: the healed emit appends
(never suppresses the canonical event) and claims under the team root
while the session-root marker population stays disjoint on disk; a
further healed identical emit is suppressed, bounding the transition
at one duplicate. Falsifier verified: an always-session-root neuter
flips the never-suppression assertion.
0 commit comments