sim design
authorJoey Hess <joeyh@joeyh.name>
Tue, 3 Sep 2024 18:23:48 +0000 (14:23 -0400)
committerJoey Hess <joeyh@joeyh.name>
Tue, 3 Sep 2024 18:23:48 +0000 (14:23 -0400)
doc/todo/proving_preferred_content_behavior.mdwn

index d352373ea0a94920fa53bc949ecc4f8af68dbe89..534a6decf92399e96ffce8b7628078e2dcccb9c0 100644 (file)
@@ -80,4 +80,36 @@ Be sure to enforce invariants like numcopies the same as git-annex does.
 Since users can write preferred content expressions, this should be
 targeted at being used by end users.
 
+The sim could be run in a clone of a repository, and update location
+logs as it runs. This would let the user query with `whereis` and
+`maxsize` etc to see what happens.
+
+Such a repository's location tracking would no longer match reality,
+so it would need to be clearly marked as a simulation result, and be
+prevented from merging back into another repository. This can be done by
+adding a new Difference to the repository.
+
+The sim would need a map of repositories with connections between them.
+Perhaps `git-annex map` could be used?
+
+For each step of the sim, it would pick a repository from the map
+(excluding special remotes), and simulate an operation being run in that
+repository, affecting it and its remotes.
+
+Split brain needs to be simulated, so the operations in the sim should
+include pushing and fetching the git-annex branch. The ref of each
+git-annex branch of each repository would be stored, with
+refs/heads/git-annex being set to the git-annex branch of the repository 
+it is currently simulating an operation in.
+
+The other operations would include get, drop, copy, move, sync, all
+with preferred content respected.
+
+May want to also simulate adding files to a repository, which would be
+generated (without any actual content) according to simulation parameters.
+Also file moves and deletions. `git-annex fuzztest` has some prior art.
+
+The location log history could be examined at the end of the simulation
+to find problems like instability.
+
 [[!tag projects/openneuro]]