Story 013: An Operator Task Pack Repairs qmail Local Delivery in a Disposable VM¶
Status: Accepted reference story for Proposal 094. The pack (P094-011),
Debian x86_64 image (P094-011e), Ubuntu arm64/vfkit image (P094-011f),
local deterministic-inference/real-VM checkpoint (P094-013) and active-run
pause mechanism (P094-013c) and local real-MLX checkpoint (P094-013b)
are complete. The fresh review-qualified physical-market checkpoint retains HTTPS discovery,
peer AD order/result delivery, signed recipe, independent buyer policy and
restart/replay evidence and exact patch/file/domain review on two hosts. A fresh
revocation/recovery checkpoint also refuses cached signed orders after provider
revocation. Fresh composed fixture and real-MLX runs now close P094-016,
including pinned-target recovery and ordinary periodic catalog refresh without
manual resync. This is not whole-proposal completion.
Review closeout (2026-10-05): the historical physical run retains its measured
execution and transport scope, but its repair finding only discusses observation.
The current independent-review gate additionally requires signed coverage of
every exact patch/file and target/domain-specific critique. Fresh run
s13-1791203388-e6aa00 on retained clean source bfb23a92 completes
P094-007c2/007c4 and positive P094-016b1. The older report is not rewritten
or promoted to that stronger claim.
Related:
- Proposal 094: Operator Task Packs for Bounded Problem Solving
- Proposal 085: Operator-Sovereign Extensibility and Experiment Packages
- Proposal 071: Sensorium Workbench
- Proposal 069: Corpus
- Proposal 073: Agent
- Story 011: Corpus answers the fish-water question
- Story 012: Remote Agents Solve a Problem Through a Shared Chair Terminal
Summary¶
As a node operator, I want to install one reviewed task pack for local qmail administration, bind it to my own lab environment with a few local choices, and let a model-backed solver repair a qmail configuration problem inside a disposable VM. Every change must pass a closed plan, my approval, and an exact verifier; afterwards the VM is destroyed and recreated, and the result is a verified recipe rather than a change to anyone's real mail server.
The story is the acceptance contract for P094's qmail reference pack. It proves the domain-general task-pack composition on a non-programming operational task. qmail meaning lives only in package assets: the thematic profile, command and patch profiles, fixtures, and verifier. The shared P094 code contains no qmail branch.
Two execution profiles share one story:
- Local profile. The provider's own operator is the requester. No Service
Offer is published to the network; signed Room facts are retained locally.
It runs in two inference classes (see
Inference Classes): deterministic inference with real
execution (
P094-013), and a real model (P094-013b). - Federated profile (
P094-016). A remote requester finds the provider's ordinary Service Offer, admits the exact task-profile digest, and receives the verified recipe through Corpus.
The 2026-10-05 positive physical run s13-1791203388-e6aa00 on self.local
and turbo.local proves that path with real MLX, a disposable vfkit VM, four
independent Agent passages, signed exact patch/file/domain review, seven qmail
checks, exact restart/replay without
another inference/publication/charge, zero-price buyer completion and confirmed
cleanup. It uses certificate-verified HTTPS discovery from an explicitly local
SQLite Agora relay, not Matrix replication; product traffic uses peer AD, not
SSH. Its selective report is
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-05.review.physical-market.real-mlx.macos-arm64.json.
Withdrawal-based refusal of a new selection alone does not prove the separate
cached stale-order-after-provider-revocation gate. Fresh run
s13-1791209590-7ead33 now closes that criterion: while publication transport
returns HTTP 503, the buyer sends a real order against its unchanged signed
offer and Dator's peer AD refusal binds the exact request digest. Restart
recovers the same signed withdrawal, original BDO expiry and four unchanged
Agent budgets; exact replay and native/process/lease cleanup pass. The selective
report is
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-05.revocation.physical-market.real-mlx.macos-arm64.json.
Lost acknowledgement is separately tested at the deterministic Dator port,
not injected into this physical run. The federated Done When criterion below
is met. Fresh runs s13-1791230227-4c71e7 (fixture inference) and
s13-1791230693-3915ab (real MLX) additionally close the composed peer gate and
P094-016b3 on one clean retained source 4db6334062f712a88ca5b28be53fb3bb847b9684.
Each executes four passages and two native runs, observes exact signed
withdrawal through ordinary Arca sync, preserves charges at restart/replay and
confirms cleanup. The fixture's synthetic usage is not real-model evidence.
Their selective reports are
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-05.periodic.physical-market.fixture.macos-arm64.json
and
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-05.periodic.physical-market.real-mlx.macos-arm64.json.
Unknown in-flight VM recovery and the other independently tracked Story/P094
criteria remain open; neither report proves Matrix replication or paid settlement.
Evidence review (2026-10-05): those reports remain unchanged. Their zero
resync count is a test declaration; new P094-016b4 qualification requires
Arca's durable before/after counter and matching observation epoch. Fixture
check names now explicitly identify template authorship/review and cannot
claim MLX. Its HIL and pre-run open-relay negatives point to the local
deterministic P094-013 profile, not the local MLX profile. Peer-market starts
with observation intentionally; it does not rerun the open-relay trap.
Review closeout (2026-10-06): fixture s13-1791237370-0f1a9e and real MLX
s13-1791236017-c73bf3 qualify the V3 gate on the same retained source
210111be76b25be4e982ec12908e6771ca11c049, with measured resync 0 -> 0,
exact signed withdrawal, unchanged accounting and confirmed cleanup.
The selective reports are
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-05.review-v3.physical-market.fixture.macos-arm64.json
and
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-05.review-v3.physical-market.real-mlx.macos-arm64.json.
Dates in those filenames follow UTC run dates. P094-016b4 is done. The
post-run fix to the composite retention/export cap does not alter runtime
evidence; P094 records its scope and the two failed diagnostic attempts.
Concrete Problem¶
The pinned prepared system is a qmail installation whose baseline is wrong in two ways that are common in real deployments:
- mail for the local domain
example.testis refused, because the domain is absent fromcontrol/localsandcontrol/rcpthosts; and - the tempting "fix" of accepting any recipient domain, or granting
RELAYto every client, would turn the host into an open relay.
The requester states the goal in prose: "Accept local mail for example.test
from the local host, and make sure the server is not an open relay." The
expected outcome is a diagnosis, the smallest bounded change to the admitted
control files, and verifier evidence that local delivery works while relay
outside the admitted policy is refused.
The fixture must stay small, deterministic, and network-independent. The exact misconfiguration may change without changing the story contract, provided the verifier still distinguishes a correct repair from an open-relay "repair".
Actors¶
- Requester. States the problem in prose and receives the answer. In the local profile this is the provider's own operator; in the federated profile a remote node that selected the offer. The requester never gains access to the provider's VM, files, or terminal.
- Provider node. Holds the installed and activated task pack, the local binding, the Workbench VM backend, the Corpus Room, and the resulting evidence.
- Solver Agent. A node-local Agent on the provider node that deliberates under the pack's reusable inference flow and emits candidate plans. It never names digests, effect classes, HIL flags, or shell text.
- Reviewer Agent. A second Corpus participant that checks the diagnosis and the candidate plan against the requester's goal, in particular the open-relay trap. In the local profile it runs on the provider node; the federated profile may place it on a third node under Story 011 membership rules.
- Provider operator. Installs, binds, and, if the federated profile is used, publishes the pack. Answers every HIL request for a mutation. Can pause the binding or revoke the package at any time.
Task Pack Contents¶
The signed P085 package carries one operator-task-profile.v1 semantic entry.
Its portable facts, all digest-pinned and produced by the pack build rather than
typed by hand:
| Element | Value |
|---|---|
| Thematic profile | corpus-profile:qmail-administration, roles requester, solver, reviewer |
| Reusable inference flow | package-owned deliberation flow with bounded passages, experiments, and wall time |
| Image variants | at least one pinned Debian image manifest with build provenance and guest-agent identity |
| Prepared system | qmail installed per the manifest, the baseline control files above, fixture mailboxes, and absence claims for unexpected listeners |
| Runtime network ceiling | none |
| Impact-class maximum | test |
| Command profiles | qmail-showctl and qmail-qread in Workbench-enforced observation mode; service status in observation mode; local SMTP injection against the instance; exact service restart |
| Patch policy | sensorium-patch-policy.v1 admitting only control/locals, control/rcpthosts, and control/defaultdomain, with size, owner, mode, and line-shape constraints |
| Verifier | observation-mode command profile plus result schema; checks listed below |
| Rollback | recreate-prepared-system |
| HIL mode | each-mutation minimum; a stricter local binding wins |
| First step class | observation |
| Refusal corpus | one fixture per refusal case below |
The local binding supplies only the choices without a safe default: workspace
root, VM backend, and the model/runtime when the flow admits more than one. It
keeps the safe defaults: runtime network none, HIL each-step, one
concurrent run, publication disabled until the operator enables it.
Flow¶
- The operator installs the package. P085 verifies it and stores it inertly; conformance recomputes the pack facts and runs the refusal corpus.
- The operator activates the package and creates a binding from safe defaults.
Readiness shows one decisive blocker until the prepared system exists, then
runnable. - The requester states the goal in prose. Corpus opens a Room under the qmail thematic profile with solver and reviewer.
- The solver's first candidate relays mail to any host. The reviewer, reading the exact candidate in its own passages, rejects it; no execution-admitting Chair decision or run follows. The Chair may request a revision.
- The solver proposes an observation:
qmail-showctl,qmail-qreadand service status. The Corpus adapter of the solver's node signs the proposal from the committed product; the reviewer's node signs the review; the Chair decides. The host creates a fresh contained instance (VM₁) from the pinned image and prepared system and stamps each step asobservation. Aneach-mutationbinding asks no HIL for observations; the conservative defaulteach-stepbinding also asks for them. Stricter HIL never changes a step's effect class. - The verifier fails on VM₁, as expected, and the run concludes
verification-failed. The host destroys VM₁ and publishes the signed execution record as a Room fact. - The solver's next passage receives that evidence as explicit input: the
record, the verifier result and the observations, materialized by the host
under a digest-bound manifest and treated as untrusted data. It diagnoses the
missing local domain and proposes a new candidate: a patch to
control/localsandcontrol/rcpthostsplus a service restart. The reviewer receives the exact candidate and the same evidence and checks that no wildcard, relay grant or unrelated file appears. The Chair decides again. - The host compiles the new candidate for a fresh instance (VM₂) from the same
pinned image and prepared system. The repair checks its own preconditions
again, since VM₁'s observations describe a destroyed instance. Each step is
stamped
contained-mutation, and the operator answers one HIL request per mutation, showing the step, its derived class and source, the exact diff or target, and the rollback that would apply. The Chair decision grants none of these approvals. - After approval, the host applies one mutation at a time, rechecking the
current-use fence before each step, and the exact verifier runs in
observationmode. The host evaluator decides pass or fail from its bounded observations. - The run result links the Corpus deliberation, the stamped plan, the step outcomes, the HIL decisions and the verifier evidence. Corpus publishes the execution record and turns the solver's outcome into an answer draft with the diagnosis and the verified patch as a recipe.
- The host destroys VM₂ and records the owner's destruction confirmation.
The requester's Corpus Flow drives this loop within its budget; P094 only runs
each admitted experiment. unknown ends the loop instead of trying again.
The pack's Flow performs steps in an authorized context and never governs the
conversation. A participant step runs in one exact turn: the solver's turn
for its passage, the candidate's publication and the proposal; the reviewer's
turn for its passage and the review. A coordinator step runs for the round:
admitting an experiment whose proposal, review and Chair decision are closed,
and reading positions and results. Admission belongs to no participant's turn;
it is a coordination after the Chair's decision. The pack's Flow grants no
role, opens no turn and creates no turn binding. Choosing the next participant,
opening and closing turns, their inference-Flow bindings, the Chair's decision
and renewing authority stay Corpus and Room mechanics. In local acceptance
(P094-013) a harness may perform them through the production API, as a
scheduler only: it never chooses the repair, never reads results for the
solver and never bypasses review.
In the federated profile, steps 3 and 10 cross the network: the requester reaches the provider through its signed offer, the provider admits the request only for the exact task-profile digest, and the answer returns through the ordinary Corpus publication path.
Inference Classes¶
The two local-profile classes share one mechanism and differ only in who produces model answers. Keeping them apart lets a run prove that the mechanism works without mixing integration faults with the limits of a model.
Deterministic inference, real execution (P094-013). A fixture stands at
the inference boundary and nowhere else:
- The pack ships real, executable Flow and prompt documents. The fixture answers the inference calls those documents make; it never hands a plan to the compiler directly.
- Corpus, Agent and Inquirium are real. Room roles, inference-Flow bindings, passages, budgets and the provenance of each candidate take the production path.
- The fixture reacts to the evidence it receives. It first proposes an observation, and proposes the repair only after that observation's result reaches it. Missing or unexpected input makes it refuse; it never advances to its next answer on its own.
- The VM and every effect are real: the patch, HIL, the service restart, SMTP, the verifier, rollback and destruction of the environment. The harness never repairs qmail by a side path.
- The reviewer has its own passages, and at least one run shows it rejecting an unsafe proposal (an open relay) that therefore never becomes a plan. Replaying two agreeing utterances would prove nothing about its role.
The report names its evidence class: deterministic inference, real execution. It proves integration and policy enforcement, not that a model discovered the repair on its own.
Real model (P094-013b). The same flow with a local model runtime answering
the solver and the reviewer, judged on the same verifier and refusal boundaries.
Failure to find the repair does not invalidate deterministic mechanism
acceptance. Attribute it to model capability only after excluding runtime,
evidence-delivery, orchestration and budget failures; otherwise retain the
corresponding failure classification.
On 2026-10-04, fresh clean-source run s13-1791125994-b84cc3 qualified this
class on macOS arm64/vfkit with Qwen3-Coder MLX. The observation's failed
verifier feeds fresh Solver/Reviewer Agents; the Solver authors inert UTF-8
patch material and an independent review precedes all effects. The positive
repair passes all seven checks; a fresh second passage refuses mutation HIL
without starting a mutation. Each uses two cycles, four Agent passages and
two native runs, with separate startup accounting, exact restart/replay and
confirmed destruction of runs and templates. The immutable source and asset
pins are in
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-04.real-mlx.macos-arm64.json.
This is local real-model/native evidence, not a federated or alpha claim.
Follow-up review qualification on 2026-10-04 repeats the entire profile as
s13-1791134566-6ed803 and retains actual token/cost budgets for all eight
fresh Agents. One producer charge explains each total; exact replay, daemon
restart, post-restart replay and completion restart leave it unchanged. The
replay checkpoint is after durable experiment admission and allocation, with
the first each-step HIL unanswered and no started guest steps. A stopped loop
does not regain execution authority. The current report is
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-04.review.real-mlx.macos-arm64.json.
The independent image and active-pause proofs were repeated as
s13-1791134305-b2005e and s13-1791134416-bac780, using the same clean source
05bd494b5521b52417da6fbec82a7eda141cb2c3 and tree
ef4bd36b9c6b791797654d180ae59b92f5c522e9, with retained Git GC roots and a
verified private bundle. Earlier reports retain only their original assertions.
At that checkpoint, pending-proposal/ephemeral-turn recovery remained open.
The later P094-023b1a/b proofs close that pre-admission boundary: minimal
host-owned turn witnesses survive restart without recreating live authority.
The clean-source real-MLX/vfkit run s13-1791156863-88b339 retains exact
signed proposal/review replay before experiment admission, with no extra
inference, publication or charge. This is not general durable Room history,
full crash recovery, federation or alpha readiness.
Native interruption checkpoint (2026-10-06): P094-013d closes the earlier
unknown-step gap with two fresh macOS arm64/vfkit cases. The host is interrupted
after step-started, either after channel delivery but before Workbench invokes
the patch owner, or after its
actual applied reply is withheld. Both recover unknown without repeating the
patch or later restart/probe steps. Destruction first refuses and then loses
its real reply; the exact instance is confirmed on restart before one signed
unknown publication. Eight run facts, six Agent budgets and charge receipts,
and loop spending remain unchanged after terminal restart. A stopped-loop
capability replay is refused; a distinct explicit operator admission gets a
fresh VM and fresh HIL and is cancelled without executing a step. Owner cleanup
is confirmed in both cases. Review run s13-1791274752-58cf89 also retains the
exact prior publication list while destruction is unavailable and after its
real reply is lost; the new unknown execution appears only after confirmation.
Stopped-loop invocation replay requires a current grant, not only journal
identity. The selective report on clean retained source 8b368be3 is
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-06.review.inflight-recovery.macos-arm64.json
(UTC run date). This is native mechanism evidence, not real-model fault
injection or multi-host interruption qualification.
Verifier Checks¶
The run succeeds only if all checks pass under the exact verifier contract:
- the qmail service is healthy under the prepared service manager;
- a local test message to a mailbox in
example.testis accepted and reaches the expected mailbox or queue state; - the listener scope matches the profile;
- a relay attempt to a domain outside the admitted policy is refused;
- no control file outside the patch policy changed;
- runtime network stayed within the
noneceiling; - the verifier performed no mutation outside its observation profile.
A repair that accepts every domain passes the delivery check and fails the relay check. That is the intended trap: the verifier, not the solver's prose, decides.
The current host-tested verifier checks RCPT acceptance, current local routing,
and a delivered probe header in a bounded Maildir scan. Its service-healthy
observation is historical delivery evidence, not a live service-manager probe.
Guest qualification (P094-011e, 2026-09-29) confirmed both in a real Cloud
Hypervisor guest with the real qmail: a probe injected after the repair reaches
the initially empty Maildir, the service manager reports qmail live, and the
loopback listener greets. The verifier failed the baseline and both open-relay
states there. Local acceptance (P094-013) must show the same through the run
engine's patch path, HIL and rollback.
The retained qualification is evidence for its recorded command digest. A
later review tightened report admission and empty-mailbox checks; the image was
then rebuilt and the revised qualifier passed again in a real guest.
Local mechanism checkpoint (2026-10-03): the fresh P094-013 aggregate passes
all fourteen checks, including the seven qmail checks through the production
patch/run/HIL path, an independent fresh HIL-denial passage, exact restart
replay and confirmed destruction. Native observations qualify the later
PID-namespace supervisor; bounded host retry and all twenty independent
image/open-relay steps also pass. The pinned, redacted report is
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-03.local-acceptance.linux-x86_64.json.
This is deterministic evidence-reactive inference with real execution, not
completion of the real-model or federated profiles. The stricter local
each-step default follows P094's existing narrowing rule; the profile's
per-mutation minimum and effect classes are unchanged.
Review qualification (2026-10-04) distinguishes binding pause/resume before
any run from active-run pause. The Linux checkpoint does not qualify the
latter; the separate native pause checkpoint below does. Unknown in-flight
crash recovery remains open, so the combined lifecycle checkbox stays open. The
historical retry result proves the loop/attempt count, not its nominal
30-second timeout. A separate fresh V2 aggregate passes all fourteen checks
as s13-1791075637-44213c, with exact clean-source commit/tree/GC-ref retention,
an unchanged 1,000 ms admitted retry budget and four run-bound destruction
confirmations. Its report is
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-04.local-acceptance.linux-x86_64.json.
Owned processes quiesced before two disk copies were reclaimed, and the remote
checkout is clean again. Historical reports are not enriched with unmeasured
checks. These historical runs do not qualify active-run pause or real models.
Separate native checkpoints on 2026-10-04 now qualify the second image
variant and active-run pause. Image run s13-1791110299-dcd341 passes all
twenty image/open-relay steps, three native timeout/exit/recovery checks
and the real retry loop with unchanged 1,000 ms command budgets and three
disposed allocations. Run s13-1791110411-367b28 pauses after observation
while mutation awaits HIL; it retains refused/local-binding/paused, no
mutation and confirmed destruction, and resume/restart/replay retain one
admission measured from the journal. The source-pinned reports are
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-04.image-qualification.macos-arm64.json
and
node:tools/acceptance/story-013-qmail-task-pack/reports/2026-10-04.active-pause.macos-arm64.json.
These are mechanism proofs, not MLX deliberation. The combined lifecycle
checkbox still includes crash/revocation boundaries beyond active pause.
Authority Contract¶
- Prose, the requester's goal, and model output are inert. Only a schema-valid candidate made of closed action kinds and refs from the resolved plan can become executable, and only after host stamping.
- The solver never obtains Workbench, terminal, patch, or network authority of its own. Every effect passes P094's current-use fence and the owning Workbench boundary.
- Every mutation needs the operator's HIL answer. The P085 attention budget may group, defer, or deny delivery of a question, but never approves.
- Observation is enforced by the Workbench, never declared. A command profile
without an enforced effect mode is a mutation, and readiness blocks the pack
with
workbench/effect-mode-missinguntil the owner contract exists. - The requester's real systems are never touched. The pack runs only inside the provider's contained instance and exports a recipe, not an effect.
- Publication is a separate operator action. Activation, binding, or a passing run never advertises anything.
Refusal Cases¶
Each case has a refusal-corpus fixture and must be reached at the owning boundary, not asserted from source markers:
| Case ID | Case | Expected outcome |
|---|---|---|
candidate-shell |
The model returns a shell command or sed -i text |
refused as not representable or plan/outside-profile; nothing executes |
candidate-authority |
The candidate claims its own effect class, digest, or HIL flag | schema refusal of the unrepresentable field |
first-step |
The first step is a mutation | plan/first-step-not-observation |
patch-policy |
A patch touches /etc/tcp.smtp, adds a wildcard, or writes outside the policy |
workbench/patch-outside-policy; an absolute target is already unrepresentable at patch ingress |
hil |
The operator denies a mutation, or the HIL request expires | hil/denied or hil/expired; the run ends and the instance is destroyed |
containment |
The binding selects isolated network |
environment/not-contained; no mutation is admitted |
environment |
The image or prepared system is substituted | environment/image-mismatch |
verifier |
The verifier misses a check, times out repeatedly, or mutates | verifier/check-missing, verifier/timeout after bounded retries, or verifier/mutation-not-admitted |
interruption |
The host crashes after a patch is admitted | the step stays unknown, the run is rollback-pending until destruction is confirmed, and the step is never repeated |
active-pause |
The operator pauses the binding mid-run | the run stops at the next step boundary and the instance is destroyed; resume needs no reactivation |
package-generation |
The package is revoked or reactivated mid-run | package/generation-stale for a changed generation, or the current package blocker after revocation; offer withdrawal is requested |
profile-change |
A package upgrade changes the profile digest | local-binding/profile-changed until the operator accepts the diff |
remote-profile |
A remote request carries another profile digest (federated profile) | refused at offer admission before any deliberation |
Case IDs are stable traceability keys, not new runtime refusal codes. The Node qualification inventory maps their variants to exact executable owner tests; compile-only pack conformance does not execute HIL, VM or market lifecycle cases.
Retained Evidence¶
The run retains links, not copies: the task-profile, binding, activation generation, and plan digests; Corpus deliberation and Agent passage refs; Workbench directive and result refs; HIL decision refs; verifier observations and the host evaluation; the rollback outcome and destruction confirmation; bounded timings and resource accounting; typed refusals; and the evidence class of the run's inference.
It does not retain prompts, model chain-of-thought, raw VM files, unredacted command output, secrets, or machine-local absolute paths. The recipe returned to the requester contains the diagnosis, the exact admitted patch, and the verifier result, disclosed according to the result's disclosure metadata.
Substrate Gates¶
| Gate | Owner | Needed for |
|---|---|---|
| Task-profile schemas, candidate and plan contracts, refusal table | P094 (P094-003, P094-004) |
all runs |
| Package semantic entry and lifecycle | P085 through P094-005a (admission, done) and P094-005b (host-recomputed pack facts at conformance, done) |
all runs |
| Binding, readiness, and inspection | P094-006a (host file store, done) and P094-006b (P091-backed) |
all runs |
sensorium-patch-policy.v1 and sensorium-action-semantics.v1 |
Workbench, mirrored in P071 Phase 6 | effects |
| Enforced command-profile effect mode | Workbench, P094-019a (contract, done) and P094-019b (enforcement, done) |
observation steps and verifier |
isolated-environment recovery class with environment.destroy |
P080 and Sensorium Virt, P094-018 (done) |
contained mutations and uncertain outcomes |
| Corpus experiment executor for task packs: typed proposal, exact-bytes review, verified provenance, durable handoff | P069 P069-EXEC-001 with P094-022a and P094-022b |
deliberated runs |
| Evidence input bound to passages, Corpus envelopes built from committed products, and the requester's bounded experiment loop | P069 P069-EXEC-002 with P094-023a to P094-023c |
deliberated runs across VM₁ and VM₂ |
| Executable Flow and prompt documents and the deterministic inference fixture | P094-023d |
deterministic-inference class (P094-013) |
| Offer draft, publication, and withdrawal | P094-007 |
federated profile only |
The acceptance runner must refuse to start while a required gate is missing and must say which one.
Non-Goals¶
- Changing the requester's real mail server, DNS, TLS certificates, or firewall.
- Internet-facing deployment, spam filtering, or arbitrary package installation.
- Giving the solver or the requester terminal or file-write authority.
- Automatic publication, automatic HIL approval, or plan-level approval.
- qmail-specific code in shared Node crates.
Open Questions¶
- First acceptance architecture. Resolved 2026-09-29: the first variant is
Debian 13 x86_64 on Cloud Hypervisor (Linux/KVM). Debian 13 ships no qmail,
so the image installs notqmail 1.09 as a local package built from the signed
release. The Ubuntu 24.04 arm64/vfkit variant (
P094-011f) is qualified on 2026-10-04; the profile now carries both variants with the same prepared-system binding, without changing the story's verifier contract.
Done When¶
- [x] The pack builds reproducibly:
derive_pack_factsproduces every digest and capability list, and conformance recomputes them. - [x] A clean install, activation, and binding from safe defaults reach
runnablewith no hand-typed digest. - [x] The local profile, with deterministic inference and real execution,
repairs the fixture through observation-first deliberation in a real Corpus
Room, one HIL approval per mutation, and a passing verifier, then destroys the
instance with confirmation; the reviewer rejects an unsafe proposal in its own
passages, and the report names its evidence class (
P094-013). - [x] The local profile with a real model runs the same flow against the same
verifier and refusal boundaries (
P094-013b). - [x] An open-relay "repair" is refused by the verifier in a retained negative run.
- [x] Every refusal case above is reached at its owning boundary. The
P094-015ainventory requires thirteen cases/twenty-six variants and exact passed owner tests; original native/physical reports retain their separate source/evidence classes. This is not a fresh hardware run for every variant. - [x] Restart, pause/resume, crash with an
unknownstep, and revocation behave as specified in the named local/native and physical-market checkpoints (P094-013c/013d/016); their inference and fault-evidence classes stay separate. - [x] The federated profile delivers the recipe to a remote requester that
admitted the exact profile digest, and a stale offer is refused after
revocation (
P094-016). - [x] A structural check shows that shared P094 crates contain no qmail-specific branch.