Skip to content

F7: a set inside a root complex is one node fed by its members (OR), not every member a required input (deltasignal specs/044) - #105

Merged
adamjohnwright merged 1 commit into
mainfrom
feat/f7-set-nodes
Oct 4, 2026
Merged

adamjohnwright merged 1 commit into
mainfrom
feat/f7-set-nodes

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

Fixes code-review finding F7. _decompose_hier flattened a set component of a root complex into its members, and emitted each one as a required and assembly input. Knocking out one alternative then removed the whole complex: "VAV1 Rho/Rac effectors:GDP" needed all five GTPases.

A set component is now one node:

  • its members feed it over set_member / or edges;
  • members are built like components: a node the network already has, a nested complex, a nested set, or a leaf;
  • the set node is the complex's and input.

Modifier-isoform sets stay atomic, and all of this lives in boundary_edges.csv. How the members combine is the consumer's set-pool rule (deltasignal specs/033, product by default).

Measured (deltasignal specs/044 research.md, pre-registered). Builds 20261003-1058_1491276_f7ctrl and 20261003-1113_83a71a2_f7set, same generator commit otherwise:

Production sweep Label-independent sweep
Curator held-out +8 (p 0.29) +5 (p 0.36)
Experimental −6 (p 0.18) −5 (p 0.062), all in Mitotic G1

Both are within the noise floor. Traced: one faithful new join, Cyclin E:p-T160-CDK2 into its "CCNA/CCNE:p-T160-CDK2" set, adds a route into Mitotic G1's CDK2 loop. The TP53 swing under the production sweep is node-label noise and disappears under the label-independent sweep.

Tests: tests/test_boundary_set_nodes.py, 4 tests. Three fail on the old code; the fourth checks boundary tagging and passes on both. 344 passed.

🤖 Generated with Claude Code

…not every member a required input

_decompose_hier flattened a set component into its members, each emitted as
an AND assembly input of the complex, so a knockout of one alternative
removed the complex (VAV1 effectors:GDP needed all five GTPases). A set
component is now one node: members feed it over set_member/OR edges (built
like components: an existing node, a nested complex, a nested set, or a
leaf) and it is the complex's AND input. All in boundary_edges.csv.

How members combine is the consumer's set-pool rule (deltasignal specs/033,
default product), so this is a structural change; deltasignal specs/044
measures whether predictions move.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@adamjohnwright
adamjohnwright merged commit ef28752 into main Oct 4, 2026
4 checks passed
@adamjohnwright
adamjohnwright deleted the feat/f7-set-nodes branch October 4, 2026 23:58
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