VISKA-AUTORESEARCH phase-3·operator decisions log·13 decisions resolved 2026-05-25
hermes research 8 decided 5 deferred Live operator walkthrough · Stage-1 architecture lock · D9 ADOPT hermes-agent confirmed

Viska-Autoresearch — Operator Decisions Log

Recorded live during phase-3 decision walkthrough (2026-05-25).

Source reports: - REPORT.md (phase 1) — D1–D8 - REPORT-PHASE2.md (phase 2) — D9–D13


Resolution Summary (2026-05-25)

# Decision Status Resolution
D9 Adopt hermes-agent ✅ DECIDED Adopt under 5 mandatory guardrails
D3 Anthropic ZDR active? 🔒 DEFERRED Out of scope; assume no until confirmed
D11 Skill install trust ceiling ✅ DECIDED Pantheon-authored only + strict isolation
D10 Sandbox posture ✅ DECIDED Hardened Docker Compose stage 1, OpenShell stage 2
D13 Upgrade cadence ✅ DECIDED Review-gated rolling + buffer + revert
D12 Memory provider ✅ DECIDED Two-tier: Holographic (Hermes) + Metis LLM wiki (NEW)
D1 EU data residency 🔒 DEFERRED Viska legal pings; assume no for now
D2 Embedding model ✅ DECIDED Voyage-3-lite primary + bge exploration + OpenAI fallback
D5 Plutus review cadence 🔒 DEFERRED Blocked on T14 (comm-layer design)
D6 Status-column vs namespace ✅ DECIDED (review) Status column both tiers + strict RLS; Metis+Proteus review
D7 Railway IMDS exposure 🔒 DEFERRED T29 probe task added
D8 Nous rate-limit tier ✅ DECIDED Default tier stage 1, scale on telemetry
D4 Stage-2 trigger criteria 🔒 DEFERRED Broad instrumentation stage 1, decide at transition

Tally: 8 decided, 5 deferred. None blocking stage-1 architecture lock.

Companion principles surfaced: - "Keep costs low for implementation phase, only scale ops and costs once proven" (D8) - "We can afford to take the time to ship this properly" (D12) - "Strict isolation and security restrictions on this agent" (D11)

New phase-3 tasks introduced by decisions: - T24 — Metis LLM-wiki design (from D12) - T25 — Synthesis pipeline spec (from D12) - T26 — Hermes ↔ staging access boundary (from D12) - T27 — Mastra read path (from D12) - T28 — Self-hosted bge feasibility on Railway (from D2) - T29 — Railway IMDS exposure probe (from D7) - T30 — Stage-1 telemetry schema (from D4)

Pending handoffs: - Operator → Viska legal: D1 GDPR/EU residency question - Operator → Anthropic console/sales: D3 ZDR contract verification - Hermes → Metis: D6 wiki tier schema review, D12 LLM-wiki architecture handoff - Hermes → Proteus: D6 viska-research RLS + role provisioning review


D9 · Adopt hermes-agent

Answer: ADOPT (operator, 2026-05-25)

Adoption under 5 mandatory guardrails per REPORT-PHASE2.md §"5 guardrails": 1. Pin to v2026.5.16 (v0.14.0) 2. OS-level sandbox (D10 selects which) 3. Pantheon-authored skills only (D11) 4. Mirror fork 5. Accept 4–8 week hook half-life

Gates D10, D11, D12, D13 active.


D3 · Anthropic ZDR active on Pantheon account?

Answer: DEFERRED — out of scope for this arc (operator, 2026-05-25)

Flagged for later. Treat as "unknown" until confirmed. Working assumption pre-resolution: route Plutus review LLM through OpenRouter ZDR-filtered provider, not direct Anthropic. Revisit before stage-1 go-live.


D11 · Skill install trust ceiling

Answer: PANTHEON-AUTHORED ONLY (operator, 2026-05-25)

Operator directive: "strict isolation and security restrictions on this agent." Maps to most-restrictive option.

Enforcement: - Block agentskills.io network reach at Envoy egress allowlist (T6 item). - CI signature gate at Hades layer — only Pantheon-signed skills install. - No community skills, no Nous-bundled skills outside Pantheon-reviewed subset. - Re-author the ~10 hardening skills (T6 plugin list) under Pantheon namespace. - Any Nous-bundled skill we want must be forked into Pantheon-mirror first, reviewed, signed, then loaded.


D10 · Sandbox posture

Answer: HARDENED DOCKER COMPOSE (stage 1) (operator, 2026-05-25)

Ship-fastest path. Use Nous-shipped Compose config + Hades tightening pass (~1–2 days). Defer NVIDIA OpenShell to stage 2 (post stage-1 stable + Railway-feasibility spike).

Stage-1 hardening checklist (Hades-owned): - read_only: true rootfs - cap_drop: [ALL], selective cap_add - Non-root UID - tmpfs for /tmp, no host bind mounts - Network namespace isolated from other Railway services - Resource limits (memory, pids, cpu) - No /var/run/docker.sock exposure

Tension with D11 strictness flagged: D11 = max-restrictive skill ceiling, D10 = baseline sandbox. Acceptable stage 1 because skill ceiling already collapses the dominant code-injection vector. Stage-2 OpenShell tightens the residual.


D13 · Upgrade cadence

Answer: REVIEW-GATED ROLLING with buffer + revert (operator, 2026-05-25)

Not a fixed clock cadence. Each upstream release reviewed; merge only after Pantheon plugin re-test passes. Buffer + revert path mandatory.

Process requirements: - Mirror fork (guardrail #4) is the merge surface. No direct upstream auto-pull. - Buffer period: new upstream tag soaks N days (TBD, suggest 7d) before review starts. Skips week-of churn. - Plugin re-test gate: all 10 Pantheon hardening plugins must pass on candidate tag before merge to production fork branch. - Easy revert: keep last-known-good tag pinned in Railway config. Revert = single env-var bump + redeploy. No DB migrations coupled to Hermes upgrades (enforce at schema-design layer). - Audit trail: every upgrade reviewed against upstream changelog + commit diff. Hades captures changelog summary + risk flag per release.

Effective velocity expected: ~monthly under normal conditions, accelerated for security-flagged releases, paused indefinitely if upstream breaks plugin contract.

Operator gate: each merge requires explicit operator sign-off (no auto-merge from review pass alone).


D12 · Memory provider

Answer: TWO-TIER — Holographic for Hermes working memory + new Metis-owned LLM wiki for client research data (operator, 2026-05-25)

Architectural decision beyond pure provider pick. Splits state into two distinct surfaces:

Tier 1 — Hermes agent working memory

Tier 2 — Client research LLM wiki (NEW component)

Implications + follow-ups

New follow-up research tasks (add to phase-3 candidate list)


D1 · EU data residency required for Viska?

Answer: DEFERRED TO VISKA LEGAL — working assumption NO (operator, 2026-05-25)

Route question to Viska legal counsel before stage-1 go-live. Working assumption pre-resolution: not required → OpenRouter US routing acceptable, Supabase US region acceptable.

Pre-resolution stance: - Stage-1 architecture proceeds on US-routing assumption. - PII tokenization plugin (T6/T12) becomes more important — if tokenization strips identifiers before LLM call, GDPR Article 44 transfer concern likely moot regardless of legal answer. - Reversal path: if legal returns "yes, EU required" → OpenRouter Enterprise EU + Supabase region migration. Schema-design rule: avoid hard region coupling stage 1 so migration is feasible.

Open follow-up: handoff to operator → Viska legal pings. Hermes session cannot escalate directly.


D2 · Embedding model

Answer: VOYAGE-3-LITE primary, SELF-HOSTED bge exploration, OPENAI-3-small fallback (operator, 2026-05-25)

Three-tier embedding strategy. Scope: Metis LLM wiki (Tier 2 from D12). Hermes Tier 1 memory unaffected.

Primary: Voyage-3-lite

Exploration: self-hosted bge-large-en-v1.5

Fallback: OpenAI text-embedding-3-small

Implementation notes

New follow-up research task


D5 · Plutus review cron cadence

Answer: DEFERRED — blocked on T14 (Hermes↔Plutus communication layer design) (operator, 2026-05-25)

Operator correction: Plutus runs as Claude Code session on subscription, NOT API. Phase-2 cost framing ($1650–8200/mo) was wrong premise — per-wake LLM cost effectively bundled in CC subscription quota.

True cost shape (revised): - CC subscription quota consumption (Pantheon plan) - Machine resource occupation (which physical/virtual machine hosts the Plutus session) - Schedule slot availability (CC session concurrency limits per machine) - NOT per-wake dollar cost

Why deferred

Communication layer Hermes ↔ Plutus has not been engineered. Cadence decision depends on delivery mechanism. Open questions blocking D5:

  1. Wake mechanism — how does Hermes notify Plutus that an artifact awaits review? Tmux send-keys, file-drop trigger, Mastra-mediated, Slack DM, war-room cron skill?
  2. Response channel — how does Plutus signal approval/rejection back to Hermes? Same channel reverse, Supabase status-column UPDATE, Slack ack?
  3. Session lifecycle — Plutus always-fresh per wake, or stateful across wakes? Persistent tmux pane vs spawn-per-task?
  4. Machine assignment — which machine hosts Plutus sessions? Machine-awareness rule applies. Currently unknown.
  5. CC subscription concurrency — can one Pantheon subscription sustain market-hours 2-min cadence across all war-rooms? Quota math unknown.
  6. Multi-tenancy — Plutus is shared across war-rooms (multiple Viska + non-Viska clients?). Sharing model TBD.
  7. Failure mode — what if Plutus session unreachable (subscription quota hit, machine offline, CC crash)? Hermes queues + retries, or halts pipeline?
  8. Latency floor — Claude Code session boot + context-load takes seconds to ~minute. 2-min cadence may be physically infeasible per-session.

Action

T14 scope expanded to cover communication-layer design. D5 revisits after T14 lands.

Working assumption pre-resolution: event-driven only (Hermes signals Plutus on artifact-ready, no clock cron) — physically simplest, defers all open questions, lowest CC quota consumption. Trading-grade latency surrendered stage 1; research-grade acceptable per D12 operator note ("we can afford to take time to ship this properly").


D6 · Status-column vs status-namespace on research.signals

Answer: STATUS COLUMN BOTH SURFACES + STRICT RLS — pending Metis + Proteus review (operator, 2026-05-25)

Working decision: status-column pattern on both Hermes staging tier and Metis wiki tier. RLS enforces lifecycle transitions + tier boundaries.

Subject to schema-design review by Metis (wiki tier owner per D12) and Proteus (viska-research Supabase owner per phase-1 T2).

Lifecycle states (working spec)

Hermes staging tier (staging.*): - draft — Hermes writing in progress, not ready - ready_for_synthesis — Hermes signals artifact complete, awaits Metis pickup - synthesized — Metis has consumed, row may be archived/pruned per retention policy - rejected — Plutus or Metis rejected during synthesis review - archived — terminal, soft-delete

Metis wiki tier (wiki.*): - active — current canonical fact/entity - superseded — replaced by newer row (versioning chain via supersedes_id) - archived — soft-delete, retain for audit

RLS requirements (strict)

Review handoff

Filing return-handoffs to: - Metis — wiki tier schema review, retention policy for superseded, versioning chain semantics. - Proteus — viska-research SSOT impact, RLS policy authoring, role provisioning, existing schema integration.

Both reviews complete before T13 (schema migration) executes.


D7 · Container runtime / IMDS exposure on Railway

Answer: DEFERRED — T29 probe task added (operator, 2026-05-25)

Definitive answer requires empirical test inside Railway container, not just docs lookup.

New follow-up research task

Working assumption pre-resolution

Envoy egress sidecar (T11) DENIES 169.254.0.0/16, metadata.*, and all RFC1918 ranges by default. Belt-and-suspenders regardless of T29 outcome.

Threat-model line stays: TM-5 (credential exfil) + TM-7 (IMDS abuse) closed at egress layer even if Railway platform exposes IMDS.


D8 · Nous rate-limit tier

Answer: DEFAULT TIER (180 RPM) stage 1 — scale only after proven (operator, 2026-05-25)

Operator principle: "keep costs low for implementation phase, only scale ops and costs once proven."

Stage-1 stance

Cutover criteria (Default → Ultra)

Reassess Ultra tier ONLY when telemetry shows: - Sustained 429-throttling from Nous Portal across multiple consecutive days, OR - Karpathy loop completion latency degrades past acceptable threshold due to RPM cap, OR - Multi-agent fan-out pattern (parallel Hermes subagents) creates burst exceeding 180 RPM.

Implementation requirement

Companion principle (operator-stated)

"Keep costs low for implementation phase, only scale ops and costs once proven" applies fleet-wide to viska-autoresearch decisions. Bias all open tuning choices toward minimum-viable cost stage 1, scale on telemetry evidence stage 2+.


D4 · Stage-2 trigger criteria for broker creds

Answer: DEFERRED — broad instrumentation during stage 1, decide at stage-1→2 transition (operator, 2026-05-25)

Decision deferred to real-data point rather than picked now from prior. Commits to broad telemetry during stage 1 so any reasonable gate can be evaluated post-hoc.

Stage-1 instrumentation requirements

All of the following captured from day 1 to support stage-2 gate decision later:

Plutus agreement signal: - Every Plutus approval/rejection logged with: artifact ID, decision, confidence, reasoning summary, timestamp. - Operator override events captured separately: artifact ID, original Plutus call, operator final call, delta classification (false-approval / false-rejection / agreement). - Rolling N-day agreement rate computed (N parameterized — 7d, 14d, 30d windows).

Strategy quality signal (requires T18 — backtesting infra): - Every synthesized strategy backtested against historical data. - Capture: Sharpe, max-drawdown, win-rate, sample size, backtest period. - Walk-forward validation if infra supports.

Signal quality signal: - For research signals (pre-strategy): forward-looking accuracy when ground-truth resolves. - Time-to-resolution per signal type.

Pipeline health signal: - Hermes uptime, error rates, plugin failures. - Plutus session availability (D5 communication-layer reliability). - Wiki sync lag (Hermes staging → Metis wiki promotion latency).

Failure-mode catalog: - Every Plutus rejection categorized (operator-driven taxonomy: hallucination, stale data, calc error, etc.) — informs which failure classes block stage 2.

Stage-1→2 decision process

At stage-1 stable mark (TBD weeks post go-live), operator + Hephaistos + Plutus session jointly review telemetry. Stage-2 gate criteria emerge from data, not predetermined.

Companion follow-up tasks

Trade-off accepted

Cost: broad instrumentation adds engineering during stage 1 build. Schema bloat. Storage growth. Benefit: decision-grade telemetry available when stage-2 question lands. No regret over premature criteria lock-in.