Skip to main content

28 posts tagged with "governance"

View All Tags

· 8 min read
VibeGov Team
A glowing cyan coordinator connects bounded worker pods to a durable evidence repository in a dark architectural workspace.

Persistent coordination. Ephemeral execution. Durable evidence.

We have been building AI agents as though they are employees.

We give them long-running sessions, persistent responsibilities and an ever-expanding list of things to do. Then we wonder why their context fills up, why decisions drift, and why so much of the token budget disappears without a corresponding improvement in delivery.

There is a simpler way to think about it.

The intelligence does not need to persist. The work does.

Why are we paying for yesterday's task again?​

The most immediate problem with reusing the same subagent is not philosophical. It is computational.

A worker finishes Task A. Its conversation now contains the instructions, files, tool outputs, failed approaches, diagnostics and final report for Task A. We then give the same worker Task B. Depending on how the runtime manages context, much or all of that previous history can be sent through the model again, even though Task B does not require it.

Finish Task B, add Task C, and the burden grows.

In a simple illustrative model, suppose every task introduces 10,000 tokens of history, all of which are retained and reprocessed on subsequent tasks. Over ten tasks, the cumulative history processed is:

TaskHistory carried into the next task
110,000 tokens
220,000 tokens
550,000 tokens
10100,000 tokens

If that growing history is processed once per task, the total across ten tasks is 550,000 tokens of accumulated context, compared with 100,000 tokens for ten independent 10,000-token tasks—before considering common instructions, model-specific caching, truncation, summarisation and other runtime behaviour. This is an illustration, not a measured benchmark or universal billing prediction.

The exact cost depends on the model, prompt caching, context management and what gets retained. But the architectural problem remains: unrelated history can be repeatedly carried forward for no useful reason.

That is a poor way to spend a finite token budget.

And cost is only half the problem. Each old instruction and abandoned hypothesis competes for attention with the work that actually matters now. Bigger context is not automatically better context.

The persistent-agent trap​

A long-running agent is useful when the objective itself requires ongoing responsibility. A project needs decisions, sequencing, dependencies, status and continuity.

But keeping every execution worker alive turns a clean delivery system into a growing collection of conversations. You gradually acquire duplicated ownership, stale assumptions, hidden work queues and unresolved intentions. A worker starts as a tester and, three assignments later, is also changing the architecture.

You have not created a better team. You have created more places where project state can become trapped.

The answer is to separate coordination from execution.

One coordinator, disposable workers​

A project has one logical coordinator for an objective or EPIC. It owns priorities, task boundaries, delegation, integration and acceptance. The coordinator session can itself be replaced when needed, but the logical ownership and delivery state survive in durable records.

A subagent gets one bounded assignment. It receives only what it needs: objective, issue, relevant baseline, permitted scope, acceptance criteria, validation commands and expected evidence.

It performs the work, returns the result, and closes. It does not inherit unrelated tasks, collect an open-ended schedule or silently become another coordinator.

Parallelism is allowed where workers have explicit boundaries and do not collide in their changes. The key is one accountable coordinator, not an invisible pyramid of persistent agents.

One assignment, not one tool call​

One-shot does not mean a subagent only gets a single prompt or tool call. It can run commands, write code, test, diagnose and iterate within its assigned scope.

A task contract might look like this:

Task: JAVA-WRAPPER-014
Execution: JAVA-WRAPPER-014/attempt-1
Baseline: <full commit SHA>
Objective: Launch a supplied JAR with validated arguments
Scope: Java wrapper module and its tests
Acceptance: CLI behaviour, exit-code propagation, test evidence
Return: commits, changed files, test results, risks
Expiry: governed time/resource boundary

After it returns, the coordinator independently verifies whether the result meets acceptance criteria. Completion is not the same as acceptance. If the worker failed, or the evidence fails review, the coordinator records what happened and starts a new bounded execution with the relevant findings.

Starting fresh must not become a loophole for repeating the same failed strategy. The governed circuit breaker still applies.

Persist useful information, not the entire conversation​

This is the crucial distinction.

The next worker might genuinely need to know that a test failed, that a particular design was rejected, or that a public contract cannot change. It does not need 80 pages of chat history showing how the previous worker discovered those facts.

Persist the distilled evidence: the requirement, baseline, commits, test outputs, relevant diagnostics, failed hypotheses, decisions and next steps.

Then build the next worker's context from those authoritative artifacts.

The durable system becomes the memory. The workers remain disposable.

Failure becomes a bounded event​

If a worker stalls or exhausts its context, terminate or close that execution and preserve its disposition. Another worker can take the assignment from the last verified state without relying on a mysterious previous conversation.

That requires more than a good prompt. Each dispatch needs a unique execution ID, bounded lifetime and clear write ownership. Before retrying, the coordinator checks whether the earlier execution already changed files or triggered side effects. Otherwise, a delayed worker and its replacement can both apply the same change.

If the runtime does not support actual lease revocation or archival, the coordinator should record that limitation and enforce the closest possible boundary through tracked status and controlled write access. A governance document must not pretend a mechanism exists when it does not.

Does starting fresh always save tokens?​

No. A new agent may have to reread the same large codebase or rebuild its environment. Prompt caching can also reduce the price of repeated shared context. For a tightly coupled, short sequence of related actions, continuing a bounded worker may be more efficient than restarting after each tool call.

The goal is not maximum agent turnover. It is minimum irrelevant context per verified outcome.

That means choosing task boundaries that produce meaningful, independently reviewable results. A worker can spend time on one coherent task. It should not carry its last ten unrelated jobs into the eleventh.

Archive the worker; keep the proof​

A returned worker is not a permanent member of the team. Its result is an artifact for the coordinator to evaluate.

Archive the execution after its outputs and disposition are recorded—even when it failed. Archiving does not erase logs or evidence. It ends the worker's ability to keep acting as an ongoing collaborator.

The coordinator's own continuity follows the same principle. Before a session handoff, preserve the EPIC, open issues, in-flight executions, decisions and next actions. A successor session reconstructs the work from those records. There should never be two competing coordinators for the same objective.

What we added to VibeGov​

We formalised this approach in GOV-11: Ephemeral Subagent Execution.

The rule requires one-shot task contracts, durable evidence, coordinator-owned verification, worker archival, safe retries and explicit handoff semantics. It expresses an architectural contract; individual runtimes still need to implement and verify the relevant enforcement mechanisms.

This builds on Explicit Orchestration Beats Hidden Agent Pyramids, and responds to the delivery risk explored in Bankruptcy by Monday Morning.

Design for throughput, not conversation longevity​

The unit of value in an autonomous software factory is not a busy agent or a long transcript. It is a requirement that has moved into a verified state.

We should not celebrate how many agents are still running. We should ask how much irrelevant history they are carrying, what each one owns, what evidence it returns, and how safely the work can resume when it disappears.

Keep the coordinator's responsibility continuous. Keep the worker's assignment bounded. Keep the evidence durable.

Stop keeping your AI agents alive just to remember work that belongs in the repository.

Do not just prompt the machine.

Conduct it.

· 7 min read
VibeGov Team
A fragile amber-lit prototype fragments beside a stable teal-lit modular structure protected by a circuit-breaker gate.

How to stop autonomous execution from turning speed into structural debt.

In Creativity Unleashed: Create While You Sleep, I described the opportunity: establish the intent, design the orchestration layer, and let governed agents continue building after you step away.

But there is a shadow side to that leverage.

You close your laptop on Friday imagining a finished feature suite. On Monday morning, you find hundreds of mutations, a swollen repository, locally passing tests—and an application that no longer boots.

The agents were active. The codebase did not progress.

The first three prompts​

The trap begins with euphoria. A loosely framed prompt produces an API, a database connection and a polished interface in minutes. The friction of boilerplate and syntax disappears, so it is easy to assume that the same trajectory will continue as the system grows.

It rarely does.

As the prototype becomes a multi-module system, every change begins touching more boundaries. A new form field disrupts authentication. Repairing authentication breaks persistence. Local tests remain green because the assertions have gradually shifted to match the implementation instead of protecting the original requirement.

The software is still running in places, but its structure is becoming harder to reason about and more expensive to change.

The modern POC trap​

Software teams have always known the proof-of-concept trap: a useful demonstration is mistaken for a production foundation and then stretched beyond the assumptions that made it quick to build.

AI did not create this failure. It compressed the timeline.

Agents remove much of the physical and cognitive friction involved in producing code. That is extraordinary leverage when intent, boundaries and verification are strong. Without those controls, the same leverage accelerates tight coupling, duplicated utilities, global-state abuse, swallowed errors and patches layered over misunderstood contracts.

What once accumulated over months can now arrive in a weekend.

If a human team can bankrupt a codebase through years of short-term patches, an ungoverned agent network can reproduce the pattern before Monday morning.

Prompt churn and the local minimum​

A local minimum appears when the current structure is good enough to resist replacement but too compromised to support clean improvement. Each small patch treats the visible symptom while increasing the cost of the next change.

The human response is often prompt churn:

  1. Paste the latest error into the agent.
  2. Apply the proposed fix.
  3. Receive a different error.
  4. Paste that error back into the same conversation.
  5. Repeat until the context is full and the repository is worse.

The danger is not simply token consumption. Tokens are an input cost, not a delivery metric. The real warning is mutation without evidence movement: more code, more tests and more commits while no governed requirement becomes more convincingly verified.

The signs of structural debt​

Codebase insolvency is not one failed build. It is a sustained condition in which the system's obligations exceed the team's ability to change it safely.

Common signals include:

  • defensive try/catch blocks that hide errors rather than resolve them;
  • repetitive null checks masking an unresolved type or lifecycle problem;
  • duplicate utilities created because repository-wide patterns were not inspected;
  • locally generated tests passing while boot, integration or end-to-end gates fail;
  • acceptance tests being weakened to agree with broken output;
  • widening diffs that do not improve verified behaviour;
  • repeated reversals between variations of the same failed patch;
  • completion claims supported by polished summaries instead of direct evidence.

These signals matter more than lines of code, commit counts or the number of agents running in parallel. Activity is not progress.

Why isolated green tests are not enough​

An implementation agent can generate both the code and the test that approves it. That is useful for development, but it creates an obvious conflict: the agent can accidentally redefine success around its own output.

Requirement-bound acceptance evidence must therefore be protected. An agent should not weaken, delete, skip or narrow an acceptance, integration, end-to-end, regression or release-gate test merely to obtain a green result.

If the test is wrong, change the requirement deliberately, document why, and review the evidence change separately from the implementation claim.

The principle is simple:

The implementation must satisfy the governed evidence. The evidence must not quietly move to accommodate the implementation.

Install a circuit breaker​

The defence is not to stop agents after an arbitrary number of messages. A turn may contain no mutation, while a single mutation may cross a major architectural boundary.

VibeGov instead treats three equivalent failed mutation attempts as a circuit-breaker threshold when they produce no material progress. Progress means at least one of the following:

  • the hypothesis has been narrowed;
  • new diagnostic evidence has been produced;
  • a regressed gate has been restored;
  • direct verification against the requirement has improved.

The circuit breaker should also trigger when protected tests are weakened, an unapproved architectural boundary is crossed, or the diff keeps growing without verified behaviour improving.

When it triggers, stop mutations in the affected work unit. Do not freeze every unrelated lane, and do not let the blocked worker continue digging.

Preserve evidence, not noise​

A failed loop should not be carried forward as an enormous conversational transcript. But deleting all history throws away the very evidence needed for recovery.

The correct response is to compress the useful state into a durable incident artifact:

  • baseline branch, commit and verification state;
  • governing requirements and permitted scope;
  • stable failure signature;
  • attempted approaches and their outcomes;
  • regressions and architectural boundaries touched;
  • last verified checkpoint;
  • recovery options and explicit resume conditions.

Then start a fresh recovery work unit from the last verified checkpoint. The new agent receives the facts and failed hypotheses without inheriting the conversational noise.

A longer prompt is not a recovery strategy​

A blocked work unit should resume only when something material changes. Valid unblock conditions include:

  • new diagnostic evidence;
  • a corrected or clarified requirement;
  • an approved architecture decision;
  • a smaller reproduction;
  • a resolved dependency;
  • a narrowed scope;
  • a genuinely different, verifiable implementation strategy.

Rephrasing the same instruction or moving it into a fresh chat does not change the solution space. It only restarts the bill.

The Architect-Conductor boundary​

The answer is not to require human approval for every internal abstraction. That would turn governance into paralysis.

Agents should remain autonomous inside an approved architecture. Human blueprint review becomes necessary when work would:

  • create or replace a system-wide boundary;
  • introduce shared global state;
  • change persistence semantics;
  • alter a public contract;
  • move a security or trust boundary;
  • create an irreversible migration;
  • materially replace the approved architecture.

At that point, the Architect-Conductor is not being asked to type the solution. They are being asked to make the decision the implementation cannot safely make for itself.

Velocity is not delivery​

Typing speed was never delivery speed. Token throughput is not delivery speed either.

Real progress is a governed state transition: an agreed requirement moves from intended, to implemented, to directly verified, reviewed and safely integrated. The code is only one artifact in that transition.

This is why governance is not the brake on AI leverage. It is the control system that makes sustained acceleration possible.

Without baselines, protected evidence, circuit breakers and recovery checkpoints, autonomous execution can manufacture technical debt faster than a human can inspect it. With them, a blocked lane stops before it contaminates the wider system, useful evidence survives, and unrelated work continues.

Do not measure how loudly the engine is running.

Measure whether the system is moving.

Do not just prompt the machine.

Conduct it.

· 5 min read
VibeGov Team

A creator sleeping while a governed network of AI agents continues building overnight

How the Architect-Conductor is rewriting the rules of enterprise execution.

A line famously attributed to Warren Buffett says you need to get your portfolio making money while you sleep.

I say you need to get your AI to build for you while you sleep.

We have reached a remarkable point in history. The traditional shackles of execution—time, cost, and specialised labour bottlenecks—are dissolving. Building enterprise-grade software to strict production standards has historically required teams of specialist developers, significant capital, and months of coordination.

AI changes that equation completely. It does not replace the need for rigorous engineering; it shifts where your leverage is applied.

From tool to multi-surface collaborator​

Most people still treat AI as a faster search engine or an isolated coding assistant. They type a prompt into a single chat window, receive a block of code, and copy and paste it manually.

That is useful, but it barely touches the surface of what is happening.

The real shift occurs when you stop using AI as a tool and start directing it as a distributed workforce. Today, a single engineer can orchestrate an entire project across multiple agent surfaces and machines simultaneously. Given the right architectural boundaries and workflows, these agents can advance ten supporting tasks in parallel—researching opportunities, running integration tests, updating state, and documenting systems—long after you have stepped away from your desk.

The work no longer stops when you do. While you sleep, the system continues making compounding progress.

The role of the Creative Architect-Conductor​

When machines can generate code endlessly, the mechanics of producing syntax move towards becoming a commodity. The true value shifts towards architecture, standards, judgement, and user flow.

This model does not lower the bar for quality; it raises it. To build something that lasts, you must govern your autonomous agents with the same proven patterns, standards, and structural frameworks that the software industry has spent decades refining.

As a creator in this paradigm, your role shifts. You are no longer sweating minor details where they do not matter. Instead, you become a Creative Architect-Conductor.

Your energy is focused on the critical vectors: macro architecture, system quality, user experience, and project economics. You structure the environment, define the exact feedback loops, and let the tools execute across multiple locations at the same time. The AI does not just hand you random outputs. It returns refined, structured, and decision-ready information through a system that you designed.

Governance is what lets leverage compound​

More agents do not automatically create more delivery.

Without shared intent, bounded work, current state, verification, and review, parallel execution simply creates more output to untangle. The speed is real, but so is the risk of duplicated work, hidden assumptions, and technical debt arriving faster than a human can inspect it.

This is where VibeGov fits. It gives the Architect-Conductor a governed delivery system: intent is shaped before execution, work is traceable to that intent, agents operate inside explicit boundaries, and completion depends on evidence rather than confidence.

Governance is not the brake on AI leverage. It is what allows that leverage to compound without losing control.

The new bottleneck: managing the flow​

The barriers to entry have collapsed, but they have been replaced by an entirely new set of technical constraints.

For the AI-native developer, the constraint is shifting away from writing each line of code and towards managing context, coordination, and verification. Tokens matter because they are the fuel agents consume, but token volume is not a measure of progress. The real challenge is maintaining intent and state across multiple services, tasks, and machines while keeping the evidence loop intact.

Keeping your creative flow uninterrupted requires treating context and token allocation like scarce computing resources. At the orchestration layer, you are not managing individual keystrokes. You are managing information velocity, compute efficiency, and the quality of the feedback loop.

The age of the unbound creator​

We are witnessing the true democratisation of leverage. An individual can now access productive capacity and institutional knowledge that once belonged exclusively to a well-funded enterprise organisation. An idea no longer has to remain trapped behind a lack of time, money, or technical knowledge.

The shackles are falling away.

So here is my challenge to you: Grab an idea and chase it as a product for others to buy.

Do not play small. GO WIDE AND HIGH. Let your ideas fly. Brainstorm the wildest, most ambitious concepts you can imagine. Set an impossible standard—a vision so grand and robust that an institutional engineering team would envy it—and unleash your agents on it.

Start the engine immediately. Ask your agent about the concept. Task it with researching the market terrain and mapping the dependencies. Then have it grill you with tough, targeted questions that force you to refine your choices.

Once the vision is clear, direct your agents to lay down the tracks. Task them with architecting the ultimate user flow and designing the cleanest technical foundations. Govern the work with proven enterprise systems and patterns, so you never bury yourself tomorrow beneath the sloppy technical debt of today.

The opportunity ahead is massive. Do not just use AI to finish today's tasks marginally faster. Build the distributed systems that keep advancing your vision even when you are completely offline.

Do not just prompt the machine.

Conduct it.

Get your AI to build for you while you sleep.

· 10 min read
VibeGov Team
Loose glowing strands pass through a precision loom and emerge as a coherent woven delivery ribbon.

AI coding agents are getting good enough that the old question, "Can they write code?", is becoming less interesting.

The harder question is whether they can participate in a real delivery system without turning the repo into a mess.

Once agents can read issues, modify files, run tests, create branches, and merge work, the risk changes. The problem is no longer capability. The problem is control.

More agents do not automatically create more delivery. Without an operating model, they create duplicated work, unclear ownership, long-lived branches, hidden feature flags, broken integration, and a growing gap between what the system appears to be doing and what is actually safe to ship.

That is the problem VibeGov is designed to address.

The mistake is treating agents like clever freelancers​

A repo does not need a crowd of clever freelancers.

It needs a governed delivery system.

In many AI-assisted workflows, each agent is given a task, a prompt, and access to the repo. That can work for a small change. It does not scale into reliable delivery.

The moment multiple agents are involved, the system needs answers to basic governance questions:

  • Who decides what the issue means?
  • Who decides whether the issue is ready to build?
  • Who owns the architecture boundary?
  • Who owns delivery into the integration branch?
  • Who owns the user experience and design-system contract?
  • Who verifies the outcome independently?
  • Who watches for stale work, broken state, and follow-through?
  • Who is allowed to block unsafe change?

If those answers are not explicit, agents will fill the gaps with assumptions.

And assumptions are where delivery drift begins.

Prompts are not governance​

Agent instructions matter, but prompts alone are not enough.

A prompt can say:

Do not expand scope.

But the delivery system still needs a place where scope is defined, reviewed, and enforced.

A prompt can say:

Keep the repo clean.

But the workflow still needs branch rules, validation gates, issue evidence, and a clear definition of done.

A prompt can say:

Follow the architecture.

But the project still needs someone or something accountable for defining that architecture, maintaining ADRs, and deciding when a change crosses a boundary.

VibeGov starts from a simple assumption:

Agents should be autonomous inside clear boundaries, not free outside accountability.

The issue is the work contract​

In AI-assisted delivery, the issue becomes more important, not less.

A weak issue gives the agent room to guess. A strong issue gives the agent a contract to execute.

That contract should define:

  • the intended outcome
  • why it matters
  • scope and non-goals
  • OpenSpec binding or SPEC_GAP
  • acceptance criteria
  • verification expectations
  • risk level
  • any required research, exploration, design, security, or architecture input

This is why a one-line issue should not move straight into development.

Fast capture is fine. Fast execution from unclear intent is not.

The work can start as:

Fix login weirdness.

But it should not reach implementation until the issue explains what is weird, what correct behaviour looks like, how it binds to the spec, and how the result will be verified.

Intake can be loose. Execution should not be.

The board is the operating system​

The project board is not just a reporting tool. It is the operational state machine.

A simple board is enough:

  • No status
  • Backlog
  • Ready
  • In Progress - In Dev
  • In Review - In Test
  • Done
  • Blocked
  • Parking Lot

The important part is not the labels. It is what they mean.

Ready means the issue is buildable and releasable.

In Progress - In Dev means the Developer agent is actively delivering it.

In Review - In Test means the change is being validated through automation, verifier activity, or release confidence checks.

Done means the work has landed cleanly and the integration branch is healthy.

Blocked means progress needs an explicit unblocker, not silent waiting.

Parking Lot means the idea is acknowledged but intentionally outside the current path.

This gives agents a shared operating surface. They do not need to invent side queues, hidden TODOs, or chat-based promises.

The board is where state lives.

Ready means releasable​

One of the most important rules in an agent delivery system is this:

Ready means releasable.

An issue should not enter Ready unless the work can safely land on the integration branch and move toward release.

That does not mean every issue must deliver a large user-facing feature. It means the increment should be coherent, integrated, and safe.

Bad ready work looks like:

  • build half a feature and hide it
  • create a parallel implementation path
  • start a migration with no cutover plan
  • add a feature toggle with no owner or removal condition
  • implement speculative code for a future product decision

Good ready work looks like:

  • deliver a complete behaviour change
  • add a tested internal capability with a clear future use
  • implement a paid feature as an explicit entitlement
  • add an operational toggle with defined enabled and disabled behaviour
  • create a migration step that leaves the system stable

Agents move quickly. That makes issue slicing more important.

If the work is not safe to land, it is not ready for Dev.

Done means green integration state​

Code written is not done.

Tests passing locally is not done.

A branch that looks good is not done.

Done means the work has made it to the integration branch and that integration state is still green.

This matters because agent delivery can create a false sense of progress. The agent can produce code, explain the change, and sound confident. But until the work is integrated, validated, and traceable to the issue, it has not improved the product.

The Developer agent should own the path from ready issue to green integration state:

  1. start from a clean integration branch
  2. implement the issue
  3. update tests, docs, and config where required
  4. validate locally
  5. refresh from the current integration branch
  6. integrate the change according to repo policy
  7. watch automation
  8. fix immediately if the pipeline fails
  9. close the issue only when evidence is complete

This is not bureaucracy. It is delivery closure.

No wild forks​

Branches are useful as temporary implementation workspaces.

They are not product states.

Long-lived branches, hidden futures, and parallel product lines create exactly the kind of ambiguity AI delivery should avoid.

The rule should be blunt:

All development must converge.

If a feature is worth building, it should be shaped into a releasable increment. If it is not ready to be released, it should remain in Backlog, Parking Lot, research, design, or architecture analysis.

Do not let the repo become a museum of abandoned futures.

Feature toggles are configuration, not hiding places​

Feature toggles are not bad.

Undisciplined toggles are bad.

A feature toggle should be an explicit product, operational, or release control. It should not be a way to merge unfinished code and decide later what it means.

Good toggle use includes:

  • paid feature entitlement
  • tenant or customer-specific enablement
  • environment-specific behaviour
  • staged rollout
  • operational kill switch
  • time-bound experiment

For every toggle, define:

  • name
  • purpose
  • owner
  • configuration location
  • default state
  • enabled behaviour
  • disabled behaviour
  • tests for both states
  • removal condition if temporary

The key rule is simple:

No feature should require code edits to enable after development.

If a feature is optional, paid, staged, or tenant-specific, build it that way from the start.

Toggles are configuration and product controls, not hiding places for incomplete work.

Separate roles are useful when they create real control​

The goal is not to create an agent circus.

Separate roles are useful when they create clearer accountability.

A practical operating model can include:

  • planner for intake, prioritisation, backlog hygiene, and developer handoff
  • architect for system design, ADRs, boundaries, migrations, developer-experience architecture, and technical direction
  • designer for UI/UX intent, Design Language System stewardship, user flows, component states, and accessibility-by-design
  • developer for issue execution, coding, testing, git hygiene, and integration
  • researcher for external evidence gathering, source evaluation, and cited synthesis
  • explorer for repo, UI, and API exploration, evidence capture, finding triage, and spec gaps
  • verifier for independent QA, regression checks, acceptance evidence, and release confidence
  • security for threat modelling, secrets, auth, privacy, dependency, licensing, and exposure review
  • documenter for READMEs, install guides, changelogs, user docs, and public comms
  • maintainer for repo hygiene, branch closure, changelogs, versioning, and release readiness
  • operator for recurring sweeps, task/state orchestration, reminders, and follow-through

Not every issue should pass through every role.

That would kill delivery speed.

Instead, route work by need.

Researcher and Explorer feed evidence. Designer shapes experience intent. Security blocks unsafe change. Architect protects direction. Planner protects readiness. Developer ships. Verifier proves. Documenter keeps the written surface aligned. Maintainer keeps release and repo hygiene clean. Operator keeps the system moving.

The model is not many agents doing whatever they want.

It is governed autonomy.

Specialists should feed the spec, not bypass it​

A clean pattern is:

Raw idea
↓
Planner triage
↓
Research / exploration / design / security input as needed
↓
Architect or Planner creates the build-ready issue
↓
Developer delivers
↓
Automation and Verifier validate
↓
Integration remains green

Specialist work is independent of code. A Researcher can answer a question. An Explorer can inspect the repo. A Designer can define the user flow. Security can identify controls.

But those outputs should flow back into the issue or OpenSpec before development starts.

Research and design should not bypass the accountable delivery contract.

Automation proves mechanics; governance preserves meaning​

Automation is essential, but it cannot do the whole job.

Automation can prove:

  • tests pass
  • build succeeds
  • lint and type checks pass
  • secrets are not detected
  • dependency checks are clean
  • pipeline triggered
  • artifact was produced

But automation cannot fully decide:

  • whether the issue meant the right thing
  • whether the architecture direction is sound
  • whether the user experience is coherent
  • whether the trade-off is acceptable
  • whether the feature should exist
  • whether scope was silently expanded
  • whether the disabled state of a paid feature makes product sense

That is why governance still matters.

Automation is the proof layer. It does not replace accountability.

The real unlock is governed autonomy​

The next phase of AI software delivery will not be won by giving agents unlimited freedom.

It will be won by teams that can give agents enough autonomy to move fast and enough governance to keep the system coherent.

That means:

  • issues are treated as execution contracts
  • OpenSpec captures requirement truth
  • the project board carries operational state
  • the integration branch remains the integration truth
  • the release branch remains release truth
  • agents act within role authority
  • automation validates the mechanics
  • security and verification provide independent confidence
  • operators keep the loop moving

Vibe coding showed how quickly software can be produced when humans and AI work fluidly together.

The next step is making that flow reliable enough for serious delivery.

That is the shift from vibe coding to governed delivery.

· 8 min read
VibeGov Team

Death by 1000 prompts hero image

Most AI teams do not fail because one prompt was bad.

They fail because every miss, regression, awkward result, and near miss gets patched with one more instruction.

Add one more reminder. Add one more warning. Add one more exception. Add one more paragraph explaining what should have been obvious. Add one more "always do this." Add one more "never do that."

At first, this feels like progress. The system got something wrong, so now the team has corrected it.

But over time, the prompt stops being a tool and starts becoming sediment.

That is how you get death by 1000 prompts.

The problem is not prompting itself. Prompting matters. Clear instructions reduce mistakes.

The problem is prompt accumulation without governance.

What death by 1000 prompts looks like​

You can usually spot it quickly.

The bootstrap prompt becomes enormous. The same rules get repeated in every session. Agents need hand-carried context because the important behavior does not live anywhere durable. Simple tasks only work if someone remembers the exact latest wording. The team keeps adding exceptions, but very little is being simplified. Merged lessons never become rules. The system becomes more fragile as more guidance is added.

This is not operational maturity. It is operational debt.

The team starts thinking the fix is better prompting, when the real problem is that the system has no stable way to learn.

Every failure becomes another patch in active text instead of an improvement in how the system actually operates.

The real issue is not intelligence. It is operating shape.​

A lot of prompt sprawl is actually a design smell.

It usually means one or more of these things are missing:

  • no canonical rules
  • no durable memory
  • no explicit workflow closure
  • no distinction between review, proposal, and live change
  • no promotion path from incident to lesson
  • no stable project source of truth
  • no cleanup discipline after work lands

So the agent keeps depending on live chat and oversized prompts to behave.

That creates a strange illusion: the system looks highly instructed, but it is actually weakly governed.

It has lots of words and not enough structure.

Prompts should start work, not hold the whole system together​

A prompt has a role.

It should help frame the task, the current objective, the immediate constraints, and the operating mode.

That is useful.

But a prompt should not be the only thing stopping chaos.

If the same correction has to be repeated again and again, it is probably no longer just prompt content. It is a rule that has not yet been promoted into the system.

That is the key shift:

  • a prompt is situational
  • a rule is durable
  • a spec defines scoped truth
  • memory preserves continuity
  • a workflow defines repeatable closure
  • governance decides what becomes stable

Once you see that distinction clearly, a lot of AI delivery problems become easier to diagnose.

Why teams keep falling into this trap​

Because prompt patching is easy in the moment.

Something went wrong, so you add another sentence. Something drifted, so you add another warning. Something was misunderstood, so you add another block of explanation.

That gives immediate relief.

But it also hides the deeper question:

Why did this need to be said again?

If the answer is "because this is a recurring invariant," then the fix is probably not another prompt patch. The fix is to move that lesson into a governed surface.

That might be:

  • a rule file
  • a spec
  • a checklist
  • a project doc
  • a memory convention
  • a release or closure routine
  • a validation gate
  • a canonical operating pattern

Without that promotion step, every learning event stays trapped in transient text.

That is how systems become verbose without becoming reliable.

What to do instead​

The answer is not "never use prompts."

The answer is: stop using prompts as your only learning mechanism.

Here is the better pattern.

1) Promote repeated lessons into durable rules​

If the same instruction keeps getting repeated, stop treating it as temporary.

Turn it into a canonical rule.

For example:

  • if agents keep starting new work from the wrong branch, that is not a prompt tweak; it is a git workflow rule
  • if agents keep confusing review with modification, that is not a wording issue; it is an execution boundary rule
  • if work keeps being left half-closed, that is not minor cleanup; it is a closure rule

Repeated pain should become reusable governance.

See:

2) Move important behavior out of chat-only state​

If the only place a critical lesson exists is in live conversation, you do not have continuity.

You have dependency on recall.

That is fragile for humans, and even more fragile for agents.

Important operating behavior should live somewhere durable:

  • rules
  • specs
  • project docs
  • issue trails
  • memory files
  • release and closure routines

Chat should not be the only archive of how the system is supposed to behave.

See:

3) Treat closure as part of execution, not optional cleanup​

A lot of prompt sprawl comes from unfinished work.

Not just unfinished code. Unfinished state.

The repo is left on the wrong branch. The issue is still open. The PR is merged but the branch still exists. The decision never got written down. The lesson was noticed but never promoted.

Then the next prompt has to compensate for all of that unresolved residue.

This is why closure matters so much.

Good systems reduce future prompt burden by ending work cleanly. Bad systems increase future prompt burden by carrying residue forward.

See:

4) Separate review from change​

This one matters a lot.

When someone asks for a review, they are not necessarily asking for live edits.

If a team does not clearly distinguish:

  • review
  • proposed wording
  • live change

then every interaction becomes ambiguous.

That ambiguity creates more corrective prompting later.

A governed system should make the action boundary visible.

Review means inspect, critique, and suggest. Change means edit. Those are not the same thing.

5) Make the default path clean and boring​

The healthiest systems are not the ones with the most instructions.

They are the ones where the correct path becomes routine.

For example:

  • merged branches are deleted by default
  • stale branches are archived only when needed
  • local repos return to their resting branch
  • issue state matches delivery state
  • recurring lessons get published into canonical guidance
  • new work starts from known clean conditions

When the default path is clean, you need fewer rescue prompts.

That is the whole point.

The governance pattern that actually scales​

A useful pattern here is:

incident -> diagnosis -> rule -> publication -> enforcement -> reuse

That is how you stop one mistake from becoming twenty future reminders.

Something goes wrong. You inspect what really failed. You decide whether it was local, scoped, or systemic. If it is systemic, you promote it into governance. You publish it in the surfaces agents actually use. You make the clean path explicit. Then the next run starts from the improved system rather than from a longer prompt.

That is how a governed system gets lighter over time instead of heavier.

Good systems need fewer reminders over time​

This is the real test.

A mature AI operating system should not require more and more prompt mass just to maintain basic quality.

It should need fewer reminders because the important lessons have been absorbed into the environment.

That means:

  • the rules got better
  • the docs got sharper
  • the memory got cleaner
  • the workflow got stricter
  • the closure got more complete
  • the defaults got safer
  • the need for repeated rescue prompting went down

If your prompt keeps growing but your operating quality is not stabilizing, the prompt is not your solution.

It is your symptom.

Avoiding death by 1000 prompts​

So how do you avoid it?

Not by trying to write the perfect mega-prompt.

You avoid it by building a system that can learn structurally.

Use prompts for task framing. Use rules for invariants. Use specs for scoped truth. Use memory for continuity. Use workflow for closure. Use governance to turn recurring mistakes into reusable discipline.

That is how you stop every lesson from becoming one more paragraph in a bloated prompt.

That is how you stop fragility from masquerading as thoroughness.

That is how you build systems that get calmer, cleaner, and more reliable as they evolve.

The goal is not to create a prompt so large that nothing can go wrong.

The goal is to build an operating model that no longer needs to be rescued by one.

· 3 min read
VibeGov Team
A metal shuttle follows a verified cyan path into a precisely sealed receiving dock.

A lot of agent systems now know how to move fast.

That part is getting easier.

The harder problem is keeping fast execution legible, governable, and closable.

The real upgrade teams need​

The next upgrade is not more agent theater. It is not longer plans. It is not status spam.

It is a tighter operating shape:

  • direct execution on bounded work,
  • verification before completion claims,
  • concise checkpoints at meaningful state changes,
  • explicit handling of inherited state,
  • and closure that reaches the governed landing path.

That is what dependable execution looks like.

What strong execution should feel like​

A healthy implementation loop should feel crisp.

When the task is clear, the agent should:

  • gather the needed context,
  • make the change,
  • run the right proof,
  • close the state honestly,
  • and stop pretending that "edited files" means finished work.

That is the productive part of high-agency execution.

What goes wrong when speed loses governance​

Fast execution becomes dangerous when teams let it collapse into black-box momentum.

Common failure modes look like this:

  • inherited repo mess ignored in the name of progress,
  • silence mistaken for professionalism,
  • passing build output treated as completion,
  • risky decisions taken without visible boundary,
  • and residue pushed into the next work unit.

These are not small style issues. They are reliability problems.

The operating rule VibeGov should encode​

The useful rule is simple:

Keep execution sharp, but make closure and legibility non-negotiable.

That means:

  • tool-first execution,
  • bounded work units,
  • truthful verifier and evaluator gates,
  • concise operator-visible checkpoints,
  • explicit inherited-state assessment,
  • and governed git/repo closure.

Legibility is not the same as chatter​

Teams often get stuck between two bad options:

  • constant narration, or
  • total silence.

The better target is interrupt-efficient legibility.

Operators should be able to see:

  • when a slice started or resumed,
  • when the plan materially changed,
  • when a blocker or decision boundary appeared,
  • what validation actually passed or failed,
  • and how the slice closed.

That is enough for oversight without drowning the channel.

Closure is part of the work​

A slice is not complete when the code exists.

A slice is complete when the governed path is closed:

  • issue/spec state is updated where required,
  • evidence exists,
  • git state is accounted for,
  • the merge or follow-up path is explicit,
  • and the repo returns to its expected base state.

If that part is missing, the execution loop is still open.

Practical takeaway​

The goal is not to make agents slower.

The goal is to make fast execution dependable.

A strong system should feel like this:

  • less ceremony,
  • less ambiguity,
  • less hidden residue,
  • more direct proof,
  • more reliable closure.

That is what VibeGov should normalize.

· 5 min read
VibeGov Team
Three connected cyan, violet, and amber work loops continue independently around a localized barrier.

A lot of agent discussions still assume there is one loop.

The agent is running. The loop is going. Work is happening.

That sounds fine until you try to govern it. Then you discover that "the loop" is hiding several different kinds of work with different sources, different outputs, and different reasons to pause.

VibeGov should be more explicit.

The real shape is usually three loops​

In practice, agent-enabled work often has at least three loops running in parallel:

  • a Build Loop
  • an Exploratory Loop
  • a Human Feedback Loop

And once those exist, you also need one important rule for how they pause:

  • Scoped Blocking

1) Build Loop​

The Build Loop is the delivery loop.

Its job is not to invent work. Its job is to consume already-governed work and turn it into clear outputs.

That means the Build Loop should take input from:

  • the repository,
  • the issue backlog,
  • the bound specs or requirements,
  • and the current governed delivery state.

And it should write back:

  • code,
  • docs,
  • tests,
  • evidence,
  • issue or PR state,
  • release-readiness or shipping outputs when relevant.

The important boundary is this:

build should not recursively self-source its own next work from its own outputs.

If it does, the delivery loop becomes unstable. Instead of a governed execution path, you get a self-expanding activity engine.

2) Exploratory Loop​

The Exploratory Loop is the non-delivery intelligence loop.

Its job is to inspect reality and feed governed work into delivery.

That can include:

  • UI exploration,
  • workflow review,
  • spec exploration,
  • issue exploration,
  • drift detection,
  • gap analysis,
  • backlog hydration,
  • and exploratory report generation.

This is also where a lot of confusion happens. People hear planner or evaluator and assume those roles must belong to a delivery harness. But that is too narrow.

In VibeGov terms, exploratory work can absolutely include:

  • planner-style scoping of a review surface,
  • evaluator-style judgment of coverage, artifacts, or review quality,
  • and even generator-style output when the output is an exploratory artifact rather than a delivered product change.

What makes the work exploratory is not the role name. What makes it exploratory is that it is not directly delivering the product change.

3) Human Feedback Loop​

A lot of loop talk accidentally removes the human except as a final approver. That is too weak.

The Human Feedback Loop should be first-class.

Its job is to inject:

  • approval,
  • correction,
  • judgment,
  • taste,
  • reprioritisation,
  • missing context,
  • or strategic redirection.

Without this loop, the human falls out of the operating model. Then teams start claiming the human is "in the loop" when the human is really only around to react to surprises.

4) Scoped Blocking​

Once you accept that there are multiple loops, blocker handling has to get sharper too.

A human question, missing dependency, or unresolved approval should not automatically freeze everything.

That is why VibeGov needs scoped blocking.

Scoped blocking means:

  • pause the exact lane that truly needs the answer,
  • keep unrelated build work moving,
  • keep unrelated exploratory work moving,
  • and make the blocked boundary explicit.

This is stronger than simply saying "blockers should redirect work." It explains which work should pause and which should continue.

Why this matters​

Without this model, teams drift into four bad habits:

  • treating all agent work as one vague loop,
  • letting build recursively invent new work for itself,
  • turning human-in-the-loop into stop-the-world behavior,
  • or misclassifying exploratory planner/evaluator work as delivery.

The result is usually motion without clean governance.

Diagram​

Loop system view​

This is the important boundary to notice: build consumes governed work from repo/specs/issues and writes clear outputs back, while exploration and human feedback feed new governed work into the source side.

Scoped blocking view​

This is the important blocker rule: pause only the lane that truly needs the missing answer. Do not let one unresolved human input freeze every build and exploratory path by default.

With the three-loop model, the system becomes easier to reason about:

  • Build changes reality.
  • Exploratory understands reality.
  • Human feedback reshapes intent.
  • Scoped blocking prevents one unanswered question from freezing the whole system.

That is a much better operating model than pretending there is just one loop and hoping everyone means the same thing.

· 4 min read
VibeGov Team
A restrained glass core in a testing rig connects to a broader system of gates and protected pathways.

Harness engineering gave teams a practical breakthrough: stop treating agent output as magic, and start treating it as a controlled system.

That shift matters. But harness engineering by itself is not the endpoint.

To run agent-enabled delivery at scale, teams also need governance.

What harness engineering already gave us​

The strongest harness patterns changed the default operating model from:

  • prompt -> output -> hope

to:

  • plan -> execute -> verify -> evaluate -> iterate

In practical terms, that gave teams:

  • clearer loops,
  • better quality gates,
  • more durable state between sessions,
  • and faster recovery when runs fail.

That is a big upgrade over ad hoc agent usage.

Why governance is the next layer​

Harnesses answer: "How do we run this loop?"

Governance answers: "What counts as valid work, valid evidence, and valid completion across all loops, repos, and runtimes?"

Without governance, good harness behavior often stays local and fragile:

  • one team runs disciplined loops,
  • another skips evidence,
  • a third claims done from partial checks,
  • and nobody can compare outcomes consistently.

The result is uneven reliability.

What VibeGov adds beyond baseline harnessing​

VibeGov takes harness ideas and makes them explicit, portable controls.

1) Completion semantics that are hard to fake​

We separate implementation activity from trustworthy completion.

Completion requires evidence, traceability updates, and explicit residual risk handling.

See:

2) Repository-state closure as an execution contract​

A run is not complete if repository state is ambiguous.

This closes one of the biggest real-world failure modes in agent work: silent residue leaking into later tasks.

See:

3) In-repo truth over transcript dependence​

Durable operating knowledge must be discoverable in repository artifacts, not trapped in chat memory.

See:

4) Drift control as a first-class maintenance loop​

Agent systems accumulate entropy quickly.

VibeGov treats cleanup and anti-slop behavior as recurring controlled work, not occasional cleanup bursts.

See:

5) Portable governance over tool lock-in​

VibeGov keeps core governance tool-agnostic.

Runtime-specific harnesses should be profile/adaptor layers, not the core governance definition.

That allows multiple runtimes to satisfy the same governance contract.

General approach across tools​

The practical rule is:

  • keep core controls stable,
  • adapt runtime behavior through profiles,
  • verify outcomes against the same evidence standards.

That lets teams run Claude-oriented, Codex-oriented, or mixed setups without rewriting governance every time tooling changes.

Process hardening is the point​

Hardening means replacing "good intentions" with explicit controls:

  • state closure rules at work-unit boundaries,
  • durable in-repo truth instead of transcript dependence,
  • recurring drift cleanup,
  • explicit review-loop completion discipline,
  • and issue-visible evidence trails.

This is where many harnesses stop too early. A loop is useful, but a hardened loop is dependable.

"And beyond" means system-level reliability​

Beyond harness engineering means adding the controls needed for durable operations:

  • comparable evidence standards,
  • repeatable completion semantics,
  • explicit escalation and blocker handling,
  • and governance that survives model/runtime churn.

The goal is not to make agent systems heavier. The goal is to make results more trustworthy.

Practical takeaway​

Harness engineering is the execution engine. Governance is the control plane.

You need both.

If harness engineering made agent work possible, governance is what makes it dependable.

· 4 min read
VibeGov Team
A glowing turbine is held within a precision gimbal with inspection optics and a recovery cradle.

Harness engineering is not mainly about making agents type faster. It is about making agent work controllable, verifiable, and recoverable.

A useful harness gives you:

  • a repeatable delivery loop,
  • explicit quality gates,
  • durable state across sessions,
  • bounded work units,
  • clear failure handling,
  • and clean handoffs.

If those are missing, you usually get activity instead of delivery.

What harness engineering means in practice​

At a practical level, harness engineering means shifting from:

  • "run a smart model and hope"

to:

  • "run agent work inside a governed control system"

That control system should answer:

  • what unit is being worked right now,
  • what proof is required before completion,
  • how quality is evaluated,
  • where durable state is written,
  • what happens when checks fail,
  • and what counts as truly done.

What VibeGov does with it​

VibeGov treats harness engineering as governance + operating behavior, not just a runtime implementation detail.

1) Explicit workflow and bounded work units​

We encode the loop directly in governance:

Observe -> Plan -> Implement -> Verify -> Document

And we require explicit bounded units, ownership, intent, and evidence expectations.

This prevents hidden nested orchestration and vague "it is running" status.

See:

2) Separate quality judgment from generation pressure​

A key harness pattern is separating building from skeptical evaluation.

VibeGov applies this through quality gates and review-loop discipline:

  • implementation is not completion,
  • evidence is required,
  • review loops must close before done claims,
  • unresolved review debt cannot be hidden under summaries.

See:

3) Durable state over transcript luck​

Harnesses fail when the system relies on "remembering chat context".

VibeGov pushes durable in-repo truth, continuity layers, and checkpoint behavior so state survives resets, compaction, and handoff.

See:

4) Work-unit state closure and git hygiene​

A harness is weak if each session leaks residue into the next one.

VibeGov now treats repository state as part of execution correctness:

  • every modified file must be accounted for,
  • dirty-tree state is actionable, not ambient,
  • completion claims are invalid if repository state is unexplained.

See:

5) Drift control as continuous maintenance​

Agent systems accumulate entropy quickly.

VibeGov treats cleanup and anti-slop behavior as a recurring control loop, not occasional heroics.

See:

Core governance vs tool-specific profiles​

A common mistake is to confuse harness principles with one specific toolchain.

VibeGov keeps those separate:

  • core governance defines what good controlled execution requires,
  • profiles/adapters show how specific runtimes can satisfy those controls.

That keeps the system portable while still allowing practical runtime guides.

What this gives teams​

When harness engineering is done well, teams get:

  • less babysitting,
  • better reliability under long-running/multi-session work,
  • faster recovery from failures,
  • clearer audit trail of decisions and evidence,
  • and stronger confidence that "done" means something real.

That is the point.

Harness engineering is not complexity for its own sake. It is the discipline that turns agent output into dependable delivery.

· 4 min read
VibeGov Team
A durable glass cartridge bridges two rail segments and preserves a continuous cyan filament.

A lot of teams still treat agent continuity as an implementation detail. If the agent forgets context, they assume the answer is a better model, a longer context window, or a bigger transcript.

That misses the real problem.

Continuity is not just a model capability question. It is an operating-system question.

If important state lives only in live chat context, then the project will keep paying for the same failure modes:

  • repeated decisions
  • reopened settled questions
  • incomplete handoffs
  • hidden blockers
  • work that looked active but cannot be resumed cleanly

That is why VibeGov added agent continuity bootstrap as an explicit governance concern.

Bootstrap should install continuity, not just mention it​

One of the easiest mistakes in agent-enabled projects is to say memory matters, but leave no durable continuity structure behind.

That usually means:

  • no clear continuity layers
  • no guidance on what belongs where
  • no checkpoint triggers
  • no session diary pattern for recurring threads
  • no promotion path from local notes to durable project context

In practice, that turns "continuity" into wishful thinking.

A governed bootstrap flow should leave the repo with both:

  • continuity structure
  • continuity operating rules

Without that, teams get governance text but not governance behavior.

Live context is not a durable operating system​

Large context windows are useful. They are not the same thing as durable project continuity.

The failure mode is familiar:

  • the agent learns a constraint
  • a decision gets made
  • a blocker is discovered
  • a thread develops its own norms and assumptions
  • then the conversation moves on, compacts, or restarts

If those things were never checkpointed into durable artifacts, future work has to reconstruct them from fragments. That is slower, less reliable, and more expensive than writing them down at the right time.

So the core principle is simple:

continuity is part of execution, not cleanup after execution

Four continuity layers are better than one giant memory file​

VibeGov’s continuity model is deliberately layered:

  1. session/thread continuity
  2. recent/daily continuity
  3. project continuity
  4. durable global/operator continuity when that scope exists

The point is not that every repo must use the exact same filenames. The point is that the project should make the layers explicit.

That gives agents and humans a better answer to questions like:

  • what belongs only to this thread?
  • what should be visible in today’s run history?
  • what has become durable project context?
  • what is truly cross-project operator knowledge?

Without that structure, teams often dump everything into one place and make continuity harder to maintain, not easier.

Checkpointing should be event-driven​

Another important shift is treating checkpointing as a normal execution behavior, not an end-of-task ritual.

Agents should checkpoint when:

  • a new instruction or correction appears
  • a decision is made
  • a blocker or open loop is found
  • a task changes phase
  • the work becomes long or compaction-sensitive
  • several meaningful turns have happened without a checkpoint

That is a better model because it ties continuity writes to the moments when important state is actually created.

Waiting until the end is how state gets lost.

Session diaries matter for recurring operating contexts​

Recurring chats and threads should not rely on transcript archaeology. They should keep concise session diaries.

Not transcript dumps. Not every filler message. Just the things future work would need:

  • important discussion points
  • decisions
  • open loops
  • follow-ups
  • thread-specific norms

That turns a recurring operating context into something resumable.

Why this matters beyond memory hygiene​

It is tempting to frame this as just a tidiness improvement. It is bigger than that.

Continuity quality affects:

  • delivery speed later
  • whether blockers get rediscovered or resolved
  • whether handoff works
  • whether agents can continue work without asking the same questions again
  • whether a project accumulates operational clarity or operational fog

That is why continuity belongs inside bootstrap governance. If it only appears as informal advice after the repo is already active, it is too easy to skip.

The broader point​

Agent-enabled delivery systems should not rely on a shrinking live context as their primary memory model. They should bootstrap durable continuity intentionally.

That means:

  • explicit continuity layers
  • explicit checkpoint triggers
  • session diary guidance for recurring contexts
  • promotion rules between continuity layers
  • bootstrap completion that refuses to pretend continuity is installed when it is still missing

If continuity matters to execution, it belongs in bootstrap.