Huginn/schemas/cultnet/huginn.mind_request.v1.schema.json
Eureka e939d246b8 Source query takes texts: wire field, door and published schemas
SourceQuery gains `texts` (one to eight, SOURCE_TEXTS_MAX) beside the
transitional `text`; check() refuses neither, both, more than eight and blank
entries, naming `texts`. SourceHit.score documents cosine versus reciprocal-rank
sum. Published request and response schemas regenerated. Cut
gamecult-chat:cut_spec:cut-source-query-texts.r1, commit 1.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 15:59:52 +00:00

3243 lines
No EOL
82 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "HuginnMindRequest",
"description": "Every operation a mind answers. `Admit` carries the batch whole because the\nbatch already names the instance and the asker; a second `instance` beside\nit would be two declarations. Every read names the instance because ruling\n14 refuses another mind's identity whatever the transport, and a read of\nthe wrong mind is that same collision on the read side. `Whoami` names\nnone: it is how a client learns which mind it reached.",
"oneOf": [
{
"type": "string",
"enum": [
"Whoami"
]
},
{
"type": "object",
"properties": {
"Admit": {
"$ref": "#/$defs/PipelineAdmissionBatch"
}
},
"additionalProperties": false,
"required": [
"Admit"
]
},
{
"type": "object",
"properties": {
"View": {
"type": "object",
"properties": {
"id": {
"$ref": "#/$defs/PipelineRef"
},
"instance": {
"$ref": "#/$defs/Slug"
}
},
"required": [
"instance",
"id"
]
}
},
"additionalProperties": false,
"required": [
"View"
]
},
{
"type": "object",
"properties": {
"Query": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/$defs/Slug"
},
"selection": {
"$ref": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.selection.schema.json"
},
"semantic": {
"anyOf": [
{
"$ref": "#/$defs/SemanticQuery"
},
{
"type": "null"
}
]
}
},
"required": [
"instance",
"selection"
]
}
},
"additionalProperties": false,
"required": [
"Query"
]
},
{
"description": "The mind's persona document, if one is stored.",
"type": "object",
"properties": {
"PersonaGet": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/$defs/Slug"
}
},
"required": [
"instance"
]
}
},
"additionalProperties": false,
"required": [
"PersonaGet"
]
},
{
"description": "Replaces the mind's persona document whole. `expected_updated_at` is\nthe stored document's `updatedAt`, none for the first put. The\nprovenance is the asker's, as for `Admit`.",
"type": "object",
"properties": {
"PersonaPut": {
"type": "object",
"properties": {
"expected_updated_at": {
"type": [
"string",
"null"
]
},
"instance": {
"$ref": "#/$defs/Slug"
},
"provenance": {
"$ref": "#/$defs/PipelineProvenance"
},
"state": true
},
"required": [
"instance",
"provenance",
"state"
]
}
},
"additionalProperties": false,
"required": [
"PersonaPut"
]
},
{
"description": "Semantic search over the source index: the public forge repos' code and\ndocs, which no mind holds. The daemon embeds the text and asks the\nindex it does not write.",
"type": "object",
"properties": {
"SearchSources": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/$defs/Slug"
},
"query": {
"$ref": "#/$defs/SourceQuery"
}
},
"required": [
"instance",
"query"
]
}
},
"additionalProperties": false,
"required": [
"SearchSources"
]
},
{
"description": "What others did in `repos` on the forge since the `after` cursor: the\ndaemon reads the forge and no document of the mind, and answers\n`Refused(Unavailable)` when it has no forge or the forge does not answer\nin time. The repos are the asker's to name (her stewardships); the\ninstance's own login is dropped from the answer.",
"type": "object",
"properties": {
"StewardedActivity": {
"type": "object",
"properties": {
"after": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"instance": {
"$ref": "#/$defs/Slug"
},
"repos": {
"type": "array",
"items": {
"$ref": "#/$defs/OrgRepo"
}
}
},
"required": [
"instance",
"repos"
]
}
},
"additionalProperties": false,
"required": [
"StewardedActivity"
]
},
{
"description": "Every root the mind holds a document under, with its newest admission and a campaign's repos in force: the mind's own\nrecords, one pass at the head.",
"type": "object",
"properties": {
"RootsTouched": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/$defs/Slug"
}
},
"required": [
"instance"
]
}
},
"additionalProperties": false,
"required": [
"RootsTouched"
]
}
],
"$defs": {
"AuthorityMap": {
"type": "object",
"properties": {
"deletion_line": {
"$ref": "#/$defs/Line"
},
"derived_state": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
},
"forbidden_writers": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
},
"inputs": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
},
"outputs": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
},
"owner": {
"$ref": "#/$defs/Line"
},
"shared_paths": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
}
},
"required": [
"owner",
"inputs",
"outputs",
"derived_state",
"forbidden_writers",
"shared_paths",
"deletion_line"
]
},
"ClaimOutcome": {
"type": "string",
"enum": [
"Holds",
"Falsified",
"Unproven"
]
},
"CodeLocation": {
"type": "object",
"properties": {
"end_line": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0
},
"line": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"path": {
"$ref": "#/$defs/Short"
},
"symbol": {
"anyOf": [
{
"$ref": "#/$defs/Symbol"
},
{
"type": "null"
}
]
}
},
"required": [
"path",
"line"
]
},
"CommitRange": {
"type": "object",
"properties": {
"base": {
"$ref": "#/$defs/Sha"
},
"head": {
"$ref": "#/$defs/Sha"
}
},
"required": [
"base",
"head"
]
},
"CutDelete": {
"type": "object",
"properties": {
"lines": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"note": {
"$ref": "#/$defs/Line"
},
"path": {
"$ref": "#/$defs/Short"
}
},
"required": [
"path",
"lines",
"note"
]
},
"CutVerification": {
"type": "object",
"properties": {
"builds": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 64
},
"negative": {
"type": "array",
"items": {
"$ref": "#/$defs/NegativeCheck"
},
"maxItems": 64
},
"operator": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 64
},
"tests": {
"type": "array",
"items": {
"$ref": "#/$defs/VerificationTest"
},
"maxItems": 64
}
},
"required": [
"builds",
"tests",
"negative",
"operator"
]
},
"Date": {
"description": "A calendar date, `YYYY-MM-DD`.",
"type": "string",
"maxLength": 10
},
"DeskAuthority": {
"type": "string",
"enum": [
"Operator",
"Steward",
"Member"
]
},
"DeskOutcome": {
"description": "The one tagged outcome of a desk answer. A retraction is a variant, so a\nretraction without a target and a target without a retraction cannot be\nstored. `of` and `retracts` name desk answers by answer id (the record key).",
"oneOf": [
{
"description": "The answer that counts for its fork when it was admitted.",
"type": "string",
"const": "Counted"
},
{
"description": "A later passing answer, kept visible; `of` is the counted answer it followed.",
"type": "object",
"properties": {
"Revision": {
"type": "object",
"properties": {
"of": {
"$ref": "#/$defs/Short"
}
},
"required": [
"of"
]
}
},
"additionalProperties": false,
"required": [
"Revision"
]
},
{
"type": "object",
"properties": {
"Retraction": {
"type": "object",
"properties": {
"retracts": {
"$ref": "#/$defs/Short"
}
},
"required": [
"retracts"
]
}
},
"additionalProperties": false,
"required": [
"Retraction"
]
},
{
"description": "A request the desk would not count, kept with what it was sent with. `retracts` is the\ntarget a refused retraction named, as sent and unchecked (it may name no answer at all);\nit is `None` on a refused answer, and it is never a citation.",
"type": "object",
"properties": {
"Refused": {
"type": "object",
"properties": {
"code": {
"$ref": "#/$defs/DeskRefusal"
},
"retracts": {
"anyOf": [
{
"$ref": "#/$defs/Short"
},
{
"type": "null"
}
]
}
},
"required": [
"code"
]
}
},
"additionalProperties": false,
"required": [
"Refused"
]
}
]
},
"DeskRefusal": {
"type": "string",
"enum": [
"StaleFork",
"NotADecider",
"ForkClosed",
"ChoiceInvalid",
"BadRetraction",
"AlreadyRetracted"
]
},
"Deviation": {
"type": "object",
"properties": {
"what": {
"$ref": "#/$defs/Line"
},
"why": {
"$ref": "#/$defs/Line"
}
},
"required": [
"what",
"why"
]
},
"DocRef": {
"type": "object",
"properties": {
"commit": {
"$ref": "#/$defs/Sha"
},
"end_line": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"path": {
"$ref": "#/$defs/Short"
},
"start_line": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"path",
"start_line",
"end_line",
"commit"
]
},
"Evidence": {
"type": "object",
"properties": {
"kind": {
"$ref": "#/$defs/EvidenceKind"
},
"locator": {
"$ref": "#/$defs/Line"
},
"result": {
"$ref": "#/$defs/Line"
}
},
"required": [
"kind",
"locator",
"result"
]
},
"EvidenceKind": {
"type": "string",
"enum": [
"Command",
"Test",
"Mutation",
"Probe",
"SourceRead",
"Capture"
]
},
"Faculty": {
"description": "Which faculty a batch was admitted as. Attribution, not authority\n(ruling 18): no admission rule trusts it, and Cut 9's views read it back\nfrom the receipt. `Member` and `Steward` name a desk answerer who is neither the\noperator nor a faculty; they confer no admission right anywhere (a test admits a\nbatch under each and checks the outcomes match).",
"type": "string",
"enum": [
"SelfFaculty",
"Imagination",
"Hands",
"Soul",
"Life",
"Eyes",
"Operator",
"Member",
"Steward"
]
},
"FileChange": {
"type": "object",
"properties": {
"change": {
"$ref": "#/$defs/Line"
},
"location": {
"$ref": "#/$defs/CodeLocation"
}
},
"required": [
"location",
"change"
]
},
"FindingConfidence": {
"type": "string",
"enum": [
"Confirmed",
"Plausible"
]
},
"FindingOrigin": {
"type": "string",
"enum": [
"Introduced",
"PreExisting"
]
},
"FindingSeverity": {
"type": "string",
"enum": [
"Blocker",
"High",
"Medium",
"Low"
]
},
"ForeignRef": {
"description": "A citation of a document in another repo's pipeline store (D6).",
"type": "object",
"properties": {
"commit": {
"$ref": "#/$defs/FullSha"
},
"id": {
"$ref": "#/$defs/Short"
},
"kind": {
"$ref": "#/$defs/PipelineKind"
},
"payload_sha256": {
"$ref": "#/$defs/Sha256Hex"
},
"repo": {
"$ref": "#/$defs/OrgRepo"
}
},
"required": [
"repo",
"commit",
"kind",
"id",
"payload_sha256"
]
},
"FullSha": {
"description": "A full git commit id: exactly 40 lowercase hex characters.",
"type": "string",
"maxLength": 40
},
"ImportSource": {
"description": "The receipt a batch replays and the mind it came from: a quotation of the source receipt, which\nstays the primary record. `faculty`, `agent`, `session` and `tool` are the source's, the batch's\nown being the importer's. `external` lists the referents the batch cites that this mind does not\nhold and does not import: each is treated as in force and nothing reads its content.",
"type": "object",
"properties": {
"agent": {
"$ref": "#/$defs/Short"
},
"committed_at": {
"$ref": "#/$defs/Short"
},
"external": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 256
},
"faculty": {
"$ref": "#/$defs/Faculty"
},
"instance": {
"$ref": "#/$defs/Slug"
},
"ordinal": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"receipt_id": {
"$ref": "#/$defs/Short"
},
"session": {
"$ref": "#/$defs/Short"
},
"tool": {
"$ref": "#/$defs/Short"
}
},
"required": [
"instance",
"receipt_id",
"ordinal",
"committed_at",
"faculty",
"agent",
"session",
"tool",
"external"
]
},
"Label": {
"description": "A key label: `[A-Za-z0-9_-]{1,64}`.",
"type": "string",
"maxLength": 64
},
"LandedName": {
"description": "A name the cut landed, and where it lives.",
"type": "object",
"properties": {
"name": {
"$ref": "#/$defs/Short"
},
"path": {
"$ref": "#/$defs/Short"
}
},
"required": [
"name",
"path"
]
},
"Line": {
"description": "Text of at most 1,000 UTF-8 bytes.",
"type": "string",
"maxLength": 1000
},
"MemoryOrigin": {
"description": "Where a Persona turn's batch came from and whom she heard it from: a\nmemory's origin and a brief's. The organ derives it from the batch of the\nturn; the model never writes it.\n`about` names whom a memory concerns, this names the room and the voices.",
"oneOf": [
{
"description": "A turn in rooms: their aliases comma-joined, and the batch's other senders.",
"type": "object",
"properties": {
"Room": {
"type": "object",
"properties": {
"heard_from": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
},
"rooms": {
"$ref": "#/$defs/Short"
}
},
"required": [
"rooms",
"heard_from"
]
}
},
"additionalProperties": false,
"required": [
"Room"
]
},
{
"description": "A direct message: the DM's room id, and the others who spoke in it (whom\nshe heard it from in confidence).",
"type": "object",
"properties": {
"Direct": {
"type": "object",
"properties": {
"room": {
"$ref": "#/$defs/Short"
},
"with": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
}
},
"required": [
"room",
"with"
]
}
},
"additionalProperties": false,
"required": [
"Direct"
]
},
{
"description": "A wake: no one spoke.",
"type": "string",
"const": "Wake"
},
{
"description": "A Self run of hers, by its label.",
"type": "object",
"properties": {
"SelfRun": {
"type": "object",
"properties": {
"run": {
"$ref": "#/$defs/Short"
}
},
"required": [
"run"
]
}
},
"additionalProperties": false,
"required": [
"SelfRun"
]
},
{
"description": "Her Sleep run, by its label: a memory she formed in her night.",
"type": "object",
"properties": {
"Sleep": {
"type": "object",
"properties": {
"run": {
"$ref": "#/$defs/Short"
}
},
"required": [
"run"
]
}
},
"additionalProperties": false,
"required": [
"Sleep"
]
}
]
},
"MemorySort": {
"type": "string",
"enum": [
"Asked",
"Decided",
"Committed",
"Learned",
"Did",
"Idea",
"Rapport"
]
},
"MutationRecord": {
"description": "One mutation a report ran: a key-safe label a verdict claim can name,\nthe exact edit, and the tree it was applied to.",
"type": "object",
"properties": {
"after": {
"$ref": "#/$defs/Line"
},
"before": {
"$ref": "#/$defs/Line"
},
"commit": {
"$ref": "#/$defs/Sha"
},
"failed_as_expected": {
"type": "boolean"
},
"label": {
"$ref": "#/$defs/Label"
},
"location": {
"$ref": "#/$defs/CodeLocation"
},
"rule": {
"$ref": "#/$defs/Line"
}
},
"required": [
"label",
"rule",
"location",
"before",
"after",
"commit",
"failed_as_expected"
]
},
"NegativeCheck": {
"type": "object",
"properties": {
"pattern": {
"$ref": "#/$defs/Short"
},
"scope": {
"$ref": "#/$defs/Line"
}
},
"required": [
"pattern",
"scope"
]
},
"OrgRepo": {
"description": "A GitHub repository as `Org/Repo`, at most 140 UTF-8 bytes (39 + 1 +\n100). The owner is 1 to 39 `[A-Za-z0-9-]` bytes with no leading or\ntrailing hyphen; the repo is 1 to 100 `[A-Za-z0-9._-]` bytes, is never\n`.` or `..`, and does not end in `.git`, ASCII-case-insensitively.\nIdentity is case-insensitive: `GameCult/Epiphany` and `gamecult/epiphany`\nare the same repository.",
"type": "string",
"maxLength": 140
},
"Para": {
"description": "Text of at most 4,000 UTF-8 bytes; longer narrative is cited by `DocRef`.",
"type": "string",
"maxLength": 4000
},
"PipelineAdmissionBatch": {
"description": "One admission request: the mind it is for, who asks, and the documents.\nRides the wire whole (`wire::HuginnMindRequest::Admit`).",
"type": "object",
"properties": {
"documents": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineDocument"
}
},
"instance": {
"$ref": "#/$defs/Slug"
},
"provenance": {
"$ref": "#/$defs/PipelineProvenance"
}
},
"required": [
"instance",
"provenance",
"documents"
]
},
"PipelineCampaign": {
"type": "object",
"properties": {
"repos": {
"type": "array",
"items": {
"$ref": "#/$defs/OrgRepo"
},
"maxItems": 8
},
"slug": {
"$ref": "#/$defs/Slug"
},
"target_doc": {
"$ref": "#/$defs/DocRef"
},
"title": {
"$ref": "#/$defs/Title"
},
"working_branch": {
"$ref": "#/$defs/Short"
}
},
"required": [
"slug",
"title",
"repos",
"working_branch",
"target_doc"
]
},
"PipelineCutReport": {
"type": "object",
"properties": {
"attempt": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"branch": {
"$ref": "#/$defs/Short"
},
"campaign": {
"$ref": "#/$defs/Slug"
},
"commits": {
"type": "array",
"items": {
"$ref": "#/$defs/ReportCommit"
},
"maxItems": 128
},
"cut_spec": {
"$ref": "#/$defs/Short"
},
"deviations": {
"type": "array",
"items": {
"$ref": "#/$defs/Deviation"
},
"maxItems": 32
},
"forks": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
},
"landed_names": {
"type": "array",
"items": {
"$ref": "#/$defs/LandedName"
},
"maxItems": 128
},
"mutations": {
"type": "array",
"items": {
"$ref": "#/$defs/MutationRecord"
},
"maxItems": 64
},
"promises": {
"type": "array",
"items": {
"$ref": "#/$defs/Promise"
},
"maxItems": 64
},
"range": {
"$ref": "#/$defs/CommitRange"
},
"repo": {
"$ref": "#/$defs/OrgRepo"
},
"structural_delta": {
"$ref": "#/$defs/StructuralDelta"
},
"undone": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 32
},
"verification": {
"type": "array",
"items": {
"$ref": "#/$defs/Evidence"
},
"maxItems": 64
}
},
"required": [
"campaign",
"cut_spec",
"attempt",
"repo",
"branch",
"commits",
"range",
"verification",
"mutations",
"deviations",
"forks",
"structural_delta",
"landed_names",
"undone",
"promises"
]
},
"PipelineCutSpec": {
"type": "object",
"properties": {
"adds": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 64
},
"authority_map": {
"anyOf": [
{
"$ref": "#/$defs/AuthorityMap"
},
{
"type": "null"
}
]
},
"base": {
"$ref": "#/$defs/Sha"
},
"branch": {
"$ref": "#/$defs/Short"
},
"campaign": {
"$ref": "#/$defs/Slug"
},
"cut": {
"$ref": "#/$defs/Label"
},
"deletes": {
"type": "array",
"items": {
"$ref": "#/$defs/CutDelete"
},
"maxItems": 64
},
"depends_on": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
},
"estimate": {
"$ref": "#/$defs/StructuralDelta"
},
"file_changes": {
"type": "array",
"items": {
"$ref": "#/$defs/FileChange"
},
"maxItems": 256
},
"first": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
},
"keeps_moves": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 64
},
"questions": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 16
},
"reads": {
"type": "array",
"items": {
"$ref": "#/$defs/ReadAnchor"
},
"maxItems": 16
},
"repo": {
"$ref": "#/$defs/OrgRepo"
},
"revision": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"rulings": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 32
},
"title": {
"$ref": "#/$defs/Title"
},
"verification": {
"$ref": "#/$defs/CutVerification"
}
},
"required": [
"campaign",
"cut",
"revision",
"title",
"repo",
"branch",
"base",
"depends_on",
"first",
"deletes",
"keeps_moves",
"adds",
"file_changes",
"verification",
"estimate",
"rulings",
"questions"
]
},
"PipelineDeskAnswer": {
"description": "One answer the fork desk's receiver passed to the Mind, refused ones included.\n`answerer` and `authority` (an attribution, never a decision) are stamped by the\nMind from the verified caller and are absent from the request type; `answered_at`\nis the client's claim kept as written, display only: order is `sequence`, the\nreceiver's order. `received_at` is the Mind's admission time (UTC) and\n`claim_in_future` is set when `answered_at` is more than five minutes after it.\n`request_id` is the client's retry token and `body_sha256` the digest of the\nrequest it came with: the pair that makes a retry the same answer, never a new\none; the key is `(answerer, request_id)`. A record holds no card: a replayed\n`stale_fork` is shown the current card. `sequence` is per question and is the\nlast part of the key (the answer id). `choice`, `note` and (for a retraction) the\ntarget are kept as sent whether the request was counted or refused, so a refused\n`choice_invalid` keeps a choice that is no option label; which answer counts now is\nderived by the reader, never stored here.",
"type": "object",
"properties": {
"answered_at": {
"$ref": "#/$defs/Short"
},
"answerer": {
"$ref": "#/$defs/Short"
},
"authority": {
"$ref": "#/$defs/DeskAuthority"
},
"body_sha256": {
"$ref": "#/$defs/Sha256Hex"
},
"campaign": {
"$ref": "#/$defs/Slug"
},
"choice": {
"anyOf": [
{
"$ref": "#/$defs/Short"
},
{
"type": "null"
}
]
},
"claim_in_future": {
"type": "boolean"
},
"fork": {
"$ref": "#/$defs/Short"
},
"note": {
"anyOf": [
{
"$ref": "#/$defs/Words"
},
{
"type": "null"
}
]
},
"options_hash": {
"$ref": "#/$defs/Sha256Hex"
},
"outcome": {
"$ref": "#/$defs/DeskOutcome"
},
"received_at": {
"$ref": "#/$defs/Short"
},
"request_id": {
"$ref": "#/$defs/RequestId"
},
"sequence": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"campaign",
"fork",
"sequence",
"options_hash",
"answered_at",
"received_at",
"claim_in_future",
"request_id",
"body_sha256",
"answerer",
"authority",
"outcome"
]
},
"PipelineDocument": {
"description": "The envelope enum, adjacently tagged on the kind name: a document\non a wire is `{ kind, value }`, and `kind` is exactly what\n`PipelineKind::name()` returns, so a reader dispatches on the kind\nsegment it already knows from the key and needs no second registry\nmapping variant spellings to kinds. Adjacent rather than internal\nbecause a value is a named map of its own and an internal tag would\nhave to be merged into it; the tag stays beside the value instead.\nThis is not a published schema: `schemas/cultnet` publishes the\neighteen per-kind value documents, and the envelope is the wire's\nshape, not a document's.",
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "campaign"
},
"value": {
"$ref": "#/$defs/PipelineCampaign"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "target"
},
"value": {
"$ref": "#/$defs/PipelineTarget"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "question"
},
"value": {
"$ref": "#/$defs/PipelineQuestion"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "ruling"
},
"value": {
"$ref": "#/$defs/PipelineRuling"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "cut_spec"
},
"value": {
"$ref": "#/$defs/PipelineCutSpec"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "cut_report"
},
"value": {
"$ref": "#/$defs/PipelineCutReport"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "verdict"
},
"value": {
"$ref": "#/$defs/PipelineVerdict"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "finding"
},
"value": {
"$ref": "#/$defs/PipelineFinding"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "follow_up"
},
"value": {
"$ref": "#/$defs/PipelineFollowUp"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "resolution"
},
"value": {
"$ref": "#/$defs/PipelineResolution"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "instance"
},
"value": {
"$ref": "#/$defs/PipelineInstance"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "stewardship"
},
"value": {
"$ref": "#/$defs/PipelineStewardship"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "hand_off"
},
"value": {
"$ref": "#/$defs/PipelineHandOff"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "run"
},
"value": {
"$ref": "#/$defs/PipelineRun"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "pulse"
},
"value": {
"$ref": "#/$defs/PipelinePulse"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "memory"
},
"value": {
"$ref": "#/$defs/PipelineMemory"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "research"
},
"value": {
"$ref": "#/$defs/PipelineResearch"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "idea"
},
"value": {
"$ref": "#/$defs/PipelineIdea"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "reply"
},
"value": {
"$ref": "#/$defs/PipelineReply"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "thought"
},
"value": {
"$ref": "#/$defs/PipelineThought"
}
},
"required": [
"kind",
"value"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "desk_answer"
},
"value": {
"$ref": "#/$defs/PipelineDeskAnswer"
}
},
"required": [
"kind",
"value"
]
}
]
},
"PipelineFinding": {
"type": "object",
"properties": {
"campaign": {
"$ref": "#/$defs/Slug"
},
"claim": {
"$ref": "#/$defs/Line"
},
"confidence": {
"$ref": "#/$defs/FindingConfidence"
},
"evidence": {
"type": "array",
"items": {
"$ref": "#/$defs/Evidence"
},
"maxItems": 16
},
"failure_scenario": {
"$ref": "#/$defs/Para"
},
"invariants": {
"type": "array",
"items": {
"$ref": "#/$defs/Label"
},
"maxItems": 8
},
"label": {
"$ref": "#/$defs/Label"
},
"locations": {
"type": "array",
"items": {
"$ref": "#/$defs/CodeLocation"
},
"maxItems": 16
},
"origin": {
"$ref": "#/$defs/FindingOrigin"
},
"precedents": {
"type": "array",
"items": {
"$ref": "#/$defs/ForeignRef"
},
"maxItems": 8
},
"range": {
"$ref": "#/$defs/CommitRange"
},
"severity": {
"$ref": "#/$defs/FindingSeverity"
},
"verdict": {
"$ref": "#/$defs/Short"
}
},
"required": [
"campaign",
"verdict",
"label",
"range",
"confidence",
"severity",
"claim",
"invariants",
"locations",
"failure_scenario",
"evidence",
"precedents",
"origin"
]
},
"PipelineFollowUp": {
"description": "A follow-up. `origin` is where the Persona turn that admitted it was\nasked, as the organ derived it: a brief records the conversation whose\nmessage started it. Absent on follow-ups no Persona turn admitted and\non briefs admitted before it existed.",
"type": "object",
"properties": {
"campaign": {
"$ref": "#/$defs/Slug"
},
"item": {
"$ref": "#/$defs/Line"
},
"label": {
"$ref": "#/$defs/Label"
},
"locations": {
"type": "array",
"items": {
"$ref": "#/$defs/CodeLocation"
},
"maxItems": 16
},
"origin": {
"anyOf": [
{
"$ref": "#/$defs/MemoryOrigin"
},
{
"type": "null"
}
]
},
"owner": {
"$ref": "#/$defs/Short"
},
"repo": {
"$ref": "#/$defs/OrgRepo"
},
"source": {
"$ref": "#/$defs/PipelineRef"
},
"why_it_can_wait": {
"$ref": "#/$defs/Line"
}
},
"required": [
"campaign",
"label",
"source",
"repo",
"locations",
"item",
"why_it_can_wait",
"owner"
]
},
"PipelineHandOff": {
"description": "A reassignment of stewardship, recorded in both minds. `documents` names\nwhat travels with it.",
"type": "object",
"properties": {
"documents": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 256
},
"from_instance": {
"$ref": "#/$defs/Slug"
},
"handed_on": {
"$ref": "#/$defs/Date"
},
"reason": {
"$ref": "#/$defs/Para"
},
"repo": {
"$ref": "#/$defs/OrgRepo"
},
"to_instance": {
"$ref": "#/$defs/Slug"
}
},
"required": [
"from_instance",
"to_instance",
"repo",
"documents",
"reason",
"handed_on"
]
},
"PipelineIdea": {
"description": "One thing that could be, including options rejected and ideas no cut\nuses yet. `rests_on` is what it stands on (a reader selects the ideas\nresting on a stale note with `cites`); `toward` is the fork, ruling or\nfollow-up it was made for, and empty is legal. It stores no status:\ntaken up is its Deferred resolution, rejected its Recorded one.\nCampaign-rooted: `<campaign>:idea:<pass>.<label>`.",
"type": "object",
"properties": {
"campaign": {
"$ref": "#/$defs/Slug"
},
"idea": {
"$ref": "#/$defs/Para"
},
"label": {
"$ref": "#/$defs/Label"
},
"pass": {
"$ref": "#/$defs/Label"
},
"proposed_on": {
"$ref": "#/$defs/Date"
},
"rests_on": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 16
},
"title": {
"$ref": "#/$defs/Title"
},
"toward": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 8
},
"tradeoffs": {
"$ref": "#/$defs/Para"
}
},
"required": [
"campaign",
"pass",
"label",
"title",
"idea",
"tradeoffs",
"rests_on",
"toward",
"proposed_on"
]
},
"PipelineInstance": {
"description": "A mind's identity document. A store is canonical to exactly one\ninstance, and this says which; identity lives in the state, not in a\npath.",
"type": "object",
"properties": {
"created_at": {
"$ref": "#/$defs/Date"
},
"display_name": {
"$ref": "#/$defs/Short"
},
"host": {
"$ref": "#/$defs/Short"
},
"instance": {
"$ref": "#/$defs/Slug"
}
},
"required": [
"instance",
"display_name",
"created_at",
"host"
]
},
"PipelineKind": {
"type": "string",
"enum": [
"Campaign",
"Target",
"Question",
"Ruling",
"CutSpec",
"CutReport",
"Verdict",
"Finding",
"FollowUp",
"Resolution",
"Instance",
"Stewardship",
"HandOff",
"Run",
"Pulse",
"Memory",
"Research",
"Idea",
"Reply",
"Thought",
"DeskAnswer"
]
},
"PipelineMemory": {
"description": "One thing a Mind keeps for herself, in her own mind: what she was asked,\ndecided, committed to, learned or did, an idea, or the rapport between\nher and another Mind or person. `text` is her own words. `about` names\nthe Matrix users it concerns (Minds included) and nothing about where it\ncame from; `origin` is where and from whom she learned it, and `sources`\nthe event ids, commits or documents it rests on; the organ fills both,\nnot the model. `salience_permille` ranks it and decides nothing.\n`consolidates` names the memories a consolidating memory replaces.\nInstance-rooted: the key is `<instance>:memory:<label>`.",
"type": "object",
"properties": {
"about": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
},
"consolidates": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 16
},
"instance": {
"$ref": "#/$defs/Slug"
},
"label": {
"$ref": "#/$defs/Label"
},
"origin": {
"$ref": "#/$defs/MemoryOrigin"
},
"salience_permille": {
"type": "integer",
"format": "uint16",
"maximum": 65535,
"minimum": 0
},
"sort": {
"$ref": "#/$defs/MemorySort"
},
"sources": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
},
"text": {
"$ref": "#/$defs/Line"
}
},
"required": [
"instance",
"label",
"sort",
"text",
"about",
"origin",
"sources",
"salience_permille",
"consolidates"
]
},
"PipelineProvenance": {
"description": "Who admitted a batch: the faculty, the agent, its session and the tool.\nA field on the receipt and nothing else; the digest excludes it.",
"type": "object",
"properties": {
"agent": {
"$ref": "#/$defs/Short"
},
"faculty": {
"$ref": "#/$defs/Faculty"
},
"imported_from": {
"description": "Set when the batch replays another mind's receipt: the source it quotes. Absent on every\nother admission, and then absent from the stored receipt too.",
"anyOf": [
{
"$ref": "#/$defs/ImportSource"
},
{
"type": "null"
}
]
},
"session": {
"$ref": "#/$defs/Short"
},
"tool": {
"$ref": "#/$defs/Short"
}
},
"required": [
"faculty",
"agent",
"session",
"tool"
]
},
"PipelinePulse": {
"description": "One Mind's heartbeat vote, in her own mind: the beat she wants (the swarm's\ntempo is the lower median of every Mind's newest vote), the withdrawal of\nher standing vote (`tempo_vote_withdrawn`, an explicit null: she counts as\nsilent again), and the urgency she declares for herself until her next\nPersona turn. A pulse says at least one of the three; a withdrawal and a\nbeat are never both. Instance-rooted: the key is `<instance>:pulse:<label>`, the label\ntime-ordered like a run's.",
"type": "object",
"properties": {
"instance": {
"$ref": "#/$defs/Slug"
},
"label": {
"$ref": "#/$defs/Label"
},
"note": {
"$ref": "#/$defs/Line"
},
"tempo_vote_beat_s": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0
},
"tempo_vote_withdrawn": {
"type": "boolean"
},
"urgency_permille": {
"type": [
"integer",
"null"
],
"format": "uint16",
"maximum": 65535,
"minimum": 0
}
},
"required": [
"instance",
"label",
"note"
]
},
"PipelineQuestion": {
"type": "object",
"properties": {
"asked_on": {
"$ref": "#/$defs/Date"
},
"campaign": {
"$ref": "#/$defs/Slug"
},
"depends": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 8
},
"label": {
"$ref": "#/$defs/Label"
},
"options": {
"type": "array",
"items": {
"$ref": "#/$defs/QuestionOption"
},
"maxItems": 8
},
"question": {
"$ref": "#/$defs/Para"
},
"raised_in": {
"anyOf": [
{
"$ref": "#/$defs/PipelineRef"
},
{
"type": "null"
}
]
},
"recommended": {
"$ref": "#/$defs/Label"
},
"title": {
"$ref": "#/$defs/Title"
}
},
"required": [
"campaign",
"label",
"title",
"question",
"options",
"recommended",
"depends",
"asked_on"
]
},
"PipelineRef": {
"description": "A reference to another document. The id is parsed as a full pipeline id of\nthe declared `kind`, so the kind and the id's kind segment cannot disagree.",
"type": "object",
"properties": {
"id": {
"$ref": "#/$defs/Short"
},
"kind": {
"$ref": "#/$defs/PipelineKind"
}
},
"required": [
"kind",
"id"
]
},
"PipelineReply": {
"description": "One result of her Self session, as its actuator heard it: the words her\nSelf ended a turn with, and the follow-ups (briefs) the turn answers.\nInstance-rooted: the key is `<instance>:reply:<label>`. Not semantically\nindexed. Whether the run is hers is admission's rule.",
"type": "object",
"properties": {
"answers": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 64
},
"instance": {
"$ref": "#/$defs/Slug"
},
"label": {
"$ref": "#/$defs/Label"
},
"run": {
"$ref": "#/$defs/PipelineRef"
},
"text": {
"$ref": "#/$defs/Para"
}
},
"required": [
"instance",
"label",
"run",
"answers",
"text"
]
},
"PipelineResearch": {
"description": "One claim a pass found, with the sources it stands on, grouped by `pass`.\nWhat is so, never what to do: a recommendation is an idea. `inferred`\nmarks a claim read from its sources rather than seen in them. It stores\nno status: whether a note is current, superseded or wrong is its\nresolutions'. `serves` names the question, cut or campaign document it\nwas gathered for. The pass's method and what it did not search is its\nfirst note, labelled `scope`. Campaign-rooted:\n`<campaign>:research:<pass>.<label>`.",
"type": "object",
"properties": {
"campaign": {
"$ref": "#/$defs/Slug"
},
"claim": {
"$ref": "#/$defs/Line"
},
"detail": {
"$ref": "#/$defs/Para"
},
"inferred": {
"type": "boolean"
},
"label": {
"$ref": "#/$defs/Label"
},
"observed_on": {
"$ref": "#/$defs/Date"
},
"pass": {
"$ref": "#/$defs/Label"
},
"serves": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 8
},
"sources": {
"type": "array",
"items": {
"$ref": "#/$defs/ResearchSource"
},
"maxItems": 16
}
},
"required": [
"campaign",
"pass",
"label",
"claim",
"detail",
"inferred",
"sources",
"serves",
"observed_on"
]
},
"PipelineResolution": {
"description": "The record of how a subject was closed and by what. `sequence` is per\nsubject and set by the writer, `1` for the first, and it is the last\npart of the key, so a subject's resolutions share a prefix and a\nwithdrawn one is kept under its subject rather than overwritten.\nWhether a sequence is the previous plus one, and whether an earlier\nresolution still stands, are admission's rules: this crate refuses\nneither `0` nor a gap, exactly as it refuses neither `revision: 0` nor\na `revision` with no predecessor.",
"type": "object",
"properties": {
"outcome": {
"$ref": "#/$defs/ResolutionOutcome"
},
"rationale": {
"$ref": "#/$defs/Para"
},
"resolved_on": {
"$ref": "#/$defs/Date"
},
"sequence": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"subject": {
"$ref": "#/$defs/PipelineRef"
}
},
"required": [
"subject",
"sequence",
"outcome",
"rationale",
"resolved_on"
]
},
"PipelineRuling": {
"type": "object",
"properties": {
"answers": {
"anyOf": [
{
"$ref": "#/$defs/Short"
},
{
"type": "null"
}
]
},
"authority": {
"$ref": "#/$defs/RulingAuthority"
},
"campaign": {
"$ref": "#/$defs/Slug"
},
"choice": {
"anyOf": [
{
"$ref": "#/$defs/Label"
},
{
"type": "null"
}
]
},
"label": {
"$ref": "#/$defs/Label"
},
"operator_quote": {
"anyOf": [
{
"$ref": "#/$defs/Para"
},
{
"type": "null"
}
]
},
"precedents": {
"type": "array",
"items": {
"$ref": "#/$defs/ForeignRef"
},
"maxItems": 8
},
"ruled_on": {
"$ref": "#/$defs/Date"
},
"ruling": {
"$ref": "#/$defs/Para"
},
"title": {
"$ref": "#/$defs/Title"
}
},
"required": [
"campaign",
"label",
"title",
"ruling",
"ruled_on",
"precedents",
"authority"
]
},
"PipelineRun": {
"description": "One launch of a Self or a Persona turn: the one record of what it took\non. `claims` are the work it holds, and a claim is live while its run\nhas no resolution in force. `budget_usd` is a canonical decimal string,\n`0` for an interactive run. Instance-rooted like stewardship: the key\nis `<instance>:run:<label>`. Whether a claim is free is admission's rule.",
"type": "object",
"properties": {
"budget_usd": {
"$ref": "#/$defs/Short"
},
"campaigns": {
"type": "array",
"items": {
"$ref": "#/$defs/Slug"
},
"maxItems": 8
},
"claims": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 64
},
"host": {
"$ref": "#/$defs/Short"
},
"instance": {
"$ref": "#/$defs/Slug"
},
"label": {
"$ref": "#/$defs/Label"
},
"operated_by": {
"$ref": "#/$defs/RunOperator"
},
"started_on": {
"$ref": "#/$defs/Date"
},
"turn": {
"$ref": "#/$defs/RunTurn"
}
},
"required": [
"instance",
"label",
"operated_by",
"turn",
"host",
"started_on",
"budget_usd",
"claims",
"campaigns"
]
},
"PipelineStewardship": {
"description": "Stewardship over a repo, as an assignment recorded in a mind. One\ninstance may steward several repos, so the repo is part of the key.\n`sequence` is per `(instance, repo)`, set by the writer, `1` for the\nfirst, so a repo transferred away and back is two records under one\nprefix rather than one document overwriting the other. `assigned_on`\nis a field, not a key part. As on a resolution, whether the sequence\nis the previous plus one, and which assignment is in force, are\nadmission's rules and not this crate's.\n`names` are the chat names that address her for this repo, matched exactly\nas written; none means the repo's own name, matched in any case.",
"type": "object",
"properties": {
"assigned_on": {
"$ref": "#/$defs/Date"
},
"instance": {
"$ref": "#/$defs/Slug"
},
"names": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 8
},
"note": {
"$ref": "#/$defs/Line"
},
"repo": {
"$ref": "#/$defs/OrgRepo"
},
"sequence": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"instance",
"repo",
"sequence",
"assigned_on",
"note"
]
},
"PipelineTarget": {
"description": "`repos`, when non-empty, is the campaign's whole repo set from this\nrevision on; empty keeps the previous set (ruling campaign-repo-set-home).",
"type": "object",
"properties": {
"campaign": {
"$ref": "#/$defs/Slug"
},
"canonical_implementations": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 16
},
"doc": {
"$ref": "#/$defs/DocRef"
},
"invariants": {
"type": "array",
"items": {
"$ref": "#/$defs/TargetInvariant"
},
"maxItems": 32
},
"not_in_scope": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 32
},
"repos": {
"type": "array",
"items": {
"$ref": "#/$defs/OrgRepo"
},
"maxItems": 16
},
"revision": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"campaign",
"revision",
"invariants",
"not_in_scope",
"canonical_implementations",
"doc"
]
},
"PipelineThought": {
"description": "One tick of her stream of thought, offline: the words a base model\ncontinued from a projection of her own state, with the whole trace that\nmade them (the seed, the projection, every candidate and how near each\nwas to her earlier thoughts). `text` is the chosen candidate. `reads`\nare the documents the seed was drawn from. A thought is divergence for\ndelivery to weigh, never a memory: its words reach a later seed only\nthrough something she wrote. Instance-rooted: the key is\n`<instance>:thought:<label>`, the label `t<unix seconds>` of the tick.\nSemantically indexed on `text` only. `nearest_permille` is 1000 where she\nhad no earlier thought. `prompt_version` names the fixed parts of both\nprompts (the Projector's builder revision, guidance and word budget, and\nthe continuer's frame), so the exact prompts of an old thought can be\nrebuilt from the trace.",
"type": "object",
"properties": {
"base_model": {
"$ref": "#/$defs/Short"
},
"candidates": {
"type": "array",
"items": {
"$ref": "#/$defs/Line"
},
"maxItems": 4
},
"chosen": {
"type": "integer",
"format": "uint8",
"maximum": 255,
"minimum": 0
},
"context": {
"$ref": "#/$defs/Para"
},
"continuer_ms": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"identity": {
"$ref": "#/$defs/Line"
},
"instance": {
"$ref": "#/$defs/Slug"
},
"label": {
"$ref": "#/$defs/Label"
},
"max_tokens": {
"type": "integer",
"format": "uint16",
"maximum": 65535,
"minimum": 0
},
"min_p_permille": {
"type": "integer",
"format": "uint16",
"maximum": 65535,
"minimum": 0
},
"nearest_permille": {
"type": "array",
"items": {
"type": "integer",
"format": "uint16",
"maximum": 65535,
"minimum": 0
},
"maxItems": 4
},
"persona_receipt": {
"$ref": "#/$defs/Short"
},
"projection": {
"$ref": "#/$defs/Para"
},
"projector_model": {
"$ref": "#/$defs/Short"
},
"projector_ms": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"prompt_version": {
"$ref": "#/$defs/Line"
},
"reads": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 64
},
"stimulus": {
"$ref": "#/$defs/Para"
},
"temperature_permille": {
"type": "integer",
"format": "uint16",
"maximum": 65535,
"minimum": 0
},
"text": {
"$ref": "#/$defs/Para"
}
},
"required": [
"instance",
"label",
"text",
"reads",
"persona_receipt",
"identity",
"context",
"stimulus",
"projector_model",
"projection",
"base_model",
"temperature_permille",
"min_p_permille",
"max_tokens",
"candidates",
"nearest_permille",
"chosen",
"projector_ms",
"continuer_ms",
"prompt_version"
]
},
"PipelineVerdict": {
"type": "object",
"properties": {
"campaign": {
"$ref": "#/$defs/Slug"
},
"claims": {
"type": "array",
"items": {
"$ref": "#/$defs/VerdictClaim"
},
"maxItems": 64
},
"cut_report": {
"$ref": "#/$defs/Short"
},
"pass": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"range": {
"$ref": "#/$defs/CommitRange"
}
},
"required": [
"campaign",
"cut_report",
"pass",
"range",
"claims"
]
},
"Promise": {
"description": "A promise a report makes about what it landed. Not a document and not\nresolvable: it is identified by its report's id and its label, as a\n`TargetInvariant` is by its target's. Soul measures every one (ruling\nA), and the rule that every one is measured is admission's.",
"type": "object",
"properties": {
"label": {
"$ref": "#/$defs/Label"
},
"text": {
"$ref": "#/$defs/Line"
}
},
"required": [
"label",
"text"
]
},
"QuestionOption": {
"type": "object",
"properties": {
"label": {
"$ref": "#/$defs/Label"
},
"text": {
"$ref": "#/$defs/Line"
}
},
"required": [
"label",
"text"
]
},
"ReadAnchor": {
"description": "Code Hands must see but not change, in the spec's repo at the spec's base.",
"type": "object",
"properties": {
"location": {
"$ref": "#/$defs/CodeLocation"
},
"why": {
"$ref": "#/$defs/Short"
}
},
"required": [
"location",
"why"
]
},
"ReportCommit": {
"type": "object",
"properties": {
"builds": {
"type": "boolean"
},
"sha": {
"$ref": "#/$defs/Sha"
},
"subject": {
"$ref": "#/$defs/Line"
}
},
"required": [
"sha",
"subject",
"builds"
]
},
"RequestId": {
"description": "A client's retry token: a lowercase D-format UUID.",
"type": "string",
"maxLength": 36
},
"ResearchSource": {
"description": "Where a research claim comes from. A `Repo` pin and a `Web` page are\noutside the document set; an `Observed` result reuses a finding's evidence;\na `Document` is the one source that is a citation edge.",
"oneOf": [
{
"description": "A pinned file range in a repo.",
"type": "object",
"properties": {
"Repo": {
"type": "object",
"properties": {
"at": {
"$ref": "#/$defs/DocRef"
},
"repo": {
"$ref": "#/$defs/OrgRepo"
}
},
"required": [
"repo",
"at"
]
}
},
"additionalProperties": false,
"required": [
"Repo"
]
},
{
"description": "A page read on the web: its address, the work it belongs to, and when.",
"type": "object",
"properties": {
"Web": {
"type": "object",
"properties": {
"retrieved_on": {
"$ref": "#/$defs/Date"
},
"url": {
"$ref": "#/$defs/Line"
},
"work": {
"$ref": "#/$defs/Short"
}
},
"required": [
"url",
"work",
"retrieved_on"
]
}
},
"additionalProperties": false,
"required": [
"Web"
]
},
{
"description": "A command, probe, read or capture the pass ran itself.",
"type": "object",
"properties": {
"Observed": {
"type": "object",
"properties": {
"evidence": {
"$ref": "#/$defs/Evidence"
}
},
"required": [
"evidence"
]
}
},
"additionalProperties": false,
"required": [
"Observed"
]
},
{
"description": "Another document in the mind.",
"type": "object",
"properties": {
"Document": {
"type": "object",
"properties": {
"reference": {
"$ref": "#/$defs/PipelineRef"
}
},
"required": [
"reference"
]
}
},
"additionalProperties": false,
"required": [
"Document"
]
}
]
},
"ResolutionOutcome": {
"description": "How a subject was resolved. Every referent is a parsed `PipelineRef`, so a\nresolution names its records by ids of the kinds they declare, validated\nwhere every other referent is; a `Fixed` commit is a `Sha` whose referent\nis outside the document set (ruling B). Whether a named document exists,\nand how many may supersede one subject, are admission's rules.",
"oneOf": [
{
"description": "Overturned, in whole or in part, by later records. The list is bounded\nhere because the enum is outside `value_types!`, the only place a list\nmaximum is emitted automatically.",
"type": "object",
"properties": {
"Superseded": {
"type": "object",
"properties": {
"by": {
"type": "array",
"items": {
"$ref": "#/$defs/PipelineRef"
},
"maxItems": 8
}
},
"required": [
"by"
]
}
},
"additionalProperties": false,
"required": [
"Superseded"
]
},
{
"type": "object",
"properties": {
"Answered": {
"type": "object",
"properties": {
"by": {
"$ref": "#/$defs/PipelineRef"
}
},
"required": [
"by"
]
}
},
"additionalProperties": false,
"required": [
"Answered"
]
},
{
"type": "object",
"properties": {
"Fixed": {
"type": "object",
"properties": {
"by": {
"anyOf": [
{
"$ref": "#/$defs/PipelineRef"
},
{
"type": "null"
}
]
},
"commit": {
"$ref": "#/$defs/Sha"
}
},
"required": [
"commit"
]
}
},
"additionalProperties": false,
"required": [
"Fixed"
]
},
{
"type": "object",
"properties": {
"Deferred": {
"type": "object",
"properties": {
"to": {
"$ref": "#/$defs/PipelineRef"
}
},
"required": [
"to"
]
}
},
"additionalProperties": false,
"required": [
"Deferred"
]
},
{
"type": "object",
"properties": {
"Recorded": {
"type": "object",
"properties": {
"reason": {
"$ref": "#/$defs/Line"
}
},
"required": [
"reason"
]
}
},
"additionalProperties": false,
"required": [
"Recorded"
]
},
{
"type": "object",
"properties": {
"Withdrawn": {
"type": "object",
"properties": {
"reason": {
"$ref": "#/$defs/Line"
}
},
"required": [
"reason"
]
}
},
"additionalProperties": false,
"required": [
"Withdrawn"
]
},
{
"description": "How a Sleep run ended when the ledger took her reply: `line` is her one line, `day_through` the last memory\nof her day she was shown (none when the day was empty). It is the one place a night's cut line is kept.",
"type": "object",
"properties": {
"Slept": {
"type": "object",
"properties": {
"day_through": {
"anyOf": [
{
"$ref": "#/$defs/PipelineRef"
},
{
"type": "null"
}
]
},
"line": {
"$ref": "#/$defs/Line"
}
},
"required": [
"line"
]
}
},
"additionalProperties": false,
"required": [
"Slept"
]
},
{
"description": "A campaign's history left this mind for `to`, the mind that now keeps it. Final: the campaign and every\ndocument under its root read resolved by this and take no further writes here.",
"type": "object",
"properties": {
"Moved": {
"type": "object",
"properties": {
"to": {
"$ref": "#/$defs/Slug"
}
},
"required": [
"to"
]
}
},
"additionalProperties": false,
"required": [
"Moved"
]
}
]
},
"RulingAuthority": {
"description": "Who decided a ruling, and under what. `Mind` is this mind's own decision, admitted by her Self. `Steward` is\na named peer's decision inside the peer's stewardship, as this mind heard it: `steward` is the deciding Mind's\nMatrix id, `repo` the stewardship she decided under, `words` her own words copied from the line this mind heard,\n`event` that line's Matrix event id when it was a delivery. The four unit variants stay bare strings on the wire.",
"oneOf": [
{
"type": "string",
"enum": [
"Operator",
"Standing",
"Defaulted",
"Mind"
]
},
{
"type": "object",
"properties": {
"Steward": {
"type": "object",
"properties": {
"event": {
"anyOf": [
{
"$ref": "#/$defs/Short"
},
{
"type": "null"
}
]
},
"repo": {
"$ref": "#/$defs/OrgRepo"
},
"steward": {
"$ref": "#/$defs/Short"
},
"words": {
"$ref": "#/$defs/Para"
}
},
"required": [
"steward",
"repo",
"words"
]
}
},
"additionalProperties": false,
"required": [
"Steward"
]
}
]
},
"RunOperator": {
"type": "string",
"enum": [
"Operator",
"Mind"
]
},
"RunTurn": {
"type": "string",
"enum": [
"PersonaTurn",
"SelfRun",
"Sleep"
]
},
"SemanticQuery": {
"description": "A semantic query: the text to find documents near, and how many. The index\nowns which fields of each kind are text (`index_text`), so no substring\nfilter lives here to become a second answer to that question. `top_k` is\nthe most rows answered, all of them members of the selection: the\nselection decides membership before the index is asked.",
"type": "object",
"properties": {
"text": {
"$ref": "#/$defs/Line"
},
"top_k": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"text",
"top_k"
]
},
"Sha": {
"description": "A git commit id: 7-40 lowercase hex characters.",
"type": "string",
"maxLength": 40
},
"Sha256Hex": {
"description": "A SHA-256 digest: exactly 64 lowercase hex characters.",
"type": "string",
"maxLength": 64
},
"Short": {
"description": "Text of at most 200 UTF-8 bytes.",
"type": "string",
"maxLength": 200
},
"Slug": {
"description": "A campaign slug or key segment: label parts joined by `.`.",
"type": "string",
"maxLength": 64
},
"SourceQuery": {
"description": "A source search: the texts to find chunks near (one to `SOURCE_TEXTS_MAX`,\neach a topic; several answer with their ranked lists fused), how many,\noptionally the one forge repo (by name) to look in, and whether to look\nonly in repos' front-page files (`FRONT_PAGE_FILES` at the repo root). An\nold client's request has no `front` and means false.",
"type": "object",
"properties": {
"front": {
"type": "boolean",
"default": false
},
"repo": {
"anyOf": [
{
"$ref": "#/$defs/Short"
},
{
"type": "null"
}
]
},
"text": {
"description": "Transitional: an old client's single text, read as `texts` of one. Exactly\none of `text` and `texts` is given. To be deleted once no client sends it.",
"$ref": "#/$defs/Line",
"default": ""
},
"texts": {
"description": "The topics to search by, one to `SOURCE_TEXTS_MAX`.",
"type": "array",
"default": [],
"items": {
"$ref": "#/$defs/Line"
}
},
"top_k": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"top_k"
]
},
"StructuralDelta": {
"type": "object",
"properties": {
"dependencies_added": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 64
},
"dependencies_removed": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 64
},
"formats_added": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 64
},
"formats_removed": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 64
},
"lines_added": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"lines_removed": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"targets_added": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 64
},
"targets_removed": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 64
}
},
"required": [
"lines_added",
"lines_removed",
"dependencies_added",
"dependencies_removed",
"formats_added",
"formats_removed",
"targets_added",
"targets_removed"
]
},
"Symbol": {
"description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.",
"type": "string",
"maxLength": 128,
"minLength": 1
},
"TargetInvariant": {
"type": "object",
"properties": {
"label": {
"$ref": "#/$defs/Label"
},
"statement": {
"$ref": "#/$defs/Line"
}
},
"required": [
"label",
"statement"
]
},
"Title": {
"description": "A title: 1 to 200 UTF-8 bytes, enforced by admission; JSON Schema\nlength counts characters. Holds at least one alphanumeric character,\nno control character, and no bidi control character (`U+061C`,\n`U+200E`, `U+200F`, `U+202A`-`U+202E`, `U+2066`-`U+2069`).",
"type": "string",
"maxLength": 200,
"minLength": 1
},
"VerdictClaim": {
"description": "The promise this claim measured, and the report's mutations it ran. An\n`Unproven` claim with a promise is one Soul could not reach.",
"type": "object",
"properties": {
"claim": {
"$ref": "#/$defs/Line"
},
"evidence": {
"type": "array",
"items": {
"$ref": "#/$defs/Evidence"
},
"maxItems": 8
},
"findings": {
"type": "array",
"items": {
"$ref": "#/$defs/Short"
},
"maxItems": 16
},
"mutations": {
"type": "array",
"items": {
"$ref": "#/$defs/Label"
},
"maxItems": 8
},
"outcome": {
"$ref": "#/$defs/ClaimOutcome"
},
"promise": {
"anyOf": [
{
"$ref": "#/$defs/Label"
},
{
"type": "null"
}
]
}
},
"required": [
"claim",
"outcome",
"evidence",
"findings",
"mutations"
]
},
"VerificationTest": {
"type": "object",
"properties": {
"name": {
"$ref": "#/$defs/Short"
},
"pins": {
"$ref": "#/$defs/Line"
}
},
"required": [
"name",
"pins"
]
},
"Words": {
"description": "A person's words, verbatim: 1 to 4,000 UTF-8 bytes, not blank (CultLib PR #72, `answer.note`).",
"type": "string",
"maxLength": 4000,
"minLength": 1
}
}
}