<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: juan gonzalez</title>
    <description>The latest articles on DEV Community by juan gonzalez (@taiwildlab_79c1fbf3cc5).</description>
    <link>https://dev.to/taiwildlab_79c1fbf3cc5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3873318%2F2704d37e-e97c-4543-bcd1-92bd95e0e87a.png</url>
      <title>DEV Community: juan gonzalez</title>
      <link>https://dev.to/taiwildlab_79c1fbf3cc5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/taiwildlab_79c1fbf3cc5"/>
    <language>en</language>
    <item>
      <title>A Shadow Decision System Found a Semantic Boundary Bug in 14 Minutes</title>
      <dc:creator>juan gonzalez</dc:creator>
      <pubDate>Sun, 12 Jul 2026 11:18:00 +0000</pubDate>
      <link>https://dev.to/taiwildlab_79c1fbf3cc5/a-shadow-decision-system-found-a-semantic-boundary-bug-in-14-minutes-13fd</link>
      <guid>https://dev.to/taiwildlab_79c1fbf3cc5/a-shadow-decision-system-found-a-semantic-boundary-bug-in-14-minutes-13fd</guid>
      <description>&lt;p&gt;I am running an experimental autonomous trading architecture called Darwin. During an audit of its agent-ranking and sizing authorities, I built a read-only shadow producer to compare a candidate constraint system against the existing runtime behavior.&lt;/p&gt;

&lt;p&gt;The candidate had no operational authority:&lt;/p&gt;

&lt;p&gt;no position or capital writes;&lt;br&gt;
no lifecycle mutations;&lt;br&gt;
no promotions or reproduction;&lt;br&gt;
no writes to the operational sizing ledger;&lt;br&gt;
separate persistence for shadow cycles, events and comparisons.&lt;/p&gt;

&lt;p&gt;The first complete diagnostic cycle ran on July 11 at 18:22.&lt;/p&gt;

&lt;p&gt;Results:&lt;/p&gt;

&lt;p&gt;agents_evaluated: 25&lt;br&gt;
matches: 8&lt;br&gt;
mismatches: 17&lt;br&gt;
max_absolute_delta: 0.5&lt;/p&gt;

&lt;p&gt;Every mismatch had the same multiplicative shape:&lt;/p&gt;

&lt;p&gt;expected  candidate&lt;br&gt;
0.500     1.000&lt;br&gt;
0.425     0.850&lt;br&gt;
0.350     0.700&lt;br&gt;
0.275     0.550&lt;br&gt;
0.200     0.400&lt;/p&gt;

&lt;p&gt;This immediately suggested that one path applied a 0.5 constraint that the other did not.&lt;/p&gt;

&lt;p&gt;The useful design decision was persisting the composition of each resolved multiplier, not only the final values.&lt;/p&gt;

&lt;p&gt;The comparison data showed the semantic divergence:&lt;/p&gt;

&lt;p&gt;expected_sources:&lt;br&gt;
[reduce_50, anticonvergence_penalty]&lt;/p&gt;

&lt;p&gt;candidate_sources:&lt;br&gt;
[anticonvergence_penalty]&lt;/p&gt;

&lt;p&gt;The discrepancy was therefore not primarily numerical. It was a disagreement about authority.&lt;br&gt;
The legacy expected-value translator applied a 50% reduction whenever coherence was below 0.40.&lt;br&gt;
The approved architecture defined two different domains:&lt;/p&gt;

&lt;p&gt;0.30 &amp;lt;= coherence &amp;lt; 0.40&lt;br&gt;
    sizing authority&lt;br&gt;
    multiplier *= 0.5&lt;/p&gt;

&lt;p&gt;coherence &amp;lt; 0.30&lt;br&gt;
    severe lifecycle condition&lt;br&gt;
    outside sizing authority&lt;/p&gt;

&lt;p&gt;The candidate producer respected the new boundary. The dual-run oracle still encoded the legacy interpretation.&lt;br&gt;
The bug was in the expected-value mechanism, not in the candidate.&lt;br&gt;
The correction was committed at 18:36. The same condition was executed again at 18:37:&lt;/p&gt;

&lt;p&gt;agents_evaluated: 25&lt;br&gt;
matches: 25&lt;br&gt;
mismatches: 0&lt;br&gt;
max_absolute_delta: 0.0&lt;/p&gt;

&lt;p&gt;The failed cycle was retained.&lt;br&gt;
The operational databases remained unchanged, and the operational sizing ledger contained zero new events.&lt;/p&gt;

&lt;p&gt;What made the diagnosis fast?&lt;br&gt;
A shadow comparator that stores only:&lt;/p&gt;

&lt;p&gt;expected_multiplier&lt;br&gt;
candidate_multiplier&lt;br&gt;
absolute_delta&lt;/p&gt;

&lt;p&gt;can raise an alert.&lt;br&gt;
A comparator that also stores:&lt;/p&gt;

&lt;p&gt;expected_sources&lt;br&gt;
candidate_sources&lt;br&gt;
dominant_constraint&lt;br&gt;
rule_version&lt;br&gt;
input_snapshot&lt;/p&gt;

&lt;p&gt;can produce a diagnosis.&lt;br&gt;
That changes the debugging question from:&lt;br&gt;
Where did the multiplication go wrong?&lt;br&gt;
to:&lt;br&gt;
Which rule was present on one decision path and absent on the other?&lt;br&gt;
The second audit: residual authority&lt;br&gt;
After correcting the mismatch, I opened a formal 48-hour observation window.&lt;br&gt;
The population was supposed to remain fixed. Reproduction had already been disabled through:&lt;br&gt;
REPRODUCTION_ACTIVE=false&lt;br&gt;
However, an hourly cron entry still executed auto_promote.py.&lt;br&gt;
No promotion occurred during the initial observation period, but the authority to mutate agent stages remained active.&lt;br&gt;
The process was disabled, and the formal window was restarted from the first successful shadow cycle after the freeze.&lt;br&gt;
This produced a useful distinction:&lt;br&gt;
Absence of mutation is not absence of mutation authority.&lt;br&gt;
For controlled observation, capabilities matter more than labels such as “reproduction disabled” or “read-only.”&lt;br&gt;
General design principles&lt;br&gt;
From this incident, I would extract five reusable rules:&lt;br&gt;
Persist decision composition, not only resolved values.&lt;br&gt;
Treat the expected-value oracle as a hypothesis, not as truth.&lt;br&gt;
Separate permission to calculate from permission to enforce.&lt;br&gt;
Preserve failed cycles as evidence.&lt;br&gt;
Audit every component that retains authority over the observed state.&lt;/p&gt;

&lt;p&gt;The shadow did not merely detect that two functions differed.&lt;/p&gt;

&lt;p&gt;It made the semantic boundary visible.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>architecture</category>
      <category>fintech</category>
      <category>testing</category>
    </item>
    <item>
      <title>La confianza no es una propiedad del agente. Es una propiedad de la arquitectura.</title>
      <dc:creator>juan gonzalez</dc:creator>
      <pubDate>Tue, 07 Jul 2026 17:31:15 +0000</pubDate>
      <link>https://dev.to/taiwildlab_79c1fbf3cc5/la-confianza-no-es-una-propiedad-del-agente-es-una-propiedad-de-la-arquitectura-142c</link>
      <guid>https://dev.to/taiwildlab_79c1fbf3cc5/la-confianza-no-es-una-propiedad-del-agente-es-una-propiedad-de-la-arquitectura-142c</guid>
      <description></description>
    </item>
    <item>
      <title>I Run 20+ Autonomous Trading Agents. Here Are the 5 Memory Failures That Almost Killed the System.</title>
      <dc:creator>juan gonzalez</dc:creator>
      <pubDate>Sat, 11 Apr 2026 10:39:29 +0000</pubDate>
      <link>https://dev.to/taiwildlab_79c1fbf3cc5/i-run-20-autonomous-trading-agents-here-are-the-5-memory-failures-that-almost-killed-the-system-718</link>
      <guid>https://dev.to/taiwildlab_79c1fbf3cc5/i-run-20-autonomous-trading-agents-here-are-the-5-memory-failures-that-almost-killed-the-system-718</guid>
      <description></description>
    </item>
  </channel>
</rss>
