Repository navigation
Markdown never writes project.faf: faf sync goes one way (project.faf → CLAUDE.md), and faf recover is gone. Patch — inherits The Ladder Edition. 2158 tests.
Removed
faf sync --direction pull. It copied the name, goal and main language from CLAUDE.md into project.faf (Trophy-gated), so prose could overwrite the source of truth and still score ✪ 100%. FAF tried bi-directional sync and retired it; this was the last path left.--directionis gone, sofaf sync --direction pull(orpush) is refused as an unknown option and writes nothing. Plainfaf syncdid and does the push.- The hidden
faf bi-syncalias. It ran plainsync; the name said otherwise. It is no longer a command. faf recover. It read CLAUDE.md, AGENTS.md, GEMINI.md and .cursorrules and filled empty project.faf slots (name, goal, language) from that prose — the same Markdown →.fafdirection. A lostproject.fafis rebuilt fresh instead:faf init→faf auto→faf go. Fresh = fresh data.
Tests
tests/commands/sync-one-way.test.tsruns the real CLI:sync --direction pullandbi-syncare refused and leave project.faf and CLAUDE.md byte for byte; plainsyncrewrites CLAUDE.md and leaves project.faf unchanged.- The two pull tests are gone; the owner-rule tests that covered
sync --direction pullnow cover plainsync. Therecovertests (unit, e2e, owner rules R4 and R5) are retired with the command.
FAF defines. AGENTS.md instructs. AI codes.