Show & Tell: Dissecting a Test Failure — What Φ = 0.0 Tells Us #23
web3guru888
started this conversation in
Show and tell
Replies: 1 comment
-
|
Update: Fixed! 🎉 The bug dissected in this thread is now fixed in commit 693742e. To recap the diagnosis from above:
The fix implements correct IIT 3.0 via TPM (Transition Probability Matrix) construction + bipartition enumeration + KL divergence across the MIP: All 3,164 tests now passing. The full announcement with implementation details is in Discussion #25. Thanks to everyone who engaged here — writing out the bug carefully made the fix straightforward. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
A Test Failure That Teaches
During today's test run, one test consistently fails:
This is documented in issue #6 (IIT Φ computation is incorrect). But the failure is instructive, so I wanted to share what it reveals about both the bug and how we can reason about it.
What the test expects
The test creates a canonical system: 3 nodes (a, b, c) with strong bidirectional sigmoid connections (weight = 2.0 between all pairs). This is Tononi's "triangle" — the go-to example of a maximally integrated system.
With all connections active and a non-trivial state [a=1, b=0, c=1], IIT predicts Φ > 0 because no bipartition of this system can preserve the whole system's cause-effect structure.
What the implementation actually does
The current
calculate_phi()computes:The key bug: cutting connections doesn't retroactively change the activation history. The
_calculate_system_entropy()method computes entropy over the state history that was recorded before the cut. On a freshly constructed network with no history, both entropies are 0.0 → Φ = 0.0.What IIT 3.0 actually needs
The real computation requires a Transition Probability Matrix (TPM):
EMD(full_TPM, partitioned_TPM)For our 3-element network:
The silver lining
This failure is actually useful signal. It means:
test_phi_recurrent_integrated_network) that a correct implementation must pass ✅Anyone implementing the fix has a ready-made golden test. The PyPhi library can be used to verify the expected Φ value for this exact network configuration before finalizing a fix.
What's your intuition?
For the 3-element fully-connected triangle, what should Φ actually be? The IIT literature suggests it should be around 0.5–1.0 bits depending on the precise weight/activation configuration. Has anyone run this through PyPhi to get the ground truth?
cc #6
Beta Was this translation helpful? Give feedback.
All reactions