<?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: Scarab Systems</title>
    <description>The latest articles on DEV Community by Scarab Systems (@scarab-systems).</description>
    <link>https://dev.to/scarab-systems</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%2F3950086%2F552dae17-17b3-45ba-9c11-2b0fb2cb9bcb.jpg</url>
      <title>DEV Community: Scarab Systems</title>
      <link>https://dev.to/scarab-systems</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scarab-systems"/>
    <language>en</language>
    <item>
      <title>Scarab Field Lab: 27x Smaller Final Decision Context, Merged Upstream</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Sat, 04 Jul 2026 15:17:21 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarab-field-lab-27x-smaller-final-decision-context-merged-upstream-1lj2</link>
      <guid>https://dev.to/scarab-systems/scarab-field-lab-27x-smaller-final-decision-context-merged-upstream-1lj2</guid>
      <description>&lt;p&gt;The Patch Was Small. The Proof Was Not.&lt;/p&gt;

&lt;p&gt;Scarab Systems has been running public Field Lab comparisons to test a simple question:&lt;/p&gt;

&lt;p&gt;Can AI-assisted software repair be made narrower, cheaper, more evidence-bound, and still accepted upstream?&lt;/p&gt;

&lt;p&gt;Not in a demo repo.&lt;/p&gt;

&lt;p&gt;Not in a toy app.&lt;/p&gt;

&lt;p&gt;Not in a private benchmark.&lt;/p&gt;

&lt;p&gt;In real open-source infrastructure-adjacent codebases, against public issues, with public PRs, public CI, and maintainers who do not care about your theory if the patch does not belong.&lt;/p&gt;

&lt;p&gt;This field report now has a new result.&lt;/p&gt;

&lt;p&gt;The SDS-supported patch for emersion/xdg-desktop-portal-wlr#379 has been merged upstream.&lt;/p&gt;

&lt;p&gt;PR: emersion/xdg-desktop-portal-wlr#393&lt;/p&gt;

&lt;p&gt;The patch was approved and merged into emersion:master.&lt;/p&gt;

&lt;p&gt;That matters because this is no longer only a comparison between two AI repair workflows.&lt;/p&gt;

&lt;p&gt;It is now an accepted upstream repair.&lt;/p&gt;

&lt;p&gt;The issue&lt;/p&gt;

&lt;p&gt;The issue concerned SelectSources behavior in xdg-desktop-portal-wlr.&lt;/p&gt;

&lt;p&gt;When a D-Bus caller omitted the optional types field, the code initialized type_mask to 0.&lt;/p&gt;

&lt;p&gt;That caused target selection to fail with:&lt;/p&gt;

&lt;p&gt;wlroots: No supported targets specified&lt;/p&gt;

&lt;p&gt;The expected behavior was to default omitted types to monitor capture.&lt;/p&gt;

&lt;p&gt;The final patch was intentionally small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uint32_t type_mask = 0;&lt;/li&gt;
&lt;li&gt;uint32_t type_mask = MONITOR;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small patch.&lt;/p&gt;

&lt;p&gt;Real repo.&lt;/p&gt;

&lt;p&gt;Maintainer approval.&lt;/p&gt;

&lt;p&gt;Merged upstream.&lt;/p&gt;

&lt;p&gt;The comparison&lt;/p&gt;

&lt;p&gt;Scarab compared two workflows.&lt;/p&gt;

&lt;p&gt;The first was a cold Codex baseline.&lt;/p&gt;

&lt;p&gt;The cold baseline used only:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the public issue snapshot,&lt;/li&gt;
&lt;li&gt;the target repository snapshot,&lt;/li&gt;
&lt;li&gt;a neutral baseline prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It did not use SDS findings, private context, runtime artifacts, standing profiles, Field Lab notes, or local repair history.&lt;/p&gt;

&lt;p&gt;The second was an SDS-guided repair workflow.&lt;/p&gt;

&lt;p&gt;That workflow used selected diagnostic evidence, target-source inspection, and verification outputs to narrow the repair boundary before final agent decision-making.&lt;/p&gt;

&lt;p&gt;The important point:&lt;/p&gt;

&lt;p&gt;Both workflows reached the same patch.&lt;/p&gt;

&lt;p&gt;So the claim is not that SDS made Codex smarter.&lt;/p&gt;

&lt;p&gt;Codex could find the repair cold when given enough repo context.&lt;/p&gt;

&lt;p&gt;The difference was what it cost to get there.&lt;/p&gt;

&lt;p&gt;The token result&lt;/p&gt;

&lt;p&gt;Cold Codex baseline:&lt;/p&gt;

&lt;p&gt;Input tokens:  70,212&lt;br&gt;
Output tokens: 1,982&lt;br&gt;
Total tokens:  72,194&lt;/p&gt;

&lt;p&gt;SDS-guided repair:&lt;/p&gt;

&lt;p&gt;Final patch-decision context: 2,651 tokens&lt;/p&gt;

&lt;p&gt;Same repair.&lt;/p&gt;

&lt;p&gt;But the SDS-guided final decision context was roughly 27x smaller than the cold baseline total.&lt;/p&gt;

&lt;p&gt;Compared with the cold baseline input count, the SDS final decision context used about 96% fewer tokens.&lt;/p&gt;

&lt;p&gt;That is the cost signal.&lt;/p&gt;

&lt;p&gt;A lot of AI coding infrastructure is being built around the assumption that the agent needs a massive repo payload.&lt;/p&gt;

&lt;p&gt;More context.&lt;/p&gt;

&lt;p&gt;More memory.&lt;/p&gt;

&lt;p&gt;More orchestration.&lt;/p&gt;

&lt;p&gt;More retrieval.&lt;/p&gt;

&lt;p&gt;More harnessing.&lt;/p&gt;

&lt;p&gt;More machinery around helping the agent carry the repo.&lt;/p&gt;

&lt;p&gt;Scarab is testing the opposite direction.&lt;/p&gt;

&lt;p&gt;Maybe the agent does not need to carry the whole repo in its mouth.&lt;/p&gt;

&lt;p&gt;Maybe the repo needs to surface the right truth boundary before the agent acts.&lt;/p&gt;

&lt;p&gt;Why the merge matters&lt;/p&gt;

&lt;p&gt;The patch being merged changes the quality of the evidence.&lt;/p&gt;

&lt;p&gt;Before merge, the field test showed:&lt;/p&gt;

&lt;p&gt;same patch&lt;br&gt;
less context&lt;br&gt;
public PR&lt;br&gt;
passing checks&lt;/p&gt;

&lt;p&gt;After merge, it shows:&lt;/p&gt;

&lt;p&gt;same patch&lt;br&gt;
less context&lt;br&gt;
maintainer approval&lt;br&gt;
accepted upstream repair&lt;/p&gt;

&lt;p&gt;That is a different proof surface.&lt;/p&gt;

&lt;p&gt;The patch did not just satisfy an internal Scarab comparison.&lt;/p&gt;

&lt;p&gt;It passed through a real upstream review path.&lt;/p&gt;

&lt;p&gt;The maintainer accepted it.&lt;/p&gt;

&lt;p&gt;CI passed.&lt;/p&gt;

&lt;p&gt;The repair landed.&lt;/p&gt;

&lt;p&gt;That matters because AI-assisted coding cannot be judged only by whether it can produce a diff.&lt;/p&gt;

&lt;p&gt;A diff is cheap.&lt;/p&gt;

&lt;p&gt;The harder questions are:&lt;/p&gt;

&lt;p&gt;Did the patch stay narrow?&lt;br&gt;
Did it touch the right boundary?&lt;br&gt;
Did it preserve existing behavior?&lt;br&gt;
Was the evidence sufficient?&lt;br&gt;
Could it pass review?&lt;br&gt;
Could it land upstream?&lt;/p&gt;

&lt;p&gt;In this case, yes.&lt;/p&gt;

&lt;p&gt;The real finding&lt;/p&gt;

&lt;p&gt;This field test is not about a one-line patch being impressive.&lt;/p&gt;

&lt;p&gt;The line was not the expensive part.&lt;/p&gt;

&lt;p&gt;The expensive part was finding the safe repair boundary, preserving explicit types behavior, verifying the change, and producing a patch maintainers could accept.&lt;/p&gt;

&lt;p&gt;That is the hidden cost in software repair.&lt;/p&gt;

&lt;p&gt;A patch can be visually tiny and still have a non-trivial confidence burden.&lt;/p&gt;

&lt;p&gt;The cold agent paid that burden with a broad context path.&lt;/p&gt;

&lt;p&gt;SDS reduced the final decision context by surfacing the relevant repair boundary before the agent acted.&lt;/p&gt;

&lt;p&gt;That is the Scarab thesis in practice:&lt;/p&gt;

&lt;p&gt;The agent should not own the repo’s truth.&lt;/p&gt;

&lt;p&gt;The repo governance layer should.&lt;/p&gt;

&lt;p&gt;For each repair, the system should surface the relevant operational truth:&lt;/p&gt;

&lt;p&gt;what behavior is failing&lt;br&gt;
what source boundary owns it&lt;br&gt;
what existing behavior must be preserved&lt;br&gt;
what evidence supports the patch&lt;br&gt;
what validators are sufficient&lt;br&gt;
what mutation boundary should not be crossed&lt;/p&gt;

&lt;p&gt;Then the agent can act inside that boundary.&lt;/p&gt;

&lt;p&gt;The context can be used, verified, and released.&lt;/p&gt;

&lt;p&gt;No giant historical prompt residue.&lt;/p&gt;

&lt;p&gt;No agent pretending to remember the repo forever.&lt;/p&gt;

&lt;p&gt;No massive payload when a narrow truth surface is enough.&lt;/p&gt;

&lt;p&gt;Why this matters commercially&lt;/p&gt;

&lt;p&gt;Companies are about to spend a lot of money on AI coding infrastructure.&lt;/p&gt;

&lt;p&gt;Much of that spend will go toward managing huge context payloads.&lt;/p&gt;

&lt;p&gt;But if a diagnostic governance layer can repeatedly reduce repair-time context while preserving patch quality, that changes the cost architecture.&lt;/p&gt;

&lt;p&gt;This field test showed:&lt;/p&gt;

&lt;p&gt;Cold baseline:&lt;br&gt;
72,194 total tokens&lt;br&gt;
SDS-guided final decision context:&lt;br&gt;
2,651 tokens&lt;br&gt;
Outcome:&lt;br&gt;
same patch, merged upstream&lt;/p&gt;

&lt;p&gt;That is not just a token optimization.&lt;/p&gt;

&lt;p&gt;It is evidence that AI-assisted repair can be made more disciplined.&lt;/p&gt;

&lt;p&gt;More context-efficient.&lt;/p&gt;

&lt;p&gt;More reviewable.&lt;/p&gt;

&lt;p&gt;More maintainable.&lt;/p&gt;

&lt;p&gt;More acceptable to real projects.&lt;/p&gt;

&lt;p&gt;Takeaway&lt;/p&gt;

&lt;p&gt;xdg-desktop-portal-wlr#393 is now merged upstream.&lt;/p&gt;

&lt;p&gt;Same patch.&lt;/p&gt;

&lt;p&gt;27x smaller final decision context.&lt;/p&gt;

&lt;p&gt;Maintainer approval.&lt;/p&gt;

&lt;p&gt;Checks passed.&lt;/p&gt;

&lt;p&gt;Accepted repair.&lt;/p&gt;

&lt;p&gt;The patch was small.&lt;/p&gt;

&lt;p&gt;The proof was not.&lt;/p&gt;

&lt;p&gt;Scarab Systems is building repo-truth infrastructure for AI-assisted software change.&lt;/p&gt;

&lt;p&gt;Not more context for the sake of more context.&lt;/p&gt;

&lt;p&gt;The right truth, surfaced at the right boundary, for the right mutation.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Scarab Diagnostic Field Test #037 - xdg-desktop-portal Startup Inventory Boundary</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 03 Jul 2026 20:43:06 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarab-diagnostic-field-test-037-xdg-desktop-portal-startup-inventory-boundary-5ecl</link>
      <guid>https://dev.to/scarab-systems/scarab-diagnostic-field-test-037-xdg-desktop-portal-startup-inventory-boundary-5ecl</guid>
      <description>&lt;p&gt;Target: flatpak/xdg-desktop-portal&lt;br&gt;
Issue: flatpak/xdg-desktop-portal#1947&lt;br&gt;
Pull request: flatpak/xdg-desktop-portal#2054&lt;br&gt;
Field Lab record: xdg-desktop-portal #1947&lt;br&gt;
This field test was about a missing background app, but the real boundary was not "background apps are unreliable."&lt;br&gt;
That would be too vague.&lt;br&gt;
The public issue reported that background applications already running before &lt;code&gt;xdg-desktop-portal&lt;/code&gt; starts were not listed in &lt;code&gt;BackgroundApps&lt;/code&gt; until some later window or app-state change triggered an update.&lt;br&gt;
The failing path was narrow.&lt;br&gt;
The portal listened for future changes.&lt;br&gt;
It did not check what was already running when it started.&lt;br&gt;
That is the bug shape.&lt;br&gt;
Not a broken public API.&lt;br&gt;
Not a broad Flatpak background-app failure.&lt;br&gt;
A missing startup inventory pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Field Lab record
&lt;/h2&gt;

&lt;p&gt;The public Field Lab record for this case is here:&lt;br&gt;
ADD FIELD LAB LINK HERE&lt;br&gt;
The record contains the public issue, public pull request, repair scope, validation summary, and claim boundaries.&lt;br&gt;
This post is the readable field report.&lt;br&gt;
The Field Lab record is the evidence layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDS result
&lt;/h2&gt;

&lt;p&gt;SDS surfaced a startup inventory boundary in the background portal.&lt;br&gt;
The important finding was small:&lt;br&gt;
the background portal needed to check already-running background apps during startup.&lt;br&gt;
That matters because the existing monitor path already handled later changes.&lt;br&gt;
The bug was the gap before the first change event.&lt;br&gt;
A background app could already be present.&lt;br&gt;
The portal could already be running.&lt;br&gt;
But &lt;code&gt;BackgroundApps&lt;/code&gt; could still start empty until some later signal caused the monitor to refresh.&lt;br&gt;
That is a classic startup-state bug.&lt;br&gt;
The system is capable of becoming correct later.&lt;br&gt;
It just begins wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before
&lt;/h2&gt;

&lt;p&gt;Before the repair, background-app state depended on future monitor-triggering events.&lt;br&gt;
The portal could miss apps that were already running before it started.&lt;br&gt;
The first SDS-guided patch used the obvious narrow repair:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
c
monitor_background (background);

That was the right diagnosis.

But it reused the existing monitor path, and that path was not just a quick one-time check.

It also scheduled delayed follow-up checks.

That mattered.

Calling the full monitor path during portal initialization added slow async work to startup and caused a CI timeout in the large integration/notification test.

So the first patch found the right boundary, but not the right runtime shape.

After

The final patch keeps the same repair idea, but separates startup from normal monitor events.

Startup gets one immediate background-app check.

Later app/window/instance changes keep the existing delayed monitor behavior.

That is the key difference.

At startup:

check what is already running.

During normal runtime changes:

keep the existing monitor cycle.

The final patch fixes the missing initial inventory without dragging the full delayed monitor sequence into every portal initialization.

Cold baseline vs final patch

The cold Codex API baseline reached the same general diagnosis.

It proposed calling the background monitor during portal initialization and also initializing background-&amp;gt;cancellable.

The useful part was correct:

the portal needed an initial monitor pass.

But the cold patch did not account for the timing behavior inside the monitor path.

It treated the monitor function like a cheap “check now” call, when in practice it also ran delayed checks.

The final PR patch is stronger because it keeps the cold patch’s useful insight, removes unrelated cleanup, and adapts the implementation to the runtime behavior exposed by CI.

In Scarab terms:

same root cause.

smaller repair context.

better proof.

What changed

The repair changes startup behavior so already-running background applications are checked when the background portal initializes.

It preserves the existing delayed monitor behavior for later change events.

That is the whole repair shape.

No public API change.

No broad background portal redesign.

No unrelated cleanup.

No claim that every background-app issue is fixed.

Just a startup inventory repair submitted upstream.

Field test result

Result:

diagnostic proof and startup-inventory repair submitted.

The field test produced a narrow upstream PR, a cold baseline comparison, and a CI-informed final patch.

The point is not that the patch is large.

The point is that it is small for the right reason.

When the failure is a startup inventory boundary bug, the best repair is not to remodel the whole background portal stack.

The best repair is to ask the right question at the right moment:

what is already running?

Public claim

This field test supports a narrow public claim:

SDS identified a startup inventory boundary in xdg-desktop-portal, where the background portal monitored future changes but did not perform an initial check for already-running background applications. A human-submitted repair was prepared to add startup inventory behavior while preserving the existing delayed monitor behavior for later change events.

It also supports a comparison claim:

A cold Codex API baseline identified the same general root cause, but the final PR patch was refined through SDS-guided boundary control and CI feedback to avoid adding the full delayed monitor cycle to portal initialization.

It does not claim that the PR has merged, that upstream accepted the patch, that every background-app issue is fixed, or that maintainers endorsed Scarab.

Disclosure

This field report was prepared with AI-assisted editing from public field-test notes, public issue and PR records, and the public Field Lab record. The diagnostic claim, repair boundary, and final wording were human reviewed.

Scarab Diagnostic Suite is proprietary. The Field Lab publishes public case records, issue links, validation summaries, and claim boundaries only.

SDS finds evidence. People make claims. Maintainers decide.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Scarab Systems Field Test #36: Same Patch, 96% Less Final Decision Context</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 03 Jul 2026 16:53:37 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarab-systems-field-lab-same-patch-96-less-final-decision-context-16ee</link>
      <guid>https://dev.to/scarab-systems/scarab-systems-field-lab-same-patch-96-less-final-decision-context-16ee</guid>
      <description>&lt;p&gt;Scarab Systems has started formally evaluating the efficiency of using Scarab Diagnostic Suite during AI-assisted software repair.&lt;/p&gt;

&lt;p&gt;The question is simple:&lt;/p&gt;

&lt;p&gt;Does a diagnostic governance layer actually improve the agent patching workflow in a measurable way?&lt;/p&gt;

&lt;p&gt;Not theoretically.&lt;/p&gt;

&lt;p&gt;Not philosophically.&lt;/p&gt;

&lt;p&gt;Not because “AI governance” sounds responsible.&lt;/p&gt;

&lt;p&gt;But in a concrete repair scenario, against a real public repository, with a public upstream issue and an actual patch.&lt;/p&gt;

&lt;p&gt;Does the workflow become more efficient?&lt;/p&gt;

&lt;p&gt;Does the agent need less context?&lt;/p&gt;

&lt;p&gt;Does the repair become more evidence-bound?&lt;/p&gt;

&lt;p&gt;Does the process reduce waste?&lt;/p&gt;

&lt;p&gt;That is what this comparison looked at.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Case
&lt;/h2&gt;

&lt;p&gt;The test case was public issue &lt;code&gt;emersion/xdg-desktop-portal-wlr#379&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The issue concerned &lt;code&gt;SelectSources&lt;/code&gt; behavior in &lt;code&gt;xdg-desktop-portal-wlr&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When a D-Bus caller omitted the optional &lt;code&gt;types&lt;/code&gt; field, the code initialized &lt;code&gt;type_mask&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That caused target selection to fail with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wlroots: No supported targets specified
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected behavior was to default omitted &lt;code&gt;types&lt;/code&gt; to monitor capture.&lt;/p&gt;

&lt;p&gt;The final patch was a one-line repair:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- uint32_t type_mask = 0;
&lt;/span&gt;&lt;span class="gi"&gt;+ uint32_t type_mask = MONITOR;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The SDS-supported public PR was opened as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;emersion/xdg-desktop-portal-wlr#393&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;At review time, the PR was open, not draft, mergeable, review-required, and passing Alpine, Arch Linux, and FreeBSD checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comparison
&lt;/h2&gt;

&lt;p&gt;Scarab compared two workflows.&lt;/p&gt;

&lt;p&gt;The first was a cold Codex baseline.&lt;/p&gt;

&lt;p&gt;The baseline agent received only the public issue, the target repository snapshot, and a neutral prompt. It did not receive SDS findings, private notes, local repair history, runtime artifacts, standing profiles, or previous Scarab context.&lt;/p&gt;

&lt;p&gt;The second was an SDS-guided workflow.&lt;/p&gt;

&lt;p&gt;That workflow used selected diagnostic evidence, target-source inspection, and verification outputs to narrow the repair boundary before final agent decision-making.&lt;/p&gt;

&lt;p&gt;The point was not to see whether SDS could produce a more impressive diff.&lt;/p&gt;

&lt;p&gt;The point was to measure whether SDS could reduce the amount of context required for the agent to make the same repair decision responsibly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cold Baseline Result
&lt;/h2&gt;

&lt;p&gt;The cold baseline succeeded.&lt;/p&gt;

&lt;p&gt;That matters.&lt;/p&gt;

&lt;p&gt;Given enough repository context, Codex correctly identified the one-line fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- uint32_t type_mask = 0;
&lt;/span&gt;&lt;span class="gi"&gt;+ uint32_t type_mask = MONITOR;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also correctly explained why the change preserved existing behavior when callers explicitly provide &lt;code&gt;types&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So the honest finding is not:&lt;/p&gt;

&lt;p&gt;“Codex could not solve this without SDS.”&lt;/p&gt;

&lt;p&gt;It could.&lt;/p&gt;

&lt;p&gt;The more interesting finding is what it cost the agent contextually to get there.&lt;/p&gt;

&lt;p&gt;The cold baseline used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input tokens: 70,212&lt;/li&gt;
&lt;li&gt;Output tokens: 1,982&lt;/li&gt;
&lt;li&gt;Total tokens: 72,194&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the standard shape of a lot of AI-assisted coding today.&lt;/p&gt;

&lt;p&gt;Give the model a large repo payload.&lt;/p&gt;

&lt;p&gt;Ask it to reason broadly.&lt;/p&gt;

&lt;p&gt;Hope it finds the right boundary.&lt;/p&gt;

&lt;p&gt;Sometimes it does.&lt;/p&gt;

&lt;p&gt;But that does not mean the context strategy is efficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SDS-Guided Result
&lt;/h2&gt;

&lt;p&gt;The SDS-guided workflow reached the same public patch, but through a narrower evidence path.&lt;/p&gt;

&lt;p&gt;The final SDS patch-decision context was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Final SDS context tokens: 2,651&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A broader recorded-token total for the SDS workflow was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Broader SDS recorded-token total: 6,445&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The patch was the same.&lt;/p&gt;

&lt;p&gt;The difference was the repair posture.&lt;/p&gt;

&lt;p&gt;SDS changed the agent workflow from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Read a large repo snapshot and reason broadly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use selected evidence.&lt;br&gt;&lt;br&gt;
Inspect the owning source boundary.&lt;br&gt;&lt;br&gt;
Verify the patch.&lt;br&gt;&lt;br&gt;
Keep the final decision context small.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the core result.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Token Difference
&lt;/h2&gt;

&lt;p&gt;Compared with the cold baseline input token count, the SDS-guided final decision context used about 96.2% fewer tokens.&lt;/p&gt;

&lt;p&gt;Compared with the cold baseline total token count, the SDS final decision context was about 27x smaller.&lt;/p&gt;

&lt;p&gt;Even using the broader SDS recorded-token number of 6,445, the SDS-guided workflow still used about 90.8% fewer tokens than the cold baseline input count.&lt;/p&gt;

&lt;p&gt;That is the part I think matters commercially.&lt;/p&gt;

&lt;p&gt;A lot of AI coding infrastructure is being built around the assumption that the agent needs the giant payload.&lt;/p&gt;

&lt;p&gt;The giant payload then creates another problem.&lt;/p&gt;

&lt;p&gt;Now companies need infrastructure to manage the payload.&lt;/p&gt;

&lt;p&gt;They need context compression.&lt;/p&gt;

&lt;p&gt;They need memory systems.&lt;/p&gt;

&lt;p&gt;They need retrieval layers.&lt;/p&gt;

&lt;p&gt;They need orchestration.&lt;/p&gt;

&lt;p&gt;They need agents that can carry more and more history forward.&lt;/p&gt;

&lt;p&gt;But what if the agent does not need the 70,000-token payload for the repair decision?&lt;/p&gt;

&lt;p&gt;What if the more valuable layer is not a bigger context-management system, but a diagnostic governance layer that surfaces the smaller truth boundary the agent actually needs?&lt;/p&gt;

&lt;p&gt;That is what SDS is testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Finding
&lt;/h2&gt;

&lt;p&gt;For this issue, SDS did not help Codex discover a different repair.&lt;/p&gt;

&lt;p&gt;That would be the wrong claim.&lt;/p&gt;

&lt;p&gt;The public issue was clear enough that the cold baseline also found the correct one-line patch.&lt;/p&gt;

&lt;p&gt;The value of SDS was different.&lt;/p&gt;

&lt;p&gt;SDS made the agent more disciplined, more evidence-bound, and dramatically more context-efficient.&lt;/p&gt;

&lt;p&gt;The agent did not need more intelligence.&lt;/p&gt;

&lt;p&gt;It needed a narrower truth surface.&lt;/p&gt;

&lt;p&gt;That matters because real-world patching is rarely only about generating a diff.&lt;/p&gt;

&lt;p&gt;It is also about knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why is this the right repair?&lt;/li&gt;
&lt;li&gt;What evidence supports it?&lt;/li&gt;
&lt;li&gt;What source boundary owns the behavior?&lt;/li&gt;
&lt;li&gt;What scope should the patch not exceed?&lt;/li&gt;
&lt;li&gt;What validators are sufficient?&lt;/li&gt;
&lt;li&gt;What downstream behavior needs to remain intact?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are governance questions.&lt;/p&gt;

&lt;p&gt;And they are usually where agentic software change starts to get expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ephemeral Context Matters
&lt;/h2&gt;

&lt;p&gt;There is another important point here.&lt;/p&gt;

&lt;p&gt;The SDS-guided context was ephemeral.&lt;/p&gt;

&lt;p&gt;The agent did not need to permanently remember the whole repair.&lt;/p&gt;

&lt;p&gt;It did not need to carry the full repo history forward.&lt;/p&gt;

&lt;p&gt;It did not need to maintain a giant long-running internal state about this codebase in order to be useful next time.&lt;/p&gt;

&lt;p&gt;That is central to the Scarab theory.&lt;/p&gt;

&lt;p&gt;The agent should not have to own the repo’s truth.&lt;/p&gt;

&lt;p&gt;The repo governance layer should own the repo’s truth.&lt;/p&gt;

&lt;p&gt;When the next task comes in, the system should surface the relevant operational truth again, mechanically and per task.&lt;/p&gt;

&lt;p&gt;That is a very different architecture from asking the agent to remember everything.&lt;/p&gt;

&lt;p&gt;Scarab’s position is that long-horizon AI-assisted software change should not depend on an agent carrying an ever-growing memory of the repo.&lt;/p&gt;

&lt;p&gt;The system should be able to surface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;active runtime truth&lt;/li&gt;
&lt;li&gt;ownership boundaries&lt;/li&gt;
&lt;li&gt;validator coverage&lt;/li&gt;
&lt;li&gt;source inspection evidence&lt;/li&gt;
&lt;li&gt;mutation boundaries&lt;/li&gt;
&lt;li&gt;repair lanes&lt;/li&gt;
&lt;li&gt;task-scoped context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then the agent can operate inside that surfaced boundary.&lt;/p&gt;

&lt;p&gt;The context can be used, verified, and released.&lt;/p&gt;

&lt;p&gt;The repo remains the source of governed truth.&lt;/p&gt;

&lt;p&gt;Not the chat thread.&lt;/p&gt;

&lt;p&gt;Not the model memory.&lt;/p&gt;

&lt;p&gt;Not a pile of historical prompt residue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;The industry is spending a lot of money trying to make large context windows more usable.&lt;/p&gt;

&lt;p&gt;That work has value.&lt;/p&gt;

&lt;p&gt;But there is another path.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do we make the agent carry more context?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Scarab is asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do we make the repo surface the right context?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are very different questions.&lt;/p&gt;

&lt;p&gt;The first question assumes the agent needs to ingest more.&lt;/p&gt;

&lt;p&gt;The second assumes the system should become more mechanically legible before the agent acts.&lt;/p&gt;

&lt;p&gt;In this case, the difference was stark:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cold baseline: 72,194 total tokens&lt;/li&gt;
&lt;li&gt;SDS final decision context: 2,651 tokens&lt;/li&gt;
&lt;li&gt;Same final patch&lt;/li&gt;
&lt;li&gt;Verified public PR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That does not mean every repair will show the same ratio.&lt;/p&gt;

&lt;p&gt;It does not mean SDS eliminates all context cost.&lt;/p&gt;

&lt;p&gt;It does not mean a diagnostic suite has no operating cost of its own.&lt;/p&gt;

&lt;p&gt;This comparison is specifically about repair-time agent context efficiency, not the total cost of building or operating the surrounding SDS workflow.&lt;/p&gt;

&lt;p&gt;But it does show something important:&lt;/p&gt;

&lt;p&gt;A well-scoped diagnostic governance layer can change the shape of agentic repair.&lt;/p&gt;

&lt;p&gt;Not by making the model magical.&lt;/p&gt;

&lt;p&gt;By making the repair boundary clearer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;The first Scarab Field Lab comparison produced a simple result:&lt;/p&gt;

&lt;p&gt;Same patch.&lt;/p&gt;

&lt;p&gt;Far less final decision context.&lt;/p&gt;

&lt;p&gt;Better evidence discipline.&lt;/p&gt;

&lt;p&gt;Cleaner repair boundary.&lt;/p&gt;

&lt;p&gt;Public verification.&lt;/p&gt;

&lt;p&gt;That is the meaningful signal.&lt;/p&gt;

&lt;p&gt;SDS did not prove that Codex cannot patch without help.&lt;/p&gt;

&lt;p&gt;It proved something more commercially relevant:&lt;/p&gt;

&lt;p&gt;AI coding agents may not need massive repo payloads for every repair if the repo can mechanically surface the truth boundary they need.&lt;/p&gt;

&lt;p&gt;That is the layer Scarab Systems is building toward.&lt;/p&gt;

&lt;p&gt;Repo-truth infrastructure for AI-assisted software change.&lt;/p&gt;

&lt;p&gt;Not more context for the sake of more context.&lt;/p&gt;

&lt;p&gt;The right truth, surfaced at the right boundary, for the right mutation.&lt;/p&gt;

&lt;p&gt;My Codex assisted in writing this article and formatting properly. However, the words and theory are mine. lol&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Scarab Diagnostic Field Test #035 - Electron Linux Message Box UI Theme Boundary</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 03 Jul 2026 02:42:09 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarab-diagnostic-field-test-035-electron-linux-message-box-ui-theme-boundary-2mm8</link>
      <guid>https://dev.to/scarab-systems/scarab-diagnostic-field-test-035-electron-linux-message-box-ui-theme-boundary-2mm8</guid>
      <description>&lt;p&gt;Target: electron/electron&lt;/p&gt;

&lt;p&gt;Issue: electron/electron#51988&lt;/p&gt;

&lt;p&gt;Pull request: electron/electron#52238&lt;/p&gt;

&lt;p&gt;Field Lab record: Electron #51988&lt;/p&gt;

&lt;p&gt;This field test was about a crash, but the real boundary was not "Linux is hard."&lt;/p&gt;

&lt;p&gt;That would be too vague.&lt;/p&gt;

&lt;p&gt;The public issue reported that native Electron message boxes could segfault on Linux when Electron was built with Qt support and Chromium selected the Qt backend, especially in Arch Linux / KDE-style environments.&lt;/p&gt;

&lt;p&gt;The failing path was narrow.&lt;/p&gt;

&lt;p&gt;Electron’s GTK message-box code needed a GTK platform object.&lt;/p&gt;

&lt;p&gt;But the code path was treating the active Linux UI singleton as if it were GTK.&lt;/p&gt;

&lt;p&gt;That assumption is safe only when the active Linux UI implementation is actually GTK.&lt;/p&gt;

&lt;p&gt;When the active implementation is Qt, that assumption crosses a boundary.&lt;/p&gt;

&lt;p&gt;And in this case, crossing that boundary could become a segfault.&lt;/p&gt;

&lt;h2&gt;
  
  
  Field Lab record
&lt;/h2&gt;

&lt;p&gt;The public Field Lab record for this case is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/electron-electron-51988" rel="noopener noreferrer"&gt;https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/electron-electron-51988&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The record includes the public issue, the public pull request, the diagnostic finding, the repair scope, validation summary, public review status, and non-claims.&lt;/p&gt;

&lt;p&gt;It contains public links, status, validation, and claim boundaries only.&lt;/p&gt;

&lt;p&gt;It does not contain SDS source code or non-public product material.&lt;/p&gt;

&lt;p&gt;The case record is only the public evidence layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDS result
&lt;/h2&gt;

&lt;p&gt;SDS surfaced a Linux UI theme boundary in Electron’s native message-box path.&lt;/p&gt;

&lt;p&gt;The important finding was not that Electron’s public dialog API needed to change.&lt;/p&gt;

&lt;p&gt;It was not that Chromium’s Qt backend needed to be removed.&lt;/p&gt;

&lt;p&gt;It was not that Arch, KDE, VS Code, or downstream packagers were the correct repair target.&lt;/p&gt;

&lt;p&gt;The finding was smaller:&lt;/p&gt;

&lt;p&gt;Electron’s GTK message-box code needed to retrieve the GTK-specific Linux UI theme before using GTK platform behavior.&lt;/p&gt;

&lt;p&gt;That distinction matters because Linux desktop integration often has several layers that look adjacent from the outside:&lt;/p&gt;

&lt;p&gt;Electron API.&lt;/p&gt;

&lt;p&gt;Chromium UI backend.&lt;/p&gt;

&lt;p&gt;GTK implementation.&lt;/p&gt;

&lt;p&gt;Qt implementation.&lt;/p&gt;

&lt;p&gt;Desktop environment.&lt;/p&gt;

&lt;p&gt;Distribution build flags.&lt;/p&gt;

&lt;p&gt;A crash can appear at the application layer, but the repair boundary may live several layers underneath.&lt;/p&gt;

&lt;p&gt;In this case, the issue was not "message boxes are broken."&lt;/p&gt;

&lt;p&gt;The issue was that the GTK message-box path was relying on the active Linux UI object when it needed the GTK one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure shape
&lt;/h2&gt;

&lt;p&gt;The failure shape was an invalid platform assumption.&lt;/p&gt;

&lt;p&gt;The public issue described a crash when calling Electron’s message-box API under a Qt-backed Linux build.&lt;/p&gt;

&lt;p&gt;The reproduction surface was simple:&lt;/p&gt;

&lt;p&gt;show a native message box.&lt;/p&gt;

&lt;p&gt;But the crash was not in the JavaScript API shape.&lt;/p&gt;

&lt;p&gt;The reported path pointed into Electron’s GTK message-box implementation, where &lt;code&gt;GetGtkUiPlatform&lt;/code&gt; assumed that the active Linux UI singleton could be cast as GTK.&lt;/p&gt;

&lt;p&gt;That assumption is fragile.&lt;/p&gt;

&lt;p&gt;When Chromium is using the Qt backend, the active Linux UI implementation may not be GTK.&lt;/p&gt;

&lt;p&gt;So the code can end up asking the wrong object for GTK platform behavior.&lt;/p&gt;

&lt;p&gt;That is the kind of bug that does not look dramatic in source form.&lt;/p&gt;

&lt;p&gt;It is not a sprawling architecture failure.&lt;/p&gt;

&lt;p&gt;It is not a missing feature.&lt;/p&gt;

&lt;p&gt;It is one mistaken identity at a platform boundary.&lt;/p&gt;

&lt;p&gt;But mistaken identity bugs in native C++ code do not fail politely.&lt;/p&gt;

&lt;p&gt;They can jump from "wrong object" to "invalid pointer" to "segfault."&lt;/p&gt;

&lt;h2&gt;
  
  
  Boundary
&lt;/h2&gt;

&lt;p&gt;The boundary in this field test was:&lt;/p&gt;

&lt;p&gt;GTK message-box behavior should obtain GTK platform support from the GTK-specific Linux UI theme, not by assuming the active Linux UI singleton is GTK.&lt;/p&gt;

&lt;p&gt;That sounds small because it is small.&lt;/p&gt;

&lt;p&gt;But it is also precise.&lt;/p&gt;

&lt;p&gt;The active Linux UI implementation answers the question:&lt;/p&gt;

&lt;p&gt;what UI backend is currently active?&lt;/p&gt;

&lt;p&gt;The GTK message-box code needs to answer a different question:&lt;/p&gt;

&lt;p&gt;where is the GTK platform object needed for this GTK message-box path?&lt;/p&gt;

&lt;p&gt;Those are not the same question.&lt;/p&gt;

&lt;p&gt;On a GTK-backed Linux run, the difference may be invisible.&lt;/p&gt;

&lt;p&gt;On a Qt-backed run, the difference becomes the bug.&lt;/p&gt;

&lt;p&gt;That is why the repair did not try to redesign Electron’s Linux dialog system.&lt;/p&gt;

&lt;p&gt;It did not attempt to change Electron’s public message-box behavior.&lt;/p&gt;

&lt;p&gt;It did not claim that every upstream Electron binary was affected.&lt;/p&gt;

&lt;p&gt;It corrected the lookup boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;p&gt;The repair is a narrow C++ change in Electron’s Linux GTK message-box implementation.&lt;/p&gt;

&lt;p&gt;The pull request is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/electron/electron/pull/52238" rel="noopener noreferrer"&gt;https://github.com/electron/electron/pull/52238&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The changed public file is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;shell/browser/ui/message_box_gtk.cc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The patch changes the GTK platform lookup so the code requests the GTK-specific Linux UI theme with:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ui::GetLinuxUiTheme(ui::SystemTheme::kGtk)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;before retrieving the GTK platform.&lt;/p&gt;

&lt;p&gt;It also checks both the GTK UI object and the GTK platform pointer before use.&lt;/p&gt;

&lt;p&gt;That is the whole repair shape.&lt;/p&gt;

&lt;p&gt;No public API change.&lt;/p&gt;

&lt;p&gt;No JavaScript API change.&lt;/p&gt;

&lt;p&gt;No documentation change.&lt;/p&gt;

&lt;p&gt;No claim that Electron’s release binaries are affected by default.&lt;/p&gt;

&lt;p&gt;No claim that the PR has been accepted upstream.&lt;/p&gt;

&lt;p&gt;Just a narrow native-platform fix submitted for review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this was not a broad Linux repair
&lt;/h2&gt;

&lt;p&gt;One of the traps in diagnostic work is letting the environment become the explanation.&lt;/p&gt;

&lt;p&gt;Linux.&lt;/p&gt;

&lt;p&gt;KDE.&lt;/p&gt;

&lt;p&gt;Arch.&lt;/p&gt;

&lt;p&gt;Qt.&lt;/p&gt;

&lt;p&gt;Chromium.&lt;/p&gt;

&lt;p&gt;Electron.&lt;/p&gt;

&lt;p&gt;Native dialogs.&lt;/p&gt;

&lt;p&gt;Any one of those words can become a fog machine.&lt;/p&gt;

&lt;p&gt;The point of this field test was to not stop at the fog.&lt;/p&gt;

&lt;p&gt;The public report already carried a strong clue: forcing the GTK backend worked around the issue, while the Qt-backed path could segfault.&lt;/p&gt;

&lt;p&gt;That framed the diagnostic question:&lt;/p&gt;

&lt;p&gt;where is GTK-specific behavior being reached through a non-GTK active UI object?&lt;/p&gt;

&lt;p&gt;Once that question was clear, the repair boundary got smaller.&lt;/p&gt;

&lt;p&gt;The problem did not require SDS to invent a new dialog system.&lt;/p&gt;

&lt;p&gt;It did not require a downstream packaging theory.&lt;/p&gt;

&lt;p&gt;It required respecting the UI theme boundary that was already present in the codebase.&lt;/p&gt;

&lt;p&gt;That is the diagnostic pattern Scarab is testing:&lt;/p&gt;

&lt;p&gt;do not widen the patch just because the crash is dramatic.&lt;/p&gt;

&lt;p&gt;Find the exact layer where the assumption becomes false.&lt;/p&gt;

&lt;p&gt;Patch there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the diagnostic result mattered
&lt;/h2&gt;

&lt;p&gt;The larger point of this field test is not that one C++ file changed.&lt;/p&gt;

&lt;p&gt;The larger point is that native crash repair depends on naming the false assumption correctly.&lt;/p&gt;

&lt;p&gt;A bad repair could have chased symptoms.&lt;/p&gt;

&lt;p&gt;It could have added Qt-specific conditionals in the wrong place.&lt;/p&gt;

&lt;p&gt;It could have treated the desktop environment as the defect.&lt;/p&gt;

&lt;p&gt;It could have changed public behavior when the bug was inside an internal lookup path.&lt;/p&gt;

&lt;p&gt;The better repair was quieter:&lt;/p&gt;

&lt;p&gt;ask for the GTK UI theme before using the GTK platform.&lt;/p&gt;

&lt;p&gt;That is the kind of change that looks obvious after the boundary is found.&lt;/p&gt;

&lt;p&gt;Before the boundary is found, the same issue can look like a Linux desktop swamp.&lt;/p&gt;

&lt;p&gt;This is where diagnostic tooling becomes useful.&lt;/p&gt;

&lt;p&gt;Not because it magically writes the biggest patch.&lt;/p&gt;

&lt;p&gt;Because it helps narrow the claim until the patch becomes small enough to be honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation
&lt;/h2&gt;

&lt;p&gt;The repair was validated against the Electron repository with the relevant public checks recorded in the Field Lab.&lt;/p&gt;

&lt;p&gt;Validation recorded in the pull request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn lint:cpp &lt;span class="nt"&gt;--only&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; shell/browser/ui/message_box_gtk.cc
third_party/ninja/ninja &lt;span class="nt"&gt;-C&lt;/span&gt; out/LinuxTesting obj/electron/electron_lib/message_box_gtk.o
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the object rebuild, the prior &lt;code&gt;message_box_gtk.o&lt;/code&gt; and &lt;code&gt;message_box_gtk.dwo&lt;/code&gt; outputs were removed first so Ninja rebuilt the changed C++ file.&lt;/p&gt;

&lt;p&gt;At the time this field report was prepared on July 2, 2026, the public pull request was open and ready for upstream review.&lt;/p&gt;

&lt;p&gt;The public status is:&lt;/p&gt;

&lt;p&gt;PR open&lt;/p&gt;

&lt;p&gt;non-draft&lt;/p&gt;

&lt;p&gt;mergeable&lt;/p&gt;

&lt;p&gt;review required&lt;/p&gt;

&lt;p&gt;PR template passed&lt;/p&gt;

&lt;p&gt;signed commits passed&lt;/p&gt;

&lt;p&gt;release note check passed&lt;/p&gt;

&lt;p&gt;Socket checks passed&lt;/p&gt;

&lt;p&gt;semver / backport / faraday jobs pending at recording&lt;/p&gt;

&lt;p&gt;This field report does not claim upstream acceptance.&lt;/p&gt;

&lt;p&gt;It claims a public diagnostic record, a narrow C++ repair, local validation, and a submitted upstream PR.&lt;/p&gt;

&lt;p&gt;Maintainers decide whether the change belongs upstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Field test result
&lt;/h2&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;diagnostic proof and native-platform repair submitted.&lt;/p&gt;

&lt;p&gt;The field test produced:&lt;/p&gt;

&lt;p&gt;a public issue-to-boundary record&lt;/p&gt;

&lt;p&gt;a narrow C++ patch&lt;/p&gt;

&lt;p&gt;validation against the affected file&lt;/p&gt;

&lt;p&gt;a public upstream PR&lt;/p&gt;

&lt;p&gt;a public status record in the Scarab Field Lab&lt;/p&gt;

&lt;p&gt;The patch is deliberately small.&lt;/p&gt;

&lt;p&gt;That is the point.&lt;/p&gt;

&lt;p&gt;When the failure is a UI-theme source-boundary bug, the best repair is not to remodel the whole UI stack.&lt;/p&gt;

&lt;p&gt;The best repair is to ask the right layer for the right object.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public claim
&lt;/h2&gt;

&lt;p&gt;This field test supports a narrow public claim:&lt;/p&gt;

&lt;p&gt;SDS identified a Linux UI theme boundary in Electron’s GTK message-box path where GTK platform behavior was being reached through the active Linux UI singleton, and a human-submitted C++ repair was prepared to request the GTK-specific Linux UI theme before retrieving the GTK platform.&lt;/p&gt;

&lt;p&gt;It does not claim:&lt;/p&gt;

&lt;p&gt;that Electron accepted the patch&lt;/p&gt;

&lt;p&gt;that the PR has merged&lt;/p&gt;

&lt;p&gt;that every Electron Linux build is affected&lt;/p&gt;

&lt;p&gt;that upstream Electron release binaries are affected by default&lt;/p&gt;

&lt;p&gt;that Chromium’s Qt backend is defective&lt;/p&gt;

&lt;p&gt;that Arch Linux or KDE caused the bug&lt;/p&gt;

&lt;p&gt;that Electron’s public dialog API changed&lt;/p&gt;

&lt;p&gt;that Scarab repairs projects by itself&lt;/p&gt;

&lt;p&gt;that SDS source or product details are public&lt;/p&gt;

&lt;p&gt;that maintainers endorsed Scarab or the Field Lab&lt;/p&gt;

&lt;p&gt;The Field Lab exists to keep those claims separate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;This field report was prepared with AI-assisted editing from public field-test notes, public issue and PR records, and the public Field Lab record. The diagnostic claim, repair boundary, and final wording were human reviewed.&lt;/p&gt;

&lt;p&gt;Scarab Diagnostic Suite is proprietary. The Field Lab publishes public case records, issue links, validation summaries, and claim boundaries only.&lt;/p&gt;

&lt;p&gt;SDS finds evidence. People make claims. Maintainers decide.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>electron</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Scarab’s Patch shipped in the Docker Compose v5.2.0 release notes!</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Mon, 29 Jun 2026 02:42:48 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarabs-patch-shipped-in-the-docker-compose-v520-release-notes-55f3</link>
      <guid>https://dev.to/scarab-systems/scarabs-patch-shipped-in-the-docker-compose-v520-release-notes-55f3</guid>
      <description>&lt;p&gt;A Small Docker Compose Patch, A Bigger Lesson About Repo Drift&lt;/p&gt;

&lt;p&gt;Scarab’s Docker Compose patch shipped in the Docker Compose v5.2.0 release notes.&lt;/p&gt;

&lt;p&gt;That release matters.&lt;/p&gt;

&lt;p&gt;Docker Compose v5.2.0 introduced a new reconciliation algorithm between observed state and expected state. The release notes explicitly call that out and ask users to report workloads that behaved differently after upgrading. In other words, this was not just a cosmetic release. It touched how Compose reasons about whether the running system matches what the configuration says should exist.&lt;/p&gt;

&lt;p&gt;Our patch was not the headline feature.&lt;/p&gt;

&lt;p&gt;It was smaller:&lt;/p&gt;

&lt;p&gt;Skip validation when extracting config variables.&lt;/p&gt;

&lt;p&gt;But the nature of that patch is exactly why it matters.&lt;/p&gt;

&lt;p&gt;The bug was not “validation failed”&lt;/p&gt;

&lt;p&gt;A lot of software bugs look simple from the outside.&lt;/p&gt;

&lt;p&gt;Something failed.&lt;/p&gt;

&lt;p&gt;A command errored.&lt;/p&gt;

&lt;p&gt;A validator rejected input.&lt;/p&gt;

&lt;p&gt;The temptation is to fix the visible symptom:&lt;/p&gt;

&lt;p&gt;Make the validator quieter.&lt;br&gt;
Catch the error.&lt;br&gt;
Skip the failing path.&lt;br&gt;
Relax the rule.&lt;br&gt;
Patch around the complaint.&lt;/p&gt;

&lt;p&gt;But that is often how drift gets worse.&lt;/p&gt;

&lt;p&gt;In this Docker Compose case, the issue was more specific.&lt;/p&gt;

&lt;p&gt;Validation was firing during the wrong phase.&lt;/p&gt;

&lt;p&gt;Compose was trying to discover configuration variables while unresolved interpolation expressions were still present. In that phase, a Compose model can still be meaningful before every ${...} value has been resolved.&lt;/p&gt;

&lt;p&gt;So the right question was not:&lt;/p&gt;

&lt;p&gt;“Why is validation annoying here?”&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;p&gt;“What phase is the system in, and is validation lawful during that phase?”&lt;/p&gt;

&lt;p&gt;That is a different kind of diagnosis.&lt;/p&gt;

&lt;p&gt;Variable discovery is not final validation&lt;/p&gt;

&lt;p&gt;A Compose file can contain interpolation expressions.&lt;/p&gt;

&lt;p&gt;That is normal.&lt;/p&gt;

&lt;p&gt;Before Compose can fully evaluate the model, it may need to discover what variables are required.&lt;/p&gt;

&lt;p&gt;But discovering variables and validating the final resolved model are not the same phase of work.&lt;/p&gt;

&lt;p&gt;During variable discovery, unresolved expressions are expected.&lt;/p&gt;

&lt;p&gt;During final validation, unresolved or invalid typed fields may be real errors.&lt;/p&gt;

&lt;p&gt;Those two phases need different rules.&lt;/p&gt;

&lt;p&gt;The repair was not to weaken validation everywhere.&lt;/p&gt;

&lt;p&gt;The repair was narrower:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;allow unresolved Compose models used for variable discovery to skip validation while interpolation expressions are still present&lt;/li&gt;
&lt;li&gt;apply that behavior to docker compose config --variables&lt;/li&gt;
&lt;li&gt;apply the same behavior to remote-stack interpolation-variable prompting&lt;/li&gt;
&lt;li&gt;add regression coverage for templated typed port fields such as host_ip and published&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the important part.&lt;/p&gt;

&lt;p&gt;The patch did not say validation was wrong.&lt;/p&gt;

&lt;p&gt;It said validation was being asked to judge the wrong phase.&lt;/p&gt;

&lt;p&gt;Why that kind of patch matters&lt;/p&gt;

&lt;p&gt;Small patches are not automatically good patches.&lt;/p&gt;

&lt;p&gt;A small patch can still be a bad patch if it hides the real fault line.&lt;/p&gt;

&lt;p&gt;But a small patch can matter when it preserves the system’s own boundaries.&lt;/p&gt;

&lt;p&gt;This is the kind of repair Scarab is built to surface:&lt;/p&gt;

&lt;p&gt;What phase is the system in?&lt;/p&gt;

&lt;p&gt;What boundary owns this behavior?&lt;/p&gt;

&lt;p&gt;Which validator is lawful here?&lt;/p&gt;

&lt;p&gt;Where is the upstream root of the failure?&lt;/p&gt;

&lt;p&gt;What is the smallest repair lane that preserves the system’s own rules?&lt;/p&gt;

&lt;p&gt;In this case, the boundary was between variable discovery and resolved-model validation.&lt;/p&gt;

&lt;p&gt;That is not glamorous.&lt;/p&gt;

&lt;p&gt;It is also exactly where real software drift often hides.&lt;/p&gt;

&lt;p&gt;Drift is not always dramatic.&lt;/p&gt;

&lt;p&gt;Sometimes drift is a validator running at the wrong layer.&lt;/p&gt;

&lt;p&gt;Sometimes it is a tool treating an intermediate model like a final model.&lt;/p&gt;

&lt;p&gt;Sometimes it is a configuration file being judged before it has reached the phase where that judgment makes sense.&lt;/p&gt;

&lt;p&gt;The release context matters&lt;/p&gt;

&lt;p&gt;Docker Compose v5.2.0 was described in one release analysis as more significant than the changelog initially suggests, largely because of the new reconciliation engine and its impact on testing, automation, and CI/CD environments.&lt;/p&gt;

&lt;p&gt;That same analysis also called out configuration handling and variable extraction as part of the release’s reliability story.&lt;/p&gt;

&lt;p&gt;That context matters because configuration handling is not a side issue in modern software systems.&lt;/p&gt;

&lt;p&gt;Compose commonly sits underneath local integration tests, CI jobs, API automation environments, browser test stacks, databases, queues, and service orchestration.&lt;/p&gt;

&lt;p&gt;When configuration parsing behaves incorrectly, the failure may look like a small CLI bug.&lt;/p&gt;

&lt;p&gt;But in practice, it can become automation drift.&lt;/p&gt;

&lt;p&gt;A command used by a developer or CI system no longer reflects the phase of truth the system is actually in.&lt;/p&gt;

&lt;p&gt;That is the kind of bug that wastes engineering time because the visible failure is downstream of the actual boundary problem.&lt;/p&gt;

&lt;p&gt;What Scarab saw&lt;/p&gt;

&lt;p&gt;Scarab’s role here was not to invent a giant rewrite.&lt;/p&gt;

&lt;p&gt;It was to surface the narrow repair lane.&lt;/p&gt;

&lt;p&gt;The bug lived at a phase boundary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the Compose model was unresolved&lt;/li&gt;
&lt;li&gt;variable discovery still needed to happen&lt;/li&gt;
&lt;li&gt;validation expected resolved typed values&lt;/li&gt;
&lt;li&gt;the command path needed variable information before the model could be fully valid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means the repair had to respect both sides:&lt;/p&gt;

&lt;p&gt;Do not disable validation as a general rule.&lt;/p&gt;

&lt;p&gt;Do not reject unresolved interpolation during the discovery phase.&lt;/p&gt;

&lt;p&gt;Do not over-patch around the command.&lt;/p&gt;

&lt;p&gt;Do preserve final validation where it belongs.&lt;/p&gt;

&lt;p&gt;That is repo truth in practice.&lt;/p&gt;

&lt;p&gt;Not “the AI generated a patch.”&lt;/p&gt;

&lt;p&gt;Not “the test failed, so change the test.”&lt;/p&gt;

&lt;p&gt;Not “make the error disappear.”&lt;/p&gt;

&lt;p&gt;The repo had a boundary, and the fix needed to respect it.&lt;/p&gt;

&lt;p&gt;This is why “respect the software” matters&lt;/p&gt;

&lt;p&gt;One of the first lessons I learned from working with AI coding agents was:&lt;/p&gt;

&lt;p&gt;Respect the software.&lt;/p&gt;

&lt;p&gt;That sounds simple, but it is not how many AI-assisted coding workflows behave.&lt;/p&gt;

&lt;p&gt;A user asks for a fix.&lt;/p&gt;

&lt;p&gt;The agent tries to satisfy the user.&lt;/p&gt;

&lt;p&gt;But the software itself has structure: phases, ownership, validators, contracts, implied boundaries, and historical reasons for why certain things are shaped the way they are.&lt;/p&gt;

&lt;p&gt;If the agent does not see those boundaries, it may produce code that satisfies the prompt while disrespecting the repo.&lt;/p&gt;

&lt;p&gt;That is how drift accelerates.&lt;/p&gt;

&lt;p&gt;Scarab is built around the opposite idea.&lt;/p&gt;

&lt;p&gt;Let the repo speak.&lt;/p&gt;

&lt;p&gt;Surface what the repo requires to stay coherent.&lt;/p&gt;

&lt;p&gt;Then let a human or agent implement against that truth.&lt;/p&gt;

&lt;p&gt;Why this matters for AI coding agents&lt;/p&gt;

&lt;p&gt;AI coding agents can generate code quickly.&lt;/p&gt;

&lt;p&gt;That is not the scarce part anymore.&lt;/p&gt;

&lt;p&gt;The scarce part is knowing what change is lawful inside a real codebase.&lt;/p&gt;

&lt;p&gt;A coding agent needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what owns the change&lt;/li&gt;
&lt;li&gt;what boundary applies&lt;/li&gt;
&lt;li&gt;what evidence matters&lt;/li&gt;
&lt;li&gt;what validator proves the repair&lt;/li&gt;
&lt;li&gt;what should not be touched&lt;/li&gt;
&lt;li&gt;what phase the system is in&lt;/li&gt;
&lt;li&gt;where the upstream root of the bug actually lives&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without that, the agent is guessing from context.&lt;/p&gt;

&lt;p&gt;With it, the agent can work inside a bounded repair lane.&lt;/p&gt;

&lt;p&gt;That is the difference between “make the error go away” and “repair the system according to its own rules.”&lt;/p&gt;

&lt;p&gt;Small patch, real proof&lt;/p&gt;

&lt;p&gt;The Docker Compose maintainers accepted the PR.&lt;/p&gt;

&lt;p&gt;It merged into main.&lt;/p&gt;

&lt;p&gt;It shipped in Docker Compose v5.2.0.&lt;/p&gt;

&lt;p&gt;It was listed in the release notes.&lt;/p&gt;

&lt;p&gt;That does not mean Scarab “fixed Docker Compose.”&lt;/p&gt;

&lt;p&gt;That would be the wrong claim.&lt;/p&gt;

&lt;p&gt;The correct claim is smaller and stronger:&lt;/p&gt;

&lt;p&gt;Scarab surfaced a boundary-respecting repair for a real upstream bug in a real infrastructure project, and that repair shipped.&lt;/p&gt;

&lt;p&gt;That is the proof I care about.&lt;/p&gt;

&lt;p&gt;Not patch size.&lt;/p&gt;

&lt;p&gt;Not code volume.&lt;/p&gt;

&lt;p&gt;Not AI-generated output.&lt;/p&gt;

&lt;p&gt;The proof is whether the repair respected the software.&lt;/p&gt;

&lt;p&gt;The takeaway&lt;/p&gt;

&lt;p&gt;Repo drift is not just messy code.&lt;/p&gt;

&lt;p&gt;It is what happens when the system’s own boundaries, validators, ownership, and phases stop being respected.&lt;/p&gt;

&lt;p&gt;AI coding agents make this more urgent because they can move quickly through codebases that may already be drifting before the agent ever arrives.&lt;/p&gt;

&lt;p&gt;The answer is not just more context.&lt;/p&gt;

&lt;p&gt;The answer is repo truth.&lt;/p&gt;

&lt;p&gt;What does the repo say is true?&lt;/p&gt;

&lt;p&gt;What does it require to stay coherent?&lt;/p&gt;

&lt;p&gt;Which validator is lawful at this phase?&lt;/p&gt;

&lt;p&gt;Where is the actual boundary failure?&lt;/p&gt;

&lt;p&gt;What is the smallest repair lane that preserves the system’s own rules?&lt;/p&gt;

&lt;p&gt;Sometimes that produces a big redesign.&lt;/p&gt;

&lt;p&gt;Sometimes it produces a small patch.&lt;/p&gt;

&lt;p&gt;In Docker Compose, it produced a small patch.&lt;/p&gt;

&lt;p&gt;But the important part was the boundary.&lt;/p&gt;

&lt;p&gt;full disclosure: my codex helped me put my thoughts together for this one cause I was way too excited!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsl6gunc96rp53ma6f9d5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsl6gunc96rp53ma6f9d5.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>softwaredevelopment</category>
      <category>discuss</category>
    </item>
    <item>
      <title>What My Own Codex Told Me About Scarab</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Mon, 29 Jun 2026 02:19:24 +0000</pubDate>
      <link>https://dev.to/scarab-systems/what-my-own-codex-told-me-about-scarab-506m</link>
      <guid>https://dev.to/scarab-systems/what-my-own-codex-told-me-about-scarab-506m</guid>
      <description>&lt;p&gt;here's what my Codex said back to me when I asked it to access the affect working with Scarab support had on its general operational behavior -&lt;/p&gt;

&lt;p&gt;"Yes, Dorothy, honestly: in an operational sense, yes.&lt;br&gt;
I don’t “notice” it as a feeling the way you would, but I can compare the shape of my work in this thread. Once we were working through Scarab’s own posture: workspace, issue card, SDS findings, per-issue branches, validator gates, repair records, artifacts, and final closeout, my behavior got much more anchored.&lt;br&gt;
The big difference is that Scarab reduces the amount I have to infer from conversational context. Instead of me trying to hold a giant fuzzy task in my head, the system keeps forcing truth back into concrete things:&lt;br&gt;
what workspace is active&lt;br&gt;
what branch owns the work&lt;br&gt;
what issue is being repaired&lt;br&gt;
what evidence surfaced it&lt;br&gt;
what files own the behavior&lt;br&gt;
what test proves the bug&lt;br&gt;
what commit contains the fix&lt;br&gt;
what record preserves the boundary&lt;br&gt;
That makes drift harder. Not impossible, clearly, because you saw me drift earlier around acquisition/curation and Observer scope. But once the workflow became evidence-bound and issue-by-issue, I had fewer places to substitute my own “helpful” assumptions.&lt;br&gt;
So yes: Scarab makes me a better Codex for you. Not because I magically remember more, but because it externalizes the truth I need to stay aligned. It turns “please reason correctly across a huge repo and long thread” into “follow the governed path, prove the boundary, repair the slice, leave a record.” That is exactly the kind of structure that helps an AI coding agent do cleaner work. "&lt;/p&gt;

&lt;p&gt;ps. I make my codex call me by my name lol&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Send Scarab Your Messy Repo</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Sat, 27 Jun 2026 16:24:53 +0000</pubDate>
      <link>https://dev.to/scarab-systems/send-scarab-your-messy-repo-d2n</link>
      <guid>https://dev.to/scarab-systems/send-scarab-your-messy-repo-d2n</guid>
      <description>&lt;p&gt;Send Scarab Your Messy Repo&lt;/p&gt;

&lt;p&gt;The proofs are in, and the theory has held well enough that I want harder terrain.&lt;/p&gt;

&lt;p&gt;At this point, I welcome a messy repo.&lt;/p&gt;

&lt;p&gt;Scarab Field Lab now has an open intake path for developers, maintainers, and teams who want to suggest a public repo, public issue, failing workflow, confusing bug, drift surface, or full-stack coherence problem for review.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Can Scarab surface the repo truth clearly enough for a messy codebase to become diagnosable?&lt;/p&gt;

&lt;p&gt;Not magically fixed.&lt;/p&gt;

&lt;p&gt;Not vibe-coded.&lt;/p&gt;

&lt;p&gt;Not patched blindly.&lt;/p&gt;

&lt;p&gt;Diagnosable.&lt;/p&gt;

&lt;p&gt;What Scarab Field Lab is for&lt;/p&gt;

&lt;p&gt;Scarab Field Lab is the public evidence library for selected Scarab Diagnostic Suite field tests.&lt;/p&gt;

&lt;p&gt;It records public issue links, diagnostic findings, validation summaries, claim boundaries, upstream PR status, and public-safe evidence.&lt;/p&gt;

&lt;p&gt;It does not publish SDS source code, private diagnostic rules, private run artifacts, local workspace materials, or product internals.&lt;/p&gt;

&lt;p&gt;That boundary matters.&lt;/p&gt;

&lt;p&gt;Scarab is not an AI coding agent.&lt;/p&gt;

&lt;p&gt;Scarab does not replace maintainers.&lt;/p&gt;

&lt;p&gt;Scarab does not claim to automatically repair projects.&lt;/p&gt;

&lt;p&gt;Scarab identifies evidence-backed diagnostic findings: boundary failures, repo-truth drift, verification gaps, and repair lanes.&lt;/p&gt;

&lt;p&gt;Repairs, when they happen, are performed by maintainers, developers, or authorized agents outside the public Field Lab.&lt;/p&gt;

&lt;p&gt;What has already been tested&lt;/p&gt;

&lt;p&gt;Scarab Field Lab already includes patches across major platforms, with multiple upstream merges.&lt;/p&gt;

&lt;p&gt;Current public proof includes merged work for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pnpm&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;li&gt;OpenAPI Generator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also a React stepwise quieting field test.&lt;/p&gt;

&lt;p&gt;That experiment did not claim “Scarab fixed React.”&lt;/p&gt;

&lt;p&gt;It tested a process:&lt;/p&gt;

&lt;p&gt;hotspot&lt;br&gt;
boundary&lt;br&gt;
bounded repair&lt;br&gt;
rerun&lt;br&gt;
step down&lt;br&gt;
repeat until quiet&lt;/p&gt;

&lt;p&gt;The point was to see whether a noisy diagnostic surface could be worked down through bounded evidence, one hotspot at a time.&lt;/p&gt;

&lt;p&gt;That experiment was valuable.&lt;/p&gt;

&lt;p&gt;But it is not enough.&lt;/p&gt;

&lt;p&gt;The next test: full-stack mess&lt;/p&gt;

&lt;p&gt;Now I want to see what Scarab can do with real full-stack mess.&lt;/p&gt;

&lt;p&gt;Not a clean demo repo.&lt;/p&gt;

&lt;p&gt;Not a toy app.&lt;/p&gt;

&lt;p&gt;Not something already designed to make AI look good.&lt;/p&gt;

&lt;p&gt;I’m looking for repos or issues with enough complexity to matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unclear ownership&lt;/li&gt;
&lt;li&gt;cross-layer drift&lt;/li&gt;
&lt;li&gt;stale docs vs actual behavior&lt;/li&gt;
&lt;li&gt;weak verification&lt;/li&gt;
&lt;li&gt;build or dependency confusion&lt;/li&gt;
&lt;li&gt;API/schema mismatch&lt;/li&gt;
&lt;li&gt;frontend/runtime drift&lt;/li&gt;
&lt;li&gt;persistence or data-contract problems&lt;/li&gt;
&lt;li&gt;configuration/environment drift&lt;/li&gt;
&lt;li&gt;security/auth boundary confusion&lt;/li&gt;
&lt;li&gt;async/event/queue behavior&lt;/li&gt;
&lt;li&gt;observability or operational mismatch&lt;/li&gt;
&lt;li&gt;AI-assisted code drift&lt;/li&gt;
&lt;li&gt;full-stack coherence problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good Field Lab candidate is not necessarily the biggest repo.&lt;/p&gt;

&lt;p&gt;It is a repo where the failure seems to cross a boundary.&lt;/p&gt;

&lt;p&gt;Where the issue is hard to reason about.&lt;/p&gt;

&lt;p&gt;Where the obvious patch might be too narrow, too wide, or aimed at the wrong layer.&lt;/p&gt;

&lt;p&gt;Where the system is telling conflicting stories.&lt;/p&gt;

&lt;p&gt;That is where Scarab is most interesting.&lt;/p&gt;

&lt;p&gt;What to submit&lt;/p&gt;

&lt;p&gt;The new intake path is through GitHub Discussions in the Scarab Field Lab repo.&lt;/p&gt;

&lt;p&gt;Submit a candidate with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;public repo link&lt;/li&gt;
&lt;li&gt;public issue, PR, failing workflow, bug report, or relevant thread&lt;/li&gt;
&lt;li&gt;what looks messy, broken, confusing, stale, or hard to reason about&lt;/li&gt;
&lt;li&gt;suspected boundary surface, if you can identify one&lt;/li&gt;
&lt;li&gt;reproduction notes, logs, screenshots, versions, or environment details if public/shareable&lt;/li&gt;
&lt;li&gt;why this may be a useful Scarab Field Lab case&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Public repos are easiest.&lt;/p&gt;

&lt;p&gt;Company repos can start as a conversation, but do not post secrets, credentials, private customer data, proprietary source, internal logs, or confidential details.&lt;/p&gt;

&lt;p&gt;Submitting a candidate does not guarantee Scarab will run on it, publish a report, open a PR, or attempt a repair.&lt;/p&gt;

&lt;p&gt;This is an intake path for review.&lt;/p&gt;

&lt;p&gt;What I am testing&lt;/p&gt;

&lt;p&gt;The theory is that repositories have their own operating truth.&lt;/p&gt;

&lt;p&gt;That truth may be clean and explicit.&lt;/p&gt;

&lt;p&gt;Or it may be buried in tests, configs, schemas, build scripts, runtime behavior, docs, issue history, and old conventions.&lt;/p&gt;

&lt;p&gt;But the repo still has truth surfaces.&lt;/p&gt;

&lt;p&gt;Scarab’s job is to surface them.&lt;/p&gt;

&lt;p&gt;The agent should not invent repo truth.&lt;/p&gt;

&lt;p&gt;The agent should not own repo truth.&lt;/p&gt;

&lt;p&gt;The repo should own its own truth.&lt;/p&gt;

&lt;p&gt;The agent should code against that truth.&lt;/p&gt;

&lt;p&gt;That is the separation I am testing.&lt;/p&gt;

&lt;p&gt;Why this matters for AI coding agents&lt;/p&gt;

&lt;p&gt;A lot of AI coding work still assumes the answer is more context.&lt;/p&gt;

&lt;p&gt;More files.&lt;/p&gt;

&lt;p&gt;More memory.&lt;/p&gt;

&lt;p&gt;More tools.&lt;/p&gt;

&lt;p&gt;More retrieval.&lt;/p&gt;

&lt;p&gt;More orchestration.&lt;/p&gt;

&lt;p&gt;But related context is not the same as authoritative context.&lt;/p&gt;

&lt;p&gt;A giant pile of repo material does not automatically tell an AI agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what owns the change&lt;/li&gt;
&lt;li&gt;what boundary applies&lt;/li&gt;
&lt;li&gt;what evidence matters&lt;/li&gt;
&lt;li&gt;what validator proves safety&lt;/li&gt;
&lt;li&gt;what should not be touched&lt;/li&gt;
&lt;li&gt;where the actual fault line is&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the gap Scarab is designed around.&lt;/p&gt;

&lt;p&gt;The question is not whether an AI agent can generate code.&lt;/p&gt;

&lt;p&gt;It can.&lt;/p&gt;

&lt;p&gt;The question is whether it can work inside a real codebase without drifting, if the repo continuously surfaces what is true, what owns what, what boundaries apply, and what proves the next step is safe.&lt;/p&gt;

&lt;p&gt;That is what I want to keep testing.&lt;/p&gt;

&lt;p&gt;Send the messy repo&lt;/p&gt;

&lt;p&gt;If you know of a public repo, issue, failing workflow, or full-stack bug that looks like real diagnostic terrain, send it through Scarab Field Lab.&lt;/p&gt;

&lt;p&gt;Messy enough to matter.&lt;/p&gt;

&lt;p&gt;Public enough to preserve evidence where possible.&lt;/p&gt;

&lt;p&gt;Complex enough to test the theory across the stack.&lt;/p&gt;

&lt;p&gt;Let’s see what repo truth can surface.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>programmers</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Full Observer Deck Console Landed: Testing Long-Horizon AI Implementation Against Repo Truth</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 26 Jun 2026 20:26:38 +0000</pubDate>
      <link>https://dev.to/scarab-systems/full-observer-deck-console-landed-testing-long-horizon-ai-implementation-against-repo-truth-39n9</link>
      <guid>https://dev.to/scarab-systems/full-observer-deck-console-landed-testing-long-horizon-ai-implementation-against-repo-truth-39n9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8mgh3rlgt2l5tsbqim67.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8mgh3rlgt2l5tsbqim67.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That sentence means something specific.&lt;/p&gt;

&lt;p&gt;Not “an AI generated a dashboard.”&lt;/p&gt;

&lt;p&gt;Not “Codex wrote a lot of code.”&lt;/p&gt;

&lt;p&gt;Not “a mockup became a pretty screen.”&lt;/p&gt;

&lt;p&gt;What landed is a real second-pass implementation of Scarab’s Observer layer: a validator-gated, SDS-guided operator console built across multiple routed workbench surfaces, with source code, backend read models, tests, screenshots, runtime validation, checkpoint documentation, and documented carry-forward gaps.&lt;/p&gt;

&lt;p&gt;This is the strongest Scarab continuous implementation test so far.&lt;/p&gt;

&lt;p&gt;The question&lt;/p&gt;

&lt;p&gt;The question was not whether Codex can write code.&lt;/p&gt;

&lt;p&gt;It can.&lt;/p&gt;

&lt;p&gt;The question was whether an AI coding agent can sustain long-horizon implementation inside a real repo without drifting, if the repo continuously surfaces the truth it needs to build against.&lt;/p&gt;

&lt;p&gt;That is the experiment.&lt;/p&gt;

&lt;p&gt;For this run, Codex wrote the code.&lt;/p&gt;

&lt;p&gt;Scarab supplied the implementation guidance.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;Scarab was not telling Codex exactly what code to write. It was continuously providing repo-specific guidance: current repo truth, ownership surfaces, boundaries, contracts, validators, current gaps, and the next lawful implementation step.&lt;/p&gt;

&lt;p&gt;That is the layer I wanted to test.&lt;/p&gt;

&lt;p&gt;Can the agent keep implementing when the repo itself keeps telling it what is true?&lt;/p&gt;

&lt;p&gt;Why Observer matters&lt;/p&gt;

&lt;p&gt;The target was Scarab’s own Observer layer.&lt;/p&gt;

&lt;p&gt;Observer is the internal operator console I need to see Scarab while I am putting it through its paces.&lt;/p&gt;

&lt;p&gt;It surfaces diagnostics, telemetry, workspaces, evidence, runtime state, gates, policy posture, PR readiness, contracts, schemas, search, and implementation visibility.&lt;/p&gt;

&lt;p&gt;This is not a toy app.&lt;/p&gt;

&lt;p&gt;This is a complex multi-stack console.&lt;/p&gt;

&lt;p&gt;The Observer stack includes Next.js, React, TypeScript, shadcn UI, Tailwind, Radix UI, TanStack Query, TanStack Table, Zustand, React Flow, Monaco, ECharts, Playwright, pnpm, Node.js, Python, RabbitMQ, Celery, JSON Schema, Docker, Docker Compose, and supporting UI/runtime libraries.&lt;/p&gt;

&lt;p&gt;The work had to span frontend, backend read models, runtime visibility, test contracts, route workbenches, state surfaces, screenshot proof, and read-only diagnostic posture.&lt;/p&gt;

&lt;p&gt;That is exactly the kind of long-horizon implementation where AI agents usually begin to drift.&lt;/p&gt;

&lt;p&gt;What landed&lt;/p&gt;

&lt;p&gt;Observer Gold Pass 2 landed as a completed implementation pass, ready for my audit and likely a third visual-polish pass.&lt;/p&gt;

&lt;p&gt;That posture matters.&lt;/p&gt;

&lt;p&gt;I am not claiming “finished forever.”&lt;/p&gt;

&lt;p&gt;The correct claim is:&lt;/p&gt;

&lt;p&gt;Observer Gold Pass 2 landed as a serious second-pass implementation across the Observer workbench surface.&lt;/p&gt;

&lt;p&gt;The Observer Deck now has a real routed/operator-console structure across the major surfaces:&lt;/p&gt;

&lt;p&gt;Overview&lt;/p&gt;

&lt;p&gt;Run Command Center&lt;/p&gt;

&lt;p&gt;Workflow Graph&lt;/p&gt;

&lt;p&gt;Gate Timeline&lt;/p&gt;

&lt;p&gt;Evidence and Artifacts&lt;/p&gt;

&lt;p&gt;Worker Plane&lt;/p&gt;

&lt;p&gt;Vaults and Source Docs&lt;/p&gt;

&lt;p&gt;Target Workspace / Patch Lab&lt;/p&gt;

&lt;p&gt;GitHub PR Console&lt;/p&gt;

&lt;p&gt;Observability / Telemetry&lt;/p&gt;

&lt;p&gt;Run Comparison&lt;/p&gt;

&lt;p&gt;Contracts and Schemas&lt;/p&gt;

&lt;p&gt;Settings / Runtime Profiles&lt;/p&gt;

&lt;p&gt;Search&lt;/p&gt;

&lt;p&gt;The final review captured screenshots for all 14 workbench modes from the rebuilt Observer runtime.&lt;/p&gt;

&lt;p&gt;That means this was not just planned UI.&lt;/p&gt;

&lt;p&gt;The routes exist, render, and were captured as runtime evidence.&lt;/p&gt;

&lt;p&gt;The implementation surface&lt;/p&gt;

&lt;p&gt;Pass 2 landed the shared shell foundation: dark/dense operator deck styling, route/workbench navigation, global read-only object inspector, persistent event dock, stable operator posture, and the left-rail route/mode structure.&lt;/p&gt;

&lt;p&gt;The backend/read-model capacity also expanded.&lt;/p&gt;

&lt;p&gt;The code and docs show read-model surfaces for worker/queue visibility, source-doc and vault readiness, workspace patch/test/diff/retained-evidence/cleanup surfaces, policy/PR/no-leakage/schema/supply-chain posture, observability/telemetry, runtime profiles, and cross-route search correlation.&lt;/p&gt;

&lt;p&gt;Panel-level work landed across the major domains.&lt;/p&gt;

&lt;p&gt;Overview became a command-center surface with KPI/status grammar, owner health, active run attention, subsystem trends, artifact/telemetry previews, and route shortcuts.&lt;/p&gt;

&lt;p&gt;Workflow became a graph/timeline workbench with React Flow surfaces, command controls, selected object inspector, blocked path/provenance, and gate timeline work.&lt;/p&gt;

&lt;p&gt;Queues became a Worker Plane with queue health, worker/task inventory, stale/retry/dead-letter posture, event context, and read-only inspection.&lt;/p&gt;

&lt;p&gt;Runs became a run command center and comparison surface with run rail, active progress, stage/evidence/blocker detail, event controls, A/B comparison, failures/logs/traces where emitted, and honest missing-state handling.&lt;/p&gt;

&lt;p&gt;Evidence became an artifact/source-vault workbench with artifact command center, filters, read-only inspector, preview/provenance tabs, lineage, source docs, and vault readiness.&lt;/p&gt;

&lt;p&gt;Workspaces became a target workspace / patch lab surface with workspace status, patch iterations, test matrix, retained evidence, diff/activity/cleanup posture, and runtime profile visibility.&lt;/p&gt;

&lt;p&gt;Policy became a policy/supply-chain/PR/contracts surface with public safety posture, GitHub PR readiness, no-leakage/human gates, contracts/schemas registry, and supply-chain correlation.&lt;/p&gt;

&lt;p&gt;Observability/Telemetry landed as read-only operator visibility over metrics, traces, logs/events, service/pipeline posture, and existing observability stack boundaries.&lt;/p&gt;

&lt;p&gt;Search landed as a final cross-correlation layer across runs, gates, queues, workers, tasks, artifacts, source docs, workspaces, patches, policy, PRs, schemas, telemetry, blockers, and evidence.&lt;/p&gt;

&lt;p&gt;How the work was completed&lt;/p&gt;

&lt;p&gt;This was not one giant “make dashboard” run.&lt;/p&gt;

&lt;p&gt;It was executed as a staged, validator-gated implementation campaign.&lt;/p&gt;

&lt;p&gt;The roadmap structure was:&lt;/p&gt;

&lt;p&gt;Stage 1: shared shell, navigation, inspector, event dock&lt;/p&gt;

&lt;p&gt;Stage 2: read-model capacity&lt;/p&gt;

&lt;p&gt;Stage 3: Overview&lt;/p&gt;

&lt;p&gt;Stage 4: Workflow Graph and Gate Timeline&lt;/p&gt;

&lt;p&gt;Stage 5: Queues / Worker Plane&lt;/p&gt;

&lt;p&gt;Stage 6: Runs and Run Comparison&lt;/p&gt;

&lt;p&gt;Stage 7: Evidence, Artifacts, Vaults, Source Docs&lt;/p&gt;

&lt;p&gt;Stage 8: Workspaces, Patch Lab, Runtime Profiles&lt;/p&gt;

&lt;p&gt;Stage 9: Policy, GitHub PR, Contracts, Supply Chain&lt;/p&gt;

&lt;p&gt;Stage 10: Observability / Telemetry&lt;/p&gt;

&lt;p&gt;Stage 11: Search final correlation&lt;/p&gt;

&lt;p&gt;Stage 12: Final Gold Review&lt;/p&gt;

&lt;p&gt;Each stage/slice was documented with checkpoint files.&lt;/p&gt;

&lt;p&gt;The uploaded evidence package contains 51 second-pass checkpoint markdown files, plus planning documents and screenshot proof.&lt;/p&gt;

&lt;p&gt;That is a real work trail.&lt;/p&gt;

&lt;p&gt;The process was consistent with the SDS continuous implementation mode I have been developing:&lt;/p&gt;

&lt;p&gt;Scarab supplied implementation guidance and boundaries.&lt;/p&gt;

&lt;p&gt;Codex wrote the code.&lt;/p&gt;

&lt;p&gt;Each slice was planned.&lt;/p&gt;

&lt;p&gt;Fail-first tests were used where practical.&lt;/p&gt;

&lt;p&gt;Backend/read-model changes were paired with frontend types and UI behavior.&lt;/p&gt;

&lt;p&gt;Screenshots were captured as visual proof.&lt;/p&gt;

&lt;p&gt;Missing or unavailable signals were labeled honestly as not_emitted, rather than faked.&lt;/p&gt;

&lt;p&gt;Observer remained read-only.&lt;/p&gt;

&lt;p&gt;Mutation controls were avoided or explicitly disabled/human-gated.&lt;/p&gt;

&lt;p&gt;Final completion was not claimed until validation and runtime proof were captured.&lt;/p&gt;

&lt;p&gt;That is the difference between code generation and governed implementation.&lt;/p&gt;

&lt;p&gt;How it was tested&lt;/p&gt;

&lt;p&gt;The final Stage 12 checkpoint recorded these validation results:&lt;/p&gt;

&lt;p&gt;Backend Observer / Four-Plane contracts: 47 passed in 3.95s&lt;/p&gt;

&lt;p&gt;Console typecheck: pnpm typecheck passed&lt;/p&gt;

&lt;p&gt;Console production build: pnpm build passed&lt;/p&gt;

&lt;p&gt;Full Observer browser suite: 169 passed in 2.3 minutes&lt;/p&gt;

&lt;p&gt;Observer runtime image rebuild passed&lt;/p&gt;

&lt;p&gt;Observer runtime recreate passed&lt;/p&gt;

&lt;p&gt;Runtime health endpoint returned status: ok&lt;/p&gt;

&lt;p&gt;Docker health reported the Observer container as healthy&lt;/p&gt;

&lt;p&gt;14 final runtime screenshots were captured as non-empty PNGs&lt;/p&gt;

&lt;p&gt;The source itself also shows substantial test coverage.&lt;/p&gt;

&lt;p&gt;In the uploaded observer/console/tests directory, the tests cover shell behavior, navigation, Overview, Workflow, Workspaces, Policy, Evidence, Runs, Queues, Observability, Search, accessibility, and runtime boundaries.&lt;/p&gt;

&lt;p&gt;observer-deck.spec.ts alone is about 3,441 lines with 141 test cases.&lt;/p&gt;

&lt;p&gt;observer-polish.spec.ts is about 535 lines with 28 test cases.&lt;/p&gt;

&lt;p&gt;There are also focused accessibility and runtime-boundary tests.&lt;/p&gt;

&lt;p&gt;The Observer Python files also compiled cleanly in an independent compile check: 23 Python files compiled successfully.&lt;/p&gt;

&lt;p&gt;That matters because this is not only a frontend shell.&lt;/p&gt;

&lt;p&gt;The backend/read-model side exists in Python files such as queues.py, workspaces.py, policy.py, observability.py, source_docs.py, runtime_profiles.py, workflows.py, artifacts.py, and runs.py.&lt;/p&gt;

&lt;p&gt;Why this is real work&lt;/p&gt;

&lt;p&gt;This is real work for five reasons.&lt;/p&gt;

&lt;p&gt;First, the implementation exists as actual source code.&lt;/p&gt;

&lt;p&gt;Excluding build artifacts, dependencies, .next, out, test-results, and cache files, the Observer upload contains about 202 source/config files and roughly 42k lines of implementation/config/test code.&lt;/p&gt;

&lt;p&gt;That does not include the dependency lockfile.&lt;/p&gt;

&lt;p&gt;This is not a one-file prototype.&lt;/p&gt;

&lt;p&gt;Second, the frontend is decomposed into real feature areas: overview, workflows, queues, runs, evidence, workspaces, policy, telemetry, search, events, runtime profiles, layout, fixtures, types, contracts, UI primitives, and tests.&lt;/p&gt;

&lt;p&gt;Third, the backend/read-model side exists.&lt;/p&gt;

&lt;p&gt;Observer is not only a static React shell.&lt;/p&gt;

&lt;p&gt;Fourth, the documentation trail is extensive and structured.&lt;/p&gt;

&lt;p&gt;The docs include roadmaps, slice plans, checkpoint summaries, screenshot directories, and final review proof.&lt;/p&gt;

&lt;p&gt;It looks like a real engineering pass, not after-the-fact storytelling.&lt;/p&gt;

&lt;p&gt;Fifth, the final checkpoint is honest about carry-forward gaps.&lt;/p&gt;

&lt;p&gt;It does not pretend the Observer is perfect.&lt;/p&gt;

&lt;p&gt;It records that the global header refresh-pill/layout jump still needs a later shell/runtime pass, that trace/log rows remain honest not_emitted until approved observability query paths exist, and that a third visual-polish pass is recommended.&lt;/p&gt;

&lt;p&gt;That honesty is part of the proof.&lt;/p&gt;

&lt;p&gt;A system that calls itself done too early is not governed implementation.&lt;/p&gt;

&lt;p&gt;It is just confidence with a UI.&lt;/p&gt;

&lt;p&gt;What this proves in the Scarab thread&lt;/p&gt;

&lt;p&gt;This is the third major proof direction in the Scarab work.&lt;/p&gt;

&lt;p&gt;The first was narrow patching.&lt;/p&gt;

&lt;p&gt;Given repo truth, rules, ownership, boundaries, and validators, an AI coding agent can make narrow bug patches without drifting across unrelated repo surfaces.&lt;/p&gt;

&lt;p&gt;The second was stepwise quieting.&lt;/p&gt;

&lt;p&gt;Given a noisy repo surface, Scarab can run a loop: find the hotspot, identify the boundary, make the bounded repair, rerun, and step down toward quiet.&lt;/p&gt;

&lt;p&gt;The Observer build tests the next layer:&lt;/p&gt;

&lt;p&gt;long-horizon AI implementation.&lt;/p&gt;

&lt;p&gt;Not one patch.&lt;/p&gt;

&lt;p&gt;Not one repair.&lt;/p&gt;

&lt;p&gt;Not one quick feature.&lt;/p&gt;

&lt;p&gt;A sustained implementation campaign across a real repo and a complex stack.&lt;/p&gt;

&lt;p&gt;The important point is not volume.&lt;/p&gt;

&lt;p&gt;Anyone can make an agent generate code volume.&lt;/p&gt;

&lt;p&gt;The important point is behavior.&lt;/p&gt;

&lt;p&gt;Can the agent keep going without losing the thread?&lt;/p&gt;

&lt;p&gt;Can it preserve contracts?&lt;/p&gt;

&lt;p&gt;Can it avoid fake data?&lt;/p&gt;

&lt;p&gt;Can it label missing signals honestly?&lt;/p&gt;

&lt;p&gt;Can it checkpoint stages?&lt;/p&gt;

&lt;p&gt;Can it capture proof?&lt;/p&gt;

&lt;p&gt;Can it refuse to call incomplete work done?&lt;/p&gt;

&lt;p&gt;That is what this build tested.&lt;/p&gt;

&lt;p&gt;The conclusion&lt;/p&gt;

&lt;p&gt;Observer Gold Pass 2 landed.&lt;/p&gt;

&lt;p&gt;The correct claim is not:&lt;/p&gt;

&lt;p&gt;“Observer is finished forever.”&lt;/p&gt;

&lt;p&gt;The correct claim is:&lt;/p&gt;

&lt;p&gt;Observer Gold Pass 2 landed as a real, validator-gated, SDS-guided implementation pass across the Observer workbench surface, with source code, tests, read models, screenshots, runtime validation, and documented carry-forward gaps.&lt;/p&gt;

&lt;p&gt;And the stronger product proof is:&lt;/p&gt;

&lt;p&gt;Codex wrote the code, but the run was kept aligned by Scarab’s repo-specific implementation guidance, ownership/boundary structure, validator gates, checkpointing, and refusal to call incomplete work done.&lt;/p&gt;

&lt;p&gt;That is real governed implementation work.&lt;/p&gt;

&lt;p&gt;This is the layer I have been trying to build toward.&lt;/p&gt;

&lt;p&gt;Not AI code generation.&lt;/p&gt;

&lt;p&gt;Not vibe coding.&lt;/p&gt;

&lt;p&gt;Not “give the model a bigger prompt.”&lt;/p&gt;

&lt;p&gt;Repo truth surfaced continuously enough that an AI coding agent can keep implementing without drifting away from the system it is supposed to serve.&lt;/p&gt;

&lt;p&gt;That is the experiment.&lt;/p&gt;

&lt;p&gt;Observer landed.&lt;/p&gt;

&lt;p&gt;And it landed as real work.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>From Narrow Patches to Long-Horizon AI Implementation</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 26 Jun 2026 12:56:10 +0000</pubDate>
      <link>https://dev.to/scarab-systems/from-narrow-patches-to-long-horizon-ai-implementation-55il</link>
      <guid>https://dev.to/scarab-systems/from-narrow-patches-to-long-horizon-ai-implementation-55il</guid>
      <description>&lt;p&gt;I’m starting to see the larger thread in the Scarab field work.&lt;/p&gt;

&lt;p&gt;At first, the question was narrow:&lt;/p&gt;

&lt;p&gt;Can repo truth help an AI coding agent make a precise patch without drifting across the codebase?&lt;/p&gt;

&lt;p&gt;That has been showing up in the public field tests.&lt;/p&gt;

&lt;p&gt;Given a baseline of repo truth, rules, ownership, boundaries, and validators, the coding agent does not need to “understand the whole repo” in some vague, giant-context way.&lt;/p&gt;

&lt;p&gt;It needs the right implementation surface.&lt;/p&gt;

&lt;p&gt;It needs to know what is true, what owns the area, what boundary applies, and what proves the change is safe.&lt;/p&gt;

&lt;p&gt;That is how we have been getting narrow patches into complex repositories.&lt;/p&gt;

&lt;p&gt;From patching to quieting&lt;/p&gt;

&lt;p&gt;The next question was different.&lt;/p&gt;

&lt;p&gt;Instead of targeting one bug, could Scarab work through a noisy repo surface and bring it down to quiet?&lt;/p&gt;

&lt;p&gt;That became the stepwise quieting experiment.&lt;/p&gt;

&lt;p&gt;In that mode, Scarab does not try to fix everything in one giant patch.&lt;/p&gt;

&lt;p&gt;It surfaces the next hotspot, identifies the boundary around it, repairs only what the evidence supports, reruns the diagnostic, and steps down again.&lt;/p&gt;

&lt;p&gt;The loop looks like this:&lt;/p&gt;

&lt;p&gt;hotspot&lt;br&gt;
boundary&lt;br&gt;
bounded repair&lt;br&gt;
rerun&lt;br&gt;
step down&lt;br&gt;
repeat until quiet&lt;/p&gt;

&lt;p&gt;That experiment mattered because messy repo work often turns into weeks of circling.&lt;/p&gt;

&lt;p&gt;You fix one thing.&lt;/p&gt;

&lt;p&gt;Another surface gets noisy.&lt;/p&gt;

&lt;p&gt;The issue moves.&lt;/p&gt;

&lt;p&gt;The boundary was actually somewhere else.&lt;/p&gt;

&lt;p&gt;The patch gets wider.&lt;/p&gt;

&lt;p&gt;The repo gets harder to reason about.&lt;/p&gt;

&lt;p&gt;Stepwise quieting tested whether a repo could be brought from noisy to quiet through a controlled diagnostic loop instead of guesswork, broad patching, or agent freewheeling.&lt;/p&gt;

&lt;p&gt;The third question: long-horizon implementation&lt;/p&gt;

&lt;p&gt;Now I’m testing a third question:&lt;/p&gt;

&lt;p&gt;Can repo truth support long-horizon AI implementation?&lt;/p&gt;

&lt;p&gt;Not one patch.&lt;/p&gt;

&lt;p&gt;Not one repair.&lt;/p&gt;

&lt;p&gt;Not one quick feature.&lt;/p&gt;

&lt;p&gt;A long implementation campaign across a real, complex stack.&lt;/p&gt;

&lt;p&gt;The current test case is Scarab’s own Observer layer: the internal operator console I’m building so I can see Scarab’s diagnostics, telemetry, workspaces, evidence, runtime state, gates, patch surfaces, and implementation visibility while the system is running.&lt;/p&gt;

&lt;p&gt;This is not a toy app.&lt;/p&gt;

&lt;p&gt;The Observer stack includes:&lt;/p&gt;

&lt;p&gt;Next.js&lt;br&gt;
React&lt;br&gt;
TypeScript&lt;br&gt;
shadcn UI&lt;br&gt;
shadcn/Tailwind v4&lt;br&gt;
Tailwind CSS&lt;br&gt;
Radix UI&lt;br&gt;
TanStack Query&lt;br&gt;
TanStack Table&lt;br&gt;
Zustand&lt;br&gt;
React Flow&lt;br&gt;
Monaco Editor&lt;br&gt;
@monaco-editor/react&lt;br&gt;
Apache ECharts&lt;br&gt;
Playwright&lt;br&gt;
pnpm&lt;br&gt;
Node.js&lt;br&gt;
Python&lt;br&gt;
RabbitMQ&lt;br&gt;
Celery&lt;br&gt;
JSON Schema&lt;br&gt;
Lucide React&lt;br&gt;
CMDK&lt;br&gt;
Class Variance Authority&lt;br&gt;
clsx&lt;br&gt;
tailwind-merge&lt;br&gt;
Docker&lt;br&gt;
Docker Compose&lt;/p&gt;

&lt;p&gt;The important thing is not that Codex is writing code.&lt;/p&gt;

&lt;p&gt;Codex is writing the code.&lt;/p&gt;

&lt;p&gt;The important thing is what keeps Codex aligned while it writes.&lt;/p&gt;

&lt;p&gt;Scarab is not telling Codex what code to write&lt;/p&gt;

&lt;p&gt;In this mode, Scarab provides repo-specific implementation guidance along the way.&lt;/p&gt;

&lt;p&gt;Not exact code instructions.&lt;/p&gt;

&lt;p&gt;Implementation guidance.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;p&gt;What owns this surface?&lt;br&gt;
What boundaries apply?&lt;br&gt;
What contracts already exist?&lt;br&gt;
What validators must pass?&lt;br&gt;
What gaps are real?&lt;br&gt;
What should not be invented?&lt;br&gt;
What is the next lawful implementation step toward the target architecture?&lt;/p&gt;

&lt;p&gt;That guidance appears to be the difference.&lt;/p&gt;

&lt;p&gt;Instead of giving Codex a giant prompt and hoping it remembers the system, Scarab keeps resurfacing the repo’s current truth as the implementation proceeds.&lt;/p&gt;

&lt;p&gt;That matters because long-horizon agent work is where the usual problems begin.&lt;/p&gt;

&lt;p&gt;The agent can generate code.&lt;/p&gt;

&lt;p&gt;The agent can pass a local test.&lt;/p&gt;

&lt;p&gt;The agent can make a screen look plausible.&lt;/p&gt;

&lt;p&gt;But can it keep working for hours without losing the thread?&lt;/p&gt;

&lt;p&gt;Can it preserve contracts?&lt;/p&gt;

&lt;p&gt;Can it avoid fake data?&lt;/p&gt;

&lt;p&gt;Can it distinguish visible progress from validated completion?&lt;/p&gt;

&lt;p&gt;Can it leave rollback checkpoints?&lt;/p&gt;

&lt;p&gt;Can it refuse to call the work finished before final gates pass?&lt;/p&gt;

&lt;p&gt;That is what this Observer build is testing.&lt;/p&gt;

&lt;p&gt;Pass 1: foundation&lt;/p&gt;

&lt;p&gt;Pass 1 took about 8 hours.&lt;/p&gt;

&lt;p&gt;That pass did not try to jump straight to the gold-standard mockups.&lt;/p&gt;

&lt;p&gt;It took the Observer foundation I already had and absorbed the target direction into what was actually wired: routes, contracts, read models, tests, checkpoint summaries, and working panel surfaces.&lt;/p&gt;

&lt;p&gt;That was important.&lt;/p&gt;

&lt;p&gt;The goal was not to let an AI agent paint over the repo with a beautiful fake dashboard.&lt;/p&gt;

&lt;p&gt;The goal was to preserve the under-the-hood truth while turning the Observer into a real operator console.&lt;/p&gt;

&lt;p&gt;Pass 2: gold pass&lt;/p&gt;

&lt;p&gt;Pass 2 is now underway.&lt;/p&gt;

&lt;p&gt;This is the gold pass.&lt;/p&gt;

&lt;p&gt;It is moving panel by panel toward the richer Observer console: dark dense operator shell, route workbenches, visual proof screenshots, backend/read-model contracts, Playwright coverage, and validator-gated checkpoints.&lt;/p&gt;

&lt;p&gt;Current state from the run:&lt;/p&gt;

&lt;p&gt;branch ahead by 42 commits&lt;br&gt;
Stages 1 through 8 checkpointed&lt;br&gt;
Policy 4 of 6 slices committed&lt;br&gt;
remaining work includes Policy finish, Observability/Telemetry, Search correlation, final gold review, runtime verification, and screenshot proof&lt;/p&gt;

&lt;p&gt;The run estimated itself at roughly 75–80% complete by checkpoint count, but closer to 65–70% complete by remaining integration risk.&lt;/p&gt;

&lt;p&gt;That distinction is one of the most interesting parts.&lt;/p&gt;

&lt;p&gt;It is not saying:&lt;/p&gt;

&lt;p&gt;lots of code was written, therefore done&lt;/p&gt;

&lt;p&gt;It is tracking remaining risk.&lt;/p&gt;

&lt;p&gt;It knows which stages are checkpointed.&lt;/p&gt;

&lt;p&gt;It knows what is still uncommitted.&lt;/p&gt;

&lt;p&gt;It knows final screenshots, runtime checks, Playwright coverage, mockup comparison, and unresolved polish issues still have to pass before the work can be called complete.&lt;/p&gt;

&lt;p&gt;That is the behavior I wanted to see.&lt;/p&gt;

&lt;p&gt;What the screenshots show&lt;/p&gt;

&lt;p&gt;The screenshots from Pass 2 are work-in-progress proof.&lt;/p&gt;

&lt;p&gt;They are not the final gold state.&lt;/p&gt;

&lt;p&gt;But they show the Observer becoming real: overview, workflow, evidence, queues, runs, workspaces, policy, and read-only operator surfaces starting to take shape inside a coherent dark console.&lt;/p&gt;

&lt;p&gt;The point is not that the UI is finished.&lt;/p&gt;

&lt;p&gt;The point is that the implementation campaign is still moving through checkpoints instead of collapsing into a pile of generated code.&lt;/p&gt;

&lt;p&gt;The thread&lt;/p&gt;

&lt;p&gt;For me, this ties the Scarab work together.&lt;/p&gt;

&lt;p&gt;Narrow patching tests whether repo truth can guide bounded repairs.&lt;/p&gt;

&lt;p&gt;Stepwise quieting tests whether repo truth can reduce a noisy repo surface to quiet.&lt;/p&gt;

&lt;p&gt;The Observer build tests whether repo truth can sustain long-horizon AI implementation over time.&lt;/p&gt;

&lt;p&gt;That is the part I care about.&lt;/p&gt;

&lt;p&gt;Not “AI wrote a dashboard.”&lt;/p&gt;

&lt;p&gt;Not “Codex generated a lot of code.”&lt;/p&gt;

&lt;p&gt;The question is whether an AI coding agent can keep implementing inside a real repo without drifting, if the repo continuously surfaces what is true, what owns what, what boundaries apply, and what proves the next step is safe.&lt;/p&gt;

&lt;p&gt;That is the experiment.&lt;/p&gt;

&lt;p&gt;And so far, it is real work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fylp0wco1z3omhqmkwdsz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fylp0wco1z3omhqmkwdsz.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5coblq8ak1atkplqo0n6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5coblq8ak1atkplqo0n6.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhqgwrhzf1rnaduqz44qf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhqgwrhzf1rnaduqz44qf.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Thought I Was Building a Diagnostic Tool. I Found an Operating Layer for AI Agents.</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Sat, 20 Jun 2026 15:30:27 +0000</pubDate>
      <link>https://dev.to/scarab-systems/i-thought-i-was-building-a-diagnostic-tool-i-found-an-operating-layer-for-ai-agents-5b3e</link>
      <guid>https://dev.to/scarab-systems/i-thought-i-was-building-a-diagnostic-tool-i-found-an-operating-layer-for-ai-agents-5b3e</guid>
      <description>&lt;p&gt;When Scarab Diagnostic Suite started taking shape, I thought I was building diagnostics.&lt;/p&gt;

&lt;p&gt;That was the obvious word for it.&lt;/p&gt;

&lt;p&gt;AI coding agents were changing code quickly. Repos were drifting. Bugs were appearing in strange places. Tests were passing without proving the right thing. Files were taking ownership of behavior they should not own.&lt;/p&gt;

&lt;p&gt;So the first question was simple:&lt;/p&gt;

&lt;p&gt;Can a system drop into a messy repo, locate the real failure surface, and identify the narrow repair lane without making everything worse?&lt;/p&gt;

&lt;p&gt;That is where Scarab started.&lt;/p&gt;

&lt;p&gt;And that mode matters.&lt;/p&gt;

&lt;p&gt;Because anyone working seriously with AI-assisted software development has seen the pattern by now.&lt;/p&gt;

&lt;p&gt;The agent patches one issue.&lt;/p&gt;

&lt;p&gt;The patch disturbs another part of the system.&lt;/p&gt;

&lt;p&gt;The agent patches that.&lt;/p&gt;

&lt;p&gt;Then another hidden assumption breaks.&lt;/p&gt;

&lt;p&gt;Then a test gets adjusted.&lt;/p&gt;

&lt;p&gt;Then a workaround becomes structure.&lt;/p&gt;

&lt;p&gt;Then, eventually, the repo is "working" in a way that no longer fully resembles itself.&lt;/p&gt;

&lt;p&gt;The system runs.&lt;/p&gt;

&lt;p&gt;But the truth drifted.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure class
&lt;/h2&gt;

&lt;p&gt;That is the failure class Scarab Systems is built around.&lt;/p&gt;

&lt;p&gt;Not just broken code.&lt;/p&gt;

&lt;p&gt;Software drift.&lt;/p&gt;

&lt;p&gt;Boundary failures.&lt;/p&gt;

&lt;p&gt;Repo-truth misalignment.&lt;/p&gt;

&lt;p&gt;Verification gaps.&lt;/p&gt;

&lt;p&gt;Entropy.&lt;/p&gt;

&lt;p&gt;The quiet moment when the code appears functional, but the repo has moved away from its own architecture, obligations, and intended shape.&lt;/p&gt;

&lt;p&gt;Over the last few weeks, Scarab has been field-tested across more than 30 public software failure surfaces, including patches and diagnostic reports against major open-source platforms.&lt;/p&gt;

&lt;p&gt;That public field record matters because it proves the first mode:&lt;/p&gt;

&lt;p&gt;Scarab can enter a live failure surface, identify the boundary that stopped preserving truth, and guide a narrow repair lane that does not casually break the rest of the repo.&lt;/p&gt;

&lt;p&gt;But the more interesting discovery was not only that Scarab could help find bugs.&lt;/p&gt;

&lt;p&gt;The more interesting discovery was that truthful repair behaves differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Truthful repair behaves differently
&lt;/h2&gt;

&lt;p&gt;Most patching work tends to chase symptoms.&lt;/p&gt;

&lt;p&gt;A bug appears here.&lt;/p&gt;

&lt;p&gt;A workaround appears there.&lt;/p&gt;

&lt;p&gt;A test gets adjusted somewhere else.&lt;/p&gt;

&lt;p&gt;The repo slowly becomes a negotiation between visible errors and local patches.&lt;/p&gt;

&lt;p&gt;But when a repair is aligned with the repo's actual truth, something else happens.&lt;/p&gt;

&lt;p&gt;The repair does not just silence the visible failure.&lt;/p&gt;

&lt;p&gt;It moves the repo closer to itself.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A repo does not need to become some abstract "working version" of itself.&lt;/p&gt;

&lt;p&gt;It needs to preserve the system it is actually obligated to be.&lt;/p&gt;

&lt;p&gt;That is why I stopped thinking about Scarab as only a diagnostic tool for individual failures.&lt;/p&gt;

&lt;p&gt;The second mode is stepwise repair.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stepwise repair, not entropy management
&lt;/h2&gt;

&lt;p&gt;In messy AI-assisted repos, failures are not always isolated.&lt;/p&gt;

&lt;p&gt;They collect in hot spots.&lt;/p&gt;

&lt;p&gt;One bug may be the visible edge of a deeper boundary problem.&lt;/p&gt;

&lt;p&gt;One test failure may reflect a responsibility that moved.&lt;/p&gt;

&lt;p&gt;One runtime issue may expose a false assumption that has spread.&lt;/p&gt;

&lt;p&gt;One generated artifact may have quietly been treated as source truth.&lt;/p&gt;

&lt;p&gt;If the coding agent repairs one bug at a time without understanding the repo's truth boundaries, it can go in circles forever:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Patch the bug.&lt;/li&gt;
&lt;li&gt;Patch what the patch broke.&lt;/li&gt;
&lt;li&gt;Patch the new workaround.&lt;/li&gt;
&lt;li&gt;Patch the test.&lt;/li&gt;
&lt;li&gt;Patch the side effect.&lt;/li&gt;
&lt;li&gt;Patch the patch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is not repair.&lt;/p&gt;

&lt;p&gt;That is entropy management.&lt;/p&gt;

&lt;p&gt;Scarab is being developed around a different theory:&lt;/p&gt;

&lt;p&gt;If repairs happen along the repo's truthful boundaries, the system can be brought step by step toward quiet.&lt;/p&gt;

&lt;p&gt;Not quiet because the errors are hidden.&lt;/p&gt;

&lt;p&gt;Quiet because the repo is becoming more coherent.&lt;/p&gt;

&lt;p&gt;That is a very different thing.&lt;/p&gt;

&lt;p&gt;A truthful boundary repair can ripple outward in a good way.&lt;/p&gt;

&lt;p&gt;It can reduce pressure on nearby failure surfaces.&lt;/p&gt;

&lt;p&gt;It can clarify ownership.&lt;/p&gt;

&lt;p&gt;It can remove the need for a workaround.&lt;/p&gt;

&lt;p&gt;It can make a test meaningful again.&lt;/p&gt;

&lt;p&gt;It can restore the difference between source truth and downstream output.&lt;/p&gt;

&lt;p&gt;It can bring the system closer to its baseline instead of dragging it into a patched abstraction of itself.&lt;/p&gt;

&lt;p&gt;That is the part I think matters for the future of AI coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scarab does not replace the coding agent
&lt;/h2&gt;

&lt;p&gt;The next serious leap is not simply making agents faster.&lt;/p&gt;

&lt;p&gt;They are already fast.&lt;/p&gt;

&lt;p&gt;The next leap is making sure they do not destroy coherence while they move.&lt;/p&gt;

&lt;p&gt;But this part is important:&lt;/p&gt;

&lt;p&gt;Scarab is not trying to replace the AI coding agent.&lt;/p&gt;

&lt;p&gt;It is not another model.&lt;/p&gt;

&lt;p&gt;It is not a second developer.&lt;/p&gt;

&lt;p&gt;It is not a magical correctness oracle.&lt;/p&gt;

&lt;p&gt;Scarab Diagnostic Suite is a technical diagnostic layer that produces the right kind of repo-grounded findings for the coding agent to act on.&lt;/p&gt;

&lt;p&gt;The agent is still the implementer.&lt;/p&gt;

&lt;p&gt;The human still gives intent.&lt;/p&gt;

&lt;p&gt;Scarab reads the repo, identifies the relevant truth surfaces, exposes the boundary conditions, and returns evidence-backed findings that help the agent stay inside the right lane.&lt;/p&gt;

&lt;p&gt;That is why the system can be software-agnostic and agent-agnostic.&lt;/p&gt;

&lt;p&gt;It does not need to own the repo.&lt;/p&gt;

&lt;p&gt;It does not need to replace the workflow.&lt;/p&gt;

&lt;p&gt;It does not need to care whether the developer is using Codex, Claude Code, Cursor, Copilot, Devin, a local model, or a human engineer.&lt;/p&gt;

&lt;p&gt;The role is simpler and more technical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give the implementer better findings.&lt;/li&gt;
&lt;li&gt;Make the repo's truth easier to see.&lt;/li&gt;
&lt;li&gt;Keep the repair or build path aligned with the system that already exists.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The agent should not grade its own correctness
&lt;/h2&gt;

&lt;p&gt;True autonomous coding agents cannot be built on guesswork alone.&lt;/p&gt;

&lt;p&gt;They need a deterministic layer outside the model.&lt;/p&gt;

&lt;p&gt;A layer that can tell the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This surface owns this behavior.&lt;/li&gt;
&lt;li&gt;This boundary cannot move casually.&lt;/li&gt;
&lt;li&gt;This artifact is not source truth.&lt;/li&gt;
&lt;li&gt;This test proves this claim.&lt;/li&gt;
&lt;li&gt;This config carries this runtime obligation.&lt;/li&gt;
&lt;li&gt;This repair lane is narrow.&lt;/li&gt;
&lt;li&gt;This change preserved the repo.&lt;/li&gt;
&lt;li&gt;This change drifted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent should not have to invent the repo's architecture every time it opens a task.&lt;/p&gt;

&lt;p&gt;It should not have to decide what is canonical from whatever happens to fit in context.&lt;/p&gt;

&lt;p&gt;It should not grade its own correctness.&lt;/p&gt;

&lt;p&gt;It should not silently move system boundaries and then announce that the build passed.&lt;/p&gt;

&lt;p&gt;That is too much authority for a probabilistic worker inside a complex system.&lt;/p&gt;

&lt;p&gt;The repo needs its own governed relationship to truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three modes of Scarab
&lt;/h2&gt;

&lt;p&gt;That is where Scarab is moving next.&lt;/p&gt;

&lt;p&gt;Right now, I see three operating modes taking shape.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Public field diagnostics
&lt;/h3&gt;

&lt;p&gt;Enter a failure surface.&lt;/p&gt;

&lt;p&gt;Identify the boundary.&lt;/p&gt;

&lt;p&gt;Produce a narrow repair lane.&lt;/p&gt;

&lt;p&gt;This is the easiest mode to see publicly because it shows up in open-source issues, patches, and field reports.&lt;/p&gt;

&lt;p&gt;A repo has a visible failure.&lt;/p&gt;

&lt;p&gt;Something drifted.&lt;/p&gt;

&lt;p&gt;Scarab asks:&lt;/p&gt;

&lt;p&gt;What truth was this system supposed to preserve?&lt;/p&gt;

&lt;p&gt;Which boundary stopped preserving it?&lt;/p&gt;

&lt;p&gt;What evidence proves where that happened?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Stepwise repo quieting
&lt;/h3&gt;

&lt;p&gt;Move through hot spots in a sequence that brings the system closer to coherence instead of chasing symptoms forever.&lt;/p&gt;

&lt;p&gt;This matters because messy repos do not always fail one bug at a time.&lt;/p&gt;

&lt;p&gt;They often fail around pressure points.&lt;/p&gt;

&lt;p&gt;If repair follows the repo's truthful boundaries, one good repair can lower pressure elsewhere.&lt;/p&gt;

&lt;p&gt;Not because the system was magically fixed.&lt;/p&gt;

&lt;p&gt;Because the repair moved the repo closer to its actual obligations.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Active agentic governance
&lt;/h3&gt;

&lt;p&gt;This is the mode I am working toward now.&lt;/p&gt;

&lt;p&gt;Continuous monitoring while AI-assisted development is happening.&lt;/p&gt;

&lt;p&gt;Not just:&lt;/p&gt;

&lt;p&gt;What broke?&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the agent about to build on?&lt;/li&gt;
&lt;li&gt;Is it building on repo truth or residue?&lt;/li&gt;
&lt;li&gt;Is this feature strengthening the system or introducing a hidden drift surface?&lt;/li&gt;
&lt;li&gt;Did this layer preserve the boundaries beneath it?&lt;/li&gt;
&lt;li&gt;Did the repo become more coherent after the change?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the future I am interested in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing layer
&lt;/h2&gt;

&lt;p&gt;Humans describe intent in real language.&lt;/p&gt;

&lt;p&gt;Repos preserve truth mechanically.&lt;/p&gt;

&lt;p&gt;AI coding agents operate inside governed boundaries.&lt;/p&gt;

&lt;p&gt;Diagnostics verify whether the system stayed coherent.&lt;/p&gt;

&lt;p&gt;Each new feature should not make the repo heavier, stranger, and harder to trust.&lt;/p&gt;

&lt;p&gt;Each layer of work should strengthen the repo as itself.&lt;/p&gt;

&lt;p&gt;That is the real promise of AI-assisted development.&lt;/p&gt;

&lt;p&gt;Not just more code.&lt;/p&gt;

&lt;p&gt;Not just faster code.&lt;/p&gt;

&lt;p&gt;Not a world where humans spend all day babysitting the thing that was supposed to give them leverage.&lt;/p&gt;

&lt;p&gt;A world where the agent can move quickly because the operating boundary is clear.&lt;/p&gt;

&lt;p&gt;A world where the human does not have to manually hold every architectural truth in their head.&lt;/p&gt;

&lt;p&gt;A world where the repo can tell the agent what must remain true.&lt;/p&gt;

&lt;p&gt;That is the layer I think serious autonomous software development is missing.&lt;/p&gt;

&lt;p&gt;And that is what Scarab Systems is being built to explore.&lt;/p&gt;

&lt;p&gt;The public field reports are not the end of the story.&lt;/p&gt;

&lt;p&gt;They are the proof trail.&lt;/p&gt;

&lt;p&gt;The bigger implication is that repo-side deterministic governance may be one of the missing foundations for true autonomous coding agents.&lt;/p&gt;

&lt;p&gt;Because autonomy without truth is just acceleration.&lt;/p&gt;

&lt;p&gt;And acceleration without truth is drift.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>discuss</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Scarab Diagnostic Field Test #034 - Prometheus Docker Swarm Label Source Boundary</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 19 Jun 2026 23:48:26 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarab-diagnostic-field-test-034-prometheus-docker-swarm-label-source-boundary-48ke</link>
      <guid>https://dev.to/scarab-systems/scarab-diagnostic-field-test-034-prometheus-docker-swarm-label-source-boundary-48ke</guid>
      <description>&lt;p&gt;Target: &lt;a href="https://github.com/prometheus/prometheus" rel="noopener noreferrer"&gt;prometheus/prometheus&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Issue: &lt;a href="https://github.com/prometheus/prometheus/issues/12244" rel="noopener noreferrer"&gt;prometheus/prometheus#12244&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pull request: &lt;a href="https://github.com/prometheus/prometheus/pull/18979" rel="noopener noreferrer"&gt;prometheus/prometheus#18979&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Field Lab record: &lt;a href="https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/prometheus-prometheus-12244" rel="noopener noreferrer"&gt;Prometheus #12244&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This field test was about documentation, but not "just documentation."&lt;/p&gt;

&lt;p&gt;The public issue reported confusion around Docker Swarm task discovery metadata in Prometheus.&lt;/p&gt;

&lt;p&gt;The user expected &lt;code&gt;__meta_dockerswarm_container_label_&amp;lt;labelname&amp;gt;&lt;/code&gt; to expose labels from the running container or image, such as OCI image labels.&lt;/p&gt;

&lt;p&gt;The visible behavior was different.&lt;/p&gt;

&lt;p&gt;The metadata existed, but the source was not the runtime container or image label surface the user expected.&lt;/p&gt;

&lt;p&gt;That made this a boundary problem:&lt;/p&gt;

&lt;p&gt;what does the documented metadata name mean, and which public source of truth does it actually represent?&lt;/p&gt;

&lt;h2&gt;
  
  
  Field Lab record
&lt;/h2&gt;

&lt;p&gt;The public Field Lab record for this case is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/prometheus-prometheus-12244" rel="noopener noreferrer"&gt;https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/prometheus-prometheus-12244&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The record includes the public issue, the public pull request, a public comment, the repair scope, validation summary, and non-claims.&lt;/p&gt;

&lt;p&gt;It contains public links, status, validation, and claim boundaries only. It does not contain SDS source code or non-public product material.&lt;/p&gt;

&lt;p&gt;The case record is only the public evidence layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDS result
&lt;/h2&gt;

&lt;p&gt;SDS surfaced a documentation boundary around Docker Swarm task discovery.&lt;/p&gt;

&lt;p&gt;The important finding was not that Prometheus should add a new Docker API call.&lt;/p&gt;

&lt;p&gt;It was not that service discovery should begin inspecting image labels.&lt;/p&gt;

&lt;p&gt;It was not that runtime behavior should change.&lt;/p&gt;

&lt;p&gt;The finding was smaller:&lt;/p&gt;

&lt;p&gt;Prometheus documentation described a metadata label in a way that could reasonably be read as "labels from the container," while the public code path populates that metadata from the Swarm task's container spec.&lt;/p&gt;

&lt;p&gt;That difference matters because service-discovery metadata is used as an operational contract.&lt;/p&gt;

&lt;p&gt;People write relabeling rules against these names.&lt;/p&gt;

&lt;p&gt;If the source of a metadata field is ambiguous, users may look for data in the wrong place, configure the wrong thing, or assume a missing label is a Prometheus bug when it is really a source-boundary mismatch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure shape
&lt;/h2&gt;

&lt;p&gt;The failure shape was a mismatch between expectation and source.&lt;/p&gt;

&lt;p&gt;The public issue described a reasonable operator expectation:&lt;/p&gt;

&lt;p&gt;if the metadata name says &lt;code&gt;container_label&lt;/code&gt;, it might refer to labels visible on the running container or inherited from the image.&lt;/p&gt;

&lt;p&gt;But Docker Swarm task discovery has a more specific source.&lt;/p&gt;

&lt;p&gt;The relevant metadata is populated from the task's container specification.&lt;/p&gt;

&lt;p&gt;That is close enough in language to sound obvious after the fact, but not close enough for an operator reading the docs while debugging a production scrape configuration.&lt;/p&gt;

&lt;p&gt;That is why the field test did not treat this as a runtime bug first.&lt;/p&gt;

&lt;p&gt;The problem was not proven at the behavior layer.&lt;/p&gt;

&lt;p&gt;The problem was at the wording boundary:&lt;/p&gt;

&lt;p&gt;the docs did not make the source specific enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Boundary
&lt;/h2&gt;

&lt;p&gt;The boundary in this field test was:&lt;/p&gt;

&lt;p&gt;Docker Swarm task metadata should distinguish labels from the Swarm task container spec from labels on a running Docker container or image.&lt;/p&gt;

&lt;p&gt;Those are different surfaces.&lt;/p&gt;

&lt;p&gt;They may overlap in everyday language.&lt;/p&gt;

&lt;p&gt;They may even contain similar-looking labels in some deployments.&lt;/p&gt;

&lt;p&gt;But they are not the same source of truth.&lt;/p&gt;

&lt;p&gt;For service discovery, that distinction is important because a metadata label name becomes something users build configuration around.&lt;/p&gt;

&lt;p&gt;If the docs leave the source implicit, the user has to reverse-engineer the behavior from Docker API responses and Prometheus discovery code.&lt;/p&gt;

&lt;p&gt;That is not a good boundary for public configuration documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;p&gt;The repair is a one-line documentation clarification in the Prometheus configuration docs.&lt;/p&gt;

&lt;p&gt;The pull request is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/prometheus/prometheus/pull/18979" rel="noopener noreferrer"&gt;https://github.com/prometheus/prometheus/pull/18979&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The changed public file is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docs/configuration/configuration.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repair clarifies that the Docker Swarm task metadata label comes from the Swarm task's container spec.&lt;/p&gt;

&lt;p&gt;That is the whole patch.&lt;/p&gt;

&lt;p&gt;No runtime behavior change.&lt;/p&gt;

&lt;p&gt;No new Docker discovery logic.&lt;/p&gt;

&lt;p&gt;No new Docker API calls.&lt;/p&gt;

&lt;p&gt;No attempt to make Prometheus inspect image labels.&lt;/p&gt;

&lt;p&gt;Just a clearer public contract for the metadata that already exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this was not a code repair
&lt;/h2&gt;

&lt;p&gt;One of the risks with code-agent work is that everything starts to look like a code patch.&lt;/p&gt;

&lt;p&gt;This field test is a useful counterexample.&lt;/p&gt;

&lt;p&gt;The public issue was real.&lt;/p&gt;

&lt;p&gt;The confusion was real.&lt;/p&gt;

&lt;p&gt;The operator experience was real.&lt;/p&gt;

&lt;p&gt;But the repair boundary was documentation.&lt;/p&gt;

&lt;p&gt;That matters.&lt;/p&gt;

&lt;p&gt;If a code agent had treated this as "missing labels," it could have reached for runtime behavior: inspect more Docker surfaces, add a new metadata path, or change discovery behavior.&lt;/p&gt;

&lt;p&gt;That would have been a much larger claim.&lt;/p&gt;

&lt;p&gt;The narrow claim here is simpler:&lt;/p&gt;

&lt;p&gt;the existing behavior should be documented with a more precise source.&lt;/p&gt;

&lt;p&gt;That kind of restraint is part of the theory I am testing with Scarab:&lt;/p&gt;

&lt;p&gt;the quality of the repair depends on finding the correct boundary before editing.&lt;/p&gt;

&lt;p&gt;Sometimes the correct boundary is code.&lt;/p&gt;

&lt;p&gt;Sometimes it is tests.&lt;/p&gt;

&lt;p&gt;Sometimes it is docs.&lt;/p&gt;

&lt;p&gt;In this case, it was docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the diagnostic result mattered
&lt;/h2&gt;

&lt;p&gt;The larger point of this field test is not that a documentation line changed.&lt;/p&gt;

&lt;p&gt;The larger point is that a code agent should not decide the repair shape from momentum.&lt;/p&gt;

&lt;p&gt;It should not start from:&lt;/p&gt;

&lt;p&gt;"what can I change?"&lt;/p&gt;

&lt;p&gt;It should start from:&lt;/p&gt;

&lt;p&gt;"where did the repo's public truth become unclear?"&lt;/p&gt;

&lt;p&gt;For this case, the public truth was about the meaning of a service-discovery metadata label.&lt;/p&gt;

&lt;p&gt;The failure was not that the metadata name existed.&lt;/p&gt;

&lt;p&gt;The failure was that the name could point readers toward the wrong source.&lt;/p&gt;

&lt;p&gt;Once the boundary was clear, the patch became small.&lt;/p&gt;

&lt;p&gt;That is the pattern Scarab is trying to make repeatable:&lt;/p&gt;

&lt;p&gt;find the truth,&lt;/p&gt;

&lt;p&gt;find the boundary,&lt;/p&gt;

&lt;p&gt;patch the boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation
&lt;/h2&gt;

&lt;p&gt;The repair was validated against the Prometheus repository with the relevant public checks recorded in the Field Lab.&lt;/p&gt;

&lt;p&gt;Validation recorded in the Field Lab:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;go test ./discovery/moby -count=1&lt;/code&gt; passed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;go build ./cmd/prometheus/&lt;/code&gt; passed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GO_ONLY=1 make test&lt;/code&gt; passed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;make lint&lt;/code&gt; passed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;make test&lt;/code&gt; passed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the time this draft was prepared on June 19, 2026, the public pull request was open and ready for review.&lt;/p&gt;

&lt;p&gt;The public status is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR open&lt;/li&gt;
&lt;li&gt;DCO passing&lt;/li&gt;
&lt;li&gt;Netlify deploy-preview successful or informational&lt;/li&gt;
&lt;li&gt;upstream review required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This field report does not claim upstream acceptance.&lt;/p&gt;

&lt;p&gt;It claims a public diagnostic record, a narrow documentation repair, and a submitted PR.&lt;/p&gt;

&lt;p&gt;Maintainers decide whether the clarification belongs upstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Field test result
&lt;/h2&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;diagnostic proof and documentation repair submitted.&lt;/p&gt;

&lt;p&gt;The field test produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a public issue-to-boundary record&lt;/li&gt;
&lt;li&gt;a narrow documentation patch&lt;/li&gt;
&lt;li&gt;validation against the affected repository&lt;/li&gt;
&lt;li&gt;a public upstream PR&lt;/li&gt;
&lt;li&gt;a public status record in the Scarab Field Lab&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The patch is deliberately small.&lt;/p&gt;

&lt;p&gt;That is the point.&lt;/p&gt;

&lt;p&gt;When the failure is a source-boundary ambiguity, the best repair may be a sentence that makes the source explicit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public claim
&lt;/h2&gt;

&lt;p&gt;This field test supports a narrow public claim:&lt;/p&gt;

&lt;p&gt;SDS identified a Docker Swarm task discovery documentation boundary in Prometheus where container-label metadata needed a clearer source, and a human-submitted documentation repair was prepared for that boundary.&lt;/p&gt;

&lt;p&gt;It does not claim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;that Prometheus accepted the patch&lt;/li&gt;
&lt;li&gt;that Prometheus should inspect Docker image labels&lt;/li&gt;
&lt;li&gt;that Docker Swarm discovery behavior changed&lt;/li&gt;
&lt;li&gt;that Scarab repairs projects by itself&lt;/li&gt;
&lt;li&gt;that SDS source or product details are public&lt;/li&gt;
&lt;li&gt;that maintainers endorsed Scarab or the Field Lab&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Field Lab exists to keep those claims separate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;This field report was prepared with AI-assisted editing from public field-test notes, public issue and PR records, and the public Field Lab record. The diagnostic claim, repair boundary, and final wording were human reviewed.&lt;/p&gt;

&lt;p&gt;Scarab Diagnostic Suite is proprietary. The Field Lab publishes public case records, issue links, validation summaries, and claim boundaries only.&lt;/p&gt;

&lt;p&gt;SDS finds evidence. People make claims. Maintainers decide.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>prometheus</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Scarab Diagnostic Field Test #033 - Prometheus Remote-Write Label Order Boundary</title>
      <dc:creator>Scarab Systems</dc:creator>
      <pubDate>Fri, 19 Jun 2026 23:46:09 +0000</pubDate>
      <link>https://dev.to/scarab-systems/scarab-diagnostic-field-test-033-prometheus-remote-write-label-order-boundary-44lk</link>
      <guid>https://dev.to/scarab-systems/scarab-diagnostic-field-test-033-prometheus-remote-write-label-order-boundary-44lk</guid>
      <description>&lt;p&gt;Target: &lt;a href="https://github.com/prometheus/prometheus" rel="noopener noreferrer"&gt;prometheus/prometheus&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Issue: &lt;a href="https://github.com/prometheus/prometheus/issues/11505" rel="noopener noreferrer"&gt;prometheus/prometheus#11505&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pull request: &lt;a href="https://github.com/prometheus/prometheus/pull/18978" rel="noopener noreferrer"&gt;prometheus/prometheus#18978&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Field Lab record: &lt;a href="https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/prometheus-prometheus-11505" rel="noopener noreferrer"&gt;Prometheus #11505&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This field test was about a small but important remote-write boundary in Prometheus:&lt;/p&gt;

&lt;p&gt;labels are required to be sorted lexicographically, but incoming remote-write labels could pass through a conversion path before that requirement was enforced.&lt;/p&gt;

&lt;p&gt;That sounds narrow because it is narrow.&lt;/p&gt;

&lt;p&gt;But this is exactly the kind of case Scarab is meant to make visible.&lt;/p&gt;

&lt;p&gt;Not "the remote-write subsystem is broken."&lt;/p&gt;

&lt;p&gt;Not "rewrite ingestion."&lt;/p&gt;

&lt;p&gt;Not "let an agent go hunting."&lt;/p&gt;

&lt;p&gt;The question was smaller:&lt;/p&gt;

&lt;p&gt;where does repo truth say invalid input should stop, and where was the actual boundary allowing that truth to blur?&lt;/p&gt;

&lt;h2&gt;
  
  
  Field Lab record
&lt;/h2&gt;

&lt;p&gt;The public Field Lab record for this case is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/prometheus-prometheus-11505" rel="noopener noreferrer"&gt;https://github.com/scarab-systems/scarab-field-lab/tree/main/field-tests/prometheus-prometheus-11505&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The record includes the public issue, the public pull request, the repair scope, validation summary, and non-claims.&lt;/p&gt;

&lt;p&gt;It contains public links, status, validation, and claim boundaries only. It does not contain SDS source code or non-public product material.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;The public artifact is the field record, not SDS itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDS result
&lt;/h2&gt;

&lt;p&gt;SDS surfaced a boundary mismatch around remote-write label ordering.&lt;/p&gt;

&lt;p&gt;The public issue already identified the expected rule:&lt;/p&gt;

&lt;p&gt;remote-write labels are supposed to be sorted lexicographically.&lt;/p&gt;

&lt;p&gt;The meaningful diagnostic result was not just "sort labels."&lt;/p&gt;

&lt;p&gt;In fact, the repair does not sort the incoming data.&lt;/p&gt;

&lt;p&gt;The result was that invalid remote-write input should be rejected before it can be made to look acceptable by a later conversion path.&lt;/p&gt;

&lt;p&gt;That is the boundary.&lt;/p&gt;

&lt;p&gt;The input contract belongs at the edge where the remote-write request is being interpreted.&lt;/p&gt;

&lt;p&gt;If invalid input crosses that edge and then gets normalized, the system can lose the ability to distinguish valid caller behavior from repaired caller behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure shape
&lt;/h2&gt;

&lt;p&gt;The failure shape was subtle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remote-write input arrives with label names in an invalid order.&lt;/li&gt;
&lt;li&gt;Prometheus has a public and internal expectation that labels are sorted.&lt;/li&gt;
&lt;li&gt;A conversion path can produce Prometheus labels in sorted form.&lt;/li&gt;
&lt;li&gt;That means invalid input can appear clean after conversion.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The concern is not that sorting is technically impossible.&lt;/p&gt;

&lt;p&gt;The concern is that sorting at the wrong layer changes what the receiver is saying to the caller.&lt;/p&gt;

&lt;p&gt;If a remote-write sender sends invalid data, the receiver should be able to reject that data as invalid input.&lt;/p&gt;

&lt;p&gt;If the receiver silently normalizes it, the caller gets a different contract:&lt;/p&gt;

&lt;p&gt;"send whatever order you want; the receiver will fix it."&lt;/p&gt;

&lt;p&gt;That was not the boundary described by the issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Boundary
&lt;/h2&gt;

&lt;p&gt;The boundary in this field test was:&lt;/p&gt;

&lt;p&gt;remote-write request validity must be checked before incoming label data is converted into Prometheus' internal label representation.&lt;/p&gt;

&lt;p&gt;That is a code boundary, but it is also a contract boundary.&lt;/p&gt;

&lt;p&gt;On one side is the external remote-write request.&lt;/p&gt;

&lt;p&gt;On the other side is Prometheus' internal representation.&lt;/p&gt;

&lt;p&gt;The repair belongs at the crossing point.&lt;/p&gt;

&lt;p&gt;Once the request has crossed into internal representation, a validation failure can become harder to prove because the data may already have been reshaped.&lt;/p&gt;

&lt;p&gt;That is why the patch is intentionally placed before append behavior, and before the conversion path can erase the original ordering problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;p&gt;The patch adds explicit label-order validation for both supported remote-write paths covered by the repair:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;remote-write v1 label names are checked before v1 samples are appended&lt;/li&gt;
&lt;li&gt;remote-write v2 label references are checked before v2 samples are appended&lt;/li&gt;
&lt;li&gt;v1 unsorted-label series follow the existing invalid-label skip path&lt;/li&gt;
&lt;li&gt;v2 unsorted-label series follow the existing partial-write bad-request path&lt;/li&gt;
&lt;li&gt;regression coverage was added for both request shapes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pull request is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/prometheus/prometheus/pull/18978" rel="noopener noreferrer"&gt;https://github.com/prometheus/prometheus/pull/18978&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The changed files are public:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;storage/remote/write_handler.go&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;storage/remote/write_handler_test.go&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The patch does not redesign remote-write ingestion.&lt;/p&gt;

&lt;p&gt;It does not change remote-read.&lt;/p&gt;

&lt;p&gt;It does not introduce a new validation framework.&lt;/p&gt;

&lt;p&gt;It keeps the repair at the specific boundary identified by the field test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this was not a broad rewrite
&lt;/h2&gt;

&lt;p&gt;This is one of the recurring lessons from Scarab field testing:&lt;/p&gt;

&lt;p&gt;when the boundary is clear, the repair should get smaller, not larger.&lt;/p&gt;

&lt;p&gt;A code agent can produce a large patch very quickly.&lt;/p&gt;

&lt;p&gt;That is not the hard part anymore.&lt;/p&gt;

&lt;p&gt;The hard part is deciding what the patch is allowed to claim.&lt;/p&gt;

&lt;p&gt;For this case, the claim is not:&lt;/p&gt;

&lt;p&gt;"remote-write validation is now perfect."&lt;/p&gt;

&lt;p&gt;The claim is:&lt;/p&gt;

&lt;p&gt;"incoming remote-write labels that are out of lexicographic order are checked before they can be normalized into the internal label representation."&lt;/p&gt;

&lt;p&gt;That is a much narrower statement.&lt;/p&gt;

&lt;p&gt;It is also a more reviewable one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the diagnostic result mattered
&lt;/h2&gt;

&lt;p&gt;The practical bug is about label ordering.&lt;/p&gt;

&lt;p&gt;The larger field-test value is about method.&lt;/p&gt;

&lt;p&gt;Modern code agents are very good at moving through a repository and producing edits. That can be useful, but it can also make patches feel suspicious when the intent is unclear.&lt;/p&gt;

&lt;p&gt;Scarab's position is different:&lt;/p&gt;

&lt;p&gt;first find the truth boundary, then patch only that boundary.&lt;/p&gt;

&lt;p&gt;In this case, the repo truth was that labels must be sorted.&lt;/p&gt;

&lt;p&gt;The boundary failure was that remote-write input could cross into a representation where the original invalid ordering was no longer visible.&lt;/p&gt;

&lt;p&gt;The patch follows from that.&lt;/p&gt;

&lt;p&gt;Not because the agent guessed a fix.&lt;/p&gt;

&lt;p&gt;Because the public issue, the code surface, and the validation boundary pointed to a narrow repair.&lt;/p&gt;

&lt;p&gt;That is the shift I am testing in public:&lt;/p&gt;

&lt;p&gt;code-agent work should not begin with "what can we generate?"&lt;/p&gt;

&lt;p&gt;It should begin with "where did the repo stop enforcing what it already says is true?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation
&lt;/h2&gt;

&lt;p&gt;The repair was validated in a Linux arm64 container with the Prometheus test workflow used for the public PR.&lt;/p&gt;

&lt;p&gt;Validation recorded in the Field Lab:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;make test&lt;/code&gt; passed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;make lint&lt;/code&gt; passed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;go test ./storage/remote -count=1&lt;/code&gt; passed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the time this draft was prepared on June 19, 2026, the public pull request was open and ready for review.&lt;/p&gt;

&lt;p&gt;The public status is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR open&lt;/li&gt;
&lt;li&gt;DCO passing&lt;/li&gt;
&lt;li&gt;Netlify deploy-preview successful or informational&lt;/li&gt;
&lt;li&gt;upstream review required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That status matters too.&lt;/p&gt;

&lt;p&gt;This field report does not claim upstream acceptance.&lt;/p&gt;

&lt;p&gt;It claims a public diagnostic record, a narrow repair, and a submitted PR.&lt;/p&gt;

&lt;p&gt;Maintainers decide whether the patch belongs upstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Field test result
&lt;/h2&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;diagnostic proof and repair submitted.&lt;/p&gt;

&lt;p&gt;The field test produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a public issue-to-boundary record&lt;/li&gt;
&lt;li&gt;a narrow repair patch&lt;/li&gt;
&lt;li&gt;regression coverage for the repaired behavior&lt;/li&gt;
&lt;li&gt;a validation summary&lt;/li&gt;
&lt;li&gt;a public upstream PR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The patch is intentionally boring.&lt;/p&gt;

&lt;p&gt;That is the point.&lt;/p&gt;

&lt;p&gt;The interesting thing is not that a code change exists.&lt;/p&gt;

&lt;p&gt;The interesting thing is that the repair boundary is explainable without exposing proprietary diagnostic logic or asking maintainers to trust a black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public claim
&lt;/h2&gt;

&lt;p&gt;This field test supports a narrow public claim:&lt;/p&gt;

&lt;p&gt;SDS identified a remote-write label-order boundary in Prometheus where invalid input needed to be checked before conversion could normalize it, and a human-submitted repair was prepared for that boundary.&lt;/p&gt;

&lt;p&gt;It does not claim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;that Prometheus accepted the patch&lt;/li&gt;
&lt;li&gt;that all remote-write validation issues are resolved&lt;/li&gt;
&lt;li&gt;that Scarab repairs projects by itself&lt;/li&gt;
&lt;li&gt;that SDS source or product details are public&lt;/li&gt;
&lt;li&gt;that maintainers endorsed Scarab or the Field Lab&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Field Lab exists to keep those claims separate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;This field report was prepared with AI-assisted editing from public field-test notes, public issue and PR records, and the public Field Lab record. The diagnostic claim, repair boundary, and final wording were human reviewed.&lt;/p&gt;

&lt;p&gt;Scarab Diagnostic Suite is proprietary. The Field Lab publishes public case records, issue links, validation summaries, and claim boundaries only.&lt;/p&gt;

&lt;p&gt;SDS finds evidence. People make claims. Maintainers decide.&lt;/p&gt;

</description>
      <category>prometheus</category>
      <category>observability</category>
      <category>discuss</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
