Knowledge Graph Schema

Назначение: формальная схема knowledge graph (KG) для RENAR-проектов — узлы, грани, properties, query patterns. KG служит derived view от RENAR-артефактов для семантических запросов AI-агентов и reconciliation. Источник: research/16-req-graph-schema-draft.md.

KG — не источник правды. Source of Truth — артефакты (ADAPT / BR / SR / SPEC / TC) на substrate. Граф derived from frontmatter и не редактируется напрямую. Если граф противоречит артефактам → rebuild графа, не правка артефактов.


1. Зачем граф

1.1 Проблема без графа

Без KG AI-агент при генерации/анализе требования имеет flat поиск через:

  • FTS5 / RAG поиск по .md файлам.
  • Frontmatter parent/children (только direct hops).
  • Keyword grep по коду.

Это даёт синтаксический контекст. Но AI часто нужен семантический: «дай все BR, влияющие на KPI X», «какие SR верифицированы tests с устаревшей requirement-version», «какие SPEC depends-on SPEC-DATA-03».

1.2 Use cases

ЗапросБез графаС графом
Все BR, влияющие на Sales Cycle KPIGrep + парсить frontmatterОдин Cypher-запрос
При изменении SR-05 — какие задачи и SPEC затронутыСканировать все ссылкиSingle graph traversal
Какие AIC / SPEC-AI требуют high-risk classification по AI ActВручнуюOne query
Stakeholder map для проектаНесколько запросовSingle subgraph extraction
Cross-project dependencies через INT-SR (заменено SPEC-INT)Federation API callsFederated graph query
Стало ли требование SR-12 деградировать (achievement % падает)Manual analysisTrend analytic on node properties
Stale TC — TC verifies SR с обновлённой версией, last-run на старойManual checkOne query

2. Node types (closed list)

TypeИсточникIdentity
RequirementBR / SR / TR артефакты<id>
SpecificationSPEC-* артефакты (9 типов)<spec-id>
ADAPTADAPT-NNN артефакты<adapt-id>
BackwardFindingB-NNN записи внутри ADAPT<adapt-id>:B-NNN
TestCaseTC и INT-TC артефакты<tc-id>
WorkOrderТЗ и delta-ТЗ<tz-id>
StakeholderFrontmatter business-context.stakeholder<stakeholder-id>
BusinessGoalFrontmatter business-context.business-goal (deduplicated)<goal-id>
KPIFrontmatter business-outcome.kpi-name<kpi-id>
TaskTR / runtime task store<task-id>
CodeArtifactTC automation.location, code commits<repo>:<path>:<symbol>
DecisionArchitectural decision records<decision-id>
DeadEndFailed approaches (опционально)<deadend-id>
RiskItemAI Risk Register entryAIR-NN
ComplianceCompliance standard reference<std>:<control>
TemplateRequirements library template<template-id>

Список закрыт; новые node types — только через изменение полного RENAR Standard.


3. Edge types (closed list)

3.1 Иерархия и derivation

EdgeFromToСемантика
parentRequirementRequirementA.parent = B → B is parent of A (BR → SR → TR)
derived-from-adaptRequirement / SpecificationADAPTАртефакт выведен из approved ADAPT section
derived-from-templateRequirement / SpecificationTemplateШаблон (с version pin)
replacesRequirement / SpecificationRequirement / Specificationnew replaces old (deprecated)
supersedesRequirement / SpecificationRequirement / Specificationstrictly newer version (post-delta)
parent-adaptADAPTADAPTdelta-ADAPT → main ADAPT

3.2 ADAPT specifics

EdgeFromToСемантика
from-tzADAPTWorkOrdersource-tz pointer
contains-backwardADAPTBackwardFindingB-NNN запись
backward-asks-stakeholderBackwardFindingStakeholderwho answers
resolved-by-answerBackwardFinding(timestamp + author)client-answer record

3.3 SPEC graph (parallel axis)

EdgeFromToСемантика
constrained-byRequirementSpecificationSR constrained by SPEC-* (typed edge)
implements-specTaskSpecificationTR implements SPEC-*
depends-onSpecificationSpecificationSPEC depends on another SPEC (DAG)
referenced-bySpecificationRequirement / Taskinverse (auto-derived)

3.4 Verification и реализация

EdgeFromToСемантика
verifiesTestCaseRequirement / SpecificationTC verifies artifact
verified-byRequirement / SpecificationTestCaseinverse (auto-derived)
implementsTaskRequirementTask implements requirement
realises-inTestCaseCodeArtifactTC.automation.location
linked-defectRequirementTask (defect type)Bug на этом требовании

3.5 Provenance

EdgeFromToСемантика
from-orderADAPT / RequirementWorkOrdersource.tz-section reference
delta-fromWorkOrderWorkOrderdelta-ТЗ → base ТЗ
cited-inAssertionWorkOrderinline citation pointer (для validator)
decidedRequirement / SpecificationDecisionDecision при декомпозиции
deadendRequirement / SpecificationDeadEndFailed approach

3.6 Business / governance

EdgeFromToСемантика
owned-byRequirementStakeholderbusiness-context.stakeholder
goalRequirementBusinessGoalbusiness-context.business-goal
impacts-kpiBusinessGoalKPIKPI driven by goal
compliance-withRequirement / SpecificationCompliancecompliance entry
risk-mitigatesRequirement / SpecificationRiskItemmitigates AIR-NN
risk-introducesRequirement / SpecificationRiskItemintroduces new risk (warning trigger)

3.7 Cross-project / integration

EdgeFromToСемантика
participates-inSpecification (SPEC-INT)Specification (SPEC-INT)INT-SR participants (cross-project)
cross-deps-onTask (project A)Task (project B)Cross-project dependency
integrates-viaRequirementSpecification (SPEC-INT)Через SPEC-INT contract

3.8 Edge properties

Edges имеют properties (Cypher-style):

(SR:Requirement)-[v:verifies {requirement-version: "1.2", confidence: "high"}]->(TC:TestCase)
(BR:Requirement)-[c:compliance-with {control: "A.5.34", rationale: "PII protection"}]->(GDPR:Compliance)
(WO:WorkOrder)-[d:delta-from {effective-date: "2026-05-15"}]->(WO-prev:WorkOrder)
(SR:Requirement)-[cb:constrained-by {since-version: "1.0"}]->(SPEC:Specification)

4. Cypher-style query examples

4.1 BR, влияющие на KPI X

MATCH (br:Requirement {type:"BR"})-[:goal]->(g:BusinessGoal)-[:impacts-kpi]->(k:KPI {name:"Sales Cycle Time"})
RETURN br.id, br.title, br.status

4.2 Затронутые задачи при изменении SR-05

MATCH (sr:Requirement {id:"SR-05"})<-[:implements]-(t:Task)
WHERE t.status NOT IN ["done", "cancelled"]
RETURN t.id, t.title, t.assignee

4.3 Все требования с PII в GDPR/ФЗ-152 scope

MATCH (r:Requirement)-[:compliance-with]->(c:Compliance)
WHERE c.standard IN ["GDPR", "ФЗ-152"] AND r.data-classification.contains-pii = true
RETURN r.id, r.title, collect(c.control) as controls

4.4 Stale TC (criteria-version drift)

MATCH (r:Requirement)<-[:verifies]-(tc:TestCase)
WHERE tc.last-run.requirement-version < r.version
RETURN r.id, tc.id, tc.last-run.requirement-version, r.version

4.5 Multi-hop: code → test → SR → BR → KPI

MATCH (code:CodeArtifact {path:"src/auth/registration.py"})
      <-[:realises-in]-(tc:TestCase)
      -[:verifies]->(sr:Requirement {type:"SR"})
      -[:parent*1..2]->(br:Requirement {type:"BR"})
      -[:goal]->(g:BusinessGoal)
      -[:impacts-kpi]->(k:KPI)
RETURN code.path, sr.id, br.id, g.name, k.name

«Какие KPI зависят от этого файла кода?» — за один query.

4.6 SPEC dependency cycle detection

MATCH path=(s1:Specification)-[:depends-on*]->(s1)
RETURN path

Returning rows → нарушение DAG invariant (см. 02-schemas.md §9).

4.7 ADAPT с open backward findings

MATCH (a:ADAPT {status:"draft"})-[:contains-backward]->(b:BackwardFinding {status:"open"})
RETURN a.id, count(b) as open_count
ORDER BY open_count DESC

5. Derivation rules

KG — derived от frontmatter артефактов. Не существует «прямого редактирования графа».

5.1 Node derivation

Node typeИсточник в frontmatter
Requirementid, type ∈ {BR,SR,TR}
Specificationid, type ∈ {SPEC-ARCH..SPEC-OPS}
ADAPTid, type: ADAPT
BackwardFindingADAPT body parsing
TestCaseid, level: TC
WorkOrderTZ-NNN frontmatter
Stakeholderbusiness-context.stakeholder deduplicated
BusinessGoalbusiness-context.business-goal deduplicated
KPIbusiness-outcome.kpi-name deduplicated
Compliancecompliance.standard + compliance.control

5.2 Edge derivation

EdgeИсточник
parentparent.id field
verifiesverifies[].id в TC
constrained-byconstrained-by[] в SR
depends-ondepends-on[] в SPEC
implements-specimplements-spec[] в TR
owned-bybusiness-context.stakeholder → Stakeholder node
compliance-withcompliance[] массив
derived-from-adaptsource.adapt
from-ordersource.tz-section
delta-fromparent-adapt (для ADAPT) или TZ delta

5.3 Refresh policy

Граф rebuilt при:

  • Любое изменение в .req репозитории / collection (post-commit / post-save hook).
  • Import TC last-run от CI бота.
  • Создание/обновление task в task store.

Rebuild — incremental (только затронутые узлы и грани), не full rebuild каждый раз. Full rebuild — раз в неделю reconciliation-агентом.


6. Validation queries (для reconciliation)

Reconciliation-агент запускает graph queries для finding inconsistency:

6.1 Orphan approved requirements

MATCH (r:Requirement {status:"approved"})
WHERE NOT (r)-[:verified-by]->()
RETURN r.id  // approved без TC — warning

6.2 Broken citations

MATCH (r:Requirement)-[:from-order]->(wo:WorkOrder)
WHERE wo.status = "obsolete"
RETURN r.id, wo.id  // citation указывает на obsolete TZ

6.3 Circular parent chain

MATCH path=(r1:Requirement)-[:parent*]->(r1)
RETURN path

6.4 Stakeholder без owned BR

MATCH (s:Stakeholder)
WHERE NOT (s)<-[:owned-by]-()
RETURN s.id  // stakeholder в графе, но nothing assigned

6.5 Test fitting suspicious (AIR-06 signal)

MATCH (tc:TestCase)
WHERE tc.last_modified < tc.criteria_changed_at
  AND tc.last-run.result = "pass"
RETURN tc.id  // criteria недавно меняли, тут же passing — подозрительно
MATCH (sr:Requirement {type:"SR", status:"approved"})
WHERE NOT (sr)-[:constrained-by]->(:Specification)
RETURN sr.id  // SR approved, но не привязан ни к одному SPEC — warning

6.7 SPEC без referenced-by (orphan SPEC)

MATCH (s:Specification {status:"approved"})
WHERE NOT (s)<-[:referenced-by]-()
  AND NOT (s)<-[:depends-on]-()
RETURN s.id  // возможный мёртвый SPEC

7. Federated queries (cross-project)

Multi-project координация через KG federation. Пример:

MATCH (s1:Specification {project:"princess", type:"SPEC-INT"})
      -[:participates-in]->(int:Specification)
      <-[:participates-in]-(s2:Specification {project:"gerda"})
WHERE int.contract-version <> s1.implemented-version
RETURN s1.id, s2.id, int.id, int.contract-version, s1.implemented-version

Отвечает на «какие cross-team integrations имеют version drift».

Federation — substrate-зависимая операция; реализуется через convention (cross-substrate query layer) или native multi-tenant graph.


8. AI prompt access pattern

8.1 Без графа

Промпт AI содержит:

Контекст: [полное содержимое нескольких .md файлов]
Задача: ...

Проблемы: токены, релевантность, hallucinations (см. AIR-01).

8.2 С графом

Промпт AI содержит structured context:

target-br: BR-05
parent:
  id: BR-05
  business-goal: "Reduce sales cycle"
  stakeholder: "Sales Director"
  data-classification: { contains-pii: true, residency: ["RU"] }
  compliance: ["ФЗ-152 ст.13.1"]
sibling-srs:
  - { id: SR-12, status: verified, scope: "lead intake" }
  - { id: SR-13, status: approved, scope: "lead qualification" }
related-specs:
  - SPEC-API-03 (auth contract, version 1.2)
  - SPEC-SEC-01 (auth model, RBAC)
related-decisions:
  - DEC-2026-04-15: "В этом проекте RLS на уровне БД, не applevel"
related-risks:
  - AIR-09 (privacy leakage) — mitigations active

AI генерирует SR с этим контекстом — больше шансов consistency, меньше hallucinations.


9. Substrate-native реализации

Граф derived от frontmatter всех .md в <project>.req/ + task store.

Пример реализации: embedded SQLite с graph schema:

CREATE TABLE nodes (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    properties JSON,
    last_modified TIMESTAMP
);

CREATE TABLE edges (
    from_id TEXT,
    to_id TEXT,
    edge_type TEXT,
    properties JSON,
    PRIMARY KEY (from_id, to_id, edge_type)
);

CREATE INDEX idx_edges_from ON edges(from_id);
CREATE INDEX idx_edges_to ON edges(to_id);
CREATE INDEX idx_edges_type ON edges(edge_type);

Альтернатива для больших проектов: embedded graph DB (Kuzu, RedisGraph local).

9.2 Document substrate (Raven и аналоги)

Документные БД с поддержкой графа имеют native graph queries через design views / Cypher-like языки. Не требуют separate infrastructure.

9.3 Schema invariants (independent of substrate)

  • Node types и edge types — fixed (closed list).
  • Properties могут эволюционировать (minor schema bump).
  • Удаление node / edge type — major schema bump + migration.

10. Implementation roadmap

Уровень зрелостиПокрытие графа
RENAR-1 / CoreKG опционален; парсинг frontmatter достаточно.
RENAR-2 / FoundationБазовый граф: Requirement, TestCase, WorkOrder, Task; edges parent, verifies, verified-by, implements. Простые pre-built queries.
RENAR-3 / TeamДобавить: SPEC, ADAPT, BackwardFinding, Stakeholder, BusinessGoal, KPI, Decision. Edges: constrained-by, depends-on, derived-from-adapt, owned-by, goal, impacts-kpi. AI prompts с graph context.
RENAR-4 / EnterpriseПолная схема + reconciliation queries + federation. Visualization в UI.
RENAR-5Trend analytics, cross-substrate federation, embedded graph DB для больших репо.

11. Cross-references


Knowledge Graph Schema RENAR 1.0-draft — renar.tech