1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#+TITLE: Proposal — flashcard-stats.py refutation / claim-prompt mode
From: home session, 2026-06-21. Backlog, not urgent. Relates to the
refutation-drill deck being built in the home project.
* Problem
A new card family doesn't fit the linter: the *refutation / claim-prompt*
card. Its heading is a bare false claim ("The earth is flat.") and its
body is the rebuttal. This is a legit org-drill simple card (org-drill is
happy), but flashcard-stats.py — built for Q&A decks — trips two BLOCKING
checks on every such card, both false positives:
- *non-prompt heading*: a declarative claim has no '?' and no
imperative verb, so it reads as "topic-as-heading not yet rewritten".
But for this family the declarative claim IS the intended prompt.
- *answer leakage*: the claim's words necessarily reappear in the
refutation, so front/back overlap is high. But the answer (the rebuttal)
is not given away by the claim — there's no actual leakage.
Concrete: the home refutation-drill.org (6 cards) reports 6 non-prompt
headings + 1 leakage WARN, so flashcard-sync's gate blocks it entirely.
The deck currently has to be generated with the flashcard-to-anki.py
override, losing the safety net.
* Proposed fix
A per-deck opt-in marker that switches the two checks off for that file
only. Two options (your call):
1. A file-level keyword: =#+DECK_KIND: refutation= near the top. When
present, flashcard-stats skips the non-prompt-heading check and the
answer-leakage check for the whole file (keeps the others:
missing-:ID:, *** Answer sub-headers, duplicate fronts, the
non-blocking NOTEs).
2. A per-card tag: cards tagged =:claim:= (alongside =:drill:=) are
exempted from those two checks individually.
Option 1 is simpler and matches how this deck works (the whole file is
one family). Option 2 is finer-grained if a deck ever mixes families.
Either way: document the new card family in flashcard-review.org (a
"Refutation / claim-prompt cards" subsection under Canonical Card Shape —
heading is the bare claim, body is snap-response + backups + named-fallacy
+ restate, Source footer), and note that flashcard-sync then works
normally on these decks.
* Affected files
- =flashcard-stats.py= — the check skip + (option 1) keyword parse / (option 2) tag check.
- =flashcard-review.org= — document the family + the marker.
- =flashcard-to-anki.py= / =flashcard-sync= — no change needed (they don't gate on heading form).
- Tests: add cases for a refutation-marked file passing despite declarative headings + claim/answer overlap.
* Companion context
The home deck's card format and the org-drill-fine / Anki-linter-fights
finding are written up in home:refutation-drill-sources.org (Tooling
note). The override command is documented there too.
|