Skip to content

Reasoning Arm Requirements & Feature List

AI Generated Human Curated

🟡 Status: draft for discussion, nothing settled.

What v0.2 is. v0.1 (unpublished) plus José’s 17 manual edits of 2 Nov (taken as proposals) plus a review of three outside analyses (Gemini, ChatGPT, Meta Muse) checked against the session record and the published pages. Appendix A says what changed and why, line by line.

Markers (as in the session records): Published — already on ai4aging.org · Decided (José) · Proposed (José) — from José’s messages or edits, not decided · Suggested (Claude) — not decided · Open. A new tag, Review, marks a suggestion that came from the outside analyses and was checked here.

The Pepa Reasoning Arm (PRA) has three doors (an OpenAI-compatible completion door, a Pepa-native asynchronous job door, an operator panel) in front of a deterministic shell that holds no operational credentials, with the models behind it in the Mac Studio’s llama-swap slots. v0.2 tightens the contracts around the doors: who may call, how callers prove it, what each state means, what counts as a finished job, what a completion may become, and what the anchor check does and does not prove.

Published or decided; the feature list builds on them. Rows changed by José’s edits or by the review are marked ✎ and explained in Appendix A.

RuleWhere it comes from
The arm suggests; it never decides, orchestrates or executes.Published
“Never executes” is structural: no operational credentials, no write tools, no route to the operations plane. The Beak enforces it, not a prompt.Published
The Head owns the decision to plan; the arm never takes a planning request from a peer directly.Published
Planning is asynchronous and never on the voice path.Published
✎ One job at a time. Availability is available, maintenance or unavailable; execution is idle, busy or draining. “Dead” is never a value the arm reports, because a dead process cannot report; an outside observer judges it. Published text says “the Head is the queue” — whether the arm gets a small queue at run is Open (see D-3).Published (idle/busy, one job, Head is the queue, “no answer is its own outcome”); Proposed (José) maintenance and dead, queue at run
✎ A submission carries task, supplied context, constraints, budget, and an authority marker that is always none. Any other value is refused in code before a model sees the request.Published; Review (refusal in code)
✎ Four typed refusals: not a reasoning task · missing information (naming what to supply) · doctrine forbids it · budget exhausted (partial work attached, marked not a deliverable). “Nothing available can achieve it” is no longer a refusal: it comes back as a done plan marked infeasible, with its reasons.Published (five); Proposed (José) “reasoning”, strike of “nothing available can achieve it”; Suggested (Claude) the infeasible result
✎ No “can you do this?” pre-check. A help call is provided instead: it returns what the arm can do (the capability card for a verb), never a verdict on a task.Published (no pre-check); Proposed (José) help equivalent
The requested verb travels apart from the content payload, so nothing in the content can change it.Published (open questions)
A report is an artifact about sources, never a source. If it enters any store, it enters marked inferred.Published
Conversation is a separate arm.Published
Crawl (plain completions to the punt) → walk (one job in, one plan or refusal out, a human reads it) → run (house catalog, ontology, guardrails).Published
A Pepa arm reflex: completed by the arm on its own through rules declared in advance, consulting neither the Head nor another arm. Arms may narrow it, never widen it.Decided (José) — 1 Nov, §1.6
✎ The arm’s ledger is the EVIDENCE-class record of what the arm observed and did: written once, owned by the arm, read by the Self-Monitor and Auditor arms. It is not the Architecture Design Ledger.Decided (José) — 1 Nov, §1.8
Loud failures: surfaced and ledgered, never a silent log line.Decided (José) — 1 Nov, §6.3
✎ Abstention (“no fact / unclear / looked and found nothing”) is a schema-valid output, enforced by a validator outside the model. “Forbidden” is not abstention; it is the doctrine-forbids refusal.Published invariant; Review (separation)
✎ Arms return events and/or the requested output; the Head’s transition table decides what happens next. Every run ends done, punted or error.Head Orchestrator Design, Option C (proposed); Proposed (José) wording
Facts are slots, not prose: evidence-derived values travel as typed slots filled by code after the last model step.Candidate rule — Head Orchestrator Design
Bilingual by default: English, Spanish, Spanglish.Published principle

Diagram of the Reasoning Arm's shape, top to bottom. Three callers (the sensory punt, the Head later, and the operator) reach three doors inside the arm: the completion door, the job door and the operator tools. All three doors lead into a code-only shell that checks the caller token and address, requires authority none, and handles state, budget, deadline, refusals, schema, validations and the ledger. The shell passes to the models core with per-verb pipelines and a reviewer in another slot. The only way out is through the Beak firewall to the llama-swap server on the Mac Studio, which accepts only the arm and the homelab and serves the model slots. An outside probe, the Self-Monitor later, reads the shell's state and ledger.

Arm-peers (Memory, Knowledge, Human Sentinel…) have no door in v0.2. The Head reaches the completion door too, for plain answers.

Out of the original 52 features proposed, José dropped 6 from consideration early but their slot was not reassigned; forty-six features in six groups remain. Δ shows the change from v0.1: new, chg (changed), = (unchanged). Tier when built: 1 enforced in code, 2 declared and enforced by discipline or deployment, 3 designed not built, 4 identified not designed. Today every row is 3 or 4.

IDFeatureStageMarkerTierΔ
Doors
RA-01Completion door: OpenAI-compatible chat completions, synchronous. Serves callers whose output reaches a person, or that the Head sits behind: the operator and the sensory punt now, the Head later. Not arm-peers.CrawlProposed (José) own endpoint and “human”; Suggested (Claude) the reading, compatible on this door only; Open: D-11chg
RA-02Job door: Pepa-native typed API on the Agent2Agent (A2A) task lifecycle — submit (reply “accepted”, with where to check), status, result, cancel, help; asynchronous, optional long-pollWalkProposed (José) precedent; Suggested (Claude) A2A1chg
RA-03State endpoint: availability (available, maintenance, unavailable) and execution (idle, busy, draining), answered at once. Busy and maintenance are fast answers (503 with reason and retry-after), not refusals. Dead is not a state: no answer at all means dead, judged from outside.WalkPublished (no answer is its own outcome); Proposed (José) maintenance, dead, fast busy; Suggested (Claude) dimensions1chg
RA-04Capability card, in A2A vocabulary: verbs, models, refusal kinds, limits, versions, an example envelope per verb. The help call returns it.WalkProposed (José) help equivalent; Suggested (Claude)1chg
RA-05Operator tools. Walk: flat files plus a ledger viewer on the command line. Run: the panel (settings, queue, ledger view).Walk, then RunProposed (José) panel; Review (defer the panel)2chg
RA-06Caller registry with caller classes, and caller authentication: a per-caller token (only its hash stored in the arm) plus a source-address allow-list. Unknown or unauthenticated callers are refused before anything runs.CrawlSuggested (Claude); Review (authentication)1chg
RA-07llama-swap on :7999 stays the engine room; Homelab tools keep using it directly; Pepa callers use RA-01 and RA-02CrawlSuggested (Claude)2=
RA-08Model Context Protocol (MCP) face on the job door for local agentsLaterSuggested (Claude)4=
RA-09Outside liveness probe: a simple external check of the state endpoint and ledger that decides “dead”. The Self-Monitor Arm takes it over once built.CrawlSuggested (Claude); Review2new
Envelope and results
RA-10One job envelope for every verb. An authority marker other than none is refused in code. (The marker exists so a request cannot smuggle authority in; the arm itself never holds any.)WalkPublished (fields); Suggested (Claude) the refusal1chg
RA-11Verb travels apart from content; content wrapped and bannered as dataWalkPublished1=
RA-12Budget plus one propagated deadline. Exhaustion refuses the job with reason budget exhausted; partial work is attached and marked not a deliverable.WalkPublished (budget, partial work); Head design (one clock); Proposed (José) question on transactions1chg
RA-13Four typed refusals (not a reasoning task, missing information, doctrine forbids, budget exhausted), each telling the caller what to do next. A closed list.WalkPublished; Proposed (José) reasoning, strike; Suggested (Claude) closed list1chg
RA-14Four job outcomes: done, refused, error, cancelled. Maintenance is availability, not an outcome: a job is never accepted during maintenance.WalkHead design (three exits); Proposed (José) four; Suggested (Claude) the four1chg
RA-15Epistemic class stamped on every deliverable. Every claim carries its provenance or an explicit no_source marker. Plain completions carry the unclassified marker instead.WalkPublished (reports); Proposed (José) acknowledgement, plain endpoint; Suggested (Claude) the markers1chg
RA-16Results handed back, not kept beyond the retention windows in RA-47WalkOpen on the published page; Suggested (Claude)2chg
RA-17Publication rule: only a validated deliverable is published as done. Work accumulates inside the job; nothing partial is promoted.WalkSuggested (Claude); Review1new
RA-18Pending capacity: zero in walk. Busy answers at once (RA-03) and the caller retries. A small bounded FIFO is a run decision (D-3).WalkPublished (Head is the queue); Review1new
RA-19Dropped by JoséN/AN/A
Services
RA-20Completion with a guardrail profile chosen by caller class (operator: log only; sensory-punt: conversation profile; head: set per call). The response carries the unclassified marker and the job ID. A completion can never itself establish a Memory or Knowledge fact (RA-44).CrawlProposed (José); Review (marker, prohibition)1chg
RA-21Plan: one plan, or a plan marked infeasible with reasons (the means do not exist), or a typed refusalWalk, then RunPublished; Suggested (Claude) infeasible1chg
RA-22Analyze: crosscheck, review, compare and extract over material the caller suppliesWalkProposed (José); Suggested (Claude) modes1=
RA-23Four validations on every analysis. Anchor (code): the cited span exists verbatim. Source (code): it belongs to the declared document and §. Verdict (reviewer model, then a human): the quote supports the finding. Timing (code plus dates): later evidence has not superseded it. Only the first two are guaranteed by code.WalkSuggested (Claude); Review1chg
RA-24Imagine: hypotheticals, scenarios, fixture drafts; stamped hypothetical. Project-only in v0.2.WalkProposed (José); Review (project-only)1chg
RA-25Explain: supplied records rendered for a named audience and language; facts travel as slots filled by codeWalkProposed (José)1=
RA-26Research: investigate a question against declared sources, report with provenanceRunPublished (candidate); reach Open1=
RA-27Replay and bench: re-run a finished job with another model or prompt version. Record input hash, prompt version and model configuration so a replay is reproducible.WalkSuggested (Claude); Review2chg
RA-28Text-to-speech (pepa-tts, :8100) listed on the capability card and written to the ledgerCrawlPublished (RV3); Suggested (Claude)2=
RA-29Scoreboard: plans and analyses a human accepted, per verb and model. Deferred past the first two services.RunPublished (plans); Suggested (Claude); Review (defer)2chg
Inside
RA-30Deterministic shell, model core: intake, authentication, checks, state, budget, refusals, validation and ledger are codeWalkSuggested (Claude)1=
RA-31Fixed per-verb pipelines in walk; an agent loop only for planning with read-only tools at runWalk, then RunSuggested (Claude)3=
RA-32Structure-first chunking by headings and § numbers; original offsets and section IDs preserved through every stepWalkSuggested (Claude); Review (offsets)1chg
RA-33Reviewer model in a different slot as a check. Disagreement is a result, kept as two attributed claims; agreement is never proof. Two models may not fit beside the large slot at once: measure, and fall back to the small slot or a swap.WalkSuggested (Claude); Review1chg
RA-34Schema-validated outputs, abstention included; validator outside the modelWalkPublished invariant1=
RA-35Frozen, versioned prompt prefix per verb. At run: frozen prefix, then the stable catalog (byte-identical, sorted by entity ID), then per-job content, so the prompt cache holds.Walk, RunPublished (frozen prefixes); Suggested (Claude); Review (layout)1chg
RA-36Planted-error test fixtures for analyze: wrong quotes, unsupported claims, contradictions, superseded evidenceWalkSuggested (Claude); Review2new
RA-37Dropped by JoséN/AN/A
RA-38Dropped by JoséN/AN/A
RA-39Dropped by JoséN/AN/A
Safety and record
RA-40No operational credentials, no write tools, no route to the operations plane. Enforced by deployment: the Beak between VLANs, and a filter on the Studio itself (pf or llama-swap’s own allow-list) for hosts on the Studio’s own subnet, which the Beak never sees.WalkPublished; Suggested (Claude) the Studio filter2chg
RA-41The arm’s ledger: JSON Lines, append-only, UUIDv7 job keys, correlation IDs, content hashes (not content), processing chain and versions. Field names follow the OpenTelemetry GenAI conventions proposed in the 3 Oct observability recon.CrawlDecided (José) the ledger; Suggested (Claude) the fields; Review1chg
RA-42Loud failures to the caller, the operator tools and the ledger; household people only through the Sensory ArmWalkDecided (José); Suggested (Claude) routes1=
RA-43The arm’s only reflexes: refusals, budget kills, drain under memory pressure — nothing outside the armWalkSuggested (Claude) under the Decided reflex base class1=
RA-44An interface prohibition, not a policy line: nothing the arm produces — completions included — enters Memory or Knowledge except marked inferred or hypothetical, by another arm’s decisionWalkPublished (reports); Suggested (Claude); Review2chg
RA-45Settings in flat files under version control; every change is a ledgered event, kept distinct from job events; fail-closed defaults shown and explainedWalkSuggested (Claude); Review1chg
RA-46Health read from outside: the Self-Monitor Arm (and the RA-09 probe until then) reads the state endpoint and ledger, never the arm’s own accountWalkSuggested (Claude)2=
RA-47Three retentions: the ledger is append-only and permanent; job results are kept until collected or 7 days; completions are returned and not kept; supplied content has the shortest retention and the ledger stores only its hashWalkSuggested (Claude); Review2new
RA-48Dropped by JoséN/AN/A
RA-49Dropped by JoséN/AN/A
Host
RA-50Shell in an LXC on its own VLAN; the Mac Studio stays a pure inference server. Host (pve2 or pve3) is decided when resource needs and network rules are known.WalkSuggested (Claude); Open: D-42chg
RA-51Repository prsws/pepa-reasoning-arm — simple, not cleverWalkSuggested (Claude)2=
RA-52Completion never waits behind a job. Either the punt has a model slot the job pipelines do not use, or the pipelines’ many small calls leave room for it. Measure on the Studio before choosing.Crawl, WalkSuggested (Claude)2new

Its own endpoints; OpenAI compatibility only on the completion door. Everything new speaks a small Pepa-native job API on the A2A task lifecycle (submitted, working, completed, failed, cancelled, rejected), so a typed envelope, typed refusals and an asynchronous lifecycle do not have to bend into the chat shape.

DoorWho uses itShapeNotes
Completion (RA-01)Operator, sensory punt, later the Head/v1/chat/completions, /v1/models, synchronousThe punt moves by changing a URL and adding its token. Every call is ledgered; the reply carries the unclassified marker.
Job (RA-02)Operator now; the Head when it existsSubmit → “accepted, check here” → status → result; cancel; helpBusy and maintenance answer at once.
State and card (RA-03, RA-04)Callers, the probe, the Self-Monitor ArmTwo read-only endpointsNo work submitted.
Operator tools (RA-05)JoséFlat files and a ledger viewer; the panel at runOperator-only, house network only.

Caller classes (RA-06).

ClassExampleDoorsVerbs
operatorJoséCompletion, jobAll
headThe LangGraph Head, once builtCompletion, jobAll
sensory-puntPSA’s call_external_llmCompletion onlyCompletion

Note: Arm-peer is removed in v0.2. Another arm that needs reasoning goes through the Head, as published.

What stays outside. llama-swap on :7999 remains the Studio’s engine room for Homelab tools. Once the punt has moved to the completion door, Pepa hosts are blocked from :7999 by two mechanisms, because they live on two different networks: the Beak for hosts on other VLANs, and a filter on the Studio itself for hosts on its own subnet (RA-40).

Naming. Caller class replaces “authority level” for the guardrail dial. The record now uses “authority” in three senses (a mandate to act, the EVIDENCE authority class of a record, and the envelope marker that is always none), so the glossary should fix all three.

DimensionValuesWho reports it
Availabilityavailable · maintenance · unavailableThe arm, at once
Executionidle · busy · drainingThe arm, at once
Job outcomedone · refused · error · cancelledThe arm, on the job
Dead—Never the arm. An outside probe judges it from no answer or a stale ledger.

Degraded (a slot missing, the reviewer unavailable) is shown as extra health detail on availability, not a fourth axis. Superseded is a Head concept and waits for the Head.

VerbGoes inComes outEpistemic classGood first job
completionMessages from a registered callerOne answerUnclassified; never storable as factThe Sensory Arm’s punt, as today
planTask, context, constraints, budgetA plan, or a plan marked infeasible, or a refusalProposalSequencing the PSA re-adoption work
analyzeA question or rubric plus the materialFindings, each with verdict, anchor and four validationsInterpretation, anchoredCross-check the 2 Nov session record’s Summary against its Running record
imagineA premise and a frameScenarios, variants, draftsHypotheticalWhat-if walks through the eight use-case EPCs (project only)
explainRecords, audience, language, levelAn explanation whose facts all come from the recordsInterpretation; facts as slotsA pepa_verify failure event in plain Spanish
researchA question and permitted sourcesA report with provenance per claimInterpretation about sourcesReading-list triage

Analyze, in detail. Modes: crosscheck (each claim gets one verdict: supported, contradicted, partly supported, not found, stale), review, compare, extract (marked inferred). The 2 Nov failure is a harness problem: a small model given a long page in one pass loses the middle. The pipeline splits by structure, extracts one claim per Summary bullet, finds candidate entries by § and keyword in code, asks the model for a verdict and a quoted span, then checks. The validation ladder (RA-23) is honest about its limits: a real quote can still be misread, so the anchor check proves the quote exists and the source check proves where it is from, while the verdict and timing checks still need the reviewer and the reader. A verdict whose quote is not found becomes unanchored.

Explain keeps fail-closed slots. Values arrive as slots filled by code after the model writes, and the output fails if the model restates a value. A validator that tried to tolerate restatement would miss values written out in words (“veinte”, “las dos y media”), and the Head design’s stricter rule is the 68 °F lesson.

Envelope fieldHoldsMarker
job_idUUIDv7 set by the caller (idempotency)Suggested (Claude)
caller_idRegistered caller. The proof is the token in the request header, not a field.Suggested (Claude); Review
verb, modeThe verb is a field of its own, never inferred; mode for sub-kindsPublished; Suggested (Claude)
task, content[], constraintsInstruction; material with source and provenance, wrapped as data; limitsPublished
budget, deadlineDone condition and one propagated clockPublished; Head design
model, language, audiencePreference from the class’s allow-list; for explain and refusal textPublished; Suggested (Claude)
authorityAlways none; anything else refused in codePublished; Suggested (Claude)
Result fieldHolds
statusdone · refused · error · cancelled
refusalOne of four kinds, plus what to supply next when information is missing
deliverableTyped by verb; for a plan, possibly marked infeasible
epistemic_classproposal · interpretation · hypothetical · unclassified
claims[]Each claim with provenance or no_source; for analyze, the anchor, verdict and four validation results
assumptions, uncertainties, invalidatorsConfidence about the result in words, not a self-rated score
partial_workOnly on a budget-exhausted refusal; marked not a deliverable
processing_chain, versions, input_hashModel, quantization, slot, prompt version, shell version, hash of the input
budget_used, timingsWhat the job cost

A deterministic shell around a model core. Plain Python for the shell; fixed pipelines per verb in walk; LangGraph only where a verb needs a loop (planning with read-only tools at run). Models are checks, not routers: the caller declares the verb, so there is nothing to classify, and inferring intent at this layer runs into the no-inferred-intent directive. A reviewer in a different slot, preferably a different model family, checks the first model’s findings (RA-33). Every model output is validated against its schema; after a capped number of retries the job ends in error, and free text is never passed through. Whether rapid-mlx’s constrained output is good enough to replace validate-and-retry is to be measured on the Studio.

Leaning, unchanged: the shell in an LXC on a Proxmox host in the Pepa stack, on its own VLAN; models stay behind llama-swap on the Studio. The deciding reason is that it turns “never executes” into a firewall rule. Bare on the Studio puts the arm on the same subnet as Home Assistant, so the rule would rest on discipline; a VM on the Studio takes memory from the model slots on a 64 GB machine. The cost of the LXC is a second box that can take the arm down, which is acceptable because it is off the voice path and fails loudly. The host (pve2 or pve3) waits for resource needs and network rules.

Walk: policy in flat files under version control, a command-line ledger viewer, and a kill switch (drain, then stop). Run: the panel (state and queue, engine room, callers, services, guardrail profiles, retention, messages, scoreboard, ledger). Either way, every change is a ledgered event with old value, new value, who and when, kept apart from job events. Defaults fail closed and say why.

  1. Shell, caller authentication, state endpoint, ledger (RA-30, RA-06, RA-03, RA-41).
  2. Completion door; move the punt and confirm PSA’s calling contract is untouched (RA-01, RA-20, RA-52).
  3. Close :7999 to Pepa hosts with both mechanisms; start the outside probe (RA-40, RA-09).
  4. Job door with one verb: analyze/crosscheck on the 2 Nov session record, with planted-error fixtures (RA-02, RA-22, RA-23, RA-32, RA-36).
  5. Reviewer slot and replay bench (RA-33, RA-27).

Deferred until two services have proved their contracts: the panel, MCP, an internal queue, LangGraph, the scoreboard, research beyond supplied sources.

#QuestionSuggested answerWhy
D-1What does “human callers” in RA-01 mean?Callers whose output reaches a person or sits behind the Head; no arm-peersKeeps the punt working and stops arms chaining unlogged reasoning through a chat endpoint
D-2Operator as interim submitterYes, recorded as a dated development exceptionHonest about the published rule instead of quietly reinterpreting it
D-3Queue at run: the Head (published) or a small bounded queue in the arm (José’s edit)Keep the Head as queue unless a concrete need appearsPriority and supersession live where authority lives; changing it needs a dated entry on the page
D-4Where the shell runsLXC on its own VLAN; host laterThe firewall rule is the enforcement
D-5Close :7999 to Pepa hostsYes, after the punt moves, with both mechanismsOne mechanism leaves a gap on the Studio’s own subnet
D-6Auditor Arm and analyzeNo use of this arm’s models by the Auditor for nowShared models share failures
D-7Imagine’s reachProject onlyHousehold-facing storytelling edges into the Conversation Arm
D-8LangGraphPlain Python now; at run only for the planning loopSame library as the Head, so the lease rule can carry over
D-9RetentionRA-47Supplied content may include health talk (D-11)
D-10First build sliceBuild order aboveEach step is testable alone and none breaks the punt
D-11“Nothing available can achieve it” as a plan result instead of a refusalYesIt comes from a real attempt and deserves provenance. Your strike suggests this was the intent: please confirm.
D-12Publishing the changesThe four-refusal list, the state model and any queue change need a dated entry on the Reasoning Arm pageThey change published text
SourceItemChange in v0.2
José’s edit 1States; “dead”; caller-is-queue struckState model (three dimensions); dead judged from outside; published “Head is the queue” restored in the text and flagged as Open (D-3)
José’s edit 2Authority marker struckKept: authority: none, other values refused in code
José’s edit 3“Reasoning”; “nothing available” struck; ”???” on budgetAdopted “reasoning”; the strike read as a plan result (D-11); budget exhaustion refuses with partial work not promoted
José’s edit 4“A -help equivalent”RA-02/RA-04: help call returns the capability card
José’s edit 5“Job queue” at runOpen (D-3), zero pending in walk (RA-18)
José’s edit 6“What is EVIDENCE-class record?”Answered in the ground rule, from §1.8
José’s edit 7Abstention ”/ forbidden”Abstention kept epistemic; “forbidden” routed to the doctrine refusal
José’s edit 8“events and/or the requested output”Kept
José’s edit 9RA-01 “human callers”Read as D-1; arm-peer class removed
José’s edit 10RA-02 “find precedent/best practices”A2A task lifecycle
José’s edit 11RA-03 maintenance, dead, fast busyRA-03
José’s edit 12RA-10 “(explain)”Explained in RA-10
José’s edit 13RA-12 “debatable… transactional”RA-12, RA-17: only validated deliverables are published
José’s edit 14RA-13 five struck, “as identified”Closed list of four (RA-13)
José’s edit 15RA-14 four states, maintenance?Four outcomes; maintenance is availability
José’s edit 16RA-15 acknowledgement of missing citations; plain endpointno_source marker; unclassified marker on completions
José’s edit 17RA-20 “(explain)”Explained in RA-20
ReviewCaller identity vs authenticationRA-06
ReviewCompletion as a governance bypassRA-15, RA-20, RA-44
ReviewAnchor check overclaimsRA-23 validation ladder
ReviewQueue semanticsRA-18, D-3
ReviewTransactional publicationRA-17
ReviewLedger and retentionRA-41, RA-47
ReviewReviewer memory limitRA-33
ReviewPrompt cache layoutRA-35
ReviewPlanted-error fixturesRA-36
ReviewSame-subnet bypass of the BeakRA-40
ReviewCompletion starved by jobsRA-52
ReviewOTel field namesRA-41
DeclinedExplain restating values with after-the-fact validationKept fail-closed slots
DeclinedMeta Muse: revert “events and/or the requested output”, keep the authority edits softened, keep all five refusalsKept your wording on the first; kept authority: none; adopted a closed list of four with infeasible as a plan result
Sent elsewhereha_control allow-list fails open; verify lost on a Home Assistant restart; service-channel confirmationSensory Arm backlog (already in the 2 Nov record)
RejectedGemini’s build plan (“asynchronous completions”; planning bound to Head transitions)Contradicts the synchronous completion door and Option C

For more Pepa terms refer to the Pepa Glossary

ShortSpelled out
A2AAgent2Agent protocol — vocabulary and task lifecycle, not its transport
EPCEvent-driven process chain
FIFOFirst in, first out
JSONLJSON Lines
LXCLinux container, as run on Proxmox
MCPModel Context Protocol
OTelOpenTelemetry
PRA, PSAPepa Reasoning Arm, Pepa Sensory Arm
RA-nn(R)easoning (A)rm feature IDs
RV3, RV4Reasoning Arm versions in the PRA Version History
VLANVirtual local area network