@@ -98,6 +98,7 @@ Node prefixes are grouped into five categories. **Unknown prefixes produce a war
9898| ` feature: ` | Feature grouping within a milestone | ` feature:BDK-SCHEMA ` |
9999| ` task: ` | Atomic unit of work | ` task:BDK-001 ` |
100100| ` issue: ` | GitHub/tracker issue | ` issue:180 ` |
101+ | ` pr: ` | Pull request referenced from repo artifacts | ` pr:308 ` |
101102| ` phase: ` | Project phase (alias for milestone in views) | ` phase:alpha ` |
102103
103104### Knowledge
@@ -138,23 +139,30 @@ Node prefixes are grouped into five categories. **Unknown prefixes produce a war
138139| Prefix | Purpose | Example |
139140| --------| ---------| ---------|
140141| ` commit: ` | Git commit (auto-generated by hooks) | ` commit:934b6e3 ` |
142+ | ` repo: ` | Cross-repo qualifier namespace for remote node IDs | ` repo:owner/name:crate:echo-core ` |
143+ | ` epoch: ` | System-generated temporal/version marker for time-travel | ` epoch:934b6e3 ` |
141144
142145** System prefix rules:**
143146- ` commit: ` nodes are created automatically by the post-commit hook.
144147- User-provided ` commit: ` nodes in import files are ** rejected** (hard error).
148+ - ` repo: ` is reserved for system-managed cross-repo qualification and should not be introduced ad hoc in import files.
149+ - ` epoch: ` nodes are created automatically by the epoch/timeline machinery and are not authored directly in import files.
145150- Future system prefixes will use the ` sys- ` namespace (e.g., ` sys-audit: ` ).
146151
147152---
148153
149154## 4. Edge Types
150155
151- Eight directed edge types are defined. Unknown edge types are a ** hard error** .
156+ Eleven directed edge types are defined. Unknown edge types are a ** hard error** .
152157
153158| Type | Definition | Direction | Example |
154159| ------| -----------| -----------| ---------|
155160| ` implements ` | Source implements the target | task → feature, code → spec | ` task:BDK-002 → feature:BDK-SCHEMA ` |
156161| ` augments ` | Source extends or enhances target | extension → base | ` module:auth-oauth → module:auth ` |
157162| ` relates-to ` | General semantic association | either direction | ` concept:zero-trust → adr:001 ` |
163+ | ` references ` | Source explicitly references target | artifact → referenced artifact | ` doc:release-notes → issue:180 ` |
164+ | ` touches ` | Source changes or directly touches target | commit → file | ` commit:934b6e3 → file:src/auth.js ` |
165+ | ` groups ` | Source groups or contains target | parent → child | ` module:auth → file:src/auth.js ` |
158166| ` blocks ` | Source blocks progress on target | blocker → blocked | ` task:BDK-001 → task:BDK-002 ` |
159167| ` belongs-to ` | Source is a child/member of target | child → parent | ` feature:BDK-SCHEMA → milestone:BEDROCK ` |
160168| ` consumed-by ` | Source is consumed/used by target | resource → consumer | ` pkg:chalk → module:format ` |
@@ -261,7 +269,7 @@ Applying the same valid import file twice produces identical graph state. The se
261269| ` Milestone:BEDROCK ` | Lowercase prefix | Use ` milestone:BEDROCK ` — prefix is always lowercase |
262270| ` my node ` | No whitespace | Whitespace is not allowed in node IDs |
263271| ` commit:abc123 ` (in import) | System prefix | ` commit: ` nodes cannot be created via import |
264- | ` task:A --[explodes]--> task:B ` | Known edge type | ` explodes ` is not one of the 8 valid edge types |
272+ | ` task:A --[explodes]--> task:B ` | Known edge type | ` explodes ` is not one of the 11 valid edge types |
265273| ` task:X blocks task:X ` | Self-edge | ` blocks ` does not allow self-edges |
266274| ` confidence: 1.5 ` | Confidence range | Must be in [ 0.0, 1.0] |
267275| ` confidence: NaN ` | Finite number | NaN, Infinity, and non-numbers are rejected |
@@ -332,26 +340,26 @@ const NODE_ID = /^[a-z][a-z0-9-]*:[A-Za-z0-9._\/@-]+$/;
332340
333341` ` ` js
334342const CANONICAL_PREFIXES = [
335- 'milestone', 'feature', 'task', 'issue', 'phase',
343+ 'milestone', 'feature', 'task', 'issue', 'pr', ' phase',
336344 'spec', 'adr', 'doc', 'concept', 'decision',
337345 'crate', 'module', 'pkg', 'file',
338346 'person', 'tool',
339347 'event', 'metric',
340- 'commit',
341348];
342349` ` `
343350
344351# ## Edge Type Array
345352
346353` ` ` js
347354const EDGE_TYPES = [
348- 'implements', 'augments', 'relates-to', 'blocks',
355+ 'implements', 'augments', 'relates-to', 'references',
356+ 'touches', 'groups', 'blocks',
349357 'belongs-to', 'consumed-by', 'depends-on', 'documents',
350358];
351359` ` `
352360
353361# ## System Prefixes
354362
355363` ` ` js
356- const SYSTEM_PREFIXES = ['commit'];
364+ const SYSTEM_PREFIXES = ['commit', 'repo', 'epoch' ];
357365` ` `
0 commit comments