Wiki — Front Door
The front door to the research wiki — every entry point into what you know, built from the Quarto chapters and project registry already in this repo.
Read the one-line summary under each link to decide whether to open the page. Nothing in wiki/ is precious: every page is regenerable from the sources it cites. The rules live in CLAUDE.md at the repo root (not published).
This wiki is part of the site — it publishes as the Research Wiki section in the sidebar, alongside the project chapters. Write it accordingly: no PHI, no un-hashed accession numbers, no patient-level detail. The raw material it is built from (sources/papers/, sources/notes/, sources/inbox/) and the journal/ stay off the site.
Start here
- New to a topic? Concepts explain the idea. Methods explain how the group does it. Datasets describe what data exists.
- Looking for a repo?
sources/projects/has one pointer page per project, with repo URL, status, and open questions. - Want to know what’s missing? Every page ends with Open questions, and
[unverified]marks anything not traceable to a source. - Reading on the site? Use the sidebar or the search box. Reading in Obsidian? Point a vault at the repo root and the double-bracket links and graph view work directly.
- Came here from a project chapter? Since 2026-08-03 every chapter of the book ends with an In the research wiki section pointing at the pages that expand it, each with a line saying what that page would let you do. The book says what the group is working on; the wiki says what is known about the ideas underneath it, and the two are now walkable in that direction.
Concepts
Machine learning and validation
- Weakly Supervised Learning — training slide-level models from one label per slide, the standard way to learn from WSIs without exhaustive annotation.
- Foundation Models in Pathology — pretrained tile encoders that cut how many labelled slides a downstream task needs.
- External Validation — testing on a different institution, scanner, or era; the strongest evidence a result will hold up.
- Class Imbalance and Accuracy — why overall accuracy stops meaning anything when one class dominates.
- Multimodal Fusion — combining images, molecules and clinical variables in one model; the hard part is missing data, and the honest question is whether fusion helped at all.
- Gradient-Based Feature Attribution — reading a model’s partial derivatives to ask which features drove it; most valuable as an audit that catches what the model actually learned.
- Reading-Behaviour Capture — the two properties that decide whether recorded viewing data can answer anything: image-space positions with the zoom factor, and preserved visit order.
- Agentic Slide Navigation — letting the model choose where to look and at what power, which moves the scarce training signal from labelled tissue to recorded expert behaviour.
- Hard Example Mining — focusing training on what the model gets wrong, and how “hard” can be defined structurally rather than pixel by pixel.
- Persistent Homology — measuring the shape of a cell arrangement rather than only counting the cells; the tool that makes “structurally wrong” computable.
- Federated Learning in Pathology — training one model across several hospitals by moving the model to the data; the named route to a multi-centre model, and it relocates the governance cost rather than removing it.
Statistics and evaluation
- Diagnostic Test Accuracy — the metric set for test performance, and which metrics move with prevalence.
- Decision Curve Analysis — whether using a test actually benefits patients, not just how accurately it classifies.
- Competing Risks — when a competing event makes standard survival methods overestimate risk.
- Interobserver Agreement — agreement beyond chance, and the ceiling it sets on any reference standard.
- Biomarker Cut Points — turning a continuous marker into categories, and the optimal-cutpoint trap.
- Concordance Index — the standard discrimination metric for survival models, and the one that silently rewards a model for knowing which disease the patient has.
- Coverage Bias — when the records carrying a field are not a random sample, so the metric partly measures your data collection; declare the denominator, coverage-correct, rarefy.
- Model Abstention — when the model returns nothing, the denominator becomes a choice; report coverage beside every metric, or publish two numbers about two different populations.
- Feature-Space Distance — putting a number on how different two sets of tiles are by embedding both; the number belongs to the encoder until you divide it by that encoder’s own floor.
- Record Linkage Under Pseudonymisation — once the real identifier is gone, “all records for this patient” is a probabilistic decision with two opposite failure modes; the good systems ship a confidence flag instead of a clean join.
Digital pathology
- Whole Slide Imaging — the digitised slide as substrate for every method and every operational bottleneck.
- Scanner and Stain Variability — the same tissue looks different by scanner and stain batch, and models learn that difference.
- Preparation Quality Versus Image Quality — how the section was cut and mounted versus what the scanner captured; measured locally, 70% of the laboratory’s recorded defects have no artefact-model class at all, so neither check substitutes for the other.
- Intratumoral Heterogeneity — marker expression varying within one tumour, so the answer depends on which piece you sampled.
- De-identification — the several places identifiers hide that a filename rename will not reach.
- Nottingham Grading — the three-component breast grade, and how differently its components survive the move to a screen.
- Mitotic Count — counting per defined area, and the systematic undercount that appears when the microscope is replaced by a monitor.
- Ki-67 Proliferation Index — the breast proliferation biomarker whose value is limited by how irreproducibly it is stained and scored, and the target of national standardisation guidance.
- Colour Calibration — fixing colour physically at the scanner rather than in software afterwards; the one intervention shown to move AI agreement across sites, and a partial substitute for foundation-model pretraining.
- Spatial Proteomics — imaging fifty protein markers on one section at single-cell resolution, and why that breaks every model built for H&E: the input becomes N arbitrary named channels.
- Cervical Cytology Screening — the highest-volume, most protocolised task in the discipline and the one place AI is already deployed at national scale; the best available evidence here on what deployed pathology AI actually looks like.
Reporting and operations
- Synoptic Reporting — structured checklist-based cancer reporting, and why it makes reports machine-readable.
- Turnaround Time — the department’s headline quality metric, and why its distribution matters more than its mean.
- Laboratory Workload Measurement — turning laboratory activity into comparable units of staff time, so capacity can be argued from measurement.
Methods
- Survival Analysis Workflow — cohort table to defensible time-to-event result, with the event-coding and proportional-hazards checks that get skipped.
- Descriptive Tables — the Table 1 and cross-tabs that open almost every paper, done reproducibly.
- QuPath Annotation Workflow — WSIs to annotated research data, with GeoJSON as the interchange format.
- Cell Detection and Counting — dot annotations to a trainable target and back to cell positions; the route underneath every Ki-67-style index.
- WSI Quality Control — screening slides for artefacts before annotation effort or model training is spent on them.
- Patch Extraction — cutting slides into the tiles a model actually sees; the decisions that set the ceiling on everything downstream.
- Encoder Benchmarking — choosing between frozen tile encoders on your own cohort, and the four protocol choices that decide whether the comparison means anything.
- Cross-Stain Registration — aligning differently stained sections from one block, and why it can never match individual cells.
- Scanner Log Analysis — raw scanner logs to operational metrics, with two documented cleaning traps that decide validity.
- Slide Metadata Extraction — reading scanner, magnification, µm/pixel and scan date out of the slide file itself, and telling a measured value apart from a computed one wearing its name.
- Report Text Extraction — narrative reports to structured fields, the entry point for all text mining here.
- LLM Report-Quality Checking — LLM skills scoring reports against CAP/ICCR, and how they fail differently from rules.
- LLM Adaptation Techniques — the ladder from a plain prompt to a fine-tuned model, and what each rung costs before it buys anything.
- Citation Network Analysis — author and citation networks from open bibliographic metadata.
- Stain Normalisation — which method to pick and why the simplest one often wins, plus the reason no single method fixes both over- and under-staining.
- WSI Format Conversion — rewriting a slide into a format the tool can actually open; the interoperability standard is the one most free viewers cannot read.
- DZI Web Publication — scanner file to zoomable public teaching case, and why anonymisation has to be a gate rather than a step.
- De-identification Release Gating — turning de-identification from a step that runs into an assertion that must pass; the estate’s three known failures are each a missing assertion, not a missing tool.
- Video-Based WSI Mosaicing — building a WSI from a microscope camera instead of a scanner, and why a mosaic without µm/pixel is a picture rather than a measurement.
- Macroscopic Specimen Photography — recovering real measurements from gross photographs with a ruler in frame, and the identifiers that end up in the frame beside it.
- jamovi Module Development — an R package with a declarative layer: options and results are described in YAML and the GUI, the R API and the validation are generated from that description.
- Server-Side Slide Platforms — putting the viewer, the annotations and the analyses on a shared server instead of one desktop; buys multi-user work and a job queue, costs a containerised plugin ecosystem and somebody to run it.
Datasets
- Memorial WSI Share — the de-identified image cohort held outside git; the least documented dependency in the repo.
- Memorial LIS Extracts — the structured clinical backbone, with documented field-reliability caveats.
- HER2 Gastric Cohort — gastric/GEJ cases with HER2 IHC, ISH, slides and annotations, in one curated cohort.
- Pancreas Cohorts — a federated family of pancreatic sub-studies sharing one schema and one IHC database.
- Konsultasyon Log — intradepartmental and referred-in consultation records.
- Scanner Logs — per-slide scanner and transfer events behind the workflow research.
- OpenAlex Pathology Metadata — open bibliographic metadata; the only dataset here with no patient data at all.
- Labquality EQA Staining Dataset — free public WSIs: one tissue block, 66 laboratories, one scanner, so staining variation is isolated from everything else.
- Foundation Model Cache — ~370 GB of pretrained pathology models already downloaded on J:, including six slide-level encoders that would replace a step the group currently hand-builds.
- Liver Tru-Cut Cohort — the liver project’s working data: pseudonymised slide archives and a FileMaker clinical database, correctly held off git.
- TCGA — the public pan-cancer atlas most benchmarks are built on; free, large, matched across modalities, and carrying confounders its size does not fix.
- pT1-HBTG — Bern/Radboud graphs of tumour buds and T-cells in 626 pT1 colorectal hotspots with outcome-based risk labels; the budding cluster’s missing data, behind a Zenodo access gate its paper’s “publicly available” does not mention.
- KUCell — a dot-annotated cell detection set released by a Koç University group in 2026; the nearest published precedent for a dataset this department could build itself.
- AIDA Data Hub — Swedish annotated WSI cohorts, free but gated behind a PhD requirement and an institutional signature; the shortest realistic route to an external validation cohort.
Projects
Pointer pages live in sources/projects/. Sixty-eight so far. Seventeen of them — ScanTools, WSITools, MultiSurv, SurvivalNet, Pathology-CoT, MouseTracks, CORAL, KRONOS, askLLM, OpenMed, MIKAIA, Awesome-AI4DigitalPathology, VALIS, Valis-GUI, OncoLens, elastix and Micro-Manager — are external repositories that were evaluated rather than repositories of mine; all are marked external: true and adopted: false in their frontmatter. On those pages status: describes my engagement, as it does everywhere else (active = still a live candidate, archived = evaluated and closed), and a separate upstream: key records how maintained the tool itself is. The two are independent: a dormant tool can still be worth adopting, and a maintained one can still be wrong for us.
Statistical tooling — ClinicoPath jamovi Module (388 analyses; the primary product, not a wrapper), then the focused sub-modules that together hold 58 of them: jjstatsplot (18), meddecide (14), ClinicoPathDescriptives (14), jsurvival (8), OncoPath (4). All six at v1.0.1, all read from source 2026-07-26. If an analysis is not in the list on a sub-module’s page, it is in the umbrella — that caught four wrong attributions in this wiki. ClinicoPath Org Collection catalogues the 205-repository ClinicoPath organisation behind them — jamovi’s own plumbing, ~55 third-party modules, and the R packages the analyses wrap. Its copies of our own modules are stale mirrors: clone from sbalci/, not from the org. jamovi Module Development is how any of it is built.
Morphology — Pancreas Morphology, HER2 Intratumoral Heterogeneity, Omentum.
AI on slides — Liver Tru-Cut — Tumour Origin AI, PinkKidney (chromophobe vs oncocytoma; the best-controlled cohort here and still the one without an external test set), PembeBobrek (its Turkish guide and deploy chain — read this one before touching either repo), hepatocyte-app (liver H&E segmentation and cell morphometry — steatosis and ballooning classes, on the same cohort as the liver origin project; pipeline complete, four slides processed, no licence file), QuPath Hepatocyte Extension (its QuPath 0.6+ front end — do not install from its catalog yet, the advertised release JAR 404s), Paige Prostate, Aiforia Breast, QuPath Tooling.
Text, reports and informatics — Extract Report Text, Pathology Report Checker Skills, Patoloji Bilgi Yönetim Sistemi (LIS).
Operations and quality — Scanning Time in Real Life, Konsultasyon, GrandQC Quality Study (502 slides of technician quality calls against GrandQC artefact percentages, presented as an oral abstract — the group’s only measurement of a QC model on its own material, and the source of the Preparation Quality Versus Image Quality distinction).
Publishing infrastructure — PinkKidneyWeb (the deploy mirror for the Pink Kidney book; the content is written in PembeBobrek and analysed in PinkKidney, so three repositories hold one project).
Imaging and acquisition — DIY WSI (live camera capture, desktop app and real-time stitching; the larger of the two) and Video to WSI (upload a recording, get a mosaic; the more disciplined README in the estate). No shared code, and they converged independently on the same registration model — see Video-Based WSI Mosaicing. Both default physical pixel size to a placeholder. Micro-Manager (evaluated 2026-08-23, not adopted — no motorised stage here) is the stage-driven reference point for this pair: the standard open-source microscope-control platform, whose source turns out to contain a tiled-acquisition-to-pyramid pipeline using the same phase-correlation primitive plus global optimisation and a measured stitching error — and whose pyramidal writer is documented grayscale-only, which excludes H&E as it stands.
Foundation-model work — Aknar–Mutlu Model Family (the only project here that sets out to train an encoder: LoRA-adapting OpenMidnight on a Turkish multi-organ cohort, named for the founders of Turkish pathology), Meningioma H&E Deep Learning (reproducing a Lancet Digital Health model that predicts methylation-defined molecular groups from H&E alone), Liver Working Tree (seven model environments standing up against one cohort — the clearest record of what has actually been run), Outlier Detection via Path Foundation (quality control as “which tiles look unlike the others”, using Path Foundation embeddings and an Isolation Forest).
Digital pathology drafts — Digital Pathology Drafts is the private umbrella these all sit in; read it first, because its submodule wiring is broken in a way that makes a fresh clone --recursive silently incomplete. The QuPath prototypes: spider-qupath (SPIDER classifiers zero-shot; ignores annotation size), kaiko-qupath (trains a head on Midnight embeddings; a 4× train/predict magnification mismatch), metadata-qupath (scanner metadata, blocked by one Groovy type error) and anonym-qupath (do not run on clinical material — it deletes the original whether or not redaction worked). The working code: stepbystep (the numbered curriculum, largest and most recent, and the only project here that records a decision it got wrong and corrected), Stain Quality (H&E/IHC measurement that independently arrives at the published UK NEQAS method), stain-normalisation-qupath (TIAToolbox wrapper — cannot open an SVS as shipped, and normalises every image to itself), GrandQC-QuPath (own wrapper around the published GrandQC artefact models), svs-viewer-annotator (three Tkinter viewers and one screen-automation outlier) and Drafts Helpers (OpenSlide fixes and the raw Aperio metadata route, carrying an unresolved date-convention ambiguity). And the odd one out in that cluster, because it is a server rather than a script: imagebank (a Dockerised Digital Slide Archive — the estate’s only multi-user browser-based slide platform, which is the whole argument for keeping it. The upstream viewing, annotation and MONAI Label layers work; the three QC tools written locally do not, and two of them are named GrandQC while containing no GrandQC at all — read the page before running anything in qc_tool/ or cli/GrandQC/, and before comparing any of their numbers to GrandQC Quality Study’s).
External tooling — MIKAIA (Fraunhofer’s commercial platform, installed locally and not adopted; worth knowing only because its ISH quantification and cell-neighbourhood apps cover the two things the QuPath stack cannot, and it has a REST API so it could supplement rather than replace), OpenMed (healthcare-AI package whose 2.0 release adds a structured re-identification-risk workflow; not adopted, and the verdict splits three ways — nothing at all for slides, a Python-API-only pilot for Turkish report text because its default path misclassifies FORMALIN and INVASIVE as bank codes, and one genuine contribution in the release-gate pattern that became De-identification Release Gating), ScanTools (WSI redaction, hashing, scan dates; a candidate, not adopted), WSITools (patch extraction and registration; evaluated and not recommended — use tiatoolbox or pathml instead), MultiSurv (multimodal survival model; paper companion code, not runnable as shipped, but its discrete-time survival loss is worth lifting), SurvivalNet (Theano-era deep Cox survival package; dead since 2017 and not recommended — its Cox partial likelihood carries a confirmed defect, but its per-patient gradient attribution is the one idea worth keeping, and its demo cohort is this repo’s clearest example of concordance inflation), Pathology-CoT (companion code for a Nature BME agent paper; not adopted — no licence at all, a sixth of the advertised dataset, and bound to one viewer’s logs — but its behaviour discretisation thresholds are worth reimplementing and its released per-slide results file is the rarest thing in this list, because it made the paper’s own numbers checkable and they did not reconcile), askLLM (an LLM Q&A interface inside jamovi, from the ClinicoPath collection; not adopted, but the best-measured example here of grounding suppressing hallucination — its author published his module’s invented jamovi menu paths verbatim, sent the real scanned menu catalogue instead, and went from at least three structural fabrications to 18 of 18 references matching exactly. The same trick, and the mechanical check it enables, is what LLM Report-Quality Checking should try next), KRONOS (the published spatial-proteomics foundation model behind CORAL — 47M patches, 175 markers, 11 external cohorts, and not adopted because there is no multiplex imaging here. Read it for one idea: a DINOv2 transformer with a 512-slot marker embedding, so a channel is identified by which marker it is rather than by its position. That single change is the whole of “panel-agnostic”, and it bounds the claim to markers the model has already seen), CORAL (Mahmood Lab’s spatial-proteomics pipeline, released July 2026 and not adopted — no multiplex imaging here to run it on. Worth knowing for three transferable decisions: six encoders behind one flag on identical preprocessing, an editable marker map re-validated at the start of every stage rather than treated as preprocessing, and tissue masks written as GeoJSON specifically for hand correction in QuPath), MouseTracks (desktop input-heatmap tool, actively maintained and not adopted — it records screen pixels rather than slide coordinates and discards visit order, so it cannot answer a reading-behaviour question; the two-property test that rejected it is Reading-Behaviour Capture), VALIS (the published serial-slide registration package, MIT, dormant since 2025-06 but finished; not adopted only because no live project needs registration today — it is what to reach for when that changes, it displaces the pairwise tiatoolbox recommendation for a series of stains, and its public warp_xy is the missing mechanism for carrying a QuPath annotation between stains instead of redrawing it. Read it for one caution too: the per-pair error table it advertises is measured over the very keypoints the transform was fitted to, so it diagnoses improvement and cannot certify correctness), elastix (the ITK registration engine from UMC Utrecht, Apache-2.0 and the most vigorously maintained tool in this list — 203 commits in the trailing year against VALIS’s dormant 13 months. Not adopted, and it is not a third option beside the two above: it has no whole-slide input of any kind and its 2D support is float-scalar only, fixed at compile time. It earns a page for the one thing this whole cluster lacked — transformix -def warps held-out points through a fitted transform, which is an independent registration error rather than the residual over its own fitted keypoints that VALIS reports, and -jac detects a folded deformation with no ground truth at all. So the acceptance-threshold question on Cross-Stain Registration moves from “no mechanism exists” to “nobody has placed the fiducials”), Valis-GUI (its PyQt front end, not adopted, and the sharper lesson of the pair — on the branch you get by cloning, the Register button’s only call into the backend is commented out while the line setting the state to complete is not, so the interface reports a finished run that never happened; the developed code sits on a branch that has diverged from the default rather than advanced past it), OncoLens (from the same group and the same author as the two above, and out of domain — it fits a growth-death ODE to serial RECIST lesion measurements and plots them against a treatment timeline for a tumour board, so there is no slide, image or report anywhere in it. Recorded only because neither its name nor its description says that, and because it carries a live root database password wired to a button on its home page, in its first commit and never removed. It was deliberately not added to QuPath Tooling: it does not belong in the slide-tooling index).
Teaching and QuPath extensions — QuPath Atölye (the Turkish QuPath course: 13 modules and 61 appendices, publishing as 79 pages, plus a DOI-archived OSF data package) and its packaged form QuPath Atölye Extension (85 one-click modules — mitosis, IHC scoring, stain QC, foundation models, anonymisation), plus QuPath Patoloji Atlası Extension (streams the public atlas into QuPath as DZI, and carries a blinded-reader-study instrument).
Literature and publishing — Bibliometrics — Who Cites Who, WHO CNS — Who Cites Who (the WHO CNS citation analysis; the most methodologically careful project here, and the source of Coverage Bias), Patoloji Atlası, Pathology Atlas Pipeline (the code that publishes the atlas; carries an unpushed anonymisation fix worth acting on), ParaPathology (seven years of my own notes, public and unlicensed; its largest section is statistics and bioinformatics, and nothing in this wiki cites it yet), Awesome-AI4DigitalPathology (an outside curated index of 453 computational-pathology works whose fifteen sections map almost onto this wiki’s own, which is how the two areas missing here were found; adopt the list, ignore the literature skill it bundles — eleven of that index’s fields are empty in all 500 records, by construction rather than backlog).
Known gaps
These recur across pages and are worth fixing as a batch rather than one at a time.
No scanner, magnification, or cohort size is recorded for most AI projects — but one is now fully documented. PinkKidney closes this for itself:
cohort_metadata.csvrecords vendor, estimated magnification and µm/px for all 356 slides, and the cohort is 44 patients across three scanners. That is the template, and the extraction script is reusable.Narrowed 2026-08-10: it is now two projects, not three. Liver Tru-Cut — Tumour Origin AI records scanner, cohort size and magnification (10× at 224 px) and its own page says so explicitly — this entry had been sending someone to redo finished work. The remaining work is pointing the script at Paige Prostate and Aiforia Breast, which still record none of it.
An inventory of Memorial WSI Share would still answer both at once; ScanTools plus
large_imagewould do most of the crawl read-only. It is not only a documentation gap: Mitotic Count shows that scanner resolution is what makes an area-calibrated measurement possible at all, so losing it costs a diagnostic capability and not just provenance. A second reusable route exists on the liver cohort: hepatocyte-app readsopenslide.mpp-xper slide as part of its pipeline, so that machinery is already running on the same drive.No validation strategy recorded for most AI projects, and no external validation for any. The second half of that headline still holds everywhere and is the real gap; the first half has moved. Corrected 2026-08-10: Paige Prostate and Aiforia Breast record no validation strategy at all, but Liver Tru-Cut — Tumour Origin AI no longer belongs in that list — it reports cross-scanner transfer (train on one scanner, test on the other, ICC-corrected), which is a stated strategy and a more interesting one than most, because it uses the two-scanner cohort as the validation axis rather than treating it as noise. It still has no outside cohort, so it stays inside the headline’s second half. PinkKidney is the exception on the internal side and the sharpest illustration on the external one: verified patient-level 5-fold cross-validation, a passing label-shuffle control, colour-quartile-stratified scoring and ComBat batch correction — and still a single institution with no outside cohort. It is now the project where the internal controls are strong enough that the missing external test is the only thing standing between it and a publishable claim. See External Validation. There is now a concrete route rather than an aspiration: AIDA Data Hub publishes annotated Swedish cohorts free of charge, and the cost is a PhD-holding applicant plus an institutional signature rather than a collaboration — but it holds nothing renal, so it does not yet serve PinkKidney specifically. A second route is now named rather than assumed: Federated Learning in Pathology is what this question becomes if what is wanted is a multi-centre model rather than a multi-centre test set. The ordering between them is not close — AIDA costs a signature, federation costs a partner institution plus sustained compute and maintenance at every site — so AIDA is exhausted first. Which of the two is actually wanted is recorded nowhere here, and that unanswered question blocks both.
No accuracy evaluation for Report Text Extraction, despite it defining cohorts downstream, and no human-reviewer validation for LLM Report-Quality Checking. A cheaper measurement is missing before either of those: no project here records what fraction of cases its model or extraction step actually returned an answer for. Both of these can fail silently and drop a case from the evaluation, and the cases that break a parser are the unusual ones — see Model Abstention. Coverage needs no new data and no reviewer, so it is the first of the three to close.
sources/papers/now holds 20 notes (count read off the directory on 2026-08-23; the nineteenth,chauveau-2025-dicom-to-svs.md, arrived 2026-08-16 in another batch), not the four this entry used to claim. Roughly half were read in full — the open-access Stain Normalisation benchmark, the MultiSurv paper behind Multimodal Fusion, the pathology-CoT proof, and the 32-model Encoder Benchmarking study — while four remain abstract-only behind Elsevier and Wiley paywalls. The reading-notes table inindex3.qmdis still an unfilled template, so the literature side of the wiki is shallower than the note count suggests. Two routes around a paywall have now been used successfully and are worth reusing: reading a paper’s released source code in place of its Methods section (the TG-HEM cell-detection note), and reading the companion repository when the article itself is $39.95. The opposite failure also has a precedent worth remembering — an accepted manuscript can be complete in the main text and still ship none of its supplementary data, which is where the 2026 benchmark keeps essentially all of its inferential statistics. (That instance has since resolved: the supplement is served on the article page and was filed beside the note on 2026-08-23, unreviewed — see Encoder Benchmarking. Whether the files were there all along is unknown; nature.com was unfetchable from the sessions that would have checked.)The largest untapped source is now identified: ParaPathology holds 360 markdown files of my own notes, of which roughly 100 sit in statistics, bioinformatics, computational pathology and bibliometrics — this wiki’s core domains — and not one of them is cited anywhere here. That is a bigger and cheaper win than reading more outside papers, because the material is already written and already mine. The obvious first pass is its 64-file statistics section against Survival Analysis Workflow, Descriptive Tables and Concordance Index.
sources/notes/holds one captured resource and no actual notes, thoughecosystem/ecosystem.qmdcontains substantial raw Turkish notes on imagebank architecture and anonymisation tooling that would file well there.No survival model in the group has a stated evaluation protocol. jsurvival implements ML survival methods, Survival Analysis Workflow records the gap, and Concordance Index now sets out what the protocol has to decide. Which concordance variant the module reports is unrecorded and decides whether its non-PH options are being evaluated correctly at all. Reading SurvivalNet sharpened this rather than closing it, and added three things the protocol must now settle: report concordance within any strong prognostic stratum and not only pooled; state the tie convention, since a null model scores 0.0 rather than 0.5 under one common implementation; and exclude treatment-received variables from prognostic models, which two evaluated repositories both got wrong.
No interpretability story for any group ML model. jsurvival’s random survival forests and gradient-boosted models report no feature importance at all, and Gradient-Based Feature Attribution now records what the choice involves. This is the twin of gap 6 — the same models lack both an evaluation protocol and a way to say what drove them.
An identifier mapping is sitting in version control, and nothing checks for that. PembeBobrek commits a 74-row accession-number-to-pseudonym spreadsheet, added in that repository’s initial commit. The repository is private and the associated site is access-gated, so this is a governance problem rather than a disclosure — but it is unresolved, it predates every other commit there, and De-identification now carries it as the worked example of a failure that page had only described in the abstract. The generalisable fix is a pre-commit check on column names rather than value patterns, because a regular-expression sweep for identifier-shaped strings passes this file cleanly.
Two things sharpen this. A second instance turned up in QuPath Atölye: its committed
handson/project.qpprojnames one slide in the shape of a hospital protocol number, where three other slides in the same file are pseudonymised — the rule on QuPath Tooling about not committing.qpprojfiles, broken in the group’s own teaching repository. Bounded: the repo is private (re-verified unauthenticated 2026-07-30),images/is gitignored so no pixel or label data is committed, and the string does not reach the published site — re-tested after an intervening site regeneration, not carried forward. Note the fix is two files, not one — the same string is inproject.qpproj.backup. Still unfixed as of 2026-07-30, and the risk has moved forward: the OSF package’s README asserts every shipped slide is anonymised, which is true only because the HER2 module has not shipped yet. See De-identification Release Gating for why that makes a release gate the better first build than a commit hook. And the framing should change: the anonymisation wizard in QuPath Atölye Extension states the mapping-key rule explicitly, under a heading titled scope and limits, honest. So the knowledge is documented and taught inside the group’s own material — what is missing is not understanding but a check that fires at commit time.A third instance, and the one that defeats the proposed fix. Digital Pathology Drafts tracks ten photographs of slide racks in which the labels are legible — institution, accession numbers in a sequential dated format, block numbers, dates — plus 2D barcodes encoding the same values. Private repository, so again governance rather than disclosure. But note what it does to the plan above: a pre-commit check on column names catches a spreadsheet and a regular-expression sweep catches a string, and neither sees anything at all inside a JPEG. The check that would actually have caught this is a rule about file types — photographs of labels, macro images and slide-label crops do not belong in git — rather than a rule about content. That is easier to enforce, not harder, and it is the version worth writing.
And it is not three instances but seven — this is the estate’s normal state. Reading Digital Pathology Drafts on 2026-07-27 added four more, all in private repositories, so all governance rather than disclosure, and all unresolved. GrandQC-QuPath commits
project.qpprojand its.backup, each mixing 19 properly anonymised slide references with 33 accession-shaped ones — inconsistent de-identification inside one committed file, and the second breach of the.qpprojrule after the teaching repository above, again two files rather than one. A Sectra extension’sREADME.mdcarries an accession-format identifier in its example command paths across all three of its commits. metadata-qupath’s committed cohort CSVs list 107 slide filenames embedding scan dates and scanner-assigned codes, which is a cohort mapping in all but name. And a vendored MONAI Label sample app retains a runtime log naming a local slide path and about a dozen slide identifiers.Two conclusions the individual cases do not support alone. The rule has to be about file types and paths, not content —
*.qpproj*, label and macro photographs, logs, exported metadata tables — because four of the seven are invisible to any content scanner, and one.gitignoretemplate shared across these repositories would close most of it. And the failure is not ignorance: the same estate pseudonymises correctly toANON…form in at least four places, and QuPath Atölye Extension teaches the mapping-key rule explicitly. The gap is entirely between knowing and checking.An eighth instance, 2026-07-31, and the first one outside a personal repository. GrandQC Quality Study is a MemorialPath organisation repository whose
.gitignoreis a single line,*.pth. Of 220 tracked files, 46 underexamples/carry filenames in the laboratory’s accession format, and the same identifiers appear inside 44 tracked files — root,analysis/,investigation/,archive/,docs/reports/and the rendered reports. Private, so governance rather than disclosure, like the seven before it.It matters for two reasons beyond the count. It is institutional rather than personal, so the audience is a laboratory rather than one person, and the norm it sets is the organisation’s. And it is the cleanest possible case for the file-type rule concluded above: one
.gitignoreline is doing all the work here, and a shared template would have caught essentially the whole of it before the first commit. Nothing about this instance is new — which is the point. Deleting the files does not undo the history.Two corrections to the first draft of this entry, both from checking rather than assuming, and both narrowing it.
case-slide-number.xlsxwas described here as a case-number-to-slide-number crosswalk and so a re-identification key; it is nothing of the kind — a monthly aggregate volume table, 58 rows, no individual identifiers. And unlike the third instance above, the committed JPEGs are tissue-only QC overlays with no legible label, barcode or text in the pixels, so this instance is a filename-and-table-cell exposure only. The general lesson holds and is worth stating: a filename that sounds like a mapping table is not evidence that it is one, and the file has to be opened.Separately, and not about patients or licences:
LOPcommits publisher access tokens, and imagebank commits a MONAI Label API key.The imagebank half of that sentence was corrected on 2026-07-31 by reading the repository directly rather than through its parent, and the corrected version is the more useful one. It is not “across its whole five-commit history” — the key appears in three of five commits, and the operational configuration was properly remediated: the compose file now reads an environment variable. What survives is narrower and stranger. The literal key is still at HEAD in three tracked documentation files, plus a fourth copy in a gitignored MONAI log that no history rewrite would reach — and the two security documents asserting it was removed certify that with a
grepover a non-recursive*.mdglob that never descends into the directory the copies are in. The check therefore passes unconditionally. It is the same pattern this list already records for OpenMed’s privacy parameters — a control that cannot fail manufactures the evidence of its own success — arriving independently in an unrelated repository, which is what makes it a pattern rather than a slip. Rotation remains the only remedy.The admin password is the larger and wholly unremediated part, and it was also recorded wrongly at first: it is not a stock Digital Slide Archive quickstart credential but one bespoke to this deployment, present from the initial commit, in 37 tracked files at HEAD — including both
.env.exampletemplates, which ship it as a working default rather than a placeholder.One encouraging note against the eight instances above: imagebank’s 119 tracked files were scanned and carry no accession-format strings, slide filenames, or label images. It does not add a ninth patient-data instance — its problem is credentials, not patient data.
A third credential instance, 2026-08-03, and it breaks this entry’s organising claim. Everything catalogued above is in a private repository, which is why the entry has been able to say each time that the problem is governance rather than disclosure. OncoLens is public and MIT-licensed, and it carries a hardcoded MySQL root password in live code wired to a visible button, present since its first commit. The host is
localhost, so what is exposed is a personal-looking password published to the world rather than access to a running database — but “governance, not disclosure” no longer describes the whole list, and it should not be repeated as though it does.Two things follow that the tally alone would hide. It is not a group failing. Eight of the nine instances are ours because ours is what gets read here, and the first outside repository examined at source level produced the same class of defect in a worse variant — so the estate’s record reads as the normal state of research code, not as local carelessness. And it is evidence for the file-type-and-path rule concluded above rather than against it: a
.gitignoretemplate catches none of this, because the credential is inside a.pyfile that genuinely belongs in the repository. Credentials need a secret scanner in the commit path; identifiers need the file-type rule. They are two controls, and this list has been treating them as one.Rights and release steps are an afterthought on repositories that are already public. Three instances, none of which risks anyone and all of which are cheap to close. hepatocyte-app has no licence file at all, while QuPath Hepatocyte Extension — which depends on it entirely — is Apache-2.0-intended, carries Zenodo citation metadata, and ships a QuPath
catalog.jsonfor public installation whose advertised JAR returns 404 because the release was never cut. That extension’sLICENSEalso differs from the canonical Apache text in four operative sections, which is why GitHub reports it as unrecognised. And ParaPathology is unlicensed against an explicit invitation to fork. The pattern is the same each time: the work is done and published, and the paperwork that makes it usable by anyone else is skipped.Settled on 2026-07-27: third-party material is referenced by URL rather than copied. Four of the group’s own public repositories carry no licence file — a one-line fix each, Serdar’s choice, not investigated further per
AGENTS.md§8.The licence problem is a template, not a series of accidents. The
LICENSEfiles in QuPath Hepatocyte Extension and QuPath Atölye Extension are byte-identical (md5f4ce3d08…), both carrying the same four alterations to the operative Apache text. A depth-3 scan ofD:/andK:/found exactly those two copies, so the spread is bounded — but the fix is to replace the template and re-check anything scaffolded from it, not to patch two files. Encouragingly, the release half is not a systemic problem: the same owner cut thirteen working releases on the workshop extension and a clean one on QuPath Patoloji Atlası Extension, which is MIT with a canonical licence, a resolving catalog and a live DOI — that repository is the template the other two should copy.Read alongside Pathology Atlas Pipeline, this stops being one repository’s slip and becomes the real gap: de-identification controls exist across the group and nothing verifies any of them. That pipeline’s anonymisation is on by default and fails open in the published version — on failure it warns and publishes the original slide, label image and all — and its test suite covers everything except the anonymisation path. Here the pseudonymisation was done correctly and the key was committed beside it. Two different projects, two different failure modes, one shared cause: no check ever asserts that the de-identification actually happened. That is one small test and one pre-commit hook, and it is worth more than any further tooling comparison.
This now has a page, a reference design, and a sharper specification of what “verify” has to mean. De-identification Release Gating states the four properties a gate needs, and the fourth is the one every implementation skips: re-measure the bytes being released, not an earlier version of them. OpenMed is the evidence for that being the hard part rather than a pedantic one — it is the most careful implementation of this pattern reviewed here, with a tamper-evident evidence artifact, a non-zero exit code and mandatory column classification, and it still carries the earlier measurement forward instead of recomputing it on the released rows. The work remains one test and one pre-commit hook; what changed is that both now have a worked model to copy and a named failure mode to avoid.
Pages get written and then not wired in, and the link checker cannot see it.
wiki-check.mjsreports 0 broken links and 0 collisions across 151 pages and 49 book chapters (re-run 2026-08-03), which is the state to be in — but link validity is not link presence, and a page nothing points at is invisible whether or not every link in it resolves. Four pages arrived in the repository on 2026-07-31 with no index line and no journal entry: Cervical Cytology Screening, Federated Learning in Pathology, Slide Metadata Extraction and Awesome-AI4DigitalPathology. They are listed above as of today, their journal entry has since been written up, and the four project and concept pages that this page alone reached are now linked from the topic pages they belong beside.The paper-note half of this entry is closed. It read, until 2026-08-03, that eleven of the fifteen notes in
sources/papers/were named insources:frontmatter and wikilinked from nothing. All twenty are now linked from at least one page, and--gapsreports nothing unreferenced anywhere in the wiki. The habit that closed it is worth keeping rather than celebrating: Siebers 2026 — The Dutch Nationwide Pathology Databank (Palga) was wikilinked from all four pages it feeds as it was written, which costs nothing, where the eleven became a backlog precisely because linking was deferred. It has held: the sixteenth note, Aust 2010 — Serrated Polyp Diagnostic Criteria (German consensus) (2026-08-12), was linked from both pages it feeds before the batch closed, so the count of unlinked notes stayed at zero rather than starting a new backlog of one.This entry is now closed on both halves. The book chapters carry
[[wikilinks]]too — 37 of them, added 2026-08-03 — and for a few hours that was a blind spot, becausewiki-check.mjsread onlywiki/andsources/. It now walks the.qmdtree as well: 49 chapters are under the gate, a broken chapter link fails the run rather than surfacing later as a CI build warning, and the extension was proved by planting a bad link and confirming a non-zero exit rather than by reading the diff. Chapters are treated as link sources only, so the connectivity lists above still measure wiki-internal linking; a page the book reaches and no wiki page does now appears under its own heading.All 66 project pointer pages are reachable from the book as of the same day — the book gained a new External Tools Evaluated chapter carrying the third-party evaluations, which had no natural home in any existing chapter.
The backlogs are closed; the mechanism is not, and it recurred the same day this entry said so. OncoLens was added 2026-08-03 and sits on the index-only list as of 2026-08-10 — the only page there. Its own How it connects section is good and names three destinations, so this is not a page written carelessly: it links out and nothing links in, which is precisely the asymmetry
--gapsexists to surface and the one an author cannot see from inside the page they are writing. Fixed in this pass by adding the inbound links from De-identification, Valis-GUI and Survival Analysis Workflow. The durable lesson is that “wire the page in” means both directions, and the outbound half is the half that feels like it finished the job.One narrow limitation is left, measured rather than guessed. The checker strips four-space-indented lines as code blocks, which also hides links written in the indented continuation of a numbered list — the shape this Known gaps section itself uses. Across the whole corpus that hides exactly one link today, and it resolves. Dropping the rule was tested and would introduce no failures, but it was left alone: the trade is between a false positive from a genuine indented code block and a false negative here, and changing an enforcement script on the strength of one same-day measurement is not worth it. Worth revisiting if a broken link is ever found hiding in this section.
Nothing detects a page whose sources moved on without it, and on first measurement that describes half the wiki. Added 2026-08-10. Every page carries
updated:and asources:list, so the comparison is available and trivial: has any file insources:been committed after the page’s ownupdated:date? Run for the first time today, it flags 35 of the 69 pages inwiki/concepts|methods|datasets/.That number is a candidate list, not a defect count, and the distinction matters more here than anywhere else on this page. The signal has a large and obvious false-positive mode: a source touched for a typo, a frontmatter bump, or an added cross-link invalidates nothing, and this very pass created several such hits by adding one link to Valis-GUI. But it is not noise either — the spot-check was
meddecide, whose 2026-07-26 commit was a full refresh from source, and three statistics pages cite it while predating that refresh.The reason this matters is that it is the one staleness question the existing tooling cannot ask.
wiki-check.mjsproves links resolve and, since 2026-08-03, that pages are reachable — both are structural. Neither can notice that a page’s argument now rests on a source that says something different, which is the failure the “rewrite from sources rather than patch” rule exists to prevent and the only one with no mechanical support at all.Deliberately not acted on in this pass: rewriting 35 pages on a signal whose precision is unmeasured would be worse than leaving them, and re-deriving a page from sources is the expensive operation in this repo. The cheap next step is to make the signal available rather than to obey it — a
--driftmode onwiki-check.mjs, reporting page/source pairs and explicitly labelled advisory, would cost little and would let the list be worked down by judgement over several passes. Until then the 35 are unexamined, and that is the honest state.
How to use it
- Put a PDF, note, or link into
sources/inbox/. - Say “process inbox” — the item gets filed, wiki pages written or updated, links added here, and the change logged in
journal/. - Ask “what do I know about X?” any time, and you get an answer with file paths cited.
- Say “find gaps” to regenerate the list above.
Links are written in Obsidian’s double-bracket style and resolve across wiki/ and sources/projects/. On the site a Lua filter turns them into real links using each target page’s title; a link to a page that does not exist yet shows as marked plain text and prints a build warning, so gaps are visible rather than silent.
The site rebuilds itself — a GitHub Action renders on every push and publishes the result, so no local quarto render is needed. See HOW-TO-USE.md at the repo root.