{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2608-05900","title":"CohortHijack: Robustness of Single Cell Annotation to Companion Cell Removal","arxiv_id":"2608.05900","date":"2026-08-06","proceeding":null,"authors":["Arash Vashagh","Yasmin Vashagh"],"abstract":"Many single-cell annotation tools refine an initial cell label using nearby cells or cluster-level voting. We study whether this refinement can be manipulated without changing the target cell. We introduce CohortHijack, a robustness audit that removes selected non-target cells from the query cohort while preserving the target expression profile, base prediction, and trained model. We evaluate random and structured removal methods, together with greedy, multi-start, and beam search, on PBMC3K and Paul15 using logistic regression and calibrated linear SVM classifiers. Structured removal was consistently stronger than random removal on Paul15. Multi-start search changed 24.33% of linear-SVM targets and 19.67% of logistic-regression targets while removing a small fraction of the cohort and keeping mean collateral changes below 0.4%. Ablations confirmed that the effect disappeared when neighborhood refinement was disabled. We also evaluated CellTypist majority voting, where independent predictions remained unchanged across all evaluations, but refined labels changed after small companion-cell removals. These findings identify query cohort composition as a target-preserving attack surface in single-cell annotation.","url_abs":"https://arxiv.org/abs/2608.05900","url_pdf":"https://arxiv.org/pdf/2608.05900","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2608.05900","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2608.05900"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/arashVsh/CohortHijack","reach":null}],"summary":{"ran":3,"ran_fixture":3,"ran_draft_wrong":1},"by_repo_kind":{"found_in_text":{"samples":7,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":7,"samples":[{"code_sha256_prefix":"01328ec8270251fc","entry":"AuditContext","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"01328ec8270251fc"}},{"code_sha256_prefix":"f81b0bceaa33adea","entry":"RefinementResult","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f81b0bceaa33adea"}},{"code_sha256_prefix":"45643f01e44e34f6","entry":"RemovalOutcome","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"45643f01e44e34f6"}},{"code_sha256_prefix":"4b813176e108d295","entry":"evaluate_removal","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"4b813176e108d295"}},{"code_sha256_prefix":"d6b50b7bb9b5ffad","entry":"greedy_worst_case_removal","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d6b50b7bb9b5ffad"}},{"code_sha256_prefix":"58aa4c1c788d62c5","entry":"refine_predictions","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"58aa4c1c788d62c5"}},{"code_sha256_prefix":"a15f11f0a19b9bd9","entry":"target_margin","repo":"arashVsh/CohortHijack","repo_kind":"found_in_text","path":"contextcell/audits.py","file_url":"https://github.com/arashVsh/CohortHijack/blob/HEAD/contextcell/audits.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a15f11f0a19b9bd9"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}