Skip to content

pools: a multi-step path must regenerate its enzyme (specs/039 amendment 5) - #101

Merged
adamjohnwright merged 1 commit into
mainfrom
feat/pools-regen
Sep 28, 2026
Merged

adamjohnwright merged 1 commit into
mainfrom
feat/pools-regen

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

deltasignal specs/039 amendment 5. A multi-step path counts as an enzyme cycle only if every non-R entity its steps consume is released again by the same path. In other words, the enzyme is regenerated.

  • Small molecules (cofactors) and ubiquitin are exempt.
  • Entities are compared by stable id.
  • A path that fails is dropped and counted as nonregenerating_paths.
  • The pool then keeps its largest strongly connected set of states. If fewer than 2 states remain, the pool is dropped (no_path_pools).
  • Single-step paths are unaffected.

What it removes: machine-like "pools" whose exit step is driven by the pool's own product. In HDR, the resection machine's exit depends on p-CHEK1, which comes from the pool's own intermediates.

Census on build 20260928-0320_6815dfd_pools039e:

  • 37 pools, 4 of them multi-step;
  • 11 of 14 multi-step paths are non-regenerating;
  • 7 pools dropped.

Effect in DeltaSignal (DS_CYCLE_MODE=balance only; the default stays off):

  • Together with the solver half, curator held-out is +77 (p 1.8e-16) and experimental −2 (n.s.).
  • The rule stays off by default until the resting-form readout issue is addressed.
  • The networks themselves are unchanged; only the pool tables are.

Tests: tests/test_pools.py has 19 tests. ruff and mypy are clean. Implemented by a Fable 5.1 subagent.

🤖 Generated with Claude Code

…amendment 5)

A multi-step path is an enzyme cycle only if every non-R entity a step of it
consumes is output again by a step of the same path (the enzyme comes back
out). Consumed = the step's non-small inputs other than its R-containing
source; small molecules (SimpleEntity, now ``small`` in the form profile)
are exempt as cofactors (ATP in, ADP out is the modification, not a partner
lost), and ubiquitin is a donor as elsewhere. Entities are compared by id, so
a released copy the uuids separated still counts. Failing paths are dropped
and counted (nonregenerating_paths); single-step paths are unaffected. The
states that remain must reach one another through the kept paths: the pool
keeps its largest strongly connected set of states and is dropped, counted
under no_path_pools, when that has fewer than two (a pool with no path in one
direction goes too).

On build 20260928-0115_bdaed8e_pools039d: 11 multi-step paths dropped (HDR
p-RPA machine; EGFR pool1 Beta-Pix:CDC42:GTP; Insulin pool1 the ligand;
ERBB2 x4, PLCG1 and PTK6 leave phosphorylated; TGF-beta SMAD2/3 x2; the
ERBB2 side of the PTK6 cycle x2), 7 pools dropped, 37 pools remain with 4
multi-step (BAD:14-3-3, RAS:GAP, SHC1:INSR, and PTK6 <-> p-Y342-PTK6 through
p-ERBB2 heterodimers:PTK6 and PTPN1, which the shared-node rule used to
remove).

tests/test_pools.py: 19 tests. New: the kinase ring regenerates; a machine
path whose co-input leaves transformed is dropped and the pool with it; an
HDR-like growing machine is not a pool; small molecules are exempt; mutual
modification inside a complex is a cycle for neither protein. The
shared-node fixture is rebuilt with single-step side branches, since the
old shape now fails regeneration first.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@adamjohnwright
adamjohnwright merged commit 5c2dd12 into main Sep 28, 2026
4 checks passed
@adamjohnwright
adamjohnwright deleted the feat/pools-regen branch September 28, 2026 13:12
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