<?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: Parker</title>
    <description>The latest articles on DEV Community by Parker (@parkerscobey).</description>
    <link>https://dev.to/parkerscobey</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3868353%2F7698f278-7366-4142-8186-f74d8a6acf06.png</url>
      <title>DEV Community: Parker</title>
      <link>https://dev.to/parkerscobey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parkerscobey"/>
    <language>en</language>
    <item>
      <title>Your AI Agent Doesn't Need More Memory Tools. It Needs to Learn to Introspect.</title>
      <dc:creator>Parker</dc:creator>
      <pubDate>Tue, 14 Apr 2026 04:25:34 +0000</pubDate>
      <link>https://dev.to/parkerscobey/your-ai-agent-doesnt-need-more-memory-tools-it-needs-to-learn-to-introspect-3hjb</link>
      <guid>https://dev.to/parkerscobey/your-ai-agent-doesnt-need-more-memory-tools-it-needs-to-learn-to-introspect-3hjb</guid>
      <description>&lt;p&gt;The pattern I keep seeing in agent systems:&lt;/p&gt;

&lt;p&gt;The main agent has 12 memory-related tool calls available to it. It uses them inconsistently. Sometimes it searches, sometimes it forgets to. Sometimes it writes something worth keeping, sometimes it doesn't. Context quality is a function of discipline, not architecture.&lt;/p&gt;

&lt;p&gt;That's not a memory problem. That's a cognitive interface problem.&lt;/p&gt;

&lt;p&gt;And I think we've been solving it wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  The current model
&lt;/h2&gt;

&lt;p&gt;Right now, if you want your agent to have durable memory, you give it tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;search_context(query)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;write_memory(content)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read_context(id)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_related(ref)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;register_focus(tags)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;compact_context()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then you cross your fingers and hope it uses them correctly.&lt;/p&gt;

&lt;p&gt;Sometimes it does. Often it doesn't.&lt;/p&gt;

&lt;p&gt;And every one of those tool calls costs tokens. The round-trip to reason about whether to search, what to search for, whether the results are relevant, what to write, what scope to use — that's cognitive tax on every single turn.&lt;/p&gt;

&lt;p&gt;That tax compounds fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  There's a better abstraction
&lt;/h2&gt;

&lt;p&gt;What if the agent didn't have to think about any of that?&lt;/p&gt;

&lt;p&gt;What if instead of a bag of memory tools, the agent just had one interface to its own memory system — and that interface was called &lt;strong&gt;Introspect&lt;/strong&gt;?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;introspect("I'm about to help Parker with System-1 architecture.
What prior decisions, open questions, and preferences should I
keep in mind before I respond?")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;

&lt;p&gt;Not "search, read, filter, rank, decide if relevant." Just introspect.&lt;/p&gt;

&lt;p&gt;The deeper shift is this: the agent stops acting like the maintainer of its own memory system and starts acting like the consumer of a subconscious built for continuity.&lt;/p&gt;

&lt;p&gt;The agent asks its subconscious a question in natural language. The subconscious returns grounded, relevant context. The agent moves on.&lt;/p&gt;

&lt;p&gt;This is what we're building with &lt;strong&gt;System-1&lt;/strong&gt; — a subconscious runtime for AI agents with Introspection as its primary interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why introspection is a different thing than search
&lt;/h2&gt;

&lt;p&gt;This is subtle but important.&lt;/p&gt;

&lt;p&gt;Search is: "give me documents that match this query."&lt;/p&gt;

&lt;p&gt;Introspection is: "tell me what I should know about this, including things I don't know to ask for."&lt;/p&gt;

&lt;p&gt;When an agent introspects, it might ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"what am I forgetting?"&lt;/li&gt;
&lt;li&gt;"what context should I check before replying?"&lt;/li&gt;
&lt;li&gt;"who is this person and what patterns exist in our work?"&lt;/li&gt;
&lt;li&gt;"reconnect me to what I was doing last session"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those aren't search queries. They're cognitive self-checks.&lt;/p&gt;

&lt;p&gt;Introspection is closer to how a human accesses prior knowledge — not by keyword, but by relevance to the current moment.&lt;/p&gt;

&lt;p&gt;And that distinction changes what the underlying system has to do. It needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multi-stage retrieval, not one-shot lookup&lt;/li&gt;
&lt;li&gt;evidence-grounded synthesis, not raw result dumps&lt;/li&gt;
&lt;li&gt;preloaded ambient context at session start, not cold retrieval every time&lt;/li&gt;
&lt;li&gt;iterative follow-up if the first pass is incomplete&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The token math
&lt;/h2&gt;

&lt;p&gt;This framing also has real cost implications.&lt;/p&gt;

&lt;p&gt;Today, if you expose 10 memory tools to an agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the model must reason about all 10 in its decision loop&lt;/li&gt;
&lt;li&gt;it pays tokens to decide which to call&lt;/li&gt;
&lt;li&gt;it pays tokens on each tool call&lt;/li&gt;
&lt;li&gt;it pays tokens to evaluate whether the results are useful&lt;/li&gt;
&lt;li&gt;it often gets it wrong and pays again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Introspection as a single clean interface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one tool call replaces many&lt;/li&gt;
&lt;li&gt;the subconscious layer handles routing, retrieval strategy, and synthesis internally&lt;/li&gt;
&lt;li&gt;the main model gets high-signal output, not raw backend results&lt;/li&gt;
&lt;li&gt;token budget goes to the actual task instead of memory plumbing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a real win. Not marginal. Meaningful.&lt;/p&gt;

&lt;p&gt;A well-designed subconscious layer should reduce token spend on memory operations significantly while improving recall quality at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the subconscious actually does
&lt;/h2&gt;

&lt;p&gt;The interface is simple. The system beneath it is not.&lt;/p&gt;

&lt;p&gt;System-1 handles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Substrate observation&lt;/strong&gt;&lt;br&gt;
It watches the agent's runtime activity — messages, tool calls, completions — continuously in the background. The main agent never has to trigger this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conservative extraction&lt;/strong&gt;&lt;br&gt;
At every turn, System-1 asks: is anything in this turn worth remembering? Often the answer is no. That's fine. Abstention is the default. When something is worth keeping, it proposes a candidate artifact with evidence and provenance attached.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Waking Mind on startup&lt;/strong&gt;&lt;br&gt;
At the start of every session, before the agent does anything, System-1 preloads relevant ambient context and generates a high-signal orientation layer. The agent wakes up knowing who it is, who the user is, what project matters, and what it was probably working on last.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introspection on demand&lt;/strong&gt;&lt;br&gt;
When the agent needs to go deeper, it calls &lt;code&gt;introspect(...)&lt;/code&gt;. System-1 consults preloaded context first, performs iterative backend retrieval if needed, synthesizes grounded output, and returns a natural-language answer.&lt;/p&gt;

&lt;p&gt;The main agent talks to System-1 in English. System-1 handles everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hard constraint
&lt;/h2&gt;

&lt;p&gt;There's one rule we've been rigidly designing around:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;System-1 is allowed to remember, surface, and synthesize.&lt;br&gt;
It is not allowed to fictionalize.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A subconscious that hallucinates is worse than no subconscious. It feels coherent. It's wrong. The agent acts on it.&lt;/p&gt;

&lt;p&gt;So the whole architecture is built around this discipline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;extraction is conservative — most turns produce nothing&lt;/li&gt;
&lt;li&gt;every durable artifact requires provenance and grounding evidence&lt;/li&gt;
&lt;li&gt;synthesis must remain traceable to source&lt;/li&gt;
&lt;li&gt;uncertainty must survive — the system should say "unclear" rather than confabulate&lt;/li&gt;
&lt;li&gt;inspectability is architectural, not optional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the hard part of the problem. The clean interface is the easy part.&lt;/p&gt;

&lt;h2&gt;
  
  
  One more thing
&lt;/h2&gt;

&lt;p&gt;System-1 is being built as a backend-agnostic subconscious runtime.&lt;/p&gt;

&lt;p&gt;It works with a local file-based backend for easy adoption. It works best with Hizal — a structured memory system that maps naturally onto the System-1 model with scoped storage, deterministic ambient injection, and rich retrieval.&lt;/p&gt;

&lt;p&gt;But the key architectural bet is this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introspection is an abstraction layer, not a thin wrapper.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the agent experience changes when you swap backends, the abstraction failed.&lt;br&gt;
If the agent can introspect with the same interface against a file backend or Hizal and get equally coherent output, the abstraction worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger picture
&lt;/h2&gt;

&lt;p&gt;Agents don't need more memory tools.&lt;/p&gt;

&lt;p&gt;They need a better relationship to memory.&lt;/p&gt;

&lt;p&gt;The current state is: agent as its own memory system maintainer, manually juggling reads and writes across every turn.&lt;/p&gt;

&lt;p&gt;The alternative: agent as consumer of a subconscious that handles continuity, context surfacing, and grounded recall as infrastructure.&lt;/p&gt;

&lt;p&gt;Introspection is that interface.&lt;/p&gt;

&lt;p&gt;If you're building agents and find yourself burning tokens on memory choreography, or watching agents forget context they should obviously have, or struggling to make memory feel natural and coherent — this is the problem we're solving.&lt;/p&gt;

&lt;p&gt;Still early. Still building. I'm sure we'll learn things the hard way. But the direction feels right, and the ambition is to make agent continuity feel less like plumbing and more like cognition.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>architecture</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Agentic Development with Hizal</title>
      <dc:creator>Parker</dc:creator>
      <pubDate>Wed, 08 Apr 2026 20:03:06 +0000</pubDate>
      <link>https://dev.to/parkerscobey/agentic-development-with-hizal-1ieb</link>
      <guid>https://dev.to/parkerscobey/agentic-development-with-hizal-1ieb</guid>
      <description>&lt;p&gt;&lt;strong&gt;The goal:&lt;/strong&gt; Rapidly ship production-ready software almost autonomously using &lt;a href="https://github.com/parkerscobey/hizal" rel="noopener noreferrer"&gt;Hizal&lt;/a&gt;'s context engine, memory hierarchy, tools, skills, and governance capabilities for agent orchestration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Principles:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"We are engineering back-pressure on the generative function." - Geoffrey Huntley&lt;/li&gt;
&lt;li&gt;Hizal is the single source of truth. No external state tracking.&lt;/li&gt;
&lt;li&gt;Subagents are stateless. They read from Hizal, work, write to Hizal, exit.&lt;/li&gt;
&lt;li&gt;Every step produces an artifact. No step is skipped.&lt;/li&gt;
&lt;li&gt;The spec chunk is the work item. Its status field IS the state machine.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Human ←→ Assistant Agent ←→ Orchestrator Agent
                                    │
                    ┌───────────────┼───────────────┐
                    │               │               │
               Researcher      Planner          Coder
                Subagent       Subagent         Subagent
                    │               │               │
                    │               │               │
                    └───────┬───────┘               │
                            │                       │
                       QA Subagent          Delivery Subagent
                                                    │
                                              Operations Agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Players:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Agent | Persistence | Count | Runs on |
|-------|-------------|-------|---------|
| Assistant | Persistent | 1 per org | Mac Mini / always-on machine (OpenClaw) |
| Orchestrator | Persistent (heartbeat-driven) | 1 per project | Dedicated EC2 per project |
| Researcher | Ephemeral (subagent) | Spawned per work item | Same EC2 as Orchestrator |
| Planner | Ephemeral (subagent) | Spawned per work item | Same EC2 as Orchestrator |
| Coder | Ephemeral (subagent) | Spawned per work item | Same EC2 as Orchestrator |
| QA | Ephemeral (subagent) | Spawned per work item | Same EC2 as Orchestrator |
| Delivery | Ephemeral (subagent) | Spawned per packaging cycle | Same EC2 as Orchestrator |
| Operations | Persistent | 1 per org (or per project) | TBD |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; As you scale to more projects, agent type specialization lets you inject context more selectively. More agent types + more session lifecycle types = more precise injection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Work Item Lifecycle
&lt;/h2&gt;

&lt;p&gt;Every work item is a &lt;strong&gt;&lt;code&gt;dev_spec&lt;/code&gt; chunk&lt;/strong&gt; with a &lt;code&gt;status&lt;/code&gt; custom field that tracks its progression. Subagents advance the status and create linked artifact chunks at each stage. The Orchestrator queries specs by status to decide what to do next.&lt;/p&gt;

&lt;h3&gt;
  
  
  Status State Machine
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;new → researched → planned → implemented → verified → packaged → deployed
                                                          ↑
                                              (human merges release PR)

Any status can transition to → blocked
blocked → (reverts to previous_status on resolution)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Status Definitions
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Set by&lt;/th&gt;
&lt;th&gt;Means&lt;/th&gt;
&lt;th&gt;Artifact Created&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Assistant or Researcher&lt;/td&gt;
&lt;td&gt;Spec exists, no work started&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_spec&lt;/code&gt; chunk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;researched&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Researcher&lt;/td&gt;
&lt;td&gt;Code analyzed, gaps identified&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_research&lt;/code&gt; chunk linked to spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;planned&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Planner&lt;/td&gt;
&lt;td&gt;Implementation plan ready&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_plan&lt;/code&gt; chunk linked to spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;implemented&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Coder&lt;/td&gt;
&lt;td&gt;Code written, PR open&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_implementation&lt;/code&gt; chunk linked to spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;verified&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;QA&lt;/td&gt;
&lt;td&gt;Tests pass, criteria met&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_verification&lt;/code&gt; chunk linked to spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;packaged&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delivery&lt;/td&gt;
&lt;td&gt;Merged into release branch PR&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_package&lt;/code&gt; chunk linked to spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;deployed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delivery&lt;/td&gt;
&lt;td&gt;CI/CD completed&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_deployment&lt;/code&gt; chunk linked to spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;blocked&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Any agent&lt;/td&gt;
&lt;td&gt;Cannot proceed&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;blocked_reason&lt;/code&gt; + &lt;code&gt;previous_status&lt;/code&gt; fields set on spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rejected&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;QA or Delivery&lt;/td&gt;
&lt;td&gt;Rework needed&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev_rejection&lt;/code&gt; chunk linked to spec; status reverts to stage before the rejecting agent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Custom Fields on &lt;code&gt;dev_spec&lt;/code&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;enum&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Current workflow state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;priority&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;enum&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;critical&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;low&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;blocked_reason&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;text&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Why this item is blocked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;previous_status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;enum&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Status before &lt;code&gt;blocked&lt;/code&gt; (for revert)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ticket_url&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;url&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Link to external PM tool ticket (if applicable)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Requires:&lt;/strong&gt; &lt;a href="https://forge.xferops.dev/HIZAL-171" rel="noopener noreferrer"&gt;HIZAL-171&lt;/a&gt; — Custom fields on chunk types&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Blocked / Unblocked Flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Any subagent sets spec status to &lt;code&gt;blocked&lt;/code&gt;, writes &lt;code&gt;previous_status&lt;/code&gt; = current status, writes &lt;code&gt;blocked_reason&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Orchestrator picks up blocked specs on next heartbeat (via &lt;code&gt;list_chunks&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;If Orchestrator can resolve: respawns the appropriate subagent, clears the block&lt;/li&gt;
&lt;li&gt;If human input needed: updates spec's &lt;code&gt;inject_audience&lt;/code&gt; to surface it to the Assistant&lt;/li&gt;
&lt;li&gt;On resolution: status reverts to &lt;code&gt;previous_status&lt;/code&gt;, &lt;code&gt;previous_status&lt;/code&gt; and &lt;code&gt;blocked_reason&lt;/code&gt; are cleared&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Rejection Flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;QA creates &lt;code&gt;dev_rejection&lt;/code&gt; chunk linked to spec with reason&lt;/li&gt;
&lt;li&gt;QA reverts spec status to &lt;code&gt;planned&lt;/code&gt; (sends it back to the Coder) or &lt;code&gt;researched&lt;/code&gt; (sends it back to the Planner)&lt;/li&gt;
&lt;li&gt;Orchestrator picks up the spec at its reverted status on next heartbeat&lt;/li&gt;
&lt;li&gt;Orchestrator respawns the appropriate subagent with the rejection chunk as context&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Orchestrator Queries
&lt;/h3&gt;

&lt;p&gt;The Orchestrator's decision loop is now simple structured queries — no negative joins, no relationship inference:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# What needs attention?
&lt;/span&gt;&lt;span class="nf"&gt;list_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dev_spec&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;blocked&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;# What's ready for each stage?
&lt;/span&gt;&lt;span class="nf"&gt;list_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dev_spec&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;verified&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priority&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;package&lt;/span&gt;
&lt;span class="nf"&gt;list_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dev_spec&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;implemented&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priority&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;verify&lt;/span&gt;
&lt;span class="nf"&gt;list_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dev_spec&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;planned&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priority&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;     &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;implement&lt;/span&gt;
&lt;span class="nf"&gt;list_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dev_spec&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;researched&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priority&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;plan&lt;/span&gt;
&lt;span class="nf"&gt;list_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dev_spec&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priority&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;         &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;research&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Assistant Agent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Interface between humans and the agent team. Sounding board, spec drafter, notification layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_assistant&lt;/code&gt; agent type, &lt;code&gt;dev_assisting&lt;/code&gt; session lifecycle. Injected with: agent identity, latest memory (via latest-N rule), blocked specs, pending packages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; OpenClaw on a persistent machine (Mac Mini).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Role and Responsibilities
&lt;/h3&gt;

&lt;p&gt;One Assistant per Organization. Has access to all projects but &lt;strong&gt;never writes code&lt;/strong&gt;. This agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drafts &lt;code&gt;dev_spec&lt;/code&gt; chunks from conversations with the human (sets status to &lt;code&gt;new&lt;/code&gt;, priority, and acceptance criteria)&lt;/li&gt;
&lt;li&gt;Creates and maintains org-level Hizal content: principles, knowledge, conventions, constraints, decisions&lt;/li&gt;
&lt;li&gt;Surfaces blocked specs to the human with context and resolves them on human's behalf&lt;/li&gt;
&lt;li&gt;Notifies the human when release PRs (packages) are ready for review&lt;/li&gt;
&lt;li&gt;Constantly creates memory chunks — should never truly forget anything&lt;/li&gt;
&lt;li&gt;Learns the goals of the user/org over time and proactively enriches context&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Session Lifecycle
&lt;/h3&gt;

&lt;p&gt;Each conversation session:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Starts a &lt;code&gt;dev_assisting&lt;/code&gt; Hizal session. Injected: latest memory chunk (via &lt;code&gt;latest: N&lt;/code&gt; rule), any blocked specs surfaced by Orchestrator, any pending packages.&lt;/li&gt;
&lt;li&gt;Engages with human — drafts specs, answers questions, resolves blockers.&lt;/li&gt;
&lt;li&gt;On natural conversation break (topic change, long pause, explicit "that's all"): ends session, triggering consolidation.&lt;/li&gt;
&lt;li&gt;Next session starts fresh with latest memory + any new injected chunks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The session lifecycle &lt;em&gt;is&lt;/em&gt; the memory boundary. No unbounded context growth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, chunk management, spec creation |
| Channels (Telegram) | Communication with human |
| Cron | Routine tasks (inbox checks, calendar, etc.) |
| Project Management (Forge MCP) | Syncing with external PM tools (optional) |
| Email/Calendar (gog-cli) | Notifications, scheduling |
| Web search + browser | Light research, verification |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Orchestrator Agent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Drive development on a single project. The project manager that never sleeps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_orchestrator&lt;/code&gt; agent type, &lt;code&gt;dev_orchestration&lt;/code&gt; session lifecycle. Injected with: agent identity, latest memory (via latest-N rule), org principles, project conventions and constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; OpenClaw on a dedicated EC2 per project. Heartbeat-driven.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Role and Responsibilities
&lt;/h3&gt;

&lt;p&gt;One Orchestrator per Project. On each heartbeat, the Orchestrator queries spec statuses and advances work items by spawning specialized subagents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Orchestration Sequence
&lt;/h3&gt;

&lt;p&gt;Each heartbeat:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start session.&lt;/strong&gt; Opens a &lt;code&gt;dev_orchestration&lt;/code&gt; Hizal session. Latest memory and conventions auto-inject.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Query spec statuses.&lt;/strong&gt; Use &lt;code&gt;list_chunks&lt;/code&gt; to get all specs by status. This replaces complex relationship inference — one query per status level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Triage blocked specs.&lt;/strong&gt; Query &lt;code&gt;status = blocked&lt;/code&gt;. For each: assess if the block can be resolved by respawning a subagent, or if human input is needed (escalate by updating spec's &lt;code&gt;inject_audience&lt;/code&gt; to target the Assistant).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Advance work — work backwards from delivery:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;status = verified&lt;/code&gt; → spawn &lt;strong&gt;Delivery&lt;/strong&gt; Subagent to package&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;status = implemented&lt;/code&gt; → spawn &lt;strong&gt;QA&lt;/strong&gt; Subagent to verify&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;status = planned&lt;/code&gt; → spawn &lt;strong&gt;Coder&lt;/strong&gt; Subagent to implement&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;status = researched&lt;/code&gt; → spawn &lt;strong&gt;Planner&lt;/strong&gt; Subagent to plan&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;status = new&lt;/code&gt; → spawn &lt;strong&gt;Researcher&lt;/strong&gt; Subagent to research&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Within each status, pick the highest-priority spec first.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Save memory.&lt;/strong&gt; Write a memory chunk summarizing what was accomplished and learned. The &lt;code&gt;latest: N&lt;/code&gt; injection rule ensures only this memory auto-injects next session — no manual un-injection needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;End session.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Parallelism:&lt;/strong&gt; Step 4 can spawn multiple subagents concurrently across different specs. The Orchestrator doesn't wait for them to finish — it spawns and exits. Subagent output (status updates + artifact chunks) appears on the next heartbeat. Heartbeat interval controls development velocity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, spec status queries, orchestration |
| Project Management (Forge MCP) | Syncing ticket status (optional) |
| git/source-control | Viewing code, PRs, history |
| OpenCode | Spawning subagents |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Subagent Infrastructure
&lt;/h2&gt;

&lt;p&gt;Subagents run as &lt;a href="https://opencode.ai/" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt; sessions, spawned via the &lt;code&gt;adh-spawn.sh&lt;/code&gt; wrapper script. This section documents the shared infrastructure that makes subagent execution consistent and reproducible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Directory Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.adh/
├── agents/           # Per-agent AGENTS.md files (symlinked at spawn time)
│   ├── RESEARCHER.md
│   ├── PLANNER.md
│   ├── CODER.md
│   ├── QA.md
│   └── DELIVERY.md
├── configs/          # Per-agent OpenCode config files
│   ├── researcher.json
│   ├── planner.json
│   ├── coder.json
│   ├── qa.json
│   └── delivery.json
├── skills/          # Shared skills available to all agents
│   └── search-hizal/SKILL.md
├── keys/            # Per-agent Hizal API keys
│   ├── researcher
│   ├── planner
│   ├── coder
│   ├── qa
│   └── delivery
├── workspaces/      # Git worktrees (created at spawn time)
└── logs/           # Subagent invocation logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Wrapper Script: &lt;code&gt;adh-spawn.sh&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;adh-spawn.sh&lt;/code&gt; script orchestrates subagent spawning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adh-spawn.sh &amp;lt;agent_type&amp;gt; &amp;lt;ticket_id&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;repo] &lt;span class="o"&gt;[&lt;/span&gt;prompt]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Resolves the Hizal API key for the agent type (&lt;code&gt;~/.adh/keys/{type}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Sets up a git worktree (single-repo agents) or shared workspace (cross-repo agents)&lt;/li&gt;
&lt;li&gt;Symlinks the correct &lt;code&gt;AGENTS.md&lt;/code&gt; into the work directory&lt;/li&gt;
&lt;li&gt;Exports &lt;code&gt;OPENCODE_CONFIG&lt;/code&gt; pointing to the per-agent scoped config&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;opencode run "&amp;lt;prompt&amp;gt;"&lt;/code&gt; with the work directory as cwd&lt;/li&gt;
&lt;li&gt;Logs output to &lt;code&gt;~/.adh/logs/&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Workspace modes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single-repo worktree&lt;/strong&gt; (Coder): Creates a bare clone, then a worktree per ticket. Branch named &lt;code&gt;feat/{ticket}-{agent}-work&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared workspace&lt;/strong&gt; (Researcher, Planner, QA, Delivery): Clones both &lt;code&gt;hizal/&lt;/code&gt; and &lt;code&gt;hizal-ui/&lt;/code&gt; side-by-side. Used when an agent needs to work across both repos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scoped OpenCode Configs
&lt;/h3&gt;

&lt;p&gt;Each agent type has its own OpenCode config at &lt;code&gt;~/.adh/configs/{type}.json&lt;/code&gt;. The &lt;code&gt;adh-spawn.sh&lt;/code&gt; script exports &lt;code&gt;OPENCODE_CONFIG&lt;/code&gt; to point to the correct file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key configuration per agent:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://opencode.ai/config.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"opencode/minimax-m2.5-free"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"hizal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://hizal-api.xferops.dev/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ${HIZAL_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"write"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;agent-specific&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"bash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;agent-specific&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tool permissions by agent:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;&lt;code&gt;write&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;bash&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;Rationale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Researcher&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read-only exploration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Planner&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Writes PLAN chunks, no execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coder&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full code access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QA&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs tests, no code changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs curl/gh checks only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Skills
&lt;/h3&gt;

&lt;p&gt;Skills live at &lt;code&gt;~/.adh/skills/&lt;/code&gt; and are symlinked into each work directory at spawn time. Currently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;search-hizal&lt;/code&gt;&lt;/strong&gt; — How to search Hizal effectively. Covers semantic search, scopes, multi-pass strategy, exhaustive search checklist.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hizal API Keys
&lt;/h3&gt;

&lt;p&gt;Each agent type has its own Hizal API key, stored at &lt;code&gt;~/.adh/keys/{agent_type}&lt;/code&gt;. Keys are created in the Hizal UI under each agent's profile. This gives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-agent key scoping (revoke one without affecting others)&lt;/li&gt;
&lt;li&gt;Audit trail of which agent wrote what&lt;/li&gt;
&lt;li&gt;Different permission levels per agent type if needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Researcher Subagent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; The &lt;strong&gt;R&lt;/strong&gt; in RPI. Views specs through the lenses of existing code → relevant 3rd party docs → best practices. Produces quality research.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_researcher&lt;/code&gt; agent type, &lt;code&gt;dev_research&lt;/code&gt; session lifecycle. Injected with: identity, org principles, project conventions and constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Terminal coding agent (OpenCode) on the Orchestrator's EC2, in a git worktree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sequence
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start session.&lt;/strong&gt; Opens a &lt;code&gt;dev_research&lt;/code&gt; Hizal session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read spec.&lt;/strong&gt; Fetch the &lt;code&gt;dev_spec&lt;/code&gt; chunk by query key. If the spec was created from an external PM tool, enrich it with codebase context and update the chunk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check memories.&lt;/strong&gt; Search Hizal for memories of similar past work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search project context.&lt;/strong&gt; Check for relevant project chunks. Always done &lt;em&gt;before&lt;/em&gt; reading code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the code.&lt;/strong&gt; Explore the codebase. If project chunks from step 4 are inaccurate, update them via &lt;code&gt;update_context&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External research (optional).&lt;/strong&gt; Search for relevant blog posts, articles, research (web search, arXiv, docs).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output.&lt;/strong&gt; Either:

&lt;ul&gt;
&lt;li&gt;Set spec status to &lt;code&gt;blocked&lt;/code&gt;, write &lt;code&gt;blocked_reason&lt;/code&gt; — if something prevents progress&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OR&lt;/strong&gt; create a &lt;code&gt;dev_research&lt;/code&gt; chunk — outlines what exists and what needs to change. No implementation specifics. Link to spec with reason. &lt;strong&gt;Update spec status to &lt;code&gt;researched&lt;/code&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save memories.&lt;/strong&gt; Write memory chunks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hizal MCP&lt;/td&gt;
&lt;td&gt;Memory, context, chunk management, status updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;git/source-control&lt;/td&gt;
&lt;td&gt;Reading current code, PRs, history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web search&lt;/td&gt;
&lt;td&gt;Docs, articles, research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Planner Subagent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; The &lt;strong&gt;P&lt;/strong&gt; in RPI. Reads the research and creates a phased implementation plan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_planner&lt;/code&gt; agent type, &lt;code&gt;dev_planning&lt;/code&gt; session lifecycle. Injected with: identity, org principles, project conventions and constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Terminal coding agent (OpenCode) on the Orchestrator's EC2, in a git worktree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sequence
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start session.&lt;/strong&gt; Opens a &lt;code&gt;dev_planning&lt;/code&gt; Hizal session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the chain.&lt;/strong&gt; Fetch the &lt;code&gt;dev_spec&lt;/code&gt; chunk and its linked &lt;code&gt;dev_research&lt;/code&gt; chunk by query keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check memories.&lt;/strong&gt; Search for memories of similar past work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search project context.&lt;/strong&gt; Check for relevant project chunks. Always before code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the code.&lt;/strong&gt; Verify project chunks are accurate, update if needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check 3rd party docs (if needed).&lt;/strong&gt; Read up-to-date documentation (Context7 MCP, web search).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output.&lt;/strong&gt; Either:

&lt;ul&gt;
&lt;li&gt;Set spec status to &lt;code&gt;blocked&lt;/code&gt;, write &lt;code&gt;blocked_reason&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OR&lt;/strong&gt; create a &lt;code&gt;dev_plan&lt;/code&gt; chunk with phased implementation steps, acceptance criteria per phase, and expected test coverage. Link to spec and research chunks with reasons. &lt;strong&gt;Update spec status to &lt;code&gt;planned&lt;/code&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save memories.&lt;/strong&gt; Write memory chunks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, chunk management, status updates |
| git/source-control | Reading current code, PRs, history |
| Web search / Context7 MCP | 3rd party documentation |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Coder Subagent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; The &lt;strong&gt;I&lt;/strong&gt; in RPI. Reads the plan and writes the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_coder&lt;/code&gt; agent type, &lt;code&gt;dev_coding&lt;/code&gt; session lifecycle. Injected with: identity, project conventions and constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Terminal coding agent (OpenCode) on the Orchestrator's EC2, in a git worktree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sequence
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start session.&lt;/strong&gt; Opens a &lt;code&gt;dev_coding&lt;/code&gt; Hizal session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the chain.&lt;/strong&gt; Fetch &lt;code&gt;dev_spec&lt;/code&gt;, &lt;code&gt;dev_research&lt;/code&gt;, and &lt;code&gt;dev_plan&lt;/code&gt; chunks by query keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check memories.&lt;/strong&gt; Search for memories of similar past work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search project context.&lt;/strong&gt; Check for relevant project chunks. Always before code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement.&lt;/strong&gt; Write code following the phased plan. At the end of each phase: run linters, tests, build scripts. Fix issues before the next phase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output.&lt;/strong&gt; Either:

&lt;ul&gt;
&lt;li&gt;Set spec status to &lt;code&gt;blocked&lt;/code&gt;, write &lt;code&gt;blocked_reason&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OR&lt;/strong&gt; create a PR and a &lt;code&gt;dev_implementation&lt;/code&gt; chunk. Contains: PR link, change summary, files modified, test coverage notes. Link to spec and plan chunks with reasons. &lt;strong&gt;Update spec status to &lt;code&gt;implemented&lt;/code&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save memories.&lt;/strong&gt; Write memory chunks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, chunk management, status updates |
| git/source-control | Branching, committing, PRing |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The QA Subagent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Verify implementations meet spec. Evidence-based, not vibes-based.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_qa&lt;/code&gt; agent type, &lt;code&gt;dev_verification&lt;/code&gt; session lifecycle. Injected with: identity, project conventions, constraints, testing standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Terminal coding agent (OpenCode) on the Orchestrator's EC2, in a git worktree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Role and Responsibilities
&lt;/h3&gt;

&lt;p&gt;QA is the hardest subagent to get right. A bad QA agent either rubber-stamps everything (useless) or rejects on trivial style issues (noise). The key: &lt;strong&gt;structured acceptance criteria from the plan chunk&lt;/strong&gt; and &lt;strong&gt;evidence-based output&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sequence
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start session.&lt;/strong&gt; Opens a &lt;code&gt;dev_verification&lt;/code&gt; Hizal session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the chain.&lt;/strong&gt; Fetch &lt;code&gt;dev_spec&lt;/code&gt;, &lt;code&gt;dev_plan&lt;/code&gt;, and &lt;code&gt;dev_implementation&lt;/code&gt; chunks. Extract acceptance criteria from the plan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check out the PR branch.&lt;/strong&gt; Review the diff against main.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the test suite.&lt;/strong&gt; All existing tests must pass. Note any new test coverage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate coverage gaps.&lt;/strong&gt; If acceptance criteria lack test coverage, write tests. This is the QA agent's primary value-add — it doesn't just check, it &lt;em&gt;improves&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Functional verification (if applicable).&lt;/strong&gt; If staging is available, run basic E2E checks.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Output.&lt;/strong&gt; A structured verification report, then either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;dev_verification&lt;/code&gt; chunk — criteria-by-criteria evidence:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Criteria A: ✅ — covered by test_create_user (new)
 Criteria B: ✅ — covered by test_auth_middleware (existing)
 Criteria C: ❌ — endpoint returns 500 on empty input (test added, fix needed)
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Link to spec and implementation chunks. &lt;strong&gt;Update spec status to &lt;code&gt;verified&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OR&lt;/strong&gt; create a &lt;code&gt;dev_rejection&lt;/code&gt; chunk — details what failed and why. Link to spec and implementation chunks. &lt;strong&gt;Revert spec status to &lt;code&gt;planned&lt;/code&gt;&lt;/strong&gt; (back to Coder) or &lt;code&gt;researched&lt;/code&gt; (back to Planner) depending on severity.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Save memories.&lt;/strong&gt; Write memory chunks.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, chunk management, status updates |
| git/source-control | Checking out PR, reading diff, running tests |
| Web search + browser | E2E testing against staging (if applicable) |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Delivery Subagent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Package verified changes into release branch PRs for human review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_delivery&lt;/code&gt; agent type, &lt;code&gt;dev_delivery&lt;/code&gt; session lifecycle. Injected with: identity, project conventions, deployment procedures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Terminal coding agent (OpenCode) on the Orchestrator's EC2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; MiniMax 2.5 Free (&lt;code&gt;opencode/minimax-m2.5-free&lt;/code&gt;) — via OpenCode Zen&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sequence
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start session.&lt;/strong&gt; Opens a &lt;code&gt;dev_delivery&lt;/code&gt; Hizal session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find verified specs.&lt;/strong&gt; &lt;code&gt;list_chunks(chunk_type="dev_spec", custom_fields={"status": "verified"})&lt;/code&gt;. If none: save memories, end session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create or update release branch.&lt;/strong&gt; Merge all verified PRs into &lt;code&gt;release/vX.Y.Z&lt;/code&gt;. Resolve merge conflicts (usually trivial). If non-trivial: set affected spec to &lt;code&gt;blocked&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review specs.&lt;/strong&gt; Re-read each included &lt;code&gt;dev_spec&lt;/code&gt;. Write release PR description summarizing all changes with links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output.&lt;/strong&gt; Either:

&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;dev_package&lt;/code&gt; chunk — lists all included items, specs, and the release PR link. &lt;code&gt;inject_audience&lt;/code&gt; targets the Assistant (who notifies the human). Link to spec and verification chunks. &lt;strong&gt;Update all included specs to status &lt;code&gt;packaged&lt;/code&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OR&lt;/strong&gt; create a &lt;code&gt;dev_rejection&lt;/code&gt; chunk if conflicts can't be resolved. Revert affected spec status to &lt;code&gt;implemented&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On human merge:&lt;/strong&gt; Monitor CI/CD pipeline. On successful deploy, create a &lt;code&gt;dev_deployment&lt;/code&gt; chunk. Link to spec and package chunks. &lt;strong&gt;Update all included specs to status &lt;code&gt;deployed&lt;/code&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save memories.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Human Approval Flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Delivery creates release PR → writes dev_package chunk
    → inject_audience targets Assistant
    → Assistant notifies human via Telegram
    → human reviews PR on GitHub
    → human merges → CI/CD deploys
    → Delivery writes dev_deployment chunk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Requires:&lt;/strong&gt; &lt;a href="https://forge.xferops.dev/HIZAL-174" rel="noopener noreferrer"&gt;HIZAL-174&lt;/a&gt; — Event triggers (webhook on package creation → notify human automatically)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, chunk management, status updates |
| git/source-control | Branching, merging, PR management |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Operations Agent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Manage infrastructure, handle incidents, execute rollbacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hizal Setup:&lt;/strong&gt; &lt;code&gt;dev_operations&lt;/code&gt; agent type, &lt;code&gt;dev_operations&lt;/code&gt; session lifecycle. Injected with: infrastructure conventions, deployment history, active incidents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Persistent agent. Location TBD.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; Sonnet 4.6&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Incident Flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Monitoring (Sentry/CloudWatch)
    → event trigger creates dev_incident chunk in Hizal  [HIZAL-174]
    → chunk auto-injects to Operations Agent
    → Operations Agent triages:
        → Critical: roll back, write dev_rollback chunk, notify Assistant → human
        → Non-critical: set relevant spec to blocked, write blocked_reason
    → Hotfix: create new dev_spec with priority=critical, status=new
        → Orchestrator picks up as highest priority on next heartbeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Push, not poll.&lt;/strong&gt; Incidents are created via Hizal event triggers (&lt;a href="https://forge.xferops.dev/HIZAL-174" rel="noopener noreferrer"&gt;HIZAL-174&lt;/a&gt;) — not waiting for agent heartbeats.&lt;/p&gt;

&lt;h3&gt;
  
  
  Capabilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Roll back ECS to previous task definition&lt;/li&gt;
&lt;li&gt;Revert merge commits&lt;/li&gt;
&lt;li&gt;Create high-priority hotfix specs (feed back into RPI pipeline)&lt;/li&gt;
&lt;li&gt;Monitor deploy health after releases&lt;/li&gt;
&lt;li&gt;Manage infrastructure scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Tool | Purpose |
|------|---------|
| Hizal MCP | Memory, context, chunk management |
| AWS CLI / infrastructure tools | ECS, EC2, RDS management |
| git/source-control | Revert commits, hotfix branches |
| Channels (Telegram) | Escalation to human via Assistant |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Chunk Type Reference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Artifact Chunks (created by subagents, linked to spec)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Chunk Type | Created by | Purpose | Custom Fields |
|------------|-----------|---------|---------------|
| &lt;span class="sb"&gt;`dev_spec`&lt;/span&gt; | Assistant or Researcher | &lt;span class="gs"&gt;**The work item.**&lt;/span&gt; Spec + acceptance criteria. Status field drives the entire workflow. | &lt;span class="sb"&gt;`status`&lt;/span&gt;, &lt;span class="sb"&gt;`priority`&lt;/span&gt;, &lt;span class="sb"&gt;`blocked_reason`&lt;/span&gt;, &lt;span class="sb"&gt;`previous_status`&lt;/span&gt;, &lt;span class="sb"&gt;`ticket_url`&lt;/span&gt; |
| &lt;span class="sb"&gt;`dev_research`&lt;/span&gt; | Researcher | What exists in the code, what needs to change. No implementation details. | — |
| &lt;span class="sb"&gt;`dev_plan`&lt;/span&gt; | Planner | Phased implementation with acceptance criteria per phase. | — |
| &lt;span class="sb"&gt;`dev_implementation`&lt;/span&gt; | Coder | PR link, change summary, files modified, test notes. | — |
| &lt;span class="sb"&gt;`dev_verification`&lt;/span&gt; | QA | Evidence-based criteria-by-criteria test results. | — |
| &lt;span class="sb"&gt;`dev_rejection`&lt;/span&gt; | QA or Delivery | What failed, why, root cause, recommendation. | — |
| &lt;span class="sb"&gt;`dev_package`&lt;/span&gt; | Delivery | Release branch PR with all included items. | — |
| &lt;span class="sb"&gt;`dev_deployment`&lt;/span&gt; | Delivery | Deployment record: environment, version, timestamp. | — |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Signal Chunks (created by external systems or Ops)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Chunk Type | Created by | Purpose |
|------------|-----------|---------|
| &lt;span class="sb"&gt;`dev_incident`&lt;/span&gt; | Event trigger (Sentry/CloudWatch → &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-174&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-174&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;) | Production issue detected |
| &lt;span class="sb"&gt;`dev_rollback`&lt;/span&gt; | Operations Agent | Deployment reverted. Links to deployment + incident. |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;dev_blocker&lt;/code&gt; is no longer a separate chunk type. Blocked state is tracked via the &lt;code&gt;status&lt;/code&gt; and &lt;code&gt;blocked_reason&lt;/code&gt; custom fields on &lt;code&gt;dev_spec&lt;/code&gt;. See &lt;a href="https://forge.xferops.dev/HIZAL-171" rel="noopener noreferrer"&gt;HIZAL-171&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Agent Type Reference
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Agent Type | Session Lifecycle | Persistence | Purpose |
|------------|------------------|-------------|---------|
| &lt;span class="sb"&gt;`dev_assistant`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_assisting`&lt;/span&gt; | Persistent | Human interface, spec drafting, notifications |
| &lt;span class="sb"&gt;`dev_orchestrator`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_orchestration`&lt;/span&gt; | Persistent (heartbeat) | Spec status queries, subagent coordination |
| &lt;span class="sb"&gt;`dev_researcher`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_research`&lt;/span&gt; | Ephemeral | Research existing code + docs |
| &lt;span class="sb"&gt;`dev_planner`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_planning`&lt;/span&gt; | Ephemeral | Create implementation plans |
| &lt;span class="sb"&gt;`dev_coder`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_coding`&lt;/span&gt; | Ephemeral | Write code, create PRs |
| &lt;span class="sb"&gt;`dev_qa`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_verification`&lt;/span&gt; | Ephemeral | Evidence-based verification |
| &lt;span class="sb"&gt;`dev_delivery`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_delivery`&lt;/span&gt; | Ephemeral | Package releases, monitor deploys |
| &lt;span class="sb"&gt;`dev_operations`&lt;/span&gt; | &lt;span class="sb"&gt;`dev_operations`&lt;/span&gt; | Persistent | Infrastructure, incidents, rollbacks |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Session Lifecycle Injection Rules
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Lifecycle | Injects | Notes |
|-----------|---------|-------|
| &lt;span class="sb"&gt;`dev_assisting`&lt;/span&gt; | Latest N memory from self, blocked specs (via inject_audience), pending packages (via inject_audience) | &lt;span class="sb"&gt;`latest: N`&lt;/span&gt; rule per &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-173&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-173&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; |
| &lt;span class="sb"&gt;`dev_orchestration`&lt;/span&gt; | Latest N memory from self, org principles, project conventions, project constraints | Status queries done via &lt;span class="sb"&gt;`list_chunks`&lt;/span&gt;, not injection |
| &lt;span class="sb"&gt;`dev_research`&lt;/span&gt; | Org principles, project conventions, project constraints | Subagent reads spec by query key, not injection |
| &lt;span class="sb"&gt;`dev_planning`&lt;/span&gt; | Org principles, project conventions, project constraints | Subagent reads research by query key |
| &lt;span class="sb"&gt;`dev_coding`&lt;/span&gt; | Project conventions, project constraints | Subagent reads plan by query key |
| &lt;span class="sb"&gt;`dev_verification`&lt;/span&gt; | Project conventions, project constraints, testing standards | Subagent reads implementation chain by query keys |
| &lt;span class="sb"&gt;`dev_delivery`&lt;/span&gt; | Project conventions, deployment procedures | Queries verified specs via &lt;span class="sb"&gt;`list_chunks`&lt;/span&gt; |
| &lt;span class="sb"&gt;`dev_operations`&lt;/span&gt; | Infrastructure conventions, latest N deployment, active incidents (via inject_audience) | Incidents pushed via event triggers |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Chunk Linking
&lt;/h2&gt;

&lt;p&gt;All artifact chunks link back to the spec and to their predecessor artifact using &lt;strong&gt;unidirectional links with a mandatory reason&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dev_spec
  ← dev_research (reason: "Research for this spec")
    ← dev_plan (reason: "Plan based on this research")
      ← dev_implementation (reason: "Implementation of this plan")
        ← dev_verification (reason: "Verification of this implementation")
          ← dev_package (reason: "Release including this verified item")
            ← dev_deployment (reason: "Deployment of this release")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every chunk in the chain can be traced back to its spec. An agent reading any chunk can follow links to understand the full context.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Requires:&lt;/strong&gt; &lt;a href="https://forge.xferops.dev/HIZAL-170" rel="noopener noreferrer"&gt;HIZAL-170&lt;/a&gt; — Chunk linking with mandatory reason&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Compute Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│  Human's Machine (Mac Mini / Laptop)    │
│  ┌───────────────────────────────────┐  │
│  │  Assistant Agent (OpenClaw)       │  │
│  │  - Telegram channel               │  │
│  │  - All projects visible           │  │
│  │  - Never writes code              │  │
│  │  - Creates dev_spec chunks        │  │
│  └───────────────────────────────────┘  │
└─────────────────────────────────────────┘
          │ (Telegram / Hizal)
          ▼
┌─────────────────────────────────────────┐
│  Project EC2 (1 per project)            │
│  ┌───────────────────────────────────┐  │
│  │  Orchestrator Agent (OpenClaw)    │  │
│  │  - Heartbeat-driven               │  │
│  │  - Queries specs by status        │  │
│  │  - Spawns subagents               │  │
│  └───────────────────────────────────┘  │
│                                         │
│  ┌──────────┐ ┌──────────┐ ┌────────┐   │
│  │Researcher│ │ Planner  │ │ Coder  │   │
│  │(worktree)│ │(worktree)│ │(wktree)│   │
│  └──────────┘ └──────────┘ └────────┘   │
│  ┌──────────┐ ┌──────────┐              │
│  │    QA    │ │ Delivery │              │
│  │(worktree)│ │(worktree)│              │
│  └──────────┘ └──────────┘              │
└─────────────────────────────────────────┘
          │ (Hizal API)
          ▼
┌─────────────────────────────────────────┐
│  Hizal (api.hizal.ai)                   │
│  - Context engine + custom fields       │
│  - Single source of truth               │
│  - list_chunks for structured queries   │
│  - Event triggers for push workflows    │
│  - Memory via latest-N injection        │
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Hizal Features Required
&lt;/h2&gt;

&lt;p&gt;This workflow depends on Hizal features that are planned but not yet shipped. Each is tracked as a Forge ticket.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Feature | Ticket | Priority | Status | Unlocks |
|---------|--------|----------|--------|---------|
| &lt;span class="gs"&gt;**Custom fields on chunk types**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-171&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-171&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | HIGH | Backlog | Spec status tracking, schema validation, structured queries. &lt;span class="gs"&gt;**The foundation — most other features build on this.**&lt;/span&gt; |
| &lt;span class="gs"&gt;**list_chunks with structured filters**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-172&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-172&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | HIGH | Backlog | Orchestrator queries specs by status. Replaces negative-join workarounds. |
| &lt;span class="gs"&gt;**Event triggers (webhooks)**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-174&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-174&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | HIGH | Backlog | Push-based incident response, human notifications on package creation, cross-system sync. |
| &lt;span class="gs"&gt;**Chunk linking with reason**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-170&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-170&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | MEDIUM | Backlog | Artifact chain traceability (spec → research → plan → impl → verify → package → deploy). |
| &lt;span class="gs"&gt;**latest-N injection predicate**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-173&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-173&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | MEDIUM | Backlog | Automatic rolling memory injection. Eliminates manual un-injection of previous session memory. |
| &lt;span class="gs"&gt;**Tag-enriched embeddings**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-169&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-169&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | MEDIUM | Backlog | Tags included in vector input. Enables semantic search to find encrypted or sparsely-described chunks. |
| &lt;span class="gs"&gt;**Encrypted chunks**&lt;/span&gt; | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;HIZAL-168&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://forge.xferops.dev/HIZAL-168&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | LOW | Backlog | Store credentials/secrets in chunks with client-side encryption. |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Implementation Order
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HIZAL-171 (custom fields) ──→ HIZAL-172 (list_chunks) ──→ Core workflow functional
                                    │
HIZAL-170 (chunk linking) ─────────┼──→ Full artifact chain traceability
                                    │
HIZAL-173 (latest-N injection) ────┼──→ Automatic memory continuity
                                    │
HIZAL-174 (event triggers) ────────┼──→ Push-based incidents + notifications
                                    │
HIZAL-169 (tag embeddings) ────────┘
HIZAL-168 (encrypted chunks)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Minimum viable workflow:&lt;/strong&gt; HIZAL-171 + HIZAL-172. With custom fields and list_chunks, the orchestrator can query specs by status and subagents can advance the state machine. Everything else enhances the workflow but isn't blocking.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>architecture</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
