Signal

The atomic unit of the Notice layer. A signal is a structured observation — something noticed during work that's worth tracking. Signals have trust scores, autonomy levels, and flow through a lifecycle from captured to promoted.

Template: .intent/templates/signal.md
Storage: .intent/signals/YYYY-MM-DD-slug.md
Live examples: Signal dashboard (15 signals)

Frontmatter Fields

FieldTypeDescription
idstringSequential identifier (SIG-001, SIG-002, ...)
timestampISO 8601When the signal was captured
sourceenumcli | mcp | slack | conversation | pr-review | agent-trace
confidencefloat0.0–1.0 — how confident the capturer is this matters
trustfloat0.0–1.0 — computed from trust factors (see below)
autonomy_levelenumL0 | L1 | L2 | L3 | L4 — derived from trust score
statusenumcaptured | active | clustered | promoted | dismissed
clusterstring?Cluster name if grouped with related signals
authorstringWho captured the signal
related_intentslistIntent IDs this signal relates to
parent_signalstring?SIG-ID if this is a refinement of another signal

Trust Scoring Formula

trust = clarity × 0.30 + (1/blast_radius) × 0.20 + reversibility × 0.20 + testability × 0.20 + precedent × 0.10

FactorWeightDescription
Clarity30%How well-defined is the observation? Vague hunch vs. concrete pattern.
Blast Radius20%Inverse — high blast radius lowers trust. How much damage if wrong?
Reversibility20%Can the action taken on this signal be undone?
Testability20%Can we verify the signal's accuracy before acting?
Precedent10%Have similar signals been successfully acted on before?

Autonomy Levels

LevelTrust RangeBehavior
L0< 0.2Human drives all action. Agent only records.
L10.2 – 0.4Agent suggests actions. Human decides.
L20.4 – 0.6Agent proposes and awaits approval.
L30.6 – 0.85Agent executes with human monitoring.
L4≥ 0.85Full autonomy with circuit breakers only.

Intent

An intent is a problem worth solving — promoted from clustered signals. It's the bridge between "we keep noticing this" and "let's spec a solution." Intents carry evidence from the signals that spawned them.

Template: .intent/templates/intent.md
Storage: .intent/intents/INT-NNN-slug.md

Frontmatter Fields

FieldTypeDescription
idstringSequential identifier (INT-001, INT-002, ...)
titlestringShort description of the problem
statusenumproposed | accepted | specced | executing | complete | archived
proposed_bystringWho proposed the intent
signalslistSIG-IDs that led to this intent
specslistSPEC-IDs created from this intent
ownerstringWho is responsible for this intent
priorityenumnow | next | later
productenumnotice | spec | execute | observe

Sections

Problem statement, desired outcome, evidence from signals, constraints, and open questions.

Spec

A spec is intent made executable. It's the contract between the person shaping work and the agent (or person) building it. Good specs are verifiable — you can test whether they've been fulfilled. Specs have an independent lifecycle and may spawn multiple atoms.

Template: .intent/templates/spec.md
Storage: spec/SPEC-NNN-slug.md

Frontmatter Fields

FieldTypeDescription
idstringSequential identifier (SPEC-001, SPEC-002, ...)
titlestringWhat this spec delivers
versionstringSemantic version of this spec (e.g., 1.0, 1.1)
statusenumdraft | review | approved | executing | complete
intentstringParent intent ID (INT-NNN)
productstringProduct boundary this spec addresses
authorstringWho wrote the spec
contractslistContract IDs this spec requires
atomslistAtom IDs (ATOM-NNN) created from this spec
assigneestringWho/what is executing this spec
completeness_scorefloat0.0–1.0 — how complete is the specification
agent_readybooleanTrue if spec is structured enough for agent execution

Sections

Problem statement, solution description, contracts (verifiable assertions), acceptance criteria, out of scope, dependencies, and test scenarios.

Contract

A contract is a verifiable assertion about what must be true when a spec is fulfilled. Contracts are the smallest testable unit — like assertions in code, but for any kind of work. They come in four types: interface, behavior, quality, and integration. Contracts have an independent lifecycle separate from the specs they verify.

Template: .intent/templates/contract.md
Storage: inline within spec files or standalone in spec/contracts/

Frontmatter Fields

FieldTypeDescription
idstringSequential identifier (CON-001, CON-002, ...)
titlestringWhat this contract asserts
specstringParent spec ID (SPEC-NNN)
statusenumdefined | verified | failed | revised
typeenuminterface | behavior | quality | integration
severityenumcritical | major | minor — impact if contract fails
verification_methodenummanual | cli-command | test-suite | automated
verification_commandstring?Command or test to verify this contract
verified_dateISO 8601?When last verified
verified_bystring?Who or what verified it

Contract Types

TypeDescriptionExample
InterfaceAPI shape, input/output format"CLI accepts --format json flag"
BehaviorWhat happens when invoked"Emits signal.created event on capture"
QualityNon-functional requirements"Response time under 200ms"
IntegrationCross-system interaction"Event appears in events.jsonl within 5s"

Atom

An atom is an execution envelope — a single pass through the work stream. Atoms are spawned by specs and coordinate execution, but do not contain the specs or contracts themselves. They reference specs for validation logic and contracts for verification, placing them at the intersection of ephemeral and persistent work.

Template: .intent/templates/atom.md
Storage: .intent/atoms/ATOM-NNN-slug.md

Frontmatter Fields

FieldTypeDescription
idstringSequential identifier (ATOM-001, ATOM-002, ...)
titlestringName of this execution unit
statusenumplanned | in-progress | complete | failed | blocked
parent_intentstringParent intent ID (INT-NNN)
specstringReference to spec being executed (SPEC-NNN)
contractslistContract IDs (CON-NNN) to be verified
productstringProduct boundary this atom operates within
capabilitystringCapability within the product
autonomy_levelenumL0 | L1 | L2 | L3 | L4 — autonomy granted for execution
trust_scorefloat0.0–1.0 — computed trust score for this execution
executorstringHuman or agent identifier performing the work
arb_verdictenumproceed | review | block — ARB decision on execution

Sections

Execution plan, resource requirements, success criteria, risk assessment, and post-execution analysis.

Event

Every action in the Intent system emits a structured event. Events are the raw material for the Observe layer — they tell you what happened, when, and in response to what. The event schema is OTel-compatible by design.

Catalog: 15 event types documented
Storage: .intent/events/events.jsonl (one JSON object per line)

Event Envelope

FieldTypeDescription
eventstringEvent type (e.g., signal.created, intent.proposed)
timestampISO 8601When the event occurred
actorstringWho or what triggered the event
refstringID of the artifact affected (SIG-001, SPEC-003, etc.)
dataobjectEvent-specific payload
sourcestringEmission mechanism (cli, mcp, github-action, etc.)

Event Types (15)

CategoryEvents
Signalsignal.created, signal.updated, signal.dismissed, signal.clustered, signal.promoted
Intentintent.proposed, intent.accepted, intent.specced, intent.completed
Specspec.created, spec.approved, spec.executing, spec.completed
Contractcontract.verified, contract.failed
Systemsystem.status (roadmap/health check)

Knowledge Artifact Schemas

The Knowledge Engine (Layer 1) compiles raw sources into structured knowledge artifacts. Six artifact types form the compiled knowledge base. Each artifact is a markdown file with YAML frontmatter, following the schema defined in knowledge-engine/AGENTS.md.

Persona (PER-NNN)

Storage: knowledge/personas/
A structured representation of a user or stakeholder type, compiled from research sources and agent analysis.

FieldTypeDescription
idstringSequential identifier (PER-001, PER-002, ...)
typeenumpersona
subtypeenumproduct | role | hero | stakeholder | engagement | archetype
namestringPersona name or archetype label
confidencefloat0.0–1.0 — corroboration level across sources
originenumhuman | agent | synthetic — source of the persona
sourceslistSource IDs or references this persona derives from
related_journeyslistJourney map IDs (JRN-NNN) associated with this persona
related_decisionslistDesign decision IDs (DDR-NNN) this persona influences
pain_pointslistNamed pain points or friction areas

Journey Map (JRN-NNN)

Storage: knowledge/journeys/
A structured narrative of a persona's experience over time, with stages, emotions, and decision points.

FieldTypeDescription
idstringSequential identifier (JRN-001, JRN-002, ...)
typeenumjourney
namestringJourney name or scenario label
personastringAssociated persona ID (PER-NNN)
confidencefloat0.0–1.0 — evidence strength for this journey
originenumhuman | agent | synthetic
sourceslistSource IDs this journey derives from
related_decisionslistDecision IDs (DDR-NNN) influenced by this journey
stageslistOrdered stage names (H3 sections in body with substeps, emotions, pain points)

Design Decision Record (DDR-NNN)

Storage: knowledge/decisions/
A structured record of a design choice, its rationale, validation status, and impact on personas and journeys.

FieldTypeDescription
idstringSequential identifier (DDR-001, DDR-002, ...)
typeenumdecision
titlestringDecision statement (e.g., "Use webhooks for async events")
statusenumproposed | accepted | superseded | validated | invalidated
confidencefloat0.0–1.0 — validation strength
originenumhuman | agent | synthetic
addresseslistPain point IDs or challenge names this decision resolves
personastring?Primary persona affected (PER-NNN)
journey_stagestring?Journey stage where this decision matters
superseded_bystring?Newer decision ID (DDR-NNN) if this is outdated
validated_bylistValidation method IDs or test results confirming this decision

Theme (THM-NNN)

Storage: knowledge/themes/
A cross-cutting concern or pattern observed across personas, journeys, and decisions.

FieldTypeDescription
idstringSequential identifier (THM-001, THM-002, ...)
typeenumtheme
namestringTheme label (e.g., "Asynchronous Communication", "Trust Validation")
confidencefloat0.0–1.0 — how consistently this theme appears
originenumhuman | agent | synthetic
sourceslistSource IDs supporting this theme
related_personaslistPersona IDs (PER-NNN) affected by this theme
related_journeyslistJourney IDs (JRN-NNN) where this theme appears
related_decisionslistDecision IDs (DDR-NNN) addressing this theme
signalslistSignal IDs (SIG-NNN) that first surfaced this theme

Domain Model (DOM-NNN)

Storage: knowledge/domain-models/
A structured representation of entities, relationships, and constraints within a bounded context or problem domain.

FieldTypeDescription
idstringSequential identifier (DOM-001, DOM-002, ...)
typeenumdomain-model
namestringDomain name or bounded context label
scopeenumglossary | bounded-context | entity-relationship | state-machine
confidencefloat0.0–1.0 — structural validation level
originenumhuman | agent | synthetic

Design Rationale (RAT-NNN)

Storage: knowledge/design-rationale/
A narrative explaining the reasoning behind design choices, frameworks applied, and trade-offs considered.

FieldTypeDescription
idstringSequential identifier (RAT-001, RAT-002, ...)
typeenumrationale
namestringRationale title or topic
confidencefloat0.0–1.0 — consensus or validation level
originenumhuman | agent | synthetic
related_decisionslistDecision IDs (DDR-NNN) explained by this rationale
frameworkslistNamed frameworks applied (Torres, Cagan, Jobs-to-be-Done, etc.)

Federation & Confidentiality

Every knowledge artifact carries two federation fields:

Origin Tracking: The origin field (human | agent | synthetic) indicates the source. Agent-generated artifacts start with confidence ≤ 0.5 unless independently corroborated.

Entity Dossiers

Six dossier types serve as an intermediate compilation step between raw sources and the six artifact types above. Dossiers aggregate raw evidence before synthesis:

Dossiers are working documents. Once synthesized into Personas, Journeys, Decisions, Themes, Domain Models, or Design Rationales, they may be archived.

Work Ontology v2

Intent v2 organizes work around a two-plane architecture: ephemeral flow entities (Signal → Intent → Atom → Event → Trace) and persistent artifacts (Spec, Contract) that bridge the planes. An independent ownership topology (Product → Capability → Team) provides structural context via the Inverse Conway Maneuver.

Full reference: Work ontology page

Work Stream (Ephemeral Flow)

EntitySchemaLifecycleDescription
Signalsignal.mdcaptured → active → clustered → promoted → dismissedRaw observation from work
Intentintent.mdproposed → accepted → specced → executing → completeProblem worth solving, promoted from signals
Atomatom.mdplanned → in-progress → complete | failed | blockedSingle pass through execution (ephemeral envelope)
EventJSONLemitted → ingested → tracedStructured action record
TraceOTel Spanstarted → span events → endedExecution observability (Span = Atom, Leaf Span = Contract Verification)

Persistent Artifacts (Bridge)

ArtifactSchemaLifecyclePurpose
Specspec.mddraft → review → approved → executing → completeIntent made executable; referenced by atoms for validation logic
Contractcontract.mddefined → verified → failed | revisedVerifiable assertion; checked during atom execution

Ownership Topology (Persistent Structure)

LevelEntitySchemaDescription
1Productproduct.mdValue boundary a team owns; context for Inverse Conway formation
2CapabilityFunctional grouping within a product
3Teamteam.mdPersistent group of humans and agents that owns products

OTel Mapping

Intent EntityOTel ConceptMapping
IntentTraceA logical work session; the context for all atoms it spawns
AtomSpanA single execution unit; contains contract verifications
Contract VerificationLeaf SpanTerminal span that verifies a contract assertion
SignalSpan EventAn event emitted within a span's execution

Product

A product is a value boundary that a team owns. It's not a work item but a context boundary — the unit that drives team formation through the Inverse Conway Maneuver. Products contain capabilities and define the persona-centric value stream your team delivers.

Template: .intent/templates/product.md
Storage: .intent/products/PROD-slug.md

Frontmatter Fields

FieldTypeDescription
idstringProduct identifier (short slug, e.g., "signals")
titlestringProduct name
ownerstringPrimary owner (person or team ID)
teamlistTeam member identifiers (human or agent)
maturityenumoperational | conceptual | defined | schema-ready
value_streamstringHow this product delivers value
persona_keystringPrimary persona this product serves
capabilitieslistCapability names or IDs within this product
repositorieslistRepository URLs or slugs related to this product
file_pathslistDirectory paths or file patterns owned by this product

Sections

Value proposition, personas served, capabilities overview, team charter, and integration points with other products.

Team

A team is a persistent group of humans and agents that owns products. Teams are formed around product boundaries (Inverse Conway), have defined autonomy boundaries, and escalation paths for decisions that cross boundaries.

Template: .intent/templates/team.md
Storage: .intent/teams/TEAM-slug.md

Frontmatter Fields

FieldTypeDescription
idstringTeam identifier (short slug, e.g., "signals-team")
titlestringTeam name
typeenumstream-aligned | platform | enabling | complicated-subsystem
productslistProduct IDs this team owns
members.humanslistHuman team member identifiers or email addresses
members.agentslistAgent identifiers or service names
autonomy_boundarystringWhat decisions this team can make independently
escalation_pathlistChain of escalation for decisions outside autonomy boundary

Team Types

TypeDescriptionOwns
Stream-AlignedOrganized around a value streamOne or more products in a coherent stream
PlatformBuilds internal capabilitiesShared infrastructure or tools
EnablingCoaches and unblocks other teamsKnowledge, process, observability
Complicated SubsystemOwns specialized, complex domainDeep expertise area (e.g., cryptography)

Sections

Team charter, success criteria, communication norms, decision-making framework, and quarterly priorities.

Signal Amplification

Signals gain weight through repeated reference — like citation count in academic papers or PageRank for web pages. The amplification system tracks cross-references and adjusts effective trust over time.

Spec: spec/signal-amplification.md

Amplification Fields (proposed)

FieldTypeDescription
referenced_bylistIDs of artifacts that reference this signal
reference_countintTotal reference count
last_referencedISO 8601?Most recent reference timestamp
amplification_scorefloatComputed from weighted, time-decayed references
effective_trustfloatmin(1.0, base_trust + amplification_score)

Reference Weights

Reference TypeWeight
Signal → Signal0.15
Conversation0.10
Commit message0.05
Intent / Spec0.20

Decay: References have a 7-day half-life. Recent references count more than old ones.
Re-evaluation: When effective_trust crosses an autonomy level boundary, the signal is flagged for review.

Why these schema shapes were chosen →