-
Notifications
You must be signed in to change notification settings - Fork 0
docs: define Hill 1 semantic bootstrap slice #308
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
248c33d
873fbab
45914c7
d011b92
5fcb6ad
903ca3e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -98,6 +98,7 @@ Node prefixes are grouped into five categories. **Unknown prefixes produce a war | |
| | `feature:` | Feature grouping within a milestone | `feature:BDK-SCHEMA` | | ||
| | `task:` | Atomic unit of work | `task:BDK-001` | | ||
| | `issue:` | GitHub/tracker issue | `issue:180` | | ||
| | `pr:` | Pull request referenced from repo artifacts | `pr:308` | | ||
| | `phase:` | Project phase (alias for milestone in views) | `phase:alpha` | | ||
|
|
||
| ### Knowledge | ||
|
|
@@ -138,23 +139,30 @@ Node prefixes are grouped into five categories. **Unknown prefixes produce a war | |
| | Prefix | Purpose | Example | | ||
| |--------|---------|---------| | ||
| | `commit:` | Git commit (auto-generated by hooks) | `commit:934b6e3` | | ||
| | `repo:` | Cross-repo qualifier namespace for remote node IDs | `repo:owner/name:crate:echo-core` | | ||
| | `epoch:` | System-generated temporal/version marker for time-travel | `epoch:934b6e3` | | ||
|
|
||
| **System prefix rules:** | ||
| - `commit:` nodes are created automatically by the post-commit hook. | ||
| - User-provided `commit:` nodes in import files are **rejected** (hard error). | ||
| - `repo:` is reserved for system-managed cross-repo qualification and should not be introduced ad hoc in import files. | ||
| - `epoch:` nodes are created automatically by the epoch/timeline machinery and are not authored directly in import files. | ||
| - Future system prefixes will use the `sys-` namespace (e.g., `sys-audit:`). | ||
|
Comment on lines
145
to
150
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Check how system prefixes are enforced in import logic
echo "=== Search for commit: validation/rejection logic ==="
rg -n "commit:" src/import.js src/validators.js -B2 -A2
echo -e "\n=== Search for system prefix enforcement ==="
rg -n "SYSTEM_PREFIXES|system.*prefix|classifyPrefix" src/ -B2 -A2 | head -50
echo -e "\n=== Search for hard error conditions ==="
rg -n "hard error|reject.*prefix|system.*reject" src/ -B1 -A1Repository: flyingrobots/git-mind Length of output: 2539 Documentation falsely promises system prefix enforcement that doesn't exist in code. Lines 147-149 claim system prefixes are controlled:
None of this is enforced. The code has zero runtime protection against any of these prefixes appearing in user-authored nodes. Evidence from
Result: Users CAN currently create Required: Either enforce the restrictions with actual rejection logic, or remove the false claims from the documentation. Claiming "hard error" and "rejected" while the code accepts them is a contract violation. 🤖 Prompt for AI Agents |
||
|
|
||
| --- | ||
|
|
||
| ## 4. Edge Types | ||
|
|
||
| Eight directed edge types are defined. Unknown edge types are a **hard error**. | ||
| Eleven directed edge types are defined. Unknown edge types are a **hard error**. | ||
|
|
||
coderabbitai[bot] marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| | Type | Definition | Direction | Example | | ||
| |------|-----------|-----------|---------| | ||
| | `implements` | Source implements the target | task → feature, code → spec | `task:BDK-002 → feature:BDK-SCHEMA` | | ||
| | `augments` | Source extends or enhances target | extension → base | `module:auth-oauth → module:auth` | | ||
| | `relates-to` | General semantic association | either direction | `concept:zero-trust → adr:001` | | ||
| | `references` | Source explicitly references target | artifact → referenced artifact | `doc:release-notes → issue:180` | | ||
| | `touches` | Source changes or directly touches target | commit → file | `commit:934b6e3 → file:src/auth.js` | | ||
| | `groups` | Source groups or contains target | parent → child | `module:auth → file:src/auth.js` | | ||
| | `blocks` | Source blocks progress on target | blocker → blocked | `task:BDK-001 → task:BDK-002` | | ||
| | `belongs-to` | Source is a child/member of target | child → parent | `feature:BDK-SCHEMA → milestone:BEDROCK` | | ||
| | `consumed-by` | Source is consumed/used by target | resource → consumer | `pkg:chalk → module:format` | | ||
|
Comment on lines
+165
to
168
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion | 🟠 Major Semantic overlap: Line 165 defines Impact:
Add a guidance note to Section 4 clarifying when to use each direction, or consider deprecating one in favor of the other. For example: **Directionality note:** `groups` and `belongs-to` are inverse relationships. By convention, use `belongs-to` when authoring manual edges (child → parent), and reserve `groups` for system-generated containment edges (parent → child).🤖 Prompt for AI Agents |
||
|
|
@@ -261,7 +269,7 @@ Applying the same valid import file twice produces identical graph state. The se | |
| | `Milestone:BEDROCK` | Lowercase prefix | Use `milestone:BEDROCK` — prefix is always lowercase | | ||
| | `my node` | No whitespace | Whitespace is not allowed in node IDs | | ||
| | `commit:abc123` (in import) | System prefix | `commit:` nodes cannot be created via import | | ||
| | `task:A --[explodes]--> task:B` | Known edge type | `explodes` is not one of the 8 valid edge types | | ||
| | `task:A --[explodes]--> task:B` | Known edge type | `explodes` is not one of the 11 valid edge types | | ||
| | `task:X blocks task:X` | Self-edge | `blocks` does not allow self-edges | | ||
| | `confidence: 1.5` | Confidence range | Must be in [0.0, 1.0] | | ||
| | `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._\/@-]+$/; | |
|
|
||
| ```js | ||
| const CANONICAL_PREFIXES = [ | ||
| 'milestone', 'feature', 'task', 'issue', 'phase', | ||
| 'milestone', 'feature', 'task', 'issue', 'pr', 'phase', | ||
| 'spec', 'adr', 'doc', 'concept', 'decision', | ||
| 'crate', 'module', 'pkg', 'file', | ||
| 'person', 'tool', | ||
| 'event', 'metric', | ||
| 'commit', | ||
| ]; | ||
| ``` | ||
|
|
||
| ### Edge Type Array | ||
|
|
||
| ```js | ||
| const EDGE_TYPES = [ | ||
| 'implements', 'augments', 'relates-to', 'blocks', | ||
| 'implements', 'augments', 'relates-to', 'references', | ||
| 'touches', 'groups', 'blocks', | ||
| 'belongs-to', 'consumed-by', 'depends-on', 'documents', | ||
| ]; | ||
| ``` | ||
|
|
||
| ### System Prefixes | ||
|
|
||
| ```js | ||
| const SYSTEM_PREFIXES = ['commit']; | ||
| const SYSTEM_PREFIXES = ['commit', 'repo', 'epoch']; | ||
flyingrobots marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ``` | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Vague description:
epoch:"time-travel" semantics are undefined.Line 143 describes
epoch:as a "System-generated temporal/version marker for time-travel" but never defines:epoch:differs fromcommit:(both examples use hash-like identifiers)The phrase "epoch/timeline machinery" (line 149) is equally opaque.
Impact:
Expand the description with concrete semantics:
And expand line 149:
🤖 Prompt for AI Agents