Add zslice_asym variant: upgrade-only override (negative — subagent has no signal) - #4
Closed
trisha-ant wants to merge 2 commits into
Closed
Add zslice_asym variant: upgrade-only override (negative — subagent has no signal)#4trisha-ant wants to merge 2 commits into
trisha-ant wants to merge 2 commits into
Conversation
Same segment-counting subagent as zslice, but only applies the override when the count maps to a *later* stage than the primary (1.5fold->2fold->pretzel). Trigger excludes pretzel since there is nothing to upgrade to, so the worst case on pretzel is parity with scientific. Targets the 1.5fold/2fold gap without the catastrophic pretzel downgrade observed in the symmetric variant.
…gent has no signal
Overall 72.1% vs scientific 77.3% (n=233). Asymmetric design successfully
caps the pretzel catastrophe (85% vs 7% for symmetric zslice), but
attribution shows the override itself only fired 7 times and was wrong every
time (5x 1.5fold->2fold on GT=1.5fold, 2x 2fold->pretzel on GT=2fold).
Segment-count distribution across 88 triggers: {1:40, 2:46, 3:2} -- the
subagent returns <=2 in 98% of cases regardless of true stage, because a
single midplane slice genuinely doesn't show >2 separable cross-sections.
The large per-stage swings (1.5fold -46, 2fold +19) are run-to-run variance
in the primary classifier, not the override.
Conclusion: midplane segment-counting carries no signal; multi-plane
sampling or a different subagent task is the remaining path.
Owner
Author
|
Subsumed into #5 — all commits are in that branch and the retrospective there covers this variant. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #3 (which is stacked on #2, #1).
Why
The symmetric
zslicevariant (#3) regressed pretzel 88%→7% because the segment-counting subagent returns ≤2 on almost every midplane slice — body folds sit at different z-depths, so a single plane rarely intersects 3+ segments at separable locations. This variant tests whether an upgrade-only override (1.5fold→2fold→pretzel, never backward) can salvage any signal while capping the pretzel downside.What
perception/zslice_asym.py(59 lines), registered aszslice_asym:_count_segments/_segment_count_to_stagefromzslice.py.{1.5fold, 2fold}(pretzel passes through — nothing to upgrade to)._FOLD_ORDER[sub_stage] > _FOLD_ORDER[primary.stage]; otherwise keeps primary and notes the count.Result (n=233 hard-stage frames, 4 embryos partial)
Override attribution (the headline per-stage swings are misleading):
{1:40, 2:46, 3:2}.scientificare run-to-run variance in the primary classifier, not the override.Conclusion
Asymmetric design works as intended for damage control — pretzel holds at 85%, adjacent accuracy is restored to 100%. But the segment-counting subagent itself carries no usable signal: it returns ≤2 in 86/88 calls regardless of true stage. The midplane-slice approach is dead; remaining paths are multi-plane max-count or a different subagent task.
Verification
_accepted_optional_kwargs(zslice_asym) == {'midplane_b64'}.reasoningfield in saved predictions.