Files
boshu2__agentops/schemas/learning.v1.schema.json
T
Bo 6c8cb223ea feat(corpus): add reach blast-radius tier {bead|pull|always} (ag-bsf6 #reach-field) (#721)
W2.1 of epic ag-lhu0 (memory-system re-architecture). Adds the **reach**
blast-radius axis, orthogonal to maturity, per the locked duel
architecture.

- `reach {bead|pull|always}` on FrontMatter + Learning; `reach:`
frontmatter round-trips.
- `SanitizeReach` normalizes + defaults absent/invalid → `pull`, and
**never** promotes to `always` (the computed-not-authored invariant —
`always` is derived from maturity==established ∩ canon in ag-oqha).
- `learning.v1.schema.json`: reach enum + default pull; domain vocab
`skills/domain/references/reach.md`.
- Tests: SanitizeReach + frontmatter round-trip/default (88 search-pkg
tests green).

Closes-scenario: ag-bsf6#reach-field
Bounded-context: BC1-Corpus
Evidence: cli/internal/search/learnings.go
2026-06-04 16:52:33 -04:00

73 lines
2.2 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://agentops.dev/schemas/learning.v1.schema.json",
"title": "Learning",
"description": "Knowledge artifact extracted by Hephaestus",
"practices": ["wiki-knowledge-surface", "lean-startup"],
"type": "object",
"required": ["learning_id", "content", "category", "confidence", "utility_score", "briefing_count", "source_session", "created_at", "tombstoned", "schema_version"],
"properties": {
"learning_id": {
"type": "string",
"pattern": "^learn-[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+$",
"description": "Format: learn-YYYY-MM-DD-xxx"
},
"content": {
"type": "string",
"minLength": 1
},
"category": {
"type": "string",
"enum": ["architecture", "debugging", "process", "testing", "security"]
},
"confidence": {
"type": "number",
"minimum": 0.0,
"maximum": 1.0,
"description": "Decays 10%/week without use"
},
"utility_score": {
"type": "integer",
"description": "v2: PASS +1, FAIL -2. v1: always 0"
},
"briefing_count": {
"type": "integer",
"minimum": 0,
"description": "Number of briefings that included this learning"
},
"source_session": {
"type": "string"
},
"source_bead": {
"type": ["string", "null"],
"description": "Bead ID that produced this learning"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"supersedes": {
"type": ["string", "null"],
"description": "Learning ID this supersedes"
},
"tombstoned": {
"type": "boolean",
"description": "If true, excluded from briefings"
},
"tombstone_reason": {
"type": ["string", "null"]
},
"reach": {
"type": "string",
"enum": ["bead", "pull", "always"],
"default": "pull",
"description": "Blast-radius tier, orthogonal to maturity: bead=per-bead context, pull=queried on demand (default), always=auto-injected at session bootstrap (computed from maturity==established INTERSECT canon, never author-set)."
},
"schema_version": {
"type": "integer",
"const": 1
}
},
"additionalProperties": false
}