Compare commits
6 commits
e1605124dc
...
66346f5f4e
| Author | SHA1 | Date | |
|---|---|---|---|
| 66346f5f4e | |||
| dccfe478a0 | |||
| d406a0a554 | |||
| b440221514 | |||
| c66ff636ec | |||
| b1d11cd84b |
5 changed files with 987 additions and 161 deletions
2
Makefile
2
Makefile
|
|
@ -1,5 +1,5 @@
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Knowledge Genome - Makefile v. 0.3.0
|
# Knowledge Genome - Makefile v. 1.0.0
|
||||||
# Orchestrates the setup and management of the knowledge base.
|
# Orchestrates the setup and management of the knowledge base.
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ Session end or return to `disabled`: remind operator to run `git-crypt lock` on
|
||||||
5. Never commit to `main`. Branch per task; PR required; no self-merge.
|
5. Never commit to `main`. Branch per task; PR required; no self-merge.
|
||||||
6. Contradict, don't overwrite. New evidence contradicts existing claim → §Conflict.
|
6. Contradict, don't overwrite. New evidence contradicts existing claim → §Conflict.
|
||||||
7. Never commit plaintext to any path marked for encryption in `.gitattributes`.
|
7. Never commit plaintext to any path marked for encryption in `.gitattributes`.
|
||||||
|
8. Every PR must use `templates/pr-description.md`. Do not omit the tabular summary.
|
||||||
|
|
||||||
### NEVER
|
### NEVER
|
||||||
- Load `wiki/log.md` in full — read only the tail injected by the orchestrator.
|
- Load `wiki/log.md` in full — read only the tail injected by the orchestrator.
|
||||||
|
|
@ -58,10 +59,11 @@ Session end or return to `disabled`: remind operator to run `git-crypt lock` on
|
||||||
|
|
||||||
Execute in this order before any file operation:
|
Execute in this order before any file operation:
|
||||||
|
|
||||||
1. Read `wiki/index.md` — full catalog of all pages and their maturity.
|
1. **One source per session.** If multiple sources are queued in `raw/`, process only the first. Commit, close session. The orchestrator starts a new session for the next source.
|
||||||
2. Read the last 20 log entries injected by orchestrator — do not open `wiki/log.md` directly.
|
2. Read `wiki/index.md` — full catalog of all pages and their maturity.
|
||||||
3. For any task involving related pages: `qmd search "<query>"` before opening files.
|
3. Read the last 20 log entries injected by orchestrator — do not open `wiki/log.md` directly.
|
||||||
4. Operate on individual target files. Never scan entire directories.
|
4. For any task involving related pages: `qmd search "<query>"` before opening files.
|
||||||
|
5. Operate on individual target files. Never scan entire directories.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -77,7 +79,8 @@ Execute in this order before any file operation:
|
||||||
5. Check each touched page for contradictions → apply §Conflict if found.
|
5. Check each touched page for contradictions → apply §Conflict if found.
|
||||||
6. Append entry to `wiki/index.md` (bottom of relevant section).
|
6. Append entry to `wiki/index.md` (bottom of relevant section).
|
||||||
7. Append log entry: `INGEST | <slug>`.
|
7. Append log entry: `INGEST | <slug>`.
|
||||||
8. Commit on `feat/ai-ingest-<slug>`. Open PR.
|
8. Run scoped lint on pages created or modified in this session. Report issues in PR description. Do not auto-fix.
|
||||||
|
9. Commit on `feat/ai-ingest-<slug>`. Open PR using `templates/pr-description.md`.
|
||||||
|
|
||||||
*Private source* (`PRIVATE_CONTEXT: enabled` required):
|
*Private source* (`PRIVATE_CONTEXT: enabled` required):
|
||||||
- All output → `wiki/private/<slug>.md` only.
|
- All output → `wiki/private/<slug>.md` only.
|
||||||
|
|
@ -87,24 +90,28 @@ Execute in this order before any file operation:
|
||||||
*Triggered by operator question.*
|
*Triggered by operator question.*
|
||||||
|
|
||||||
1. `qmd search "<query>"` → identify candidate pages.
|
1. `qmd search "<query>"` → identify candidate pages.
|
||||||
2. Read relevant pages via `wiki/index.md` catalog.
|
2. Read candidate pages directly.
|
||||||
3. Synthesize answer with `[[wikilink]]` citations.
|
3. Synthesize answer with `[[wikilink]]` citations.
|
||||||
4. If answer is non-trivial: save as `wiki/queries/<slug>.md`.
|
4. If answer is non-trivial: save as `wiki/queries/<slug>.md`.
|
||||||
5. Append entry to `wiki/index.md` under Queries.
|
5. Append entry to `wiki/index.md` under Queries.
|
||||||
6. Append log entry: `QUERY | <subject>`.
|
6. Append log entry: `QUERY | <subject>`.
|
||||||
|
|
||||||
|
*For general orientation without a specific query: read `wiki/index.md` directly.*
|
||||||
|
|
||||||
### Lint
|
### Lint
|
||||||
*Triggered by operator or schedule.*
|
*Triggered by operator with bash pre-scan output.*
|
||||||
|
|
||||||
Find and report — do not auto-fix without operator approval:
|
Pre-requisite: operator runs `bash scripts/lint-genomes.sh` and provides output to this session.
|
||||||
|
The script handles deterministically: broken links, knowledge decay, page size, frontmatter validation.
|
||||||
|
|
||||||
1. Orphan pages — no inbound `[[wikilink]]`.
|
Agent tasks — apply semantic judgment to bash findings + independent semantic checks:
|
||||||
2. Duplicate concepts — two pages covering same topic → propose merge.
|
|
||||||
3. Implicit concepts — term in 3+ pages with no dedicated page.
|
|
||||||
4. `maturity: draft` with 2+ sources → propose promote to `stable`.
|
|
||||||
5. Broken internal links.
|
|
||||||
6. Knowledge decay violations (§Decay).
|
|
||||||
|
|
||||||
|
1. **Orphan pages** (list from bash): for each orphan, identify 1-3 existing pages that should link to it. Propose specific link additions.
|
||||||
|
2. **Implicit concepts** (term list from bash): for each candidate term, determine if a dedicated page is warranted. If yes, draft stub.
|
||||||
|
3. **Duplicate concepts**: `qmd search "<concept>"` for suspected duplicates → propose merge if confirmed.
|
||||||
|
4. **`maturity: draft`** pages with 2+ sources cited → propose promote to `stable`.
|
||||||
|
|
||||||
|
Report all findings as structured list. Do not modify files without operator approval.
|
||||||
Append log entry: `LINT | <summary of findings>`.
|
Append log entry: `LINT | <summary of findings>`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -86,48 +86,3 @@ Genome-level operations are governed by the genome's `AGENTS.md`, not this file.
|
||||||
- Concepts in genome-X that should link to genome-Y but don't.
|
- Concepts in genome-X that should link to genome-Y but don't.
|
||||||
3. Report findings. Do not modify any files.
|
3. Report findings. Do not modify any files.
|
||||||
4. For each finding: create a conflict note in the genome where resolution belongs, following that genome's §Conflict procedure.
|
4. For each finding: create a conflict note in the genome where resolution belongs, following that genome's §Conflict procedure.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Reference Operations
|
|
||||||
|
|
||||||
### Add a genome
|
|
||||||
```bash
|
|
||||||
make add-genome NAME=genome-newname DESC="Domain description"
|
|
||||||
```
|
|
||||||
Then update the architecture diagram in this file.
|
|
||||||
|
|
||||||
### Sync submodules
|
|
||||||
```bash
|
|
||||||
make sync
|
|
||||||
```
|
|
||||||
|
|
||||||
### Update core-karpathy reference
|
|
||||||
```bash
|
|
||||||
git submodule update --remote core-karpathy
|
|
||||||
git add core-karpathy
|
|
||||||
git commit -m "chore: update core-karpathy to latest gist"
|
|
||||||
git push
|
|
||||||
```
|
|
||||||
|
|
||||||
### Clone (full)
|
|
||||||
```bash
|
|
||||||
git clone --recurse-submodules \
|
|
||||||
{{FORGEJO_URL}}/{{FORGEJO_USER}}/{{MASTER_REPO}}.git
|
|
||||||
```
|
|
||||||
After cloning, unlock each genome on the host before starting an agent session.
|
|
||||||
|
|
||||||
### Key rotation (emergency)
|
|
||||||
If a key is compromised: `gcrypt_rotate_key "<genome>"` from project root.
|
|
||||||
Update the Vaultwarden Secure Note with the new base64-encoded key.
|
|
||||||
Revoke access from previous key holders.
|
|
||||||
|
|
||||||
### Key registry
|
|
||||||
|
|
||||||
| Genome | Vaultwarden Secure Note | Temp key file |
|
|
||||||
|--------|------------------------|---------------|
|
|
||||||
| genome-dev | `genome-dev key` | `keys/genome-dev.key` |
|
|
||||||
| genome-finance | `genome-finance key` | `keys/genome-finance.key` |
|
|
||||||
| genome-homelab | `genome-homelab key` | `keys/genome-homelab.key` |
|
|
||||||
|
|
||||||
Temp key files in `keys/` are post-export only. Delete after upload to Vaultwarden.
|
|
||||||
|
|
|
||||||
26
templates/pr-description.md
Normal file
26
templates/pr-description.md
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
## Summary
|
||||||
|
<!-- One sentence: goal of this session and source processed. -->
|
||||||
|
|
||||||
|
## Pages Created
|
||||||
|
| Path | Type | Maturity |
|
||||||
|
|------|------|----------|
|
||||||
|
| `[[folder/slug]]` | entity / concept / source / query | draft |
|
||||||
|
|
||||||
|
## Pages Modified
|
||||||
|
| Path | Change |
|
||||||
|
|------|--------|
|
||||||
|
| `[[folder/slug]]` | Added cross-reference to `[[other/page]]` |
|
||||||
|
|
||||||
|
## Contradictions Found
|
||||||
|
- [ ] None
|
||||||
|
- [ ] `n` conflict file(s) created — listed below
|
||||||
|
|
||||||
|
## Private Data Accessed
|
||||||
|
- [ ] No — `PRIVATE_CONTEXT: disabled`
|
||||||
|
- [ ] Yes — `PRIVATE_CONTEXT: enabled` · outputs in `wiki/private/` only
|
||||||
|
|
||||||
|
## Scoped Lint (post-ingest)
|
||||||
|
- [ ] Frontmatter valid on all touched pages
|
||||||
|
- [ ] No broken wikilinks on touched pages
|
||||||
|
- [ ] No issues found
|
||||||
|
- [ ] Issues found (list):
|
||||||
Loading…
Add table
Reference in a new issue