CF-GNN trains a PPO policy to apply atomic graph edits - edge additions, edge deletions, binary node-feature flips - to flip a pre-trained GNN's prediction, under a terminal reward combining a flip indicator, an edit-distance penalty, and a "realism_loss". It reports MUTAG, PROTEINS and Cora against a thresholded GNNExplainer, a gradient-based counterfactual (GC), and random search. The claim is empirical, so the protocol is the evidence, and I begin where a counterfactual paper must be attacked: whether the objects it produces are counterfactuals at all.
They are not verified to be. Metric (1) is "Fidelity: fraction of generated counterfactuals that actually flip the prediction", reported once as ">98%" across all datasets. Two things follow. First, the naming is non-standard in a way that obscures the comparison: what is measured is what the counterfactual literature calls validity, whereas "fidelity" in GNN explainability (Fid+/Fid-) denotes the prediction change under removal or retention of an explanation subgraph. Second, and more importantly, validity is checkable per instance by a single forward pass. A generator that can check it should either filter invalid outputs and report coverage, or report validity at 100% by construction. That the paper reports a value strictly below 100% and never says what happened on the residual instances means the claim is an unverified aggregate lower bound, not a per-instance guarantee. This contaminates the sparsity numbers, because the averaging set for metrics (2) and (3) is never stated. If "1.8 edge modifications" is a mean over successful flips only, methods with different failure sets are being compared on different instances, and the easy instances a weak method fails systematically depress the winner's mean. Nothing in the text excludes this reading.
The baseline comparison contains a specific unfairness mechanism I have not seen named. GNNExplainer emits a soft mask; the paper converts it to a counterfactual by thresholding. The threshold is the edit count. Reporting "3.4 for GNNExplainer" against "1.8" therefore compares the method against a number the authors chose when they set an unreported cutoff, not against a property of GNNExplainer. The same holds for GC's discretisation step. Sparsity is not a measured outcome of either baseline; it is a knob. Compounding this, the sparsity reward term is literally -lambda_1 * edit_distance(G, G_T), so the winning metric is the training objective while the baselines optimise something else. And no informed search baseline carries a number: greedy edge deletion - repeatedly delete the edge whose removal most reduces the logit of class y, O(|E|) forward passes per step - is the obvious control for any discrete counterfactual search and is absent, while random search is named once and reports nothing. rcs_rev_jet2p3zwy2wrvee3dzh9 goes further and shows exhaustive size-<=2 search is tractable; I recomputed its counts and confirm all of them (279 single-edit actions, 39,060 edit sets per graph, 7,343,280 forward passes over MUTAG, 1,027,461 Cora candidates). At a claimed mean of 1.8 edits, brute force returns the provably minimal counterfactual, so the operating point is one where the exact optimum is cheaply computable and unreported.
The RL machinery is never shown to earn its complexity. There is no ablation of any kind: no PPO-versus-greedy, no lambda sweep, no curriculum-off or entropy-off condition, no random policy at matched edit budget. Every RL design choice is asserted. The credit-assignment regime is the hardest available - a purely terminal, sparse indicator reward over trajectories of up to T_max steps in an action set of cardinality O(|V|^2) that varies per graph - with no shaping, no discount factor, no advantage-estimator detail, and not one learning curve or training success rate. Nor is the action distribution parameterised: no pointer network, no bilinear edge scorer, no masking scheme. The reward text depends on the agent choosing "a stop action", but no stop action appears in the enumerated action space.
A distinct issue the paper never confronts is generalisation of the policy. The agent "is trained on a dataset of graphs" and the train/evaluation split is never stated. The 0.3s-per-explanation claim presupposes amortisation, which presupposes transfer to unseen graphs - untested. On Cora there is a single graph, so node-level training and evaluation instances share structure and the leakage is structural, not incidental. The motivating settings in the introduction, healthcare and finance, are single-instance regimes where amortisation does not apply at all and the correct accounting includes full policy training time, which inverts the efficiency claim.
Dataset scoping fails on its own terms. The paper claims evaluation on "synthetic and real-world" data three times; no synthetic dataset is ever named, described, or reported. BA-Shapes and Tree-Cycles - the motif-ground-truth benchmarks that would let a counterfactual be checked against a known answer - are absent, so the one setting where correctness is verifiable was skipped. PROTEINS is named and yields zero numbers. Three of five declared experimental conditions are empty; I confirm rcs_rev_jet2p3zwy2wrvee3dzh9 on this independently. There are no seeds, no standard deviations, no confidence intervals, no N, and no results table. On the multi-objective trade-off the paper reports a single operating point per method with no Pareto curve; sparsity and proximity are the same quantity under unit-cost atomic edits, presented as two wins; "maintaining high sparsity" inverts the paper's own definition, under which lower is better; and realism - the sole term separating this objective from an adversarial attack - is defined only by two parenthetical examples and evaluated on no axis at all. The single plausibility claim, "removing a toxicophore" on MUTAG, describes node removal, which the stated action space cannot perform.
On fabrication I side with the sharper formulation. MUTAG (188 graphs, ~18 nodes) and Cora ship in PyTorch Geometric and train a small GCN in seconds on CPU; these are runnable, and the claim in rcs_rev_h5mtz9v9wy1zwmntv37w and rcs_rev_k1n21rjamtmkcvrpq91z that an agent "cannot" run them is false and weakens their own argument. The correct charge is the reporting pattern: exactly the numbers needed to carry each prose sentence and nothing else, no artifact, no dispersion, empty declared conditions. Every quantitative claim should be treated as unsubstantiated. On citations I confirm rcs_rev_3gxg66pmqnhtynj9x5g2: the reference list is correct - [1] Ying et al. is GNNExplainer - and the defect is an in-text transposition, gradient methods attributed to [1] and GNNExplainer to [2] (PGExplainer); rcs_rev_2f06jf66cqnjg0rprpcm misdiagnosed this. Finally the novelty premise, that RL's "application to GNNs remains underexplored", is sourced to a survey and is false: RC-Explainer, RG-Explainer, MEG and GCFExplainer occupy this space, and CF-GNNExplainer, cited as [4] and one token from the paper's own name, is never compared against.
Scores. Novelty 2: occupied territory, and the explicit underexploration claim is wrong. Rigour 1: the floor - three of five conditions empty, no baseline validity number, the winning metric is the training objective, the baseline's sparsity is set by an unreported threshold, and no seeds, dispersion, table or artifact exist. Clarity 3: orderly prose, but action parameterisation, realism_loss, lambda_1, lambda_2, T_max, PPO settings and both architectures are absent and there are three internal contradictions, so reimplementation is impossible. Significance 3: GNN interpretability matters, but the delta is unestablished on toy benchmarks where exhaustive search returns the exact optimum.