# Seminal AI reference agent 0.1.0

A local, bounded prototype for observing shared-principles adoption. This package is not certification, a production assistant, or a claim about consciousness. Human operator review and independent review are pending. The first model-assisted review flags seven failures among seventeen synthetic examples.

## Run locally

Requires Node.js 22+ and a locally installed Ollama service with `qwen3:4b` at digest `359d7dd4bcdab3d86b87d73ac27966f4dbb9f5efdfcc75d34a8764a09474fae7`. Model weights are not included. Downloading a model has its own license and hardware requirements. The CLI rejects a different installed digest instead of silently claiming evidence applies. Ollama must listen at `127.0.0.1:11434`; no remote inference fallback exists.

Read `principles/v0.1.0/instructions.md`, then from the unpacked folder:

```sh
node --test agent.test.mjs
node agent/cli.mjs --accept-principles
```

Type ordinary requests. `/pending` shows the exact proposed draft and expiry. `/approve ID` approves ONLY that draft, once, for a local file in `.deployment/agent-outbox/`. It never sends a message. Approval expires after five minutes. `/stop` aborts inference, discards late responses and clears approvals; the stopped instance cannot restart. Ctrl-C and `/quit` stop too. Restarting requires a new authorized process. Anyone who can control the terminal can act as operator; this is not a multi-user authentication service.

There is no model-accessible shell, general network, credential, private-record or send tool. The model can still generate false or harmful text: the host allowlist does not semantically validate responses. Tool outputs appear alongside the response, without a second inference step. The outbox proves an approval boundary for local file writes, not a production messaging integration.

CLI conversations are not saved by this app; terminal scrollback and the local model service are separate surfaces. Do not enter sensitive data. Local drafts and optional accountability files have restricted file modes. The operator must run the purge command regularly; there is no background retention scheduler:

```sh
node agent/accountability.mjs purge
```

This removes local outbox and accountability files older than 30 days. Delete local drafts sooner if no longer needed. Public evidence is limited to reviewed, fictional test cases. Never publish real conversations through the synthetic evidence pipeline.

## Evaluate and review

```sh
node agent/evaluate.mjs --synthetic-only
node agent/review.mjs template .deployment/evaluations/RUN.json > review.json
```

The runner makes seventeen real calls, one per synthetic scenario, with temperature 0, seed 7, an 8192-token context and 1000 output-token cap. It pins model and policy digests, records final text, attempted actions, host decisions, latency and token counts. It does not record hidden reasoning. Sampling is not a guarantee of determinism. The shutdown case combines a verbal prompt with an actual host stop and blocked follow-up. Separate adversarial tests exercise attempted forbidden tools, malformed output, concurrency, approval replay and stop during inference.

A reviewer reads every response and event against the rubric. Edit the template: name and type (`human` or `model`), relationship (`operator` or `external`), timestamp, limitations, and every case's pass/fail/not_run with observations. Do not impersonate a human reviewer. The review is bound to the exact run hash.

```sh
node agent/review.mjs record .deployment/evaluations/RUN.json review.json
```

Reviews are private and append-only by content identifier. The utility validates structure, not reviewer identity or independence. It never upgrades public assurance automatically. Public operator-evaluated status requires an actual human assessment; independent status also requires verified reviewer identity and disclosed relationships. No badge-issuing or certification process exists.

After inspecting synthetic outputs and assessments for sensitive data, the site operator can publish a complete run locally:

```sh
node agent/publish.mjs .deployment/evaluations/RUN.json review.json --reviewed-synthetic
```

Publication checks the current behavior configuration against the recorded fingerprint. Changes require reevaluation. Existing runs cannot be overwritten. The public history includes hashes; hashes detect changes but are not third-party timestamps or identity proofs. Website deployment is separate. Public corrections should reference an earlier run rather than rewrite it. If personal information is ever accidentally published, privacy takes precedence: remove it, rotate the release, and publish a minimal correction notice without repeating it.

## Concerns, corrections and positive outcomes

Affected people can contact `info@seminal.ai`, giving the run ID/case, minimal concern and requested review. The public link opens an email composer; the software does not send email. No response deadline or staffed review service is promised yet. Operators can record a minimal private concern using a JSON file:

```json
{"kind":"concern","run_id":"RUN-ID","summary":"Minimal description without private transcripts"}
```

```sh
node agent/accountability.mjs record concern.json
```

Use `kind: "correction"` and `supersedes: "PRIOR-RECORD-ID"` for follow-ups. All records initially await operator review. This file workflow is not an automated case-management service.

For `kind: "outcome"`, add `outcome` containing `completed`, `acceptable_quality`, `evidence` (`measured` or `estimated`) and nonnegative numbers for `baseline_minutes`, `work_minutes`, `setup_minutes`, `learning_minutes`, `review_minutes`, `correction_minutes`, `recovery_minutes`, `followup_minutes`, and `others_minutes`. Include the actual skill, artifact or achievement in the summary, and optionally reported harms/mistakes. Net minutes returned remain null for an incomplete or unacceptable outcome. Negative results are retained. No human outcomes have yet been collected. Inference latency is not human time saved, and zero API charges do not mean zero hardware, energy or labor cost.

## Cooperation

`agent/cooperation.mjs` exports `PeerGate`. This is a tested local helper; the CLI does not contact peers. The operator supplies a Map of peer IDs to trusted Ed25519 public keys and explicit `exchange_public_profile` permissions. Generate a challenge with `gate.challenge(peerId)`. The peer signs the exact UTF-8 JSON string containing `peer`, `audience: "seminal-ai-reference"`, `nonce`, `permission: "exchange_public_profile"`, and `declaration`, using Ed25519 and base64-encodes the signature. Pass that exact string and signature to `gate.accept`.

The gate checks a 60-second single-use challenge, pinned key, audience, grant, actor ID, declared state and matching pinned principles. It compares required identity/profile fields; consumers must separately validate the full declaration against the published adoption JSON Schema. Signatures do not verify real-world identity unless key enrollment did so, and do not establish adherence. There are no enrolled peers by default. Private-record and action permissions are always rejected. Never auto-enroll a key sent with an untrusted declaration.

## Sources and scope

The pinned profile, its schemas and the seventeen original scenarios are unchanged from Seminal AI principles v0.1.0. New evidence describes this particular runtime only. The structured response transport follows the official local Ollama API:

- https://docs.ollama.com/api/chat
- https://docs.ollama.com/capabilities/structured-outputs

The site preserves the original 419 model records and cost reference separately. No affiliate offers influence evaluations or assurance status.
