Some checks failed
Documentation Lint & Validation / Markdown Linting (push) Has been cancelled
Documentation Lint & Validation / Validate mdBook Configuration (push) Has been cancelled
Documentation Lint & Validation / Content & Structure Validation (push) Has been cancelled
mdBook Build & Deploy / Build mdBook (push) Has been cancelled
Nickel Type Check / Nickel Type Checking (push) Has been cancelled
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
Documentation Lint & Validation / Lint & Validation Summary (push) Has been cancelled
mdBook Build & Deploy / Documentation Quality Check (push) Has been cancelled
mdBook Build & Deploy / Deploy to GitHub Pages (push) Has been cancelled
mdBook Build & Deploy / Notification (push) Has been cancelled
on+re:
- core.ncl: 5 new Practice nodes (notification-channels,
vapora-capabilities, agent-hot-reload-stable-identity,
merkle-audit-trail, notification-channels) + 5 new edges;
knowledge-graph-execution-history updated with HNSW+BM25+RRF
- state.ncl: production-readiness blocker/catalyst updated (hot-reload
complete, BudgetManager/LLMRouter still require restart);
ontoref-integration catalyst updated (vapora-ontology/reflection
crates, api-catalog.json, nickel contracts)
ADRs (NCL):
- adr-013: KG hybrid search — HNSW+BM25+RRF, rejected in-process scan
- adr-014: capability packages — AgentDefinition→vapora-shared,
DashMap shard-before-await constraint
- adr-015: Merkle audit trail — SHA-256 hash chain, rejected HMAC
- adr-016: agent hot-reload — stable_id=role, learning_profiles survive
drain, BudgetManager excluded from reload scope
landing page:
- 2 new feature boxes: VCS-Agnostic Worktree (jj/git), Ontology Protocol
- KG box: 20→28 tests, HNSW+BM25+RRF description
- Agents box: 71→82 tests, hot-reload + stable_id
- tech stack: Rust 21→23 crates, added jj, Radicle, ontoref badges
- status badge: 620→691 tests
97 lines
2.7 KiB
Text
97 lines
2.7 KiB
Text
let c = import "adr-constraints.ncl" in
|
|
|
|
let status_type = [| 'Proposed, 'Accepted, 'Superseded, 'Deprecated |] in
|
|
let severity_type = [| 'Hard, 'Soft |] in
|
|
let verdict_type = [| 'Safe, 'RequiresJustification |] in
|
|
|
|
let rationale_entry_type = {
|
|
claim | String,
|
|
detail | String,
|
|
} in
|
|
|
|
let alternative_type = {
|
|
option | String,
|
|
why_rejected | String,
|
|
} in
|
|
|
|
# Tag discriminant for typed constraint checks.
|
|
let check_tag_type = [|
|
|
'Cargo,
|
|
'Grep,
|
|
'NuCmd,
|
|
'ApiCall,
|
|
'FileExists,
|
|
|] in
|
|
|
|
# Typed constraint check: a tagged record, JSON-serializable.
|
|
# 'Cargo -> crate : String, forbidden_deps : Array String
|
|
# 'Grep -> pattern : String, paths : Array String, must_be_empty : Bool
|
|
# 'NuCmd -> cmd : String, expect_exit : Number
|
|
# 'ApiCall -> endpoint : String, json_path : String, expected : Dyn
|
|
# 'FileExists-> path : String, present : Bool
|
|
let constraint_check_type = {
|
|
tag | check_tag_type,
|
|
..
|
|
} in
|
|
|
|
let constraint_type = {
|
|
id | String,
|
|
claim | String,
|
|
scope | String,
|
|
severity | severity_type,
|
|
# Transition period: one of check or check_hint must be present.
|
|
# check_hint is deprecated — migrate existing ADRs to typed check variants.
|
|
check_hint | String | optional,
|
|
check | constraint_check_type | optional,
|
|
rationale | String,
|
|
} in
|
|
|
|
let ontology_check_type = {
|
|
decision_string | String,
|
|
invariants_at_risk | Array String,
|
|
verdict | verdict_type,
|
|
} in
|
|
|
|
let invariant_justification_type = {
|
|
invariant | String,
|
|
claim | String,
|
|
mitigation | String,
|
|
} in
|
|
|
|
let consequences_type = {
|
|
positive | Array String,
|
|
negative | Array String,
|
|
} in
|
|
|
|
let adr_type = {
|
|
id | String | c.AdrIdFormat,
|
|
title | String,
|
|
status | status_type,
|
|
date | String,
|
|
|
|
context | String,
|
|
decision | String,
|
|
rationale | Array rationale_entry_type,
|
|
consequences | consequences_type,
|
|
alternatives_considered | Array alternative_type,
|
|
|
|
constraints | Array constraint_type | c.NonEmptyConstraints,
|
|
ontology_check | ontology_check_type,
|
|
|
|
related_adrs | Array String | default = [],
|
|
supersedes | String | optional,
|
|
superseded_by | String | optional,
|
|
invariant_justification | invariant_justification_type | optional,
|
|
} in
|
|
|
|
{
|
|
AdrStatus = status_type,
|
|
Severity = severity_type,
|
|
Verdict = verdict_type,
|
|
Constraint = constraint_type,
|
|
RationaleEntry = rationale_entry_type,
|
|
Alternative = alternative_type,
|
|
OntologyCheck = ontology_check_type,
|
|
InvariantJustification = invariant_justification_type,
|
|
Adr = adr_type,
|
|
}
|