A sync that changed nothing says so again
Docs / docs (push) Successful in 32s
Playwright Tests / test-playwright (1, 2) (push) Successful in 2m58s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m9s
pre-commit / pre-commit (push) Failing after 2m23s
Test Backend / test-backend (push) Successful in 3m17s
Playwright Tests / merge-reports (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 28s
Docs / docs (push) Successful in 32s
Playwright Tests / test-playwright (1, 2) (push) Successful in 2m58s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m9s
pre-commit / pre-commit (push) Failing after 2m23s
Test Backend / test-backend (push) Successful in 3m17s
Playwright Tests / merge-reports (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 28s
Comparing the per-node digest against an engine that does not record one is comparing against nothing, and reporting every node as changed on every sync for ever — which is what a client newer than its engine did, since `NodeDef` drops fields it has never heard of. A node is named now only when both sides carry a digest, so a no-op sync is `unchanged` again and the signal one syncs for is back. That silence had also been the only sign of the mismatch, so sync now names it: one line saying the engine stored no record of what a node's code reaches, with both versions in it and what to run. Bumped to 0.1.6 — the digest changed the stored document's shape, and a version that does not move makes two different engines indistinguishable, which is the thing it was made load-bearing for a day ago. `— draft` was printed whenever there was simply nothing to publish, which reads as work left unfinished. It is said only when a draft is genuinely there, and `— published` when one was. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A9Hdrmf2cwNABCnE5x9UJa
This commit is contained in:
@@ -104,6 +104,25 @@ def test_a_node_whose_helper_moved_is_named_by_sync():
|
||||
assert _moved_code(None, document) == []
|
||||
|
||||
|
||||
def test_an_engine_that_records_no_digest_is_not_a_change_every_time():
|
||||
"""It drops the field on parse, so comparing against it reports for ever.
|
||||
|
||||
Which is what an engine older than this client does, and what a node
|
||||
drawn on the canvas looks like — neither is a helper somebody edited.
|
||||
"""
|
||||
from fluksio.sdk.client import _moved_code
|
||||
|
||||
older = {"definition": {"nodes": [{"id": "fit"}, {"id": "prepare"}]}}
|
||||
document = {
|
||||
"nodes": [
|
||||
{"id": "fit", "code_digest": "ccc"},
|
||||
{"id": "prepare", "code_digest": ""},
|
||||
]
|
||||
}
|
||||
|
||||
assert _moved_code(older, document) == []
|
||||
|
||||
|
||||
def test_a_second_sync_changes_nothing_and_commits_nothing(api, flows):
|
||||
sync([flows["train"]], api, origin=ORIGIN)
|
||||
before = commits()
|
||||
|
||||
Reference in New Issue
Block a user