feat(memory-sync): frictions syncPaths entry in all machine profiles#69
Merged
Conversation
Third syncPaths entry per profile (source ~/.harness/frictions, destination frictions, directory, not required), following the machine-state pattern from #64. New machine-setup.md section f) documents the one-file-per-machine payload convention and names the producer (friction-log sync-export, config-gated, agent-dx); the stale '(upcoming)' wording for the shipped toolchain-parity companion is fixed. New integration test pins missing-source tolerance and the push/pull round-trip incl. mkdir-on-pull. Note: linux.example.json carries the frictions entry as its second syncPaths entry, since that template never had a machine-state entry. Refs: agent-tasks task 343d5a8f-b01b-400d-ba0e-c69191e1220a Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FFEBioagwFtGfZVmAvECPu
…entries; docs precision Review round: the integration test alone was inert against a revert of the profile entries, so the settingsByFile parity test now reads the committed profiles directly and pins the frictions entry on all three (destination, kind, absolute source suffix, not required) and the machine-state entry on macbook/mac-mini; proven load-bearing by a temporary entry-strip that failed exactly this assertion. Five doc fixes in machine-setup.md: stale single-entry claim, restore-recipe destination note, watch caveats in f), concrete producer convention (sync_export.path, no derived filename, write-through from all six mutating commands), and the free-text exposure note. Refs: agent-tasks task 343d5a8f-b01b-400d-ba0e-c69191e1220a Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FFEBioagwFtGfZVmAvECPu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Transport half of the friction-log sync strategy (operator decision
2026-07-27, option 2: per-machine file exports over the existing
channel, no SQLite sync).
What changed
~/.harness/frictions, destinationfrictions, directory, notrequired), following the machine-state pattern from feat(agent-memory-sync): carry machine-state toolchain snapshots over the sync channel #64. In
linux.example.json it lands as the second entry, since that template
never had a machine-state entry (noted in docs).
(one file per machine,
<profile>.json, owner-writes-only, nosecrets), the concrete producer convention (friction-log
sync_export.path; the tool writes the configured path verbatim andderives no filename, so the convention is what carries
owner-writes-only), watch caveats, an exposure note for free-text
friction records, and two stale-claim fixes elsewhere in the doc.
tolerance, push/pull round-trip incl. mkdir-on-pull), and the
committed profiles are now pinned directly in the parity test
(frictions entry on all three profiles, machine-state entry on
macbook/mac-mini) after review flagged the integration test alone as
inert against a profile revert. The pin was proven load-bearing by a
temporary entry-strip that failed exactly this assertion.
Review
Independent reviewer subagent: no high or critical findings; one MEDIUM
(inert test) fixed as above, four doc LOWs fixed, three LOWs
consciously deferred (test-file duplication; pre-existing
cross-machine-profiles hermeticity, tracked with 112a0864;
linux.example machine-state asymmetry, follow-up). Suite baseline
unchanged: 109 tests, 108 pass, the single failure is the known
pre-existing EACCES E2E (112a0864). Typecheck and build clean;
preflight ready:true on 0670116.
Producer side ships separately in agent-dx
(feat/friction-log-sync-export); this entry tolerates a missing source,
so the two PRs are independently mergeable.
Refs: agent-tasks task 343d5a8f-b01b-400d-ba0e-c69191e1220a