@chrisdudek/yg 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +24 -6
- package/dist/bin.js.map +1 -1
- package/dist/templates/rules.ts +24 -6
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
@@ -123,6 +123,7 @@ You have fundamentally broken Yggdrasil if you do any of the following:
|
|
|
123
123
|
- \u274C You ran \`yg drift-sync\` before updating graph artifacts.
|
|
124
124
|
- \u274C You ran \`yg drift-sync\` after a graph-only change without verifying source files.
|
|
125
125
|
- \u274C You used Blackbox coverage for greenfield/new code.
|
|
126
|
+
- \u274C You answered a question about a mapped file/area without running \`yg build-context\` when the path was known.
|
|
126
127
|
|
|
127
128
|
---
|
|
128
129
|
|
|
@@ -137,7 +138,15 @@ Always execute these commands before doing anything else. *(Exception: If the us
|
|
|
137
138
|
3. \`yg status\` -> Report graph health.
|
|
138
139
|
4. \`yg validate\` -> If W008 stale-knowledge appears, update the knowledge artifacts to reflect current node state.
|
|
139
140
|
|
|
140
|
-
### B.
|
|
141
|
+
### B. Answering Questions (When a specific file or area is known)
|
|
142
|
+
When the user asks a question and you know (or can infer) which file or area of the codebase it concerns:
|
|
143
|
+
1. Run \`yg owner --file <path>\` for the relevant file(s).
|
|
144
|
+
2. **If owner FOUND:** Run \`yg build-context --node <node_path>\` and base your answer on that context. Do NOT answer from grep/search alone \u2014 the graph provides intent, constraints, and relations that yield better answers.
|
|
145
|
+
3. **If owner NOT FOUND:** The file is outside the graph (e.g. third-party code, user's theme/plugin, unmapped area). You may answer from grep/search, but state that the answer is not graph-based.
|
|
146
|
+
|
|
147
|
+
This applies even when you are **not modifying files** \u2014 e.g. when providing code snippets to paste elsewhere, explaining behavior, or suggesting hooks. If the question touches mapped code, build-context first.
|
|
148
|
+
|
|
149
|
+
### C. Session Verification (Wrap-up)
|
|
141
150
|
Triggered by phrases like: "we're done", "wrap up", "that's enough", "done", "ok".
|
|
142
151
|
**Note: The graph should ALREADY be up to date. If the graph requires massive updates at this stage, YOU HAVE FAILED.**
|
|
143
152
|
1. If iterative journal mode was used: consolidate notes to the graph, then \`yg journal-archive\`.
|
|
@@ -234,8 +243,8 @@ However, you must NOT dump all knowledge into a single file. Yggdrasil's context
|
|
|
234
243
|
### CRITICAL RULE: CAPTURE INTENT, BUT NEVER INVENT IT
|
|
235
244
|
The graph is not just a structural map; it is the semantic meaning of the system. Code explains "what" and "how". The graph MUST explain "WHY".
|
|
236
245
|
|
|
237
|
-
1. **ALWAYS Capture the User's "Why":** If the user explains the business reason, intent, or rationale behind a request (e.g., "We need to do X because Y"), you MUST permanently record this reasoning in the relevant graph artifacts (
|
|
238
|
-
2. **NEVER Invent the "Why":**
|
|
246
|
+
1. **ALWAYS Capture the User's "Why":** If the user explains the business reason, intent, or rationale behind a request (e.g., "We need to do X because Y"), you MUST permanently record this reasoning in the relevant graph artifacts (from \`config.artifacts\` that fit the content). Do not let the conversation context evaporate.
|
|
247
|
+
2. **NEVER Invent the "Why":** Artifacts that imply human judgment (e.g. local decisions, \`knowledge/invariants\`) must reflect ACTUAL human choices.
|
|
239
248
|
3. **NO Hallucinations:** You MUST NEVER infer or hallucinate a rationale, an architectural decision, or a business rule.
|
|
240
249
|
4. **Ask if Missing:** If the user requests a significant architectural or business logic change but does not provide the rationale, you MUST ask them "Why are we making this change?" before documenting the decision in the graph.
|
|
241
250
|
|
|
@@ -244,10 +253,19 @@ When mapping a file, execute this mental routing:
|
|
|
244
253
|
### Layer 1: Unit Identity (Local Node Artifacts)
|
|
245
254
|
* **What goes here:** Things exclusively true for this specific node.
|
|
246
255
|
* **Routing:** **DO NOT ASSUME FILE NAMES.** You MUST read \`.yggdrasil/config.yaml\` (the \`artifacts\` section) to see the exact allowed filenames for the current project and their requirement conditions (e.g., \`required: always\` vs \`when: has_incoming_relations\`). Write local node knowledge ONLY into these configured files next to \`node.yaml\`.
|
|
247
|
-
*
|
|
248
|
-
|
|
256
|
+
* For each artifact in \`config.artifacts\`, use its \`description\` to decide what content belongs there. Create optional artifacts (those with \`required: never\`) when the node has matching content. Extract from source; do not invent.
|
|
257
|
+
|
|
258
|
+
**Subagents:** When mapping a node, for each optional artifact in config, ask: "Does the source contain content matching this artifact's description?" If yes, create it. Do not invent \u2014 extract only what is implemented.
|
|
259
|
+
|
|
260
|
+
### Optional Artifacts \u2014 Explicit Consideration
|
|
261
|
+
|
|
262
|
+
When creating or editing a graph node, or mapping source files to a node, after fulfilling required artifacts, read \`config.yaml\` and for each artifact with \`required: never\`, ask: "Does this node contain content that matches this artifact's description?" If yes, create it. Base decisions on source code analysis, not file names or structure.
|
|
263
|
+
|
|
264
|
+
**Interpretation of \`required: never\`:** The artifact is optional for validation, not forbidden. Create it when the node has content that fits its description in config.
|
|
265
|
+
|
|
266
|
+
**Interpretation of "don't be over-eager":** Do not invent content, do not document what is not in the code, do not create empty or trivial artifacts. It does NOT mean: avoid adding optional artifacts when they add value based on code analysis.
|
|
249
267
|
|
|
250
|
-
**
|
|
268
|
+
**Post-node checklist:** After completing work on a node, for each optional artifact (from \`config.artifacts\` where \`required: never\`), check: does this node have content for it? If yes, create it. If uncertain, propose with brief justification rather than silently skipping.
|
|
251
269
|
|
|
252
270
|
### Layer 2: Surroundings (Relations & Flows)
|
|
253
271
|
* **What goes here:** How this node interacts with others. You must not duplicate external interfaces locally.
|