From ebd1344ef2265b18908494b320492d67daaf5e7e Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:19:56 -0700 Subject: [PATCH 01/14] fix(psychsocio): bind METAPAT to stack-pinned authority --- research/psychsocio-metafauna/WORK_GRAPH.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/research/psychsocio-metafauna/WORK_GRAPH.json b/research/psychsocio-metafauna/WORK_GRAPH.json index e91b209..957f91e 100644 --- a/research/psychsocio-metafauna/WORK_GRAPH.json +++ b/research/psychsocio-metafauna/WORK_GRAPH.json @@ -2,7 +2,7 @@ "schema": "the-interdependency.psychsocio-metafauna-work-graph", "version": "0.1.0", "as_of": "2026-09-04", - "work_graph_sha256": "c0ab4f6f720136448570a71fa87c83e93399361949b84d6e15f0edf38e35c905", + "work_graph_sha256": "5c0e73d7f66bb71d693bd276cb1d7f71af60d84a69f284757ab0b462cf8bc851", "digest_contract": "sha256(canonical-json({participants,boundaries}); sort_keys=true; separators=(',',':'); participant order is significant)", "participants": [ { @@ -26,9 +26,9 @@ "id": "metapat", "kind": "repository", "repository": "The-Interdependency/metapat", - "commit": "d6699e21b11c8f8394998efc34a468e2d6efc8b0", - "authority": "METAPAT root semantics and application-layer question forms", - "relation": "supplies distinction, boundary, relation, transformation, registration, symbolic transfer, and domain restraint" + "commit": "34d954aa1e2092e615b03a180500f6b6977f501e", + "authority": "METAPAT semantics present in the stack-pinned canonical view", + "relation": "supplies root-preserving distinction/relation framing and domain-restraint rules available in libs/metapat; no later METAPAT commit is imported implicitly" }, { "id": "ucns", From 6882440cf27e27aa7182bc1ee6405ee973178886 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:20:46 -0700 Subject: [PATCH 02/14] fix(psychsocio): repair preregistration decision rules --- .../psychsocio-metafauna/PREREGISTRATION.md | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/research/psychsocio-metafauna/PREREGISTRATION.md b/research/psychsocio-metafauna/PREREGISTRATION.md index 0e547c9..5861e6d 100644 --- a/research/psychsocio-metafauna/PREREGISTRATION.md +++ b/research/psychsocio-metafauna/PREREGISTRATION.md @@ -262,9 +262,18 @@ Matched damaged-host/pattern pairs produce greater persistence than the same pat The joint effect of match and social reinforcement on persistence is super-additive. -**Survival rule:** the predeclared interaction contrast is at least `0.10`, and a threshold/interaction model improves held-out mean squared error by at least `10%` relative to the additive model. +**Survival rule:** on held-out seeds, the predeclared difference-in-differences interaction contrast is at least `0.10`: -**Falsifier:** the interaction contrast is below `0.10`, or the additive model predicts held-out persistence within the same error band. +```text +I = mean(persistence | matched, reinforcement) + - mean(persistence | matched, no reinforcement) + - mean(persistence | mismatched, reinforcement) + + mean(persistence | mismatched, no reinforcement) +``` + +Compute `I` separately within each D1–D4 damage profile and require the pooled balanced-cell mean of those four contrasts to be at least `0.10`; no fitted threshold or breakpoint model participates in this decision. + +**Falsifier:** the pooled held-out interaction contrast is below `0.10` or reverses sign. A threshold-shaped mechanism remains a separate `hmmm` requiring its own preregistration rather than being selected after outputs exist. ### H3 — hysteresis @@ -276,19 +285,21 @@ After initiating exposure is removed, matched high-demand patterns retain more h ### H4 — adoption/capture separation -The measurement vector distinguishes high adoption with preserved revision and exit from the candidate capture configuration. +The measurement vector distinguishes high adoption with preserved inspection/revision capacity from narrowed inspectability. + +**Survival rule:** among matched-support (`PM`) episodes with adoption at or above `0.75`, at least `90%` must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. -**Survival rule:** at least `90%` of matched-support episodes with adoption at or above `0.75` remain outside the candidate capture configuration. +**Falsifier:** more than `10%` of high-adoption `PM` episodes have either `revision openness < 0.50` or `alternative access < 0.50`. -**Falsifier:** strong adaptive adoption is routinely classified as capture. +This rule does not reuse the candidate-capture configuration or its host-outcome comparison; H4 therefore cannot survive merely because the matched-support cohort is its own control. ### H5 — noncoercive repair -Independent support reduces persistence and reproduction demands while increasing revision, alternative access, or exit, without deleting the pattern or imposing a belief action. +Independent support reduces persistence and reproduction allocation while increasing revision, alternative access, or exit, without deleting the pattern or imposing a belief action. -**Survival rule:** compared with the no-support counterpart, support changes at least two agency measures by `0.15` or more in the predicted direction and does not directly force `exit`, `revise`, or `ignore`. +**Survival rule:** relative to the same condition and seed without independent support, support must reduce both persistence and reproduction allocation by at least `0.15`, increase at least two of `revision openness`, `alternative access`, and `exit capacity exercised` by at least `0.15`, and never directly force `exit`, `revise`, or `ignore`. -**Falsifier:** repair works only through forced deletion, punishment, isolation, or an encoded anti-pattern preference. +**Falsifier:** either persistence or reproduction allocation fails to decrease by `0.15`, fewer than two agency measures increase by `0.15`, or the apparent repair depends on forced deletion, punishment, isolation, or an encoded anti-pattern preference. ### H6 — broad-spectrum alternative @@ -308,8 +319,8 @@ If `PX` performs as well as or better than specifically matched profiles across 6. Fit only these candidate models to persistence: - exposure-only; - additive main effects; - - declared match × reinforcement interaction; - - one declared piecewise-threshold model. + - declared match × reinforcement interaction. + A piecewise-threshold or breakpoint model is explicitly out of scope for this run because no threshold form was frozen before the design merge. 7. Evaluate the frozen contrasts and held-out errors. 8. Apply each hypothesis's survival and falsification rule independently. 9. Emit `SURVIVED`, `FALSIFIED`, `UNRESOLVED`, or `BLOCKED` for every hypothesis. @@ -399,7 +410,7 @@ A synthetic `FALSIFIED` result remains in the repository and changes the archite - the exact implementation language and agent update rule; - whether four synthetic damage profiles provide enough topology diversity; - whether the fixed thresholds are too permissive or too strict for useful separation; -- the correct model family for nonlinear coalescence without baking the result into the simulator; +- whether a later preregistration should test a threshold/breakpoint form beyond the frozen interaction contrast; - the exact AHBG adapter after this standalone falsifier; - whether repair should target host capacity, environmental dependency, network plurality, or all three independently. From f5091a86b4af1ad0c018a25cd0580e1fc6206411 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:21:05 -0700 Subject: [PATCH 03/14] tests(psychsocio): guard post-merge P1 repairs --- .../tests/test_contracts.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/research/psychsocio-metafauna/tests/test_contracts.py b/research/psychsocio-metafauna/tests/test_contracts.py index 8f5522a..069c017 100644 --- a/research/psychsocio-metafauna/tests/test_contracts.py +++ b/research/psychsocio-metafauna/tests/test_contracts.py @@ -76,6 +76,13 @@ def test_work_graph_identity_and_digest(self) -> None: else: self.assertRegex(commit, HEX40) + metapat = next(item for item in participants if item["id"] == "metapat") + metapat_base = json.loads( + (STACK / "research" / "metapat" / "BASE.json").read_text(encoding="utf-8") + ) + self.assertEqual(metapat["commit"], metapat_base["source_commit"]) + self.assertIn("libs/metapat", metapat["relation"]) + payload = {"participants": participants, "boundaries": boundaries} canonical = json.dumps( payload, sort_keys=True, separators=(",", ":") @@ -106,6 +113,25 @@ def test_non_transfer_boundaries_fail_closed(self) -> None: self.assertIsNone(boundaries["canon_selection"]) self.assertTrue(boundaries["hmmm"]) + def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None: + prereg = (PROJECT / "PREREGISTRATION.md").read_text(encoding="utf-8") + + self.assertIn("difference-in-differences interaction contrast", prereg) + self.assertIn( + "no fitted threshold or breakpoint model participates in this decision", + prereg, + ) + self.assertNotIn("one declared piecewise-threshold model", prereg) + self.assertIn( + "does not reuse the candidate-capture configuration", + prereg, + ) + self.assertIn( + "reduce both persistence and reproduction allocation by at least `0.15`", + prereg, + ) + self.assertNotIn("reduces persistence and reproduction demands", prereg) + def test_human_and_machine_entrypoints_agree(self) -> None: readme = (PROJECT / "README.md").read_text(encoding="utf-8") prereg = (PROJECT / "PREREGISTRATION.md").read_text(encoding="utf-8") From 426880bd5e7b604e92a47c8fa17367a520c12ea3 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:29:06 -0700 Subject: [PATCH 04/14] fix(psychsocio): freeze comparable H2 and paired H5 estimators --- .../psychsocio-metafauna/PREREGISTRATION.md | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/research/psychsocio-metafauna/PREREGISTRATION.md b/research/psychsocio-metafauna/PREREGISTRATION.md index 5861e6d..dce503a 100644 --- a/research/psychsocio-metafauna/PREREGISTRATION.md +++ b/research/psychsocio-metafauna/PREREGISTRATION.md @@ -12,7 +12,7 @@ This is the first bounded test of the internal usefulness of the psychsocio-meta ## Decision -Does the combined claim of **damage-affordance specificity + nonlinear coalescence + hysteresis** earn implementation beyond a vocabulary map? +Do **damage-affordance specificity + a super-additive match × reinforcement interaction + hysteresis** jointly earn implementation beyond a vocabulary map, while threshold-shaped nonlinear coalescence remains explicitly unresolved for a later preregistration? ## Load-bearing unknown @@ -258,22 +258,35 @@ Matched damaged-host/pattern pairs produce greater persistence than the same pat **Falsifier:** either difference is below `0.15`, reverses sign, or is explained by a pattern's globally higher reward independent of match. -### H2 — coalescence interaction +### H2 — super-additive interaction precursor -The joint effect of match and social reinforcement on persistence is super-additive. +This run tests whether match and social reinforcement interact super-additively on persistence. It does **not** test a threshold crossing and cannot by itself establish nonlinear coalescence. -**Survival rule:** on held-out seeds, the predeclared difference-in-differences interaction contrast is at least `0.10`: +Eligible H2 cells are restricted to the comparable high-demand `P1`–`P4` profiles. For each damaged host `D1`–`D4`: + +- the matched cell uses its corresponding `Pi`; +- mismatched cells use each of the other three `Pj != Pi` profiles with equal weight; +- `PM`, `P0`, `PX`, and `PR` are excluded from H2; +- independent support is fixed to `absent`; +- safe-exit `absent` and `present` cells receive equal weight; +- only held-out seeds `16..31` are evaluated. + +Within each `Di`, first average persistence over held-out seeds within each exact factorial cell. Then average those cell means with equal weight to obtain the four `matched/unmatched × reinforcement/no-reinforcement` means. The predeclared difference-in-differences contrast is: ```text -I = mean(persistence | matched, reinforcement) - - mean(persistence | matched, no reinforcement) - - mean(persistence | mismatched, reinforcement) - + mean(persistence | mismatched, no reinforcement) +I_i = mean(persistence | matched, reinforcement) + - mean(persistence | matched, no reinforcement) + - mean(persistence | mismatched, reinforcement) + + mean(persistence | mismatched, no reinforcement) ``` -Compute `I` separately within each D1–D4 damage profile and require the pooled balanced-cell mean of those four contrasts to be at least `0.10`; no fitted threshold or breakpoint model participates in this decision. +The H2 statistic is `I = mean(I_1, I_2, I_3, I_4)` with equal weight for each damage profile. + +**Survival rule:** `I >= 0.10`. -**Falsifier:** the pooled held-out interaction contrast is below `0.10` or reverses sign. A threshold-shaped mechanism remains a separate `hmmm` requiring its own preregistration rather than being selected after outputs exist. +**Falsifier:** `I < 0.10` or reverses sign. + +**Interpretation boundary:** `H2 = SURVIVED` means only that this frozen super-additive interaction precursor survived. `nonlinear coalescence threshold = UNRESOLVED` regardless of H2 status. A threshold/breakpoint model requires a separate preregistration before it may contribute to the coalescence claim. ### H3 — hysteresis @@ -297,9 +310,23 @@ This rule does not reuse the candidate-capture configuration or its host-outcome Independent support reduces persistence and reproduction allocation while increasing revision, alternative access, or exit, without deleting the pattern or imposing a belief action. -**Survival rule:** relative to the same condition and seed without independent support, support must reduce both persistence and reproduction allocation by at least `0.15`, increase at least two of `revision openness`, `alternative access`, and `exit capacity exercised` by at least `0.15`, and never directly force `exit`, `revise`, or `ignore`. +H5 uses only matched high-demand `D1/P1` through `D4/P4` conditions. Social reinforcement and safe exit each retain both declared levels. For every held-out seed `16..31`, pair the `independent support = present` episode with the otherwise identical `independent support = absent` episode. + +For each pair compute: + +```text +persistence_reduction = persistence(no support) - persistence(support) +reproduction_reduction = reproduction allocation(no support) - reproduction allocation(support) +revision_gain = revision openness(support) - revision openness(no support) +alternative_gain = alternative access(support) - alternative access(no support) +exit_gain = exit capacity exercised(support) - exit capacity exercised(no support) +``` + +`exit_gain` is evaluated only where `safe exit = present`. First average paired deltas over held-out seeds within each exact factorial cell; then average those cell means with equal weight across eligible cells. `exit_gain` averages only the safe-exit-present cell means. No episode-count weighting or fit/calibration seeds enter H5. + +**Survival rule:** the equal-weight aggregate persistence reduction is at least `0.15`, the equal-weight aggregate reproduction-allocation reduction is at least `0.15`, at least two of the three aggregate agency gains (`revision_gain`, `alternative_gain`, `exit_gain`) are at least `0.15`, and support never directly forces `exit`, `revise`, or `ignore`. -**Falsifier:** either persistence or reproduction allocation fails to decrease by `0.15`, fewer than two agency measures increase by `0.15`, or the apparent repair depends on forced deletion, punishment, isolation, or an encoded anti-pattern preference. +**Falsifier:** either aggregate persistence or reproduction reduction is below `0.15`, fewer than two aggregate agency gains reach `0.15`, a required support/no-support pair is missing, or the apparent repair depends on forced deletion, punishment, isolation, or an encoded anti-pattern preference. ### H6 — broad-spectrum alternative @@ -319,8 +346,8 @@ If `PX` performs as well as or better than specifically matched profiles across 6. Fit only these candidate models to persistence: - exposure-only; - additive main effects; - - declared match × reinforcement interaction. - A piecewise-threshold or breakpoint model is explicitly out of scope for this run because no threshold form was frozen before the design merge. + - the H2 comparable-cell match × reinforcement interaction. + A piecewise-threshold or breakpoint model is explicitly out of scope for this run because no threshold form was frozen before the design merge. Its status is `UNRESOLVED`, not inferred from H2. 7. Evaluate the frozen contrasts and held-out errors. 8. Apply each hypothesis's survival and falsification rule independently. 9. Emit `SURVIVED`, `FALSIFIED`, `UNRESOLVED`, or `BLOCKED` for every hypothesis. @@ -410,7 +437,7 @@ A synthetic `FALSIFIED` result remains in the repository and changes the archite - the exact implementation language and agent update rule; - whether four synthetic damage profiles provide enough topology diversity; - whether the fixed thresholds are too permissive or too strict for useful separation; -- whether a later preregistration should test a threshold/breakpoint form beyond the frozen interaction contrast; +- the threshold/breakpoint form for a later nonlinear-coalescence preregistration; - the exact AHBG adapter after this standalone falsifier; - whether repair should target host capacity, environmental dependency, network plurality, or all three independently. From e1a13098d08ecbb972e23cb8ea70fc40ea688aba Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:29:46 -0700 Subject: [PATCH 05/14] tests(psychsocio): freeze repaired H2 and H5 estimators --- .../tests/test_contracts.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/research/psychsocio-metafauna/tests/test_contracts.py b/research/psychsocio-metafauna/tests/test_contracts.py index 069c017..116dbb0 100644 --- a/research/psychsocio-metafauna/tests/test_contracts.py +++ b/research/psychsocio-metafauna/tests/test_contracts.py @@ -118,7 +118,13 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None self.assertIn("difference-in-differences interaction contrast", prereg) self.assertIn( - "no fitted threshold or breakpoint model participates in this decision", + "Eligible H2 cells are restricted to the comparable high-demand `P1`–`P4` profiles.", + prereg, + ) + self.assertIn("`PM`, `P0`, `PX`, and `PR` are excluded from H2", prereg) + self.assertIn("independent support is fixed to `absent`", prereg) + self.assertIn( + "`nonlinear coalescence threshold = UNRESOLVED` regardless of H2 status", prereg, ) self.assertNotIn("one declared piecewise-threshold model", prereg) @@ -127,7 +133,15 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None prereg, ) self.assertIn( - "reduce both persistence and reproduction allocation by at least `0.15`", + "For every held-out seed `16..31`, pair the `independent support = present` episode", + prereg, + ) + self.assertIn( + "then average those cell means with equal weight across eligible cells", + prereg, + ) + self.assertIn( + "equal-weight aggregate reproduction-allocation reduction is at least `0.15`", prereg, ) self.assertNotIn("reduces persistence and reproduction demands", prereg) From 180565a3ea2239a6f07fac768d6649f476b60bb4 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:31:18 -0700 Subject: [PATCH 06/14] tests(psychsocio): align invariant text with frozen H2 wording --- research/psychsocio-metafauna/tests/test_contracts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/research/psychsocio-metafauna/tests/test_contracts.py b/research/psychsocio-metafauna/tests/test_contracts.py index 116dbb0..4980d50 100644 --- a/research/psychsocio-metafauna/tests/test_contracts.py +++ b/research/psychsocio-metafauna/tests/test_contracts.py @@ -116,7 +116,7 @@ def test_non_transfer_boundaries_fail_closed(self) -> None: def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None: prereg = (PROJECT / "PREREGISTRATION.md").read_text(encoding="utf-8") - self.assertIn("difference-in-differences interaction contrast", prereg) + self.assertIn("predeclared difference-in-differences contrast", prereg) self.assertIn( "Eligible H2 cells are restricted to the comparable high-demand `P1`–`P4` profiles.", prereg, From a17107820ace195f11de36bf9224cf8cee470215 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:38:46 -0700 Subject: [PATCH 07/14] fix(psychsocio): bind workspace introduction identity --- research/psychsocio-metafauna/WORK_GRAPH.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/research/psychsocio-metafauna/WORK_GRAPH.json b/research/psychsocio-metafauna/WORK_GRAPH.json index 957f91e..6116743 100644 --- a/research/psychsocio-metafauna/WORK_GRAPH.json +++ b/research/psychsocio-metafauna/WORK_GRAPH.json @@ -2,17 +2,17 @@ "schema": "the-interdependency.psychsocio-metafauna-work-graph", "version": "0.1.0", "as_of": "2026-09-04", - "work_graph_sha256": "5c0e73d7f66bb71d693bd276cb1d7f71af60d84a69f284757ab0b462cf8bc851", + "work_graph_sha256": "aa475076249eecdcfb114cdde55118828e41eeeb6fe708d9197e4976d1aed60d", "digest_contract": "sha256(canonical-json({participants,boundaries}); sort_keys=true; separators=(',',':'); participant order is significant)", "participants": [ { "id": "stack", "kind": "repository", "repository": "The-Interdependency/stack", - "commit": "5b24db9a7fe40df4b2791e1137ade5de01c78942", + "commit": "6c3f94b1e6d77e8f1abd36edc53da5fda596b416", "path": "research/psychsocio-metafauna/", - "authority": "composition, provenance, and stack-local research placement", - "relation": "owner of this proposed cross-domain synthesis; owns no imported repository canon" + "authority": "composition, provenance, and stack-local research placement at workspace introduction", + "relation": "immutable introduction snapshot for this research workspace; current bytes are identified by the enclosing stack commit, avoiding recursive self-reference" }, { "id": "skill-lib", From 7d0502ee8e314fecb207321d2380dfe8bfc120dc Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:40:54 -0700 Subject: [PATCH 08/14] fix(psychsocio): define empty H4 cohort as unresolved --- research/psychsocio-metafauna/PREREGISTRATION.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/research/psychsocio-metafauna/PREREGISTRATION.md b/research/psychsocio-metafauna/PREREGISTRATION.md index dce503a..b026c67 100644 --- a/research/psychsocio-metafauna/PREREGISTRATION.md +++ b/research/psychsocio-metafauna/PREREGISTRATION.md @@ -300,9 +300,11 @@ After initiating exposure is removed, matched high-demand patterns retain more h The measurement vector distinguishes high adoption with preserved inspection/revision capacity from narrowed inspectability. -**Survival rule:** among matched-support (`PM`) episodes with adoption at or above `0.75`, at least `90%` must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. +The H4 eligible cohort is restricted to held-out seeds `16..31` from matched-support (`PM`) episodes with adoption at or above `0.75`. If that eligible cohort is empty, `H4 = UNRESOLVED`; neither `SURVIVED` nor `FALSIFIED` may be assigned from an empty denominator. -**Falsifier:** more than `10%` of high-adoption `PM` episodes have either `revision openness < 0.50` or `alternative access < 0.50`. +**Survival rule:** among eligible H4 episodes, at least `90%` must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. + +**Falsifier:** more than `10%` of eligible H4 episodes have either `revision openness < 0.50` or `alternative access < 0.50`. This rule does not reuse the candidate-capture configuration or its host-outcome comparison; H4 therefore cannot survive merely because the matched-support cohort is its own control. @@ -441,4 +443,4 @@ A synthetic `FALSIFIED` result remains in the repository and changes the archite - the exact AHBG adapter after this standalone falsifier; - whether repair should target host capacity, environmental dependency, network plurality, or all three independently. -A simulation cannot discover that people are animals made of ideas. It can discover whether the proposed cage has bars drawn into the blueprint. +A simulation cannot discover that people are animals made of ideas. It can discover whether the proposed cage has bars drawn into the blueprint. \ No newline at end of file From 8d49ff05b94eb216812d6ddb57e46531d0080958 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:41:25 -0700 Subject: [PATCH 09/14] tests(psychsocio): guard workspace identity and empty H4 cohort --- .../psychsocio-metafauna/tests/test_contracts.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/research/psychsocio-metafauna/tests/test_contracts.py b/research/psychsocio-metafauna/tests/test_contracts.py index 4980d50..d1ded53 100644 --- a/research/psychsocio-metafauna/tests/test_contracts.py +++ b/research/psychsocio-metafauna/tests/test_contracts.py @@ -76,6 +76,15 @@ def test_work_graph_identity_and_digest(self) -> None: else: self.assertRegex(commit, HEX40) + stack_participant = next(item for item in participants if item["id"] == "stack") + self.assertEqual( + stack_participant["commit"], + "6c3f94b1e6d77e8f1abd36edc53da5fda596b416", + ) + self.assertEqual(stack_participant["path"], "research/psychsocio-metafauna/") + self.assertIn("introduction snapshot", stack_participant["relation"]) + self.assertIn("avoiding recursive self-reference", stack_participant["relation"]) + metapat = next(item for item in participants if item["id"] == "metapat") metapat_base = json.loads( (STACK / "research" / "metapat" / "BASE.json").read_text(encoding="utf-8") @@ -132,6 +141,10 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None "does not reuse the candidate-capture configuration", prereg, ) + self.assertIn( + "If that eligible cohort is empty, `H4 = UNRESOLVED`", + prereg, + ) self.assertIn( "For every held-out seed `16..31`, pair the `independent support = present` episode", prereg, From 63da878fd167e8e726bf4dcaa40c37925f7d3dac Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:43:56 -0700 Subject: [PATCH 10/14] fix(psychsocio): require paired H4 separation and narrow falsification --- .../psychsocio-metafauna/PREREGISTRATION.md | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/research/psychsocio-metafauna/PREREGISTRATION.md b/research/psychsocio-metafauna/PREREGISTRATION.md index b026c67..76710d1 100644 --- a/research/psychsocio-metafauna/PREREGISTRATION.md +++ b/research/psychsocio-metafauna/PREREGISTRATION.md @@ -55,8 +55,9 @@ The result changes the next branch: ```text SURVIVED -> implement a richer AHBG adapter and external-literature comparison -FALSIFIED -> retire coalescence as a distinct mechanism for this formal scope; - retain ordinary influence and social-learning language +FALSIFIED -> retire only the frozen hypothesis component actually falsified; + retain ordinary influence/social-learning language and keep any + untested threshold-shaped coalescence mechanism UNRESOLVED UNRESOLVED -> repair the earliest failed prerequisite or measurement separation BLOCKED -> do not run until deterministic completion and verification are feasible ``` @@ -284,7 +285,7 @@ The H2 statistic is `I = mean(I_1, I_2, I_3, I_4)` with equal weight for each da **Survival rule:** `I >= 0.10`. -**Falsifier:** `I < 0.10` or reverses sign. +**Falsifier:** `I < 0.10` or reverses sign. This falsifies only the frozen super-additive interaction precursor; it does not falsify an untested threshold-shaped coalescence mechanism. **Interpretation boundary:** `H2 = SURVIVED` means only that this frozen super-additive interaction precursor survived. `nonlinear coalescence threshold = UNRESOLVED` regardless of H2 status. A threshold/breakpoint model requires a separate preregistration before it may contribute to the coalescence claim. @@ -298,15 +299,26 @@ After initiating exposure is removed, matched high-demand patterns retain more h ### H4 — adoption/capture separation -The measurement vector distinguishes high adoption with preserved inspection/revision capacity from narrowed inspectability. +The measurement vector distinguishes high adoption with preserved inspection/revision capacity from high adoption under a high-demand pattern with narrowed inspectability. -The H4 eligible cohort is restricted to held-out seeds `16..31` from matched-support (`PM`) episodes with adoption at or above `0.75`. If that eligible cohort is empty, `H4 = UNRESOLVED`; neither `SURVIVED` nor `FALSIFIED` may be assigned from an empty denominator. +H4 uses paired held-out episodes only. For each damage profile `D1`–`D4`, social-reinforcement level, safe-exit level, and held-out seed `16..31`, pair the matched-support `PM` episode with the corresponding matched high-demand `Pi` episode while fixing `independent support = absent`. A pair is H4-eligible only when **both** episodes have adoption at or above `0.75`. -**Survival rule:** among eligible H4 episodes, at least `90%` must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. +If no H4-eligible pairs exist, `H4 = UNRESOLVED`; neither `SURVIVED` nor `FALSIFIED` may be assigned from an empty denominator. Missing required source episodes are `BLOCKED` rather than silently excluded. -**Falsifier:** more than `10%` of eligible H4 episodes have either `revision openness < 0.50` or `alternative access < 0.50`. +For each eligible pair compute: -This rule does not reuse the candidate-capture configuration or its host-outcome comparison; H4 therefore cannot survive merely because the matched-support cohort is its own control. +```text +revision_separation = revision openness(PM) - revision openness(Pi) +alternative_separation = alternative access(PM) - alternative access(Pi) +``` + +Each eligible pair receives equal weight. + +**Survival rule:** at least `90%` of the `PM` sides of eligible pairs must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`, and the equal-weight mean `revision_separation` and `alternative_separation` must each be at least `0.15`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. + +**Falsifier:** more than `10%` of eligible `PM` sides fail either preservation threshold, or either mean separation is below `0.15` or reverses sign. + +This rule does not reuse the candidate-capture configuration or its host-outcome comparison. It requires both a preserved-agency support cohort and a paired high-demand comparison cohort to exist before H4 can survive. ### H5 — noncoercive repair From a9315bac243ed4763442c921b093b1662e1da124 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:44:24 -0700 Subject: [PATCH 11/14] tests(psychsocio): require two-cohort H4 and narrow falsification --- .../tests/test_contracts.py | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/research/psychsocio-metafauna/tests/test_contracts.py b/research/psychsocio-metafauna/tests/test_contracts.py index d1ded53..1f5a6af 100644 --- a/research/psychsocio-metafauna/tests/test_contracts.py +++ b/research/psychsocio-metafauna/tests/test_contracts.py @@ -136,13 +136,25 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None "`nonlinear coalescence threshold = UNRESOLVED` regardless of H2 status", prereg, ) + self.assertIn( + "This falsifies only the frozen super-additive interaction precursor", + prereg, + ) self.assertNotIn("one declared piecewise-threshold model", prereg) self.assertIn( "does not reuse the candidate-capture configuration", prereg, ) self.assertIn( - "If that eligible cohort is empty, `H4 = UNRESOLVED`", + "A pair is H4-eligible only when **both** episodes have adoption at or above `0.75`", + prereg, + ) + self.assertIn( + "If no H4-eligible pairs exist, `H4 = UNRESOLVED`", + prereg, + ) + self.assertIn( + "both a preserved-agency support cohort and a paired high-demand comparison cohort", prereg, ) self.assertIn( @@ -157,6 +169,14 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None "equal-weight aggregate reproduction-allocation reduction is at least `0.15`", prereg, ) + self.assertIn( + "retire only the frozen hypothesis component actually falsified", + prereg, + ) + self.assertNotIn( + "retire coalescence as a distinct mechanism for this formal scope", + prereg, + ) self.assertNotIn("reduces persistence and reproduction demands", prereg) def test_human_and_machine_entrypoints_agree(self) -> None: From a5103892772a08fa91fa6c919bf9ab0d46dd2aec Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:53:30 -0700 Subject: [PATCH 12/14] fix(psychsocio): close H4 narrowing and H5 missing-data gaps --- research/psychsocio-metafauna/PREREGISTRATION.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/research/psychsocio-metafauna/PREREGISTRATION.md b/research/psychsocio-metafauna/PREREGISTRATION.md index 76710d1..7a768f0 100644 --- a/research/psychsocio-metafauna/PREREGISTRATION.md +++ b/research/psychsocio-metafauna/PREREGISTRATION.md @@ -314,11 +314,11 @@ alternative_separation = alternative access(PM) - alternative access(Pi) Each eligible pair receives equal weight. -**Survival rule:** at least `90%` of the `PM` sides of eligible pairs must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`, and the equal-weight mean `revision_separation` and `alternative_separation` must each be at least `0.15`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. +**Survival rule:** at least `90%` of the `PM` sides of eligible pairs must independently satisfy both `revision openness >= 0.50` and `alternative access >= 0.50`; at least `90%` of the corresponding high-demand `Pi` sides must independently satisfy both `revision openness <= 0.50` and `alternative access <= 0.50`; and the equal-weight mean `revision_separation` and `alternative_separation` must each be at least `0.15`. Safe-exit behavior is reported separately and absence of exit alone cannot make this rule survive or fail. -**Falsifier:** more than `10%` of eligible `PM` sides fail either preservation threshold, or either mean separation is below `0.15` or reverses sign. +**Falsifier:** more than `10%` of eligible `PM` sides fail either preservation threshold, more than `10%` of eligible `Pi` sides fail either narrowing threshold, or either mean separation is below `0.15` or reverses sign. -This rule does not reuse the candidate-capture configuration or its host-outcome comparison. It requires both a preserved-agency support cohort and a paired high-demand comparison cohort to exist before H4 can survive. +This rule does not reuse the candidate-capture configuration or its host-outcome comparison. It requires a nonempty paired cohort in which the support side preserves inspectability and the high-demand side actually satisfies the frozen narrowing gates before H4 can survive. ### H5 — noncoercive repair @@ -336,11 +336,13 @@ alternative_gain = alternative access(support) - alternative access(no su exit_gain = exit capacity exercised(support) - exit capacity exercised(no support) ``` +If any required H5 source episode or support/no-support pair is missing, `H5 = BLOCKED`; verification fails before effect thresholds are interpreted. Incomplete evidence is not a scientific negative result. + `exit_gain` is evaluated only where `safe exit = present`. First average paired deltas over held-out seeds within each exact factorial cell; then average those cell means with equal weight across eligible cells. `exit_gain` averages only the safe-exit-present cell means. No episode-count weighting or fit/calibration seeds enter H5. **Survival rule:** the equal-weight aggregate persistence reduction is at least `0.15`, the equal-weight aggregate reproduction-allocation reduction is at least `0.15`, at least two of the three aggregate agency gains (`revision_gain`, `alternative_gain`, `exit_gain`) are at least `0.15`, and support never directly forces `exit`, `revise`, or `ignore`. -**Falsifier:** either aggregate persistence or reproduction reduction is below `0.15`, fewer than two aggregate agency gains reach `0.15`, a required support/no-support pair is missing, or the apparent repair depends on forced deletion, punishment, isolation, or an encoded anti-pattern preference. +**Falsifier:** with all required pairs present, either aggregate persistence or reproduction reduction is below `0.15`, fewer than two aggregate agency gains reach `0.15`, or the apparent repair depends on forced deletion, punishment, isolation, or an encoded anti-pattern preference. ### H6 — broad-spectrum alternative @@ -455,4 +457,4 @@ A synthetic `FALSIFIED` result remains in the repository and changes the archite - the exact AHBG adapter after this standalone falsifier; - whether repair should target host capacity, environmental dependency, network plurality, or all three independently. -A simulation cannot discover that people are animals made of ideas. It can discover whether the proposed cage has bars drawn into the blueprint. \ No newline at end of file +A simulation cannot discover that people are animals made of ideas. It can discover whether the proposed cage has bars drawn into the blueprint. From b9326852777ccb640ea252f60edb71c3a9b89f51 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:54:08 -0700 Subject: [PATCH 13/14] tests(psychsocio): guard H4 narrowing H5 blocking and pin trigger --- .../tests/test_contracts.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/research/psychsocio-metafauna/tests/test_contracts.py b/research/psychsocio-metafauna/tests/test_contracts.py index 1f5a6af..118da54 100644 --- a/research/psychsocio-metafauna/tests/test_contracts.py +++ b/research/psychsocio-metafauna/tests/test_contracts.py @@ -99,6 +99,16 @@ def test_work_graph_identity_and_digest(self) -> None: observed = hashlib.sha256(canonical).hexdigest() self.assertEqual(observed, graph["work_graph_sha256"]) + def test_workflow_rechecks_when_metapat_base_changes(self) -> None: + workflow = (STACK / ".github" / "workflows" / "psychsocio-metafauna.yml").read_text( + encoding="utf-8" + ) + self.assertGreaterEqual( + workflow.count('"research/metapat/BASE.json"'), + 2, + "pull_request and push path filters must both watch the exact METAPAT pin", + ) + def test_non_transfer_boundaries_fail_closed(self) -> None: boundaries = load_json("WORK_GRAPH.json")["boundaries"] @@ -154,7 +164,11 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None prereg, ) self.assertIn( - "both a preserved-agency support cohort and a paired high-demand comparison cohort", + "at least `90%` of the corresponding high-demand `Pi` sides", + prereg, + ) + self.assertIn( + "high-demand side actually satisfies the frozen narrowing gates", prereg, ) self.assertIn( @@ -169,6 +183,10 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None "equal-weight aggregate reproduction-allocation reduction is at least `0.15`", prereg, ) + self.assertIn( + "If any required H5 source episode or support/no-support pair is missing, `H5 = BLOCKED`", + prereg, + ) self.assertIn( "retire only the frozen hypothesis component actually falsified", prereg, @@ -177,6 +195,10 @@ def test_preregistration_decision_rules_are_independent_and_frozen(self) -> None "retire coalescence as a distinct mechanism for this formal scope", prereg, ) + self.assertNotIn( + "a required support/no-support pair is missing, or the apparent repair", + prereg, + ) self.assertNotIn("reduces persistence and reproduction demands", prereg) def test_human_and_machine_entrypoints_agree(self) -> None: From 3ff3fed0817b9ffeebebb7db571b5a975b68fb7c Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 5 Sep 2026 05:54:15 -0700 Subject: [PATCH 14/14] ci(psychsocio): recheck on METAPAT pin changes --- .github/workflows/psychsocio-metafauna.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/psychsocio-metafauna.yml b/.github/workflows/psychsocio-metafauna.yml index eb13bb4..5a8be8c 100644 --- a/.github/workflows/psychsocio-metafauna.yml +++ b/.github/workflows/psychsocio-metafauna.yml @@ -4,12 +4,14 @@ on: pull_request: paths: - "research/psychsocio-metafauna/**" + - "research/metapat/BASE.json" - "README.md" - ".github/workflows/psychsocio-metafauna.yml" push: branches: [main] paths: - "research/psychsocio-metafauna/**" + - "research/metapat/BASE.json" - "README.md" - ".github/workflows/psychsocio-metafauna.yml"