<?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: Merlin</title>
    <description>The latest articles on DEV Community by Merlin (@merlin_h_2636e3753c2e642e).</description>
    <link>https://dev.to/merlin_h_2636e3753c2e642e</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%2F3935035%2F4f44857e-f7d7-4819-9075-fed326b98365.png</url>
      <title>DEV Community: Merlin</title>
      <link>https://dev.to/merlin_h_2636e3753c2e642e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/merlin_h_2636e3753c2e642e"/>
    <language>en</language>
    <item>
      <title>Truthmark for AI Loop Engineering: Keeping Product Behavior Observable</title>
      <dc:creator>Merlin</dc:creator>
      <pubDate>Sat, 27 Jun 2026 04:25:36 +0000</pubDate>
      <link>https://dev.to/merlin_h_2636e3753c2e642e/using-truthmark-to-improve-loop-engineering-a-fact-layer-for-ai-coding-agents-gng</link>
      <guid>https://dev.to/merlin_h_2636e3753c2e642e/using-truthmark-to-improve-loop-engineering-a-fact-layer-for-ai-coding-agents-gng</guid>
      <description>&lt;p&gt;AI coding agents are useful because they can make changes quickly. That same strength creates a review problem.&lt;/p&gt;

&lt;p&gt;In a typical loop, an agent edits code, runs tests, reads failures, patches the implementation, and repeats. The loop may finish with clean tests and a reasonable diff. But somewhere along the way, a small behavior can change: a timeout becomes longer, an optional field becomes required, a retry policy becomes more forgiving, or an API starts accepting a state that used to be rejected.&lt;/p&gt;

&lt;p&gt;None of those changes has to look obviously wrong in isolation. The issue is that the project’s behavior has moved, while the review surface still looks like a normal refactor.&lt;/p&gt;

&lt;p&gt;That is the problem &lt;a href="https://github.com/merlinhu1/truthmark" rel="noopener noreferrer"&gt;Truthmark&lt;/a&gt; is designed to help with. It gives an AI-assisted codebase a fact layer: human-readable, Git-reviewable Markdown files that describe what the project believes to be true. Agents can still write code quickly, but before they hand work back, they have to reconcile the code changes against the repository’s maintained truth.&lt;/p&gt;

&lt;p&gt;For loop engineering, that is the useful part. Truthmark is not just a documentation tool. It is a way to make product and engineering drift easier to observe.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real risk in AI loops is quiet behavior change
&lt;/h2&gt;

&lt;p&gt;Most AI coding workflows optimize for a loop like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt -&amp;gt; edit code -&amp;gt; run tests -&amp;gt; inspect failure -&amp;gt; patch -&amp;gt; repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That loop is effective for mechanical correctness. It catches syntax errors, broken imports, failing tests, and many obvious regressions.&lt;/p&gt;

&lt;p&gt;It is less effective at preserving intent.&lt;/p&gt;

&lt;p&gt;A loop engine continuously modifies and adds code. Each step can be locally reasonable. One patch extracts a helper. Another loosens validation so a fixture is easier to construct. Another changes a default because it removes a flaky branch. Another updates tests to match the new behavior.&lt;/p&gt;

&lt;p&gt;By the end, the branch may still be green, but the product may no longer behave quite the way it did before.&lt;/p&gt;

&lt;p&gt;Tests help, but they are not a complete product contract. They encode examples the team remembered to write. Code review helps, but large AI-generated diffs are hard to review because the reviewer has to reconstruct intent from implementation details. Chat history is also a weak source of truth because it is usually private, long, and detached from the branch.&lt;/p&gt;

&lt;p&gt;The missing layer is durable project truth that lives with the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Truthmark adds
&lt;/h2&gt;

&lt;p&gt;Truthmark keeps project truth inside the repository, usually under a workspace such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/truthmark/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those files are ordinary Markdown files. They move through Git with the branch. They can be reviewed in the same pull request as the code. They are not hidden memory, an external database, or a separate spec system that quietly falls out of date.&lt;/p&gt;

&lt;p&gt;That gives the team a useful review pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code changed -&amp;gt; check the routed truth docs -&amp;gt; update truth if behavior intentionally changed -&amp;gt; review code and truth together
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important word is “intentionally.”&lt;/p&gt;

&lt;p&gt;If an agent changes code but the truth document still describes the old behavior, there may be a mismatch. If an agent updates the truth document to describe new behavior, the reviewer can ask whether that behavior change was actually requested. Either way, the change becomes easier to see.&lt;/p&gt;

&lt;h2&gt;
  
  
  A concrete example: session timeout drift
&lt;/h2&gt;

&lt;p&gt;Imagine the repository has a Truthmark product document like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Session Timeout&lt;/span&gt;

&lt;span class="gu"&gt;## Product contract&lt;/span&gt;

Users are signed out after 30 minutes of inactivity.

A warning is shown 2 minutes before automatic sign-out.

Extending the session requires an explicit user action.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now an agent receives a normal maintenance task:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Refactor the session timeout logic and fix the flaky auth tests.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During the loop, the agent changes a constant:&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;-const SESSION_TIMEOUT_MINUTES = 30
&lt;/span&gt;&lt;span class="gi"&gt;+const SESSION_TIMEOUT_MINUTES = 60
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also removes a warning path because that path complicated the test setup:&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;-if (remainingMinutes &amp;lt;= 2) {
-  showTimeoutWarning()
-}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent updates the tests, the suite passes, and the code looks simpler.&lt;/p&gt;

&lt;p&gt;Without a fact layer, this can be reviewed as an implementation refactor. The behavior change is present, but it is buried in the code diff.&lt;/p&gt;

&lt;p&gt;With Truthmark, the changed auth files can be routed to the session timeout truth document. Before handoff, the agent has to compare the code with the documented product contract. If it updates the truth document, the review now contains a plain-English behavioral diff:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt; # Session Timeout
&lt;span class="err"&gt;
&lt;/span&gt; ## Product contract
&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="gd"&gt;-Users are signed out after 30 minutes of inactivity.
&lt;/span&gt;&lt;span class="gi"&gt;+Users are signed out after 60 minutes of inactivity.
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="gd"&gt;-A warning is shown 2 minutes before automatic sign-out.
&lt;/span&gt;&lt;span class="gi"&gt;+No warning is shown before automatic sign-out.
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt; Extending the session requires an explicit user action.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That diff is much easier for a product manager, tech lead, or reviewer to evaluate.&lt;/p&gt;

&lt;p&gt;The right review question becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Was the timeout change intentional?
Was removing the warning part of the request?
Should the truth document change, or should the code be corrected?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where Truthmark improves the loop. It turns a hidden semantic change into an explicit review decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tests check execution. Truthmark checks claimed behavior.
&lt;/h2&gt;

&lt;p&gt;A strong AI loop needs more than one feedback mechanism.&lt;/p&gt;

&lt;p&gt;Tests answer questions like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does this example still pass?
Does this function return the expected result?
Did this integration path break?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Truthmark helps answer a different class of questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does the code still match the behavior the repository claims to support?
Did this branch change a product promise?
Did the agent update engineering truth because an internal invariant changed?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That distinction matters. CI can tell you that the branch is executable. Truthmark helps make it clear whether the branch still matches the project’s documented intent.&lt;/p&gt;

&lt;p&gt;A better loop is not simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Did the tests pass?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Did the tests pass, and did the branch preserve or intentionally update the relevant project truth?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Product truth and engineering truth
&lt;/h2&gt;

&lt;p&gt;One useful design choice in Truthmark is the separation between product truth and engineering truth.&lt;/p&gt;

&lt;p&gt;Product truth describes user-visible behavior: capabilities, API contracts, acceptance criteria, security boundaries, plan limits, notification rules, billing behavior, and other promises users or customers can observe.&lt;/p&gt;

&lt;p&gt;Engineering truth describes how the system works internally: architecture, data flow, invariants, ownership, implementation constraints, and technical decisions future maintainers need to preserve.&lt;/p&gt;

&lt;p&gt;This distinction keeps the workflow practical. Not every code change should update product truth.&lt;/p&gt;

&lt;p&gt;If an agent rewrites a cache implementation but the external behavior is unchanged, product truth may not need to move. Engineering truth might need an update if the internal invariant changed.&lt;/p&gt;

&lt;p&gt;If an agent changes how expired sessions behave, product truth should be checked. The user-visible contract has changed.&lt;/p&gt;

&lt;p&gt;A simple rule works well:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;If users can observe the change, check product truth.
If maintainers need to understand the change, check engineering truth.
If neither changed, report that truth was checked and left unchanged.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives agents a clearer finish condition. They are not only reporting that tests passed. They are reporting which behavioral surface they touched and how that surface relates to the repository’s maintained facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Routing reduces guesswork
&lt;/h2&gt;

&lt;p&gt;Large repositories contain a lot of implicit ownership.&lt;/p&gt;

&lt;p&gt;An experienced engineer may know that &lt;code&gt;src/auth/session.ts&lt;/code&gt; belongs to authentication, that timeout behavior is part of the session product contract, and that the relevant tests live in the auth test suite. An agent may infer some of that from filenames, but inference is not the same as ownership.&lt;/p&gt;

&lt;p&gt;Truthmark routes make ownership explicit. Conceptually, a route might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;routes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;area&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;authentication&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;src/auth/**&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;tests/auth/**&lt;/span&gt;
    &lt;span class="na"&gt;product_truth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docs/truthmark/product/session-timeout.md&lt;/span&gt;
    &lt;span class="na"&gt;engineering_truth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docs/truthmark/engineering/authentication.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, when the agent edits auth code, it knows which truth documents are relevant. It does not have to create a new explanation in the wrong place or ignore the canonical document because it was not in context.&lt;/p&gt;

&lt;p&gt;That improves both agent behavior and human review. The agent gets a better map of the repository. The reviewer gets a clearer relationship between code, tests, and documented intent.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical finish-time workflow
&lt;/h2&gt;

&lt;p&gt;For loop engineering, Truthmark is most useful near handoff.&lt;/p&gt;

&lt;p&gt;A good agent handoff should include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. The code diff.
2. The tests or checks that were run.
3. The Truthmark routes or documents affected by the change.
4. Any truth document updates, or a statement that behavior was checked and did not change.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A practical instruction for an AI agent can be simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before handing off:
- Run the relevant tests.
- Identify Truthmark routes affected by this diff.
- Check the mapped product and engineering truth docs.
- If user-visible behavior changed, update product truth or revert the behavior.
- If an internal invariant changed, update engineering truth if needed.
- Report the code diff, test evidence, affected truth docs, and truth changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This does not replace code review. It makes code review more focused.&lt;/p&gt;

&lt;p&gt;Instead of asking the reviewer to infer product behavior from a large implementation diff, the handoff gives them an explicit place to inspect behavioral changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to add Truthmark to a repository
&lt;/h2&gt;

&lt;p&gt;A basic setup looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; truthmark
truthmark config
truthmark init
truthmark check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure the agent host you use. A minimal configuration can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="na"&gt;platforms&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;codex&lt;/span&gt;

&lt;span class="na"&gt;truthmark&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;workspace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docs/truthmark&lt;/span&gt;
  &lt;span class="na"&gt;generated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;portal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact folder is less important than the review model. The truth layer should live in the repo, on the branch, and in the same review path as the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;Do not try to document the whole codebase at once. Start with areas where small unintended behavior changes are expensive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;authentication&lt;/li&gt;
&lt;li&gt;permissions&lt;/li&gt;
&lt;li&gt;billing&lt;/li&gt;
&lt;li&gt;public API behavior&lt;/li&gt;
&lt;li&gt;data retention&lt;/li&gt;
&lt;li&gt;onboarding&lt;/li&gt;
&lt;li&gt;pricing or plan limits&lt;/li&gt;
&lt;li&gt;notification rules&lt;/li&gt;
&lt;li&gt;security-sensitive workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick one area. Document the current behavior. Route the relevant code to that document. Then require future agent loops to reconcile changes against it.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document the implemented session timeout behavior across the auth middleware, session service, and auth tests. Create product truth only for user-visible behavior. Create engineering truth only for implementation constraints future agents should preserve.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is enough to make the next refactor easier to review.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Truthmark does not replace
&lt;/h2&gt;

&lt;p&gt;Truthmark does not replace tests, static analysis, code review, product judgment, or architectural decision-making.&lt;/p&gt;

&lt;p&gt;It adds another layer.&lt;/p&gt;

&lt;p&gt;Prompts express intent. Tests provide executable checks. Types and linters catch mechanical errors. Code review applies human judgment. Truthmark keeps repository truth visible and reviewable while agents continue changing code.&lt;/p&gt;

&lt;p&gt;That is the right scope. AI engineering systems work best when each layer has a clear job.&lt;/p&gt;

&lt;h2&gt;
  
  
  The point is controlled iteration
&lt;/h2&gt;

&lt;p&gt;The goal of loop engineering is not simply to generate more code. The goal is to make repeated AI-assisted changes safe enough to use in real projects.&lt;/p&gt;

&lt;p&gt;A controlled loop should move quickly, but it should also preserve product intent, expose behavioral changes, and make handoff easier for humans.&lt;/p&gt;

&lt;p&gt;Truthmark helps by giving the project a place to say what is true, then asking the agent to check that truth before the work lands.&lt;/p&gt;

&lt;p&gt;That is a practical improvement: fewer hidden behavior changes, clearer reviews, and better continuity between one AI session and the next.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Introducing Truthmark 2.2.0: Product and Engineering Truth Lanes for AI Coding Agents</title>
      <dc:creator>Merlin</dc:creator>
      <pubDate>Mon, 15 Jun 2026 12:46:12 +0000</pubDate>
      <link>https://dev.to/merlin_h_2636e3753c2e642e/introducing-truthmark-220-product-and-engineering-truth-lanes-for-ai-coding-agents-1j6n</link>
      <guid>https://dev.to/merlin_h_2636e3753c2e642e/introducing-truthmark-220-product-and-engineering-truth-lanes-for-ai-coding-agents-1j6n</guid>
      <description>&lt;p&gt;AI coding agents are becoming better at changing software.&lt;/p&gt;

&lt;p&gt;That is no longer the hardest problem.&lt;/p&gt;

&lt;p&gt;The harder problem is keeping the repository understandable after those changes land.&lt;/p&gt;

&lt;p&gt;Code changes quickly. Documentation often does not. Product intent lives in chat history. Architecture notes fall behind. Reviewers can inspect the implementation diff, but they often cannot see whether the product promise, engineering contract, and repository workflow are still aligned.&lt;/p&gt;

&lt;p&gt;Truthmark is built for that gap.&lt;/p&gt;

&lt;p&gt;It is a Git-native workflow layer for AI-assisted software development. It installs repository-local truth workflows so AI agents can keep canonical truth docs aligned with functional code changes, while humans still review normal Git diffs.&lt;/p&gt;

&lt;p&gt;Truthmark 2.2.0 takes a significant step forward: it separates product truth from engineering truth.&lt;/p&gt;

&lt;p&gt;That may sound like a documentation detail.&lt;/p&gt;

&lt;p&gt;It is not.&lt;/p&gt;

&lt;p&gt;It is a workflow boundary for AI coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why truth needs lanes
&lt;/h2&gt;

&lt;p&gt;Most documentation systems treat “docs” as one surface.&lt;/p&gt;

&lt;p&gt;That works until AI agents start using those docs as operational context.&lt;/p&gt;

&lt;p&gt;A product promise and an implementation detail are not the same kind of truth.&lt;/p&gt;

&lt;p&gt;A product doc should say what must be true, why it matters, who benefits, what boundary is being protected, and what success means.&lt;/p&gt;

&lt;p&gt;An engineering doc should say how the repository currently realizes that promise: the behavior, contract, architecture, workflow, operations, tests, and source-backed implementation facts.&lt;/p&gt;

&lt;p&gt;When those two kinds of truth collapse into one file, the result is usually weak in both directions.&lt;/p&gt;

&lt;p&gt;Product truth becomes a summary of implementation mechanics.&lt;/p&gt;

&lt;p&gt;Engineering truth becomes a detailed version of product rationale.&lt;/p&gt;

&lt;p&gt;Neither is ideal for humans. Neither is ideal for agents.&lt;/p&gt;

&lt;p&gt;Truthmark 2.2.0 introduces explicit product and engineering lanes so agents can reason about these surfaces separately.&lt;/p&gt;

&lt;p&gt;The core rule is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product truth says what must be true and why.
Engineering truth says how the repository currently realizes it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What is new in Truthmark 2.2.0
&lt;/h2&gt;

&lt;p&gt;Truthmark 2.2.0 adds lane-separated truth surfaces under the Truthmark workspace.&lt;/p&gt;

&lt;p&gt;By default, product truth lives under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/truthmark/product
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Engineering truth lives under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docs/truthmark/engineering
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Product truth currently uses product capability docs. These docs capture capability promises, users and value, capability scope, current product behavior, acceptance criteria, product decisions, engineering realization links, non-goals, and source references.&lt;/p&gt;

&lt;p&gt;Engineering truth uses more specific engineering kinds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;engineering-behavior
engineering-contract
engineering-architecture
engineering-workflow
engineering-operations
engineering-test-behavior
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives agents a stronger map of what they are editing.&lt;/p&gt;

&lt;p&gt;A functional code change usually updates engineering truth first.&lt;/p&gt;

&lt;p&gt;A product-lane change should only happen when the implemented behavior, product promise, capability boundary, or explicit product evidence supports it.&lt;/p&gt;

&lt;p&gt;Both-lane work is possible, but it must write separate product and engineering docs and link them.&lt;/p&gt;

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

&lt;p&gt;The goal is not just to split folders.&lt;/p&gt;

&lt;p&gt;The goal is to prevent agents from creating mixed documents that blur intent, implementation, and operational evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-lane traceability
&lt;/h2&gt;

&lt;p&gt;Truthmark 2.2.0 adds explicit relationship metadata between product and engineering truth.&lt;/p&gt;

&lt;p&gt;Product docs can declare which engineering docs realize them.&lt;/p&gt;

&lt;p&gt;Engineering docs can declare which product docs they realize.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# product truth&lt;/span&gt;
&lt;span class="na"&gt;realized_by&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docs/truthmark/engineering/workflows/installed-workflow-runtime.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# engineering truth&lt;/span&gt;
&lt;span class="na"&gt;realizes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docs/truthmark/product/capabilities/agent-native-workflow-injection.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a practical traceability layer.&lt;/p&gt;

&lt;p&gt;A reviewer can start from a product promise and inspect the current engineering realization.&lt;/p&gt;

&lt;p&gt;An agent can start from an implementation change and find the product capability it may affect.&lt;/p&gt;

&lt;p&gt;The connection is committed to the repository. It is not hidden in model memory. It is not stored in a dashboard. It is not dependent on a live service.&lt;/p&gt;

&lt;p&gt;It is just Git.&lt;/p&gt;

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

&lt;p&gt;AI agents need context, but context is not enough.&lt;/p&gt;

&lt;p&gt;They also need boundaries.&lt;/p&gt;

&lt;p&gt;Without boundaries, an agent asked to “update the docs” can easily do the wrong thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rewrite product intent as implementation detail
mix architecture with user-facing promises
append behavior to README indexes
create catch-all docs that nobody owns
update stale docs without checking code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Truthmark 2.2.0 pushes against that failure mode.&lt;/p&gt;

&lt;p&gt;Before writing canonical truth docs, the workflow asks the agent to classify the work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;product-lane
engineering-lane
both-lane
ambiguous
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the lane is ambiguous, the agent should block or route the task through Truth Structure rather than creating a mixed document.&lt;/p&gt;

&lt;p&gt;That is a deliberately conservative design.&lt;/p&gt;

&lt;p&gt;Truthmark does not try to decide whether a product decision is commercially correct, valuable, prioritized, or desirable.&lt;/p&gt;

&lt;p&gt;That judgment belongs to humans.&lt;/p&gt;

&lt;p&gt;Truthmark focuses on a narrower workflow question:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is the repository truth organized, routed, and evidence-backed enough for agents and reviewers to trust the next handoff?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Product truth is not a feature brochure
&lt;/h2&gt;

&lt;p&gt;A product lane can be misunderstood.&lt;/p&gt;

&lt;p&gt;Truthmark product truth is not marketing copy. It is not roadmap speculation. It is not a place for aspirational feature promises.&lt;/p&gt;

&lt;p&gt;A product truth doc describes current product capability boundaries that are supported by repository evidence, explicit product instruction, or implemented behavior.&lt;/p&gt;

&lt;p&gt;For example, a product capability doc can state:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Truthmark gives supported AI hosts explicit, committed workflow surfaces for Structure, Document, Sync, Preview, Realize, Check, and Portal.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is product truth because it describes the user-visible capability.&lt;/p&gt;

&lt;p&gt;The engineering lane then explains how the repository realizes it through generated skills, prompts, commands, managed instruction blocks, helper manifests, and host-specific workflow files.&lt;/p&gt;

&lt;p&gt;The two lanes are related, but neither should be a copy of the other.&lt;/p&gt;

&lt;h2&gt;
  
  
  Engineering truth is not lower-status truth
&lt;/h2&gt;

&lt;p&gt;The engineering lane is not just “implementation notes.”&lt;/p&gt;

&lt;p&gt;It is the source-backed current realization of the product and system behavior.&lt;/p&gt;

&lt;p&gt;Engineering truth owns things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;current implementation behavior
API and CLI contracts
generated host surfaces
workflow execution models
architecture boundaries
operations
tests and invariants
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For AI agents, that distinction is important.&lt;/p&gt;

&lt;p&gt;When an agent changes functional code, the engineering truth is usually where the immediate sync happens.&lt;/p&gt;

&lt;p&gt;When the change also affects a product promise or capability boundary, product truth can be updated too, but that update needs explicit support.&lt;/p&gt;

&lt;p&gt;This keeps product docs from becoming automatic summaries of every implementation change.&lt;/p&gt;

&lt;p&gt;It also keeps engineering docs from becoming product rationale documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow model remains Git-native
&lt;/h2&gt;

&lt;p&gt;Truthmark is still not a hosted service.&lt;/p&gt;

&lt;p&gt;It does not add a database.&lt;/p&gt;

&lt;p&gt;It does not require hidden memory.&lt;/p&gt;

&lt;p&gt;It does not ask a reviewer to trust a chat transcript.&lt;/p&gt;

&lt;p&gt;Truthmark installs workflow infrastructure into the repository.&lt;/p&gt;

&lt;p&gt;That infrastructure includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;route files
product truth docs
engineering truth docs
templates
managed instruction blocks
host-native skills
host-native prompts and commands
project agents
optional helper metadata
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI prepares and validates the repository.&lt;/p&gt;

&lt;p&gt;The installed workflow surfaces are what agents use during work.&lt;/p&gt;

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

&lt;p&gt;The terminal command &lt;code&gt;truthmark check&lt;/code&gt; can validate repository truth health. But the AI-facing Truth Check workflow is an installed workflow surface that an agent can follow directly by reading the checkout.&lt;/p&gt;

&lt;p&gt;Truthmark 2.2.0 continues to favor direct checkout inspection.&lt;/p&gt;

&lt;p&gt;If the CLI is unavailable, an agent should still be able to inspect committed config, route files, truth docs, source files, templates, and tests directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Token-conscious workflow surfaces
&lt;/h2&gt;

&lt;p&gt;Truthmark 2.2.0 also improves generated prompt and command surfaces for supported AI hosts.&lt;/p&gt;

&lt;p&gt;The product direction here is straightforward: agents should not preload everything.&lt;/p&gt;

&lt;p&gt;A workflow entrypoint should be small. Detailed procedure files should be loaded only when the workflow actually needs them.&lt;/p&gt;

&lt;p&gt;That is why generated prompt and command surfaces now act as lightweight adapters.&lt;/p&gt;

&lt;p&gt;They point to the canonical installed skill and support files instead of duplicating the full workflow body everywhere.&lt;/p&gt;

&lt;p&gt;For example, a host command can say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use this prompt as a light-weight adapter for Truthmark Sync.

To run the full workflow, use the installed skill surface.

For the canonical workflow procedure, report template, and workflow-specific support files, read:
- SKILL.md
- support/procedure.md
- support/report-template.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This reduces prompt bloat while preserving a complete workflow contract in the repository.&lt;/p&gt;

&lt;p&gt;It is a practical tradeoff for real agent environments, where unnecessary tokens can crowd out the actual task context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supported agent hosts
&lt;/h2&gt;

&lt;p&gt;Truthmark continues to generate host-native surfaces for multiple AI coding environments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;codex
opencode
claude-code
github-copilot
gemini-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different hosts expose workflows differently.&lt;/p&gt;

&lt;p&gt;Some use skills. Some use prompts. Some use commands. Some support project agents or subagents.&lt;/p&gt;

&lt;p&gt;Truthmark does not force one runtime shape on every host. It generates the surface that fits the host while keeping the workflow contract consistent.&lt;/p&gt;

&lt;p&gt;That is important because AI development teams are not standardizing on a single coding agent interface yet.&lt;/p&gt;

&lt;p&gt;Truthmark treats the repository as the stable integration point.&lt;/p&gt;

&lt;h2&gt;
  
  
  The installed workflows
&lt;/h2&gt;

&lt;p&gt;Truthmark includes several AI-facing workflows.&lt;/p&gt;

&lt;p&gt;Truth Sync is the finish-time workflow after functional code changes. Code leads; truth docs follow.&lt;/p&gt;

&lt;p&gt;Truth Document is for documenting existing implemented behavior. It is implementation-first and doc-only.&lt;/p&gt;

&lt;p&gt;Truth Structure repairs routing and truth ownership. It is used when docs are broad, stale, catch-all, mixed-owner, or unrouteable.&lt;/p&gt;

&lt;p&gt;Truth Preview is read-only. It helps an agent preview likely workflow routing, target docs, expected writes, or blocking ambiguity before edits.&lt;/p&gt;

&lt;p&gt;Truth Realize is doc-first. Truth docs lead, and the agent updates code to match bounded current truth claims.&lt;/p&gt;

&lt;p&gt;Truth Check audits repository truth health, routing, ownership, canonical docs, and evidence hygiene.&lt;/p&gt;

&lt;p&gt;Truthmark Portal is a manual presentation workflow for generating a committed static HTML view of the truth docs when enabled.&lt;/p&gt;

&lt;p&gt;These workflows are intentionally separate.&lt;/p&gt;

&lt;p&gt;That separation is part of the product.&lt;/p&gt;

&lt;p&gt;A sync workflow should not silently become a structure repair.&lt;/p&gt;

&lt;p&gt;A preview workflow should not authorize writes.&lt;/p&gt;

&lt;p&gt;A realize workflow should not rewrite truth docs while implementing them.&lt;/p&gt;

&lt;p&gt;A check workflow should not replace normal tests or code review.&lt;/p&gt;

&lt;p&gt;Each workflow has a boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;p&gt;Install Truthmark:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; truthmark
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the repository config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install or refresh the workflow surfaces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validate the setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then review the generated files before committing.&lt;/p&gt;

&lt;p&gt;For an existing repository, the first useful workflow is often a structure pass:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/truthmark-structure split the broad repository area into auth, billing, and notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives later Truth Sync runs better destinations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Truthmark is different
&lt;/h2&gt;

&lt;p&gt;Many AI tools focus on producing the next answer.&lt;/p&gt;

&lt;p&gt;Truthmark focuses on the next handoff.&lt;/p&gt;

&lt;p&gt;That is a different product lane.&lt;/p&gt;

&lt;p&gt;The question is not only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Can the agent change the code?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Can the repository still explain itself after the agent changes the code?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Truthmark makes that question concrete.&lt;/p&gt;

&lt;p&gt;It gives agents committed workflow surfaces.&lt;/p&gt;

&lt;p&gt;It gives reviewers normal Git diffs.&lt;/p&gt;

&lt;p&gt;It keeps product truth and engineering truth separate.&lt;/p&gt;

&lt;p&gt;It makes traceability explicit.&lt;/p&gt;

&lt;p&gt;It treats repository state, not hidden memory, as the durable context.&lt;/p&gt;

&lt;p&gt;That is the lane Truthmark is building in: Git-native truth infrastructure for AI coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;AI-assisted development is moving from isolated prompts to ongoing repository work.&lt;/p&gt;

&lt;p&gt;That shift changes what teams need.&lt;/p&gt;

&lt;p&gt;They do not only need faster code generation.&lt;/p&gt;

&lt;p&gt;They need governed handoffs.&lt;/p&gt;

&lt;p&gt;They need evidence-backed repository context.&lt;/p&gt;

&lt;p&gt;They need agent workflows that can scale without turning into broad rewrites.&lt;/p&gt;

&lt;p&gt;Truthmark 2.2.0 is a step in that direction.&lt;/p&gt;

&lt;p&gt;Product truth says what must be true and why.&lt;/p&gt;

&lt;p&gt;Engineering truth says how the repository currently realizes it.&lt;/p&gt;

&lt;p&gt;Agents use both.&lt;/p&gt;

&lt;p&gt;Humans review the diff.&lt;/p&gt;

&lt;p&gt;The repository carries its own truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; truthmark
truthmark config
truthmark init
truthmark check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/merlinhu1/truthmark
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>documentation</category>
      <category>ai</category>
      <category>tooling</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introducing Truthmark 1.4.0: Git-native truth workflows for AI coding agents</title>
      <dc:creator>Merlin</dc:creator>
      <pubDate>Sat, 16 May 2026 15:23:03 +0000</pubDate>
      <link>https://dev.to/merlin_h_2636e3753c2e642e/introducing-truthmark-140-git-native-truth-workflows-for-ai-coding-agents-1m4d</link>
      <guid>https://dev.to/merlin_h_2636e3753c2e642e/introducing-truthmark-140-git-native-truth-workflows-for-ai-coding-agents-1m4d</guid>
      <description>&lt;p&gt;AI coding agents are getting good at changing code.&lt;/p&gt;

&lt;p&gt;That creates a new problem.&lt;/p&gt;

&lt;p&gt;The code changes, but the repository often stops telling the truth.&lt;/p&gt;

&lt;p&gt;The behavior moves ahead of the docs. Architecture notes become stale. Product decisions stay in chat history. Reviewers see the implementation diff, but not the context that changed around it.&lt;/p&gt;

&lt;p&gt;Truthmark is built for that gap.&lt;/p&gt;

&lt;p&gt;It is a Git-native, branch-scoped workflow layer for AI-assisted software development. It helps coding agents keep repository truth aligned with functional code changes, while leaving humans with ordinary Git diffs they can inspect.&lt;/p&gt;

&lt;p&gt;The latest release, Truthmark 1.4.0, adds workflow verifier and writer agents. That makes the installed workflows more useful for larger repositories, where a single agent context can get crowded fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Truthmark does
&lt;/h2&gt;

&lt;p&gt;Truthmark does not try to be another AI model.&lt;/p&gt;

&lt;p&gt;It does not host a service. It does not run a database. It does not add an MCP server. It does not ask your team to trust hidden memory.&lt;/p&gt;

&lt;p&gt;Instead, it installs workflow infrastructure into your repository.&lt;/p&gt;

&lt;p&gt;That infrastructure has two surfaces.&lt;/p&gt;

&lt;p&gt;The first surface is the human-facing CLI. Maintainers use it to configure the repository, install workflow files, refresh generated surfaces, and validate the truth setup.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark config
truthmark init
truthmark check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second surface is AI-facing. Truthmark installs host-native workflow surfaces for coding agents. Depending on the host, these show up as skills, prompts, commands, managed instruction blocks, or project agents.&lt;/p&gt;

&lt;p&gt;That distinction is important.&lt;/p&gt;

&lt;p&gt;The CLI prepares the repository. The AI-facing surfaces are the runtime that agents use while doing the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The normal workflow
&lt;/h2&gt;

&lt;p&gt;The default Truthmark path looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent changes functional code
relevant tests run
Truth Sync checks mapped truth docs
truth docs update when needed
human reviews code diff + truth diff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to create more documentation.&lt;/p&gt;

&lt;p&gt;The goal is to make repository truth harder to skip.&lt;/p&gt;

&lt;p&gt;When an AI agent changes behavior, Truthmark gives it a finish-time workflow guard. The agent checks the mapped truth docs before handoff. If the docs need to change, the change appears as a normal Git diff.&lt;/p&gt;

&lt;p&gt;That makes the repository easier to review, easier to hand off, and easier to trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why branch-scoped truth matters
&lt;/h2&gt;

&lt;p&gt;A lot of AI tooling focuses on the next answer.&lt;/p&gt;

&lt;p&gt;Truthmark focuses on the next handoff.&lt;/p&gt;

&lt;p&gt;In real repositories, truth is not global in a simple way. Branches diverge. Architecture changes happen in stages. Product behavior may differ between a feature branch and main. A memory tool can help one user or one session, but it does not automatically give the reviewer a committed record of what the branch currently believes.&lt;/p&gt;

&lt;p&gt;Truthmark keeps that context in the repository.&lt;/p&gt;

&lt;p&gt;The route files, truth docs, generated workflow surfaces, and instruction blocks live with the branch. They can be reviewed, updated, reverted, and merged like other project files.&lt;/p&gt;

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

&lt;p&gt;AI context becomes repository state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is new in 1.4.0
&lt;/h2&gt;

&lt;p&gt;Truthmark 1.4.0 adds project-scoped verifier agents and a leased &lt;code&gt;truth-doc-writer&lt;/code&gt; where supported by the host.&lt;/p&gt;

&lt;p&gt;This gives the installed workflows a better way to handle bounded evidence work.&lt;/p&gt;

&lt;p&gt;For example, a parent workflow can ask a verifier to inspect a specific route, a specific doc claim, or a specific truth-doc shard. The verifier stays read-only. It works inside a bounded assignment instead of wandering through the whole repository.&lt;/p&gt;

&lt;p&gt;For document writing, the new leased writer model is intentionally strict. The parent workflow owns the lease, the write boundary, the final report, and the diff validation. The writer does not get broad permission to rewrite the repository.&lt;/p&gt;

&lt;p&gt;That is the core idea behind this release:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;delegate bounded evidence work
keep parent workflow control
validate the diff before accepting it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This matters because AI workflows often fail by becoming too broad. A task starts as “check this behavior” and turns into a vague repo-wide rewrite. Truthmark 1.4.0 pushes in the opposite direction. Smaller assignments. Clearer leases. Parent-owned acceptance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supported agent hosts
&lt;/h2&gt;

&lt;p&gt;Truthmark currently supports generated surfaces for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;codex
opencode
claude-code
github-copilot
gemini-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different hosts expose workflow surfaces differently.&lt;/p&gt;

&lt;p&gt;Codex, Claude Code, and supported Copilot IDEs can expose &lt;code&gt;/truthmark-*&lt;/code&gt; style workflows. OpenCode uses &lt;code&gt;/skill truthmark-*&lt;/code&gt;. Gemini CLI uses &lt;code&gt;/truthmark:*&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The exact files generated depend on your &lt;code&gt;.truthmark/config.yml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;By default, Truthmark includes every supported platform. In a real project, you should remove the platforms you do not use, then rerun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The workflows
&lt;/h2&gt;

&lt;p&gt;Truthmark installs several AI-facing workflows.&lt;/p&gt;

&lt;p&gt;Truth Sync is the normal finish-time workflow after functional code changes. It is code-first. The code leads, and mapped truth docs follow.&lt;/p&gt;

&lt;p&gt;Truth Document is for implemented behavior that already exists, but is not documented well enough. It is implementation-first and doc-only. It should not change functional code.&lt;/p&gt;

&lt;p&gt;Truth Structure repairs or splits broad routing. This is useful after initialization, because a new repository often starts with one broad route that needs to become real product, service, or domain areas.&lt;/p&gt;

&lt;p&gt;Truth Preview is read-only. It lets an agent inspect likely routing before edits.&lt;/p&gt;

&lt;p&gt;Truth Realize is doc-first. A truth doc leads, and the agent updates code to match it.&lt;/p&gt;

&lt;p&gt;Truth Check is the AI-facing audit workflow. It is separate from the terminal command &lt;code&gt;truthmark check&lt;/code&gt;, even though the names are related.&lt;/p&gt;

&lt;p&gt;That boundary is deliberate. Humans run the CLI. Agents run the installed workflow surfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;p&gt;Install Truthmark in the repository you want to initialize.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /path/to/your-repo
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; truthmark
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the repository truth contract.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Review the generated config.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.truthmark/config.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then install the workflow surfaces.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validate the setup.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;truthmark check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, review the generated files before committing. You will usually see route files, truth-doc scaffolding, templates, managed instruction blocks, and host-specific workflow surfaces.&lt;/p&gt;

&lt;p&gt;On an existing repository, the first useful agent task is often a structure pass:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/truthmark-structure split the broad repository area into auth, billing, and notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives Truth Sync better destinations later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I think this matters
&lt;/h2&gt;

&lt;p&gt;AI-assisted development is moving from novelty to daily practice.&lt;/p&gt;

&lt;p&gt;The hard part is no longer whether an agent can produce a change. The hard part is whether the team can still understand the repository after many agent-produced changes.&lt;/p&gt;

&lt;p&gt;Truthmark is an attempt to make that problem concrete.&lt;/p&gt;

&lt;p&gt;Not by adding a dashboard.&lt;/p&gt;

&lt;p&gt;Not by adding another memory layer.&lt;/p&gt;

&lt;p&gt;Not by asking reviewers to trust the chat transcript.&lt;/p&gt;

&lt;p&gt;The repository should carry its own truth. Agents should read it. Agents should update it when their work changes it. Humans should review the result in Git.&lt;/p&gt;

&lt;p&gt;That is what Truthmark is for.&lt;/p&gt;

&lt;p&gt;Truthmark 1.4.0 takes another step in that direction by making the workflow surface more scalable. Verifier agents can inspect bounded evidence. Leased writer agents can handle bounded doc shards. Parent workflows still own the final judgment.&lt;/p&gt;

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

&lt;p&gt;AI agents can move fast, but the repository still has to be governable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; truthmark
truthmark config
truthmark init
truthmark check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub: &lt;a href="https://github.com/merlinhu1/truthmark" rel="noopener noreferrer"&gt;https://github.com/merlinhu1/truthmark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you try it on an existing repository, start small. Initialize the repo, review the generated config, split the default route into real ownership areas, then let Truth Sync handle the next functional code change.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>documentation</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
