Skip to content

Repo tidy-up from 2026-09-28 feedback (part 8/9) - #22

Open
s28ale-maker wants to merge 14 commits into
pr-07-planning-pubmedfrom
pr-08-tidy-up
Open

s28ale-maker wants to merge 14 commits into
pr-07-planning-pubmedfrom
pr-08-tidy-up

Conversation

@s28ale-maker

Copy link
Copy Markdown
Collaborator

Part 8 of 9 in a stacked series (#15 → #16 → … ). Base is pr-07-planning-pubmed, so this diff shows only this part's 14 commits. Merge the earlier parts first; this PR then retargets toward main.

Summary

Commits 2dce48c..77ae834: the tidy-up you asked for in your 2026-09-28 feedback. The items to discuss are collected in the agenda for the 12 Oct 2026 meeting (docs/planning/2026-10-12_meeting_summary.md).

  • Phase 1, repo layout: the resolver-experiment summaries from part 6 (.md/.tsv/READMEs) move to archive/2026-09_resolver_experiments/, and their large generated JSON outputs (matcher_evaluation.json, regression_triage.json, audit_data.json, …) are removed. That accounts for nearly all of the ~735k deleted lines. The archive README gives the git show command to recover each removed file. Also removes Notes.md and lists every reports/ file.
  • Phase 2, docs: a shorter README, docs/ pages, folder READMEs, and file-placement rules. The soulcap-cl-matching skill now records decisions in mappings/curated_mappings.tsv.
  • Phase 3: specific reasons for withheld markers, a CD3/CD8 decision brief, and a draft of feedback for SOULCAP.
  • Phase 4: soulcap-resolved lists cell types whose markers all resolve to PRO.
  • Phase 6, literature: a structured evidence table with full-text quote verification, then cleanup. The cleanup applies approved replacements, removes fabricated rows, replaces a spliced Tcm/Tem quote, and classifies application studies.
  • Phase 9: the meeting agenda and its follow-ups, including a note that the CCR7 evidence has no SOULCAP row to attach to.

Test plan

Checked in isolation with the same steps as CI (uv sync --frozen --extra dev):

  • uv run pytest: 598 passed, 96.5% coverage
  • uv run ruff check ., ruff format --check ., and uv run mypy src/soulcap_cl_mapping pass
  • CI passes on this PR

🤖 Generated with Claude Code

s28ale-maker and others added 14 commits September 28, 2026 12:26
Per Dr. Osumi-Sutherland's feedback, reports/ now holds current outputs only.

- Archive the Sept 2026 resolver experiments (evaluation-alias/-legacy,
  resolver-refinement, regression-triage, regression-followup, baseline
  JSON, enhanced batch TSV) under archive/2026-09_resolver_experiments/,
  with a README summarizing what they showed. Keep only README/.md/.tsv
  summaries; the large JSON/HTML (~24 MB) is recoverable from 4dfc726 and
  f1e0772, as the archive README documents.
- Drop 4 byte-identical legacy .md/.tsv copies (SHA-256 checked) and point
  their links at evaluation-legacy/.
- Move planning docs to docs/planning/ and reports/literature/ to literature/.
- Add reports/README.md (one row per file: producer, curated vs generated).
- Add the Notes.md sheet link to README and its quick reference to
  MARKER_SYNTAX.md (Notes.md itself not yet removed).
- Update paths in CLAUDE.md, README, ROADMAP, skills, curated TSVs (path
  prefix only), the CD8 review_ref, and let the audit dashboard link
  literature/ and archive/ paths.
- Add tests/test_doc_links.py: all relative links in hand-written docs resolve.

No mapping decisions, CL IDs, quotes or citations changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Notes.md removed (content was merged into README and MARKER_SYNTAX.md in
  2dce48c); drop its CLAUDE.md layout row, which the link check caught.
- reports/README.md now links every file by name (matcher_evaluation and
  marker_resolution_audit .tsv/.json were only shorthand).
- Test that reports/README.md lists every file in reports/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (Phase 2)

Addresses Dr. Osumi-Sutherland's "Docs" to-do from the 2026-09-28 meeting.

- README rewritten to 172 lines: aims, Mermaid pipeline, key files (naming
  the token->PRO registry and the resolution policy/audit), mapping
  machinery (deterministic CLIs vs agent skills vs human review vs
  reproducibility), all 7 skills, outputs, quick start, layout.
- Detailed README sections moved verbatim into docs/setup.md,
  docs/pipeline.md, docs/marker_resolution.md and
  docs/matching_and_evaluation.md (links rebased).
- New folder READMEs: docs/, archive/, literature/, marker_mappings/, src/.
  marker_mappings/README.md explains how marker_protein_gene.csv,
  marker_resolution.tsv and marker_resolution_audit.md relate, and what
  registry_sha256 is, with a command that recomputes it.
- CLAUDE.md: "Where things go" placement rules and an updated layout table.

No mapping decisions, CL IDs, quotes or citations changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….tsv

The skill still told agents to append entries to
reports/candidate_cl_mappings.md, which is now generated by soulcap-sssom
from mappings/curated_mappings.tsv. Step 4 now adds/edits a registry row
(with column guidance: permanent subject_id, review_status always
needs_review, no invented citations) and runs soulcap-sssom, and says never
to edit the generated report. CLAUDE.md's Skills entry updated to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…PRO (Phase 4)

For Dr. Osumi-Sutherland's "unique list of CL matches with PRO mappings for
all markers". New resolved_types.py / soulcap-resolved writes
reports/fully_resolved_cell_types.tsv, fully_resolved_cl_terms.tsv and
fully_resolved_summary.md.

- Strict: every token in all four marker columns is single_protein/allow;
  lenient: the two Required columns only. live/ is never counted; syntax
  errors block resolution.
- Profiles with an empty Required phenotypic column are excluded: 30 rows
  are defined only by their parent gate, and their generic exclusion panel
  alone would otherwise count as "resolved".
- Marker evidence uses the same policies (--marker-map mode). Descriptive
  only: no confidence label, no decision changes.

Current result: 0 strict, 0 lenient. CD3 (withheld) blocks 71 cell types and
is the only blocker for 16; syntax errors are the only blocker for 20.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…SOULCAP feedback draft (Phase 3)

- marker_resolution.tsv gains failure_category, specific_rationale,
  evidence_level and next_action for all 22 withheld tokens, with PRO/GO/
  CHEBI IDs checked in OLS4 and CL usage counted from asserted axioms. The
  original policy columns and fingerprints are unchanged; no token's
  allow/withhold status changed. The loader validates the new enums.
- resolution_audit.py adds a "Why each withheld marker is withheld" table.
  Regenerating the audit also picks up the Sept 18 whole-CD8 surface rule,
  which the committed Sept 11 report predated (CD8: 318 -> 39 axiom rows).
- docs/marker_resolution.md: "Decisions for David" on CD3 and CD8 (options,
  exclusion vs inclusion gates, OMIP-069 clones quoted verbatim), other
  withheld tokens, and the open parent-gate inheritance question.
- Findings: 8 withheld tokens are fragments of spaced names (TCR V delta 1+,
  MR1 Tetramer+); PR:000025402 is CD8alpha-beta only; PR:000001483 (CD16)
  is defined by the mouse Fcgr3 gene; PRO/CL treat CD15 as the FUT4 enzyme.
- reports/soulcap_feedback.tsv (draft, not sent): 28 cells in 24 rows with
  syntax problems (23 with a validated suggested fix) and 30 rows with an
  empty Required phenotypic column.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e, CL candidates

Additions requested before Phase 6.

- Clone targets verified and quoted exactly: SK7 = CD3 epsilon and SK1 =
  CD8 alpha (Fisher listings for BD 557832 / 340584), 3G8 = CD16a and CD16b
  (PMC12606087; Fleit 1982, PMID 6808506), L243 = HLA-DR not DQ/DP (BD
  335796; chain specificity not verified). CD16 brief: the shared
  (CD15-|CD66b-) CD16- exclusion panel mirrors SOULCAP's CD16hi neutrophil
  row and neutrophils carry CD16b, so "CD16a only" is likely wrong there.
- Hypothetical (scratch only): CD3e + CD8a + GO TCR/Ig complexes would give
  63 lenient fully resolved cell types; the code change needed (cl_pro.py
  SPARQL, marker_resolution.load ID/representation rules) is described, not
  made.
- CLAUDE.md: never write identifiers from memory; use uv sync --extra dev.
- MARKER_SYNTAX.md and soulcap_feedback.tsv: marker names must not contain
  spaces (general rule).
- cl_term_issues.md: CD16 (mouse-defined PR:000001483) and CD15 (FUT4) as
  candidates for David; not filed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ication (Phase 6)

- New literature_evidence.py / soulcap-evidence (migrate, verify, views).
- literature/evidence.tsv: 255 rows (188 distinct quotes, 52 markers, 35
  papers), one per (cell type family, marker, quote); a quote naming several
  markers gets one row per marker. Quotes copied exactly (a test checks every
  row against its narrative source line). 15 quotes that could not be placed
  mechanically are logged in evidence_unplaced.tsv, not guessed.
- verify: 161 quotes match Europe PMC full text exactly (whitespace and
  Markdown emphasis only), 48 do not (near-match or divergence point noted;
  never reworded), 46 have no open-access full text. Quotes from the WebFetch
  files (ilc, t_cell) start as unverified and are never "not_checked".
- Generated views in literature/by_cell_type/ and by_marker/; reviews/ index
  for review papers; cell_type_reviews template now cites evidence IDs.
- subject_id is left blank: Parent chains in the Sheet dangle, so cell-type
  assignment below family level is left to a curator.
- Narrative *_markers.md files stay in place until archiving is approved
  (skills and pro_marker_species_support.tsv cite them by path).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… archive narratives

Decisions from the Checkpoint 6 review:

- evidence.tsv gains candidate_subject_ids / candidate_status (unreviewed):
  SOULCAP cell types in the row's family whose definition uses the marker,
  by a documented mechanical rule (Parent-chain roots, FAMILY_ROOTS).
  subject_id stays blank. by_cell_type views list them as "candidate".
- source_type filled for all 255 rows: "review" where PubMed tags the paper
  Review (basis recorded), otherwise a proposed type with
  source_type_basis = proposed, for review.
- New verified status exact_except_trailing_punctuation (6 rows), kept
  apart from paraphrases. verify retries Europe PMC requests and no longer
  overwrites an earlier check result after a failed fetch.
- The 7 narrative *_markers.md files move to
  archive/2026-09_literature_narratives/; the 58 source_ref paths in
  pro_marker_species_support.tsv (path prefix only), gaps.tsv, evidence
  source_file paths, doc links and 4 skills (now reading evidence.tsv,
  preferring verified rows) are updated in the same commit.
- docs/marker_resolution.md: 63 described as an upper bound; eosinophil
  CD16 side note removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One-page summary: repo tidy, CD3/CD8/CD16/HLA-DR decisions with unlock
numbers (16 / 28 / up to 63), proposed "confident" definition, SOULCAP
feedback draft, parent-gate question, CL/PRO issue candidates, literature
evidence numbers. Phases 5, 7 and 8 on hold until after the meeting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anel_or_method type

Alex's decisions on the WebFetch-extracted quotes:

- 7 approved exact replacements added as new rows EV00256-EV00262 (copied
  from Europe PMC full text, all verified = yes); old rows EV00128, 129, 131,
  233, 234, 237, 255 kept unchanged with superseded_by. Views skip
  superseded rows.
- EV00253/254 removed: the extraction appended "CD27, CD28, CD45RA, CCR7"
  to a real sentence. Logged with reason and full original row in
  literature/removed_evidence.tsv.
- EV00127 and EV00144 replacements rejected; old rows stay unverified.
- EV00251/252: verification_note records that the paper uses both CD45RO+
  (Methods) and CD45RA- (Figure 4 legend, Results) for Tcm/Tem; the quote
  splices them. Replacement pending review.
- New source_type panel_or_method: Lal 2018 (OMIP-046), Finak 2016. None of
  the "other" papers are OMIP/panel papers.
- Th9 citation corrected via PubMed (PMID 32508847: Chen T et al. 2020).
- literature/README documents the " … " fragment convention, supersession
  and the removal log. Agenda literature numbers updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…enda numbers

- EV00251/252 removed (WebFetch spliced the CD45RA- and CD45RO+ definitions
  into one sentence not in the paper) and logged in removed_evidence.tsv.
  New exact rows from Gholizadeh 2026: EV00263 (Figure 4 legend, CD45RA)
  and EV00264 (Methods, CCR7), each noting the Results sentence that links
  the two definitions.
- The 15 remaining "other" papers classified as application_study
  (source_type_basis = curator); category documented in literature/README.
- Agenda: literature numbers updated (253 active rows, 170 exact) and
  evidence by source type added, noting thin review coverage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EV00265: the Figure 4 legend sentence (already EV00263 for CD45RA) also
names CCR7, so it gets its own CCR7 row, per the one-row-per-named-marker
rule. CD45RO is not a SOULCAP marker and is left out. Agenda counts updated
(254 active rows, 171 exact).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant