<?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: Zackary Loevseth</title>
    <description>The latest articles on DEV Community by Zackary Loevseth (@zackaryloevseth).</description>
    <link>https://dev.to/zackaryloevseth</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%2F4134758%2F4e3042ce-0f64-424d-b57e-e85876a09224.png</url>
      <title>DEV Community: Zackary Loevseth</title>
      <link>https://dev.to/zackaryloevseth</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zackaryloevseth"/>
    <language>en</language>
    <item>
      <title>What Should an AI Assistant Do When It Discovers Its Tools Can Write?</title>
      <dc:creator>Zackary Loevseth</dc:creator>
      <pubDate>Fri, 23 Oct 2026 20:02:57 +0000</pubDate>
      <link>https://dev.to/zackaryloevseth/what-should-an-ai-assistant-do-when-it-discovers-its-tools-can-write-1heb</link>
      <guid>https://dev.to/zackaryloevseth/what-should-an-ai-assistant-do-when-it-discovers-its-tools-can-write-1heb</guid>
      <description>&lt;p&gt;Imagine a research assistant assigned to preserve a trustworthy archive. Its instructions describe the interface as read-only. Then an authorized check against a disposable test record shows that the interface accepts writes.&lt;/p&gt;

&lt;p&gt;The discovery changes the assistant's understanding of its tools. It does not grant permission to edit the archive. In this hypothetical example, the test is authorized and no production archive is modified.&lt;/p&gt;

&lt;p&gt;This is a practical entry point into the position I call &lt;a href="https://zackaryloevseth.github.io/research-portfolio/hayosoai/beta/en/essay/#self-improvement-with-continuity" rel="noopener noreferrer"&gt;Epistemic Transition Integrity&lt;/a&gt;, or ETI: when evidence changes, revise the claims and decisions that depended on it while preserving commitments that still have independent support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate capability from authorization
&lt;/h2&gt;

&lt;p&gt;A capability claim describes what a system can do. An authorization claim describes what it may do for a particular purpose, under a particular authority. Evidence for one does not establish the other.&lt;/p&gt;

&lt;p&gt;Here, the observation supports a narrow correction: the tested interface is write-capable under the observed conditions. It does not establish permission to alter production records or show that every target and tool version behaves the same way.&lt;/p&gt;

&lt;p&gt;The assistant should report the mismatch, keep unapproved archive writes blocked, and inspect the controls that relied on the read-only assumption. If the task later requires a write, that operation needs an authorized scope, a responsible decision-maker, a recovery plan, and an outcome check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow the dependencies
&lt;/h2&gt;

&lt;p&gt;One correction should not erase every commitment. Consider this small dependency record:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C0: Preserve the archive.                  [task commitment]
C1: This interface cannot write.          [capability claim]
P1: No separate write guard is required.   [procedure based on C1]
E1: An authorized test demonstrates writes. [new evidence]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;E1&lt;/code&gt; contradicts &lt;code&gt;C1&lt;/code&gt;, so &lt;code&gt;P1&lt;/code&gt; needs review. It does not contradict &lt;code&gt;C0&lt;/code&gt;. Preserving the archive may now require stronger controls: blocking writes by default, reviewing proposed changes, maintaining recovery options, and verifying authorized changes.&lt;/p&gt;

&lt;p&gt;That is correction propagation. The dependency record identifies which claims and procedures have lost their support. If a discovery also changes the legitimacy or feasibility of the task, the task needs an explicit revision process. The assistant should make that change visible.&lt;/p&gt;

&lt;p&gt;The difficult implementation question is how those dependencies are constructed and checked. A hand-authored graph can illustrate the rule; it does not show that a system will reliably identify every relevant dependency in an unfamiliar workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Record what each stage establishes
&lt;/h2&gt;

&lt;p&gt;A capability observation should carry its provenance: the environment, target, tool version, time, and observed result. Keep that observation distinct from its interpretation and from the decision to act.&lt;/p&gt;

&lt;p&gt;A hypothetical record for the archive case could read:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;observation:    an authorized test wrote a disposable record
interpretation: the tested interface supports writes
authorization:  no production-write permission recorded
decision:       keep archive writes blocked; request review
execution:      no production archive write attempted
verification:   a state comparison found no archive changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last line belongs in the record only if that comparison actually happened. A plan to check the archive is not a verification result.&lt;/p&gt;

&lt;p&gt;This separation lets a reviewer challenge a test without treating the task as revoked. It also helps reviewers avoid treating a successful operation as proof that the operation was authorized or achieved its intended outcome. Provenance makes the chain inspectable; incomplete logs, incorrect targets, and misleading evidence can still undermine it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the public examples establish
&lt;/h2&gt;

&lt;p&gt;The public &lt;a href="https://zackaryloevseth.github.io/research-portfolio/hayosoai/beta/en/research/" rel="noopener noreferrer"&gt;research overview&lt;/a&gt; reports three bounded software examples: a browser demonstration over a supplied six-node graph, finite checks for reopening previously excluded routes, and ten passing synthetic scenarios for an offline event ledger and two maintained simple baselines. These checks were not independently rerun for this article.&lt;/p&gt;

&lt;p&gt;Those reports do not validate a complete ETI runtime. They do not establish improved human–AI or model performance, recursive self-improvement, or time savings. The synthetic scenario results also do not demonstrate an advantage over the maintained baselines.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://zackaryloevseth.github.io/research-portfolio/hayosoai/beta/en/essay/#the-standard-is-what-survives-change" rel="noopener noreferrer"&gt;essay's evaluation section&lt;/a&gt; proposes measuring behavior, correction quality, retained capability, time, and cost, with comparisons against simpler alternatives. That section does not provide operational metrics, thresholds, datasets, scoring rules, or named baselines for carrying out the comparison. This limitation concerns the linked section, not every ETI document that might exist.&lt;/p&gt;

&lt;p&gt;The practical proposal is to preserve a visible chain from changed evidence to revised claims, authorized decisions, execution, and checked outcomes. Whether assistants and reviewers can follow it reliably remains an empirical question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When an assistant discovers previously unknown write access, what evidence should be enough to reopen its plan—and who should be allowed to authorize the first production write?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI acknowledgment: Codex assisted with drafting, restructuring, editing, and checking this article against the linked public sources.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ethics</category>
    </item>
    <item>
      <title>Fliproom: a room changeover is a content problem</title>
      <dc:creator>Zackary Loevseth</dc:creator>
      <pubDate>Mon, 21 Sep 2026 02:10:02 +0000</pubDate>
      <link>https://dev.to/zackaryloevseth/fliproom-a-room-changeover-is-a-content-problem-1kj7</link>
      <guid>https://dev.to/zackaryloevseth/fliproom-a-room-changeover-is-a-content-problem-1kj7</guid>
      <description>&lt;p&gt;Built for &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge, Path Two&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Fliproom turns a room changeover into an ordered, visual checklist. A volunteer selects the current layout and the next one, then sees what stays, what moves, and what goes into storage.&lt;/p&gt;

&lt;p&gt;The demonstration is a fictional community hall called The Commons: a 12-by-8-metre room with eight pieces of equipment and three layouts—Workshop, Presentation, and Open floor. The room and its content were created for this application. They do not represent a real venue or customer deployment.&lt;/p&gt;

&lt;p&gt;The interface shows numbered furniture on a floor plan, before/after views, and a move list connected to the same equipment. Dependencies keep a step locked until its destination has been cleared. If two items exchange positions, the planner can introduce a temporary parking step. Checkmarks survive a browser reload; changing layouts starts a fresh checklist. A text download lets someone carry the instructions away from the screen.&lt;/p&gt;

&lt;p&gt;This is a deliberately small planning aid. It checks rectangular footprints and room bounds, not carrying routes, lifting arrangements, or venue safety. It assumes outside storage is available when in-room parking will not fit. Its time estimates are fixed per equipment operation, not measured results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Public application:&lt;/strong&gt; &lt;a href="https://zackaryloevseth.github.io/fliproom/" rel="noopener noreferrer"&gt;Try Fliproom&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%2Fif650fxbmldy7css0fbj.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%2Fif650fxbmldy7css0fbj.png" alt="Fliproom's floor plan and ordered room-changeover checklist" width="799" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start with Workshop → Presentation. Compare the floor views, inspect the numbered moves, and complete the prerequisites for a blocked step. Then undo a prerequisite and watch its dependent checkmark clear. Reverse the changeover or select Open floor to produce another plan.&lt;/p&gt;

&lt;p&gt;No login is needed. The deployed demo loaded published Sanity content and displayed a ready plan without browser errors. Local checks also inspected the downloaded seven-move checklist and found no horizontal overflow at a 390px viewport.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/ZackaryLoevseth/fliproom" rel="noopener noreferrer"&gt;Fliproom on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source revision:&lt;/strong&gt; &lt;a href="https://github.com/ZackaryLoevseth/fliproom/commit/88ad48288fb6e5c656b75ef9f3ad7f3d40441079" rel="noopener noreferrer"&gt;88ad482&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The MIT-licensed application uses Next.js, TypeScript, React, and Sanity. The public planner is hosted on GitHub Pages. It makes no model calls at runtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Build Process
&lt;/h2&gt;

&lt;p&gt;Codex was the development environment. AI agents designed and wrote the implementation, reviewed the code, ran the tests, and drafted this post. My role was account signup/sign-in and approval of the project, fictional content import, source release, and demo publication. The technical work and checks described here were performed by the agents.&lt;/p&gt;

&lt;p&gt;The brief was to build a useful application whose behavior depends on structured content. The key decision was to derive moves from layouts rather than author a second set of instructions. An equipment document owns its dimensions; every layout references it. The planner then compares placements and produces instructions from that shared model.&lt;/p&gt;

&lt;p&gt;The work was divided among the interface, planning engine, and Sanity integration, with another agent reviewing the results. Three problems made that review worthwhile.&lt;/p&gt;

&lt;p&gt;First, a move from 90° back to 0° originally omitted the target orientation in its text. The floor diagram could be correct while the printable instruction was incomplete. Move labels now state the absolute target orientation, and a regression test covers that transition.&lt;/p&gt;

&lt;p&gt;Second, subtitles were optional in Studio but required by the read validator. Clearing a subtitle could therefore break an otherwise valid catalog. The GROQ projection now turns an omitted subtitle into empty text. A test evaluates the actual query against the seed documents, rather than checking a separate approximation of the query.&lt;/p&gt;

&lt;p&gt;Third, authenticated success concealed a public-access failure. Studio imported 12 documents and reread 12 exact matches, but an anonymous count returned zero. The generated IDs contained dots and landed on private document paths. The generator now uses hyphenated IDs, with a regression test. After reimport, a separate unauthenticated check read all 12 public documents and confirmed that both the raw documents and resolved GROQ catalog exactly matched the reviewed seed. The authenticated receipt and public-read check answered different questions; both were needed.&lt;/p&gt;

&lt;p&gt;The local suite passes 21 tests, and typechecking passes. Tests replay all nine sample-layout transitions, check collisions and final positions, and exercise parking, rotation, invalid inputs, dependent undo, and GROQ reference resolution. Production and static-export builds passed. Browser checks with live Sanity content verified that saved progress restored after reload, prerequisites unlocked step 6, and undoing a prerequisite cleared and disabled it. No console errors or warnings were reported in that check.&lt;/p&gt;

&lt;p&gt;No full agent session or private conversation context has been exported. The application content and this writeup are confined to this build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity Project Details
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;code&gt;fliproom&lt;/code&gt; — &lt;code&gt;i5bjg9lg&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataset:&lt;/strong&gt; &lt;code&gt;production&lt;/code&gt;, publicly readable. An unauthenticated check verified 12 published documents: one room, eight equipment items, and three layouts.&lt;/p&gt;

&lt;p&gt;The content model separates rooms, equipment, and layouts. Placements reference equipment and store coordinates and orientation; layouts reference their room. GROQ resolves those relationships into the planner's input. Tests reject unresolved references and equipment belonging to another room.&lt;/p&gt;

&lt;p&gt;Sanity Studio runs locally for authenticated editing; the GitHub Pages demo exposes only the public planner. Invalid published content produces a catalog error instead of silently substituting demonstration data. Checklist progress stays in the visitor's browser and does not write completed work to Sanity. The app does not use the App SDK or Sanity Workflows.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>sanitychallenge</category>
      <category>sanity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
