Break one published citation, on purpose¶
Claim — you can take a path or symbol cited in a pre-2023 etcd article and show, with a sha or a file:line, either where it lives now or that it is gone. Refuting someone else's citation is the drill; the article is disposable.
Rests on — techniques 4 and 5 of the method — the pickaxe and blame walked backwards — and both previous exercises, whose answers you may not reuse. Pick a third symbol.
Topology — none. forge only; it is not part of any topology and is up regardless.
Do
-
Find a target. Any etcd storage or watch write-up from 2019–2022 will do; conference slides and vendor blogs are the richest seams because they paste paths. Take one paragraph and extract exactly one claim of the form "X is in
path/to/file.go" or "the functionFdoes Y". Write the claim down as a sentence before you check it — an unstated claim is unfalsifiable. -
Check the cheap way first:
If the symbol is there under a different path, you have your answer already and step 3 dates it. If git grep finds nothing, the symbol was renamed or deleted, and the pickaxe is the only thing that will find it.
- Pickaxe for the string, across all of history:
git log -S'F(' --oneline -- '*.go' | tail -5 # commits that changed the count of it
git log -G'func F' --oneline -- '*.go' | tail -5 # commits whose diff matched the regex
Read the last lines: git log is newest-first, so the introduction is at the bottom and the removal is at the top.
- Take the newest sha
Rfrom step 3 and read the diff that ended it:
-
State the refutation in the form the standard demands: "the article says
Fis inA; as of<sha>it is inBat lineN", or "as of<sha>it no longer exists, replaced byG". -
Confirm your refutation is checkable by someone hostile. Have the exact command that produces the evidence in one line, and run it fresh:
Expect — most 2019–2022 citations into etcd's storage layer are broken by the mvcc/ move alone, and most into consensus are broken by the extraction. That is why the phase asks for a third symbol: the interesting refutations are the ones where the file still exists and the function inside it was renamed, split or inlined, because those are the citations a careless reader will believe.
The failure mode to watch for is refuting the wrong thing. "The path is wrong" is not a refutation if the article's actual claim was about behaviour and the path was incidental — say which of the two you broke.
Write down — the refutation sentence, the command that proves it, and its output. That is the checklist's one broken pre-2023 citation refuted item, and it is the first time in the curriculum the answer is required to be a sha rather than a paragraph.
Teardown — nothing was created; step 2's git grep pulled some blobs into the clone, which is the clone doing its job. Both clones stay for the phase.