@mfittko/repo-wiki 0.2.1
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/.llmwiki/schema.md +107 -0
- package/AGENTS.md +42 -0
- package/CHANGELOG.md +91 -0
- package/LICENSE +21 -0
- package/README.md +254 -0
- package/dist/bin/repo-wiki.d.ts +2 -0
- package/dist/bin/repo-wiki.js +7 -0
- package/dist/bin/repo-wiki.js.map +1 -0
- package/dist/src/cli.d.ts +1 -0
- package/dist/src/cli.js +404 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/compiler.d.ts +55 -0
- package/dist/src/compiler.js +2046 -0
- package/dist/src/compiler.js.map +1 -0
- package/dist/src/config.d.ts +63 -0
- package/dist/src/config.js +86 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/context-assembler.d.ts +68 -0
- package/dist/src/context-assembler.js +378 -0
- package/dist/src/context-assembler.js.map +1 -0
- package/dist/src/data-model-signals.d.ts +1 -0
- package/dist/src/data-model-signals.js +13 -0
- package/dist/src/data-model-signals.js.map +1 -0
- package/dist/src/docs-ingestor.d.ts +138 -0
- package/dist/src/docs-ingestor.js +844 -0
- package/dist/src/docs-ingestor.js.map +1 -0
- package/dist/src/docs-linter.d.ts +14 -0
- package/dist/src/docs-linter.js +164 -0
- package/dist/src/docs-linter.js.map +1 -0
- package/dist/src/docs-validation.d.ts +36 -0
- package/dist/src/docs-validation.js +297 -0
- package/dist/src/docs-validation.js.map +1 -0
- package/dist/src/extractors.d.ts +50 -0
- package/dist/src/extractors.js +2275 -0
- package/dist/src/extractors.js.map +1 -0
- package/dist/src/frontmatter.d.ts +46 -0
- package/dist/src/frontmatter.js +377 -0
- package/dist/src/frontmatter.js.map +1 -0
- package/dist/src/index.d.ts +26 -0
- package/dist/src/index.js +18 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/init.d.ts +12 -0
- package/dist/src/init.js +121 -0
- package/dist/src/init.js.map +1 -0
- package/dist/src/language.d.ts +2 -0
- package/dist/src/language.js +62 -0
- package/dist/src/language.js.map +1 -0
- package/dist/src/linter.d.ts +33 -0
- package/dist/src/linter.js +398 -0
- package/dist/src/linter.js.map +1 -0
- package/dist/src/llm-provider.d.ts +267 -0
- package/dist/src/llm-provider.js +474 -0
- package/dist/src/llm-provider.js.map +1 -0
- package/dist/src/page-ownership.d.ts +38 -0
- package/dist/src/page-ownership.js +96 -0
- package/dist/src/page-ownership.js.map +1 -0
- package/dist/src/planner.d.ts +55 -0
- package/dist/src/planner.js +422 -0
- package/dist/src/planner.js.map +1 -0
- package/dist/src/prompts.d.ts +103 -0
- package/dist/src/prompts.js +344 -0
- package/dist/src/prompts.js.map +1 -0
- package/dist/src/publisher.d.ts +68 -0
- package/dist/src/publisher.js +662 -0
- package/dist/src/publisher.js.map +1 -0
- package/dist/src/repository-analysis.d.ts +88 -0
- package/dist/src/repository-analysis.js +485 -0
- package/dist/src/repository-analysis.js.map +1 -0
- package/dist/src/scanner.d.ts +122 -0
- package/dist/src/scanner.js +309 -0
- package/dist/src/scanner.js.map +1 -0
- package/dist/src/search.d.ts +71 -0
- package/dist/src/search.js +410 -0
- package/dist/src/search.js.map +1 -0
- package/dist/src/secret-patterns.d.ts +3 -0
- package/dist/src/secret-patterns.js +14 -0
- package/dist/src/secret-patterns.js.map +1 -0
- package/dist/src/utils/args.d.ts +2 -0
- package/dist/src/utils/args.js +19 -0
- package/dist/src/utils/args.js.map +1 -0
- package/dist/src/utils/dotenv.d.ts +7 -0
- package/dist/src/utils/dotenv.js +73 -0
- package/dist/src/utils/dotenv.js.map +1 -0
- package/dist/src/utils/fs.d.ts +22 -0
- package/dist/src/utils/fs.js +83 -0
- package/dist/src/utils/fs.js.map +1 -0
- package/dist/src/utils/git.d.ts +13 -0
- package/dist/src/utils/git.js +39 -0
- package/dist/src/utils/git.js.map +1 -0
- package/dist/src/wiki-graph.d.ts +74 -0
- package/dist/src/wiki-graph.js +335 -0
- package/dist/src/wiki-graph.js.map +1 -0
- package/dist/src/wiki-patch.d.ts +152 -0
- package/dist/src/wiki-patch.js +489 -0
- package/dist/src/wiki-patch.js.map +1 -0
- package/dist/src/wiki-query.d.ts +63 -0
- package/dist/src/wiki-query.js +255 -0
- package/dist/src/wiki-query.js.map +1 -0
- package/dist/test/cli.test.d.ts +1 -0
- package/dist/test/cli.test.js +514 -0
- package/dist/test/cli.test.js.map +1 -0
- package/dist/test/compiler-eval.test.d.ts +1 -0
- package/dist/test/compiler-eval.test.js +234 -0
- package/dist/test/compiler-eval.test.js.map +1 -0
- package/dist/test/compiler.test.d.ts +1 -0
- package/dist/test/compiler.test.js +2537 -0
- package/dist/test/compiler.test.js.map +1 -0
- package/dist/test/context-assembler.test.d.ts +1 -0
- package/dist/test/context-assembler.test.js +379 -0
- package/dist/test/context-assembler.test.js.map +1 -0
- package/dist/test/docs-linter.test.d.ts +1 -0
- package/dist/test/docs-linter.test.js +900 -0
- package/dist/test/docs-linter.test.js.map +1 -0
- package/dist/test/dotenv.test.d.ts +1 -0
- package/dist/test/dotenv.test.js +77 -0
- package/dist/test/dotenv.test.js.map +1 -0
- package/dist/test/extractors-go.test.d.ts +1 -0
- package/dist/test/extractors-go.test.js +393 -0
- package/dist/test/extractors-go.test.js.map +1 -0
- package/dist/test/extractors-rust.test.d.ts +1 -0
- package/dist/test/extractors-rust.test.js +219 -0
- package/dist/test/extractors-rust.test.js.map +1 -0
- package/dist/test/extractors-utils.test.d.ts +1 -0
- package/dist/test/extractors-utils.test.js +786 -0
- package/dist/test/extractors-utils.test.js.map +1 -0
- package/dist/test/fixtures/compiler-e2e/basic-node-service/repo/infra/deploy.d.ts +1 -0
- package/dist/test/fixtures/compiler-e2e/basic-node-service/repo/infra/deploy.js +4 -0
- package/dist/test/fixtures/compiler-e2e/basic-node-service/repo/infra/deploy.js.map +1 -0
- package/dist/test/frontmatter.test.d.ts +1 -0
- package/dist/test/frontmatter.test.js +287 -0
- package/dist/test/frontmatter.test.js.map +1 -0
- package/dist/test/init-planner.test.d.ts +1 -0
- package/dist/test/init-planner.test.js +688 -0
- package/dist/test/init-planner.test.js.map +1 -0
- package/dist/test/linter.test.d.ts +1 -0
- package/dist/test/linter.test.js +426 -0
- package/dist/test/linter.test.js.map +1 -0
- package/dist/test/llm-provider.test.d.ts +1 -0
- package/dist/test/llm-provider.test.js +783 -0
- package/dist/test/llm-provider.test.js.map +1 -0
- package/dist/test/page-ownership.test.d.ts +1 -0
- package/dist/test/page-ownership.test.js +247 -0
- package/dist/test/page-ownership.test.js.map +1 -0
- package/dist/test/publisher.test.d.ts +1 -0
- package/dist/test/publisher.test.js +1297 -0
- package/dist/test/publisher.test.js.map +1 -0
- package/dist/test/repository-analysis.test.d.ts +1 -0
- package/dist/test/repository-analysis.test.js +182 -0
- package/dist/test/repository-analysis.test.js.map +1 -0
- package/dist/test/run-compiled-tests.d.ts +1 -0
- package/dist/test/run-compiled-tests.js +48 -0
- package/dist/test/run-compiled-tests.js.map +1 -0
- package/dist/test/scanner.test.d.ts +1 -0
- package/dist/test/scanner.test.js +551 -0
- package/dist/test/scanner.test.js.map +1 -0
- package/dist/test/search.test.d.ts +1 -0
- package/dist/test/search.test.js +92 -0
- package/dist/test/search.test.js.map +1 -0
- package/dist/test/update-changelog.test.d.ts +1 -0
- package/dist/test/update-changelog.test.js +125 -0
- package/dist/test/update-changelog.test.js.map +1 -0
- package/dist/test/wiki-graph.test.d.ts +1 -0
- package/dist/test/wiki-graph.test.js +164 -0
- package/dist/test/wiki-graph.test.js.map +1 -0
- package/dist/test/wiki-patch.test.d.ts +1 -0
- package/dist/test/wiki-patch.test.js +610 -0
- package/dist/test/wiki-patch.test.js.map +1 -0
- package/dist/test/wiki-query.test.d.ts +1 -0
- package/dist/test/wiki-query.test.js +163 -0
- package/dist/test/wiki-query.test.js.map +1 -0
- package/docs/PLAN.md +993 -0
- package/docs/WHY.md +61 -0
- package/docs/plans/agent-integration.md +85 -0
- package/docs/plans/ci-publishing.md +111 -0
- package/docs/plans/doc-validation.md +92 -0
- package/docs/plans/github-action.md +113 -0
- package/docs/plans/incremental-mode.md +98 -0
- package/docs/plans/karpathy-llm-wiki-alignment.md +84 -0
- package/docs/plans/llm-compiler.md +160 -0
- package/docs/plans/production-scanner.md +104 -0
- package/docs/plans/query-and-file-back.md +103 -0
- package/docs/plans/search-index.md +118 -0
- package/docs/plans/trust-hardening.md +74 -0
- package/docs/plans/wiki-graph.md +183 -0
- package/docs/plans/wiki-health.md +76 -0
- package/package.json +83 -0
- package/prompts/compiler.md +16 -0
- package/prompts/lint.md +18 -0
- package/prompts/page-templates.md +25 -0
- package/skills/repo-wiki-cli/SKILL.md +139 -0
package/docs/PLAN.md
ADDED
|
@@ -0,0 +1,993 @@
|
|
|
1
|
+
# repo-wiki Implementation Plan
|
|
2
|
+
|
|
3
|
+
`repo-wiki` is a dual-role Node.js project:
|
|
4
|
+
|
|
5
|
+
1. It is a package and CLI that can be applied to any existing Git repository, with GitHub Wiki as the first supported publication target.
|
|
6
|
+
2. It dogfoods the same package to create and maintain this repository's own GitHub Wiki knowledge base.
|
|
7
|
+
|
|
8
|
+
This project explicitly instantiates Karpathy's LLM Wiki pattern for software repositories: raw sources stay immutable, the wiki becomes a persistent compounding artifact, and a schema tells the LLM and deterministic tooling how to maintain that artifact over time. The product goal is not to be another query-time RAG layer over code. The product goal is to compile repository knowledge once, keep it current after every change, and make that compiled knowledge useful to humans and coding agents.
|
|
9
|
+
|
|
10
|
+
## Product vision
|
|
11
|
+
|
|
12
|
+
Karpathy's LLM Wiki idea starts from a simple critique of ordinary RAG: when an LLM retrieves raw chunks at query time, it rediscovers and re-synthesizes knowledge from scratch on every question. The synthesis does not compound. Contradictions are not remembered unless they happen to be retrieved again. Useful answers disappear into chat history.
|
|
13
|
+
|
|
14
|
+
`repo-wiki` applies the alternative pattern to software repositories:
|
|
15
|
+
|
|
16
|
+
- The Git repository at a pinned commit is the immutable source collection.
|
|
17
|
+
- The generated GitHub Wiki is the persistent, interlinked, compounding artifact.
|
|
18
|
+
- `.llmwiki/schema.md`, `.llmwiki/config.json`, and agent pointers are the schema that discipline future maintenance.
|
|
19
|
+
- `Index.md` is the content-oriented catalog used by people and agents to route questions.
|
|
20
|
+
- `Log.md` is the chronological history of ingests, rebuilds, queries, lint passes, and publication events.
|
|
21
|
+
- Lint and validation gates keep the wiki source-grounded instead of letting it become confident generated fiction.
|
|
22
|
+
|
|
23
|
+
The long-term vision is repository memory infrastructure:
|
|
24
|
+
|
|
25
|
+
- Developers use the wiki to understand unfamiliar repositories faster.
|
|
26
|
+
- Coding agents use the wiki as their first navigation layer before reading source files.
|
|
27
|
+
- Maintainers use the documentation debt report to see where docs, commands, routes, and code disagree.
|
|
28
|
+
- CI uses incremental maintenance to keep the wiki fresh after merges.
|
|
29
|
+
- Good answers to repository questions can be filed back into the wiki as durable pages instead of being lost in chat.
|
|
30
|
+
|
|
31
|
+
## Goals
|
|
32
|
+
|
|
33
|
+
- Bootstrap a useful GitHub Wiki from an existing repository.
|
|
34
|
+
- Maintain the wiki incrementally after merges.
|
|
35
|
+
- Support both human developers and coding agents.
|
|
36
|
+
- Treat code at the pinned commit as authoritative and documentation as configurable secondary evidence.
|
|
37
|
+
- Detect stale, misleading, contradictory, or unvalidated markdown before it influences the wiki.
|
|
38
|
+
- Compile repository knowledge into a persistent artifact instead of re-deriving it from raw files on every query.
|
|
39
|
+
- Keep `Index.md` and `Log.md` parseable enough for agents, shell tools, and humans.
|
|
40
|
+
- Let high-value query outputs become new wiki pages when they add durable repository knowledge.
|
|
41
|
+
- Keep the package installable through `npx`, CI, a direct Node API, and a future GitHub Action.
|
|
42
|
+
- Let this repository maintain its own wiki with the same public interface used by external consumers.
|
|
43
|
+
|
|
44
|
+
## Non-goals for the initial implementation
|
|
45
|
+
|
|
46
|
+
- Perfect semantic understanding of every language.
|
|
47
|
+
- Fully automated trust in pre-existing documentation.
|
|
48
|
+
- One wiki page per file or symbol.
|
|
49
|
+
- Replacing source-level investigation.
|
|
50
|
+
- Replacing code search or IDE navigation.
|
|
51
|
+
- Publishing from untrusted pull requests.
|
|
52
|
+
- Building a general personal wiki product outside the software-repository domain.
|
|
53
|
+
|
|
54
|
+
## Karpathy LLM Wiki alignment
|
|
55
|
+
|
|
56
|
+
Karpathy's pattern has three layers and three operations. `repo-wiki` maps them as follows.
|
|
57
|
+
|
|
58
|
+
### Layers
|
|
59
|
+
|
|
60
|
+
| Karpathy LLM Wiki layer | repo-wiki implementation |
|
|
61
|
+
|---|---|
|
|
62
|
+
| Raw sources | Git repository files at a pinned commit, plus ingested markdown docs treated as source evidence. |
|
|
63
|
+
| Wiki | Generated GitHub Wiki markdown under `.llmwiki/wiki`, optionally published to `OWNER/REPO.wiki.git`. |
|
|
64
|
+
| Schema | `.llmwiki/config.json`, `.llmwiki/schema.md`, generated agent pointers, prompt contracts, lint policy, and page conventions. |
|
|
65
|
+
|
|
66
|
+
### Operations
|
|
67
|
+
|
|
68
|
+
| Karpathy operation | repo-wiki implementation |
|
|
69
|
+
|---|---|
|
|
70
|
+
| Ingest | `scan -> plan -> lint-docs -> compile -> lint`, producing source cards, doc cards, page plans, and generated wiki pages. |
|
|
71
|
+
| Query | Shipped local `repo-wiki search`, `query`, `path`, and `explain` surfaces read the wiki/graph first, then expose evidence references for source verification. Durable file-back remains planned. |
|
|
72
|
+
| Lint | `lint-docs`, `lint`, and future wiki-health checks detect contradictions, stale claims, orphan pages, missing cross-references, undocumented concepts, and unsafe content. |
|
|
73
|
+
|
|
74
|
+
### Design implications
|
|
75
|
+
|
|
76
|
+
- The wiki is not a cache. It is a maintained knowledge artifact.
|
|
77
|
+
- The LLM is a wiki maintainer, not a one-shot summarizer.
|
|
78
|
+
- The source repository remains authoritative when the wiki is stale or incomplete.
|
|
79
|
+
- The schema is part of the product; it teaches future LLM sessions how to maintain the wiki correctly.
|
|
80
|
+
- Queries can create durable artifacts. A useful comparison, investigation, or architecture answer should be eligible for filing into the wiki with provenance.
|
|
81
|
+
- Index and log files are first-class operating surfaces, not decorative pages.
|
|
82
|
+
|
|
83
|
+
## High-level architecture
|
|
84
|
+
|
|
85
|
+
```mermaid
|
|
86
|
+
flowchart TD
|
|
87
|
+
Repo[Git repository at pinned commit] --> Scanner[Repository scanner]
|
|
88
|
+
Repo --> Docs[Markdown documentation ingestor]
|
|
89
|
+
Repo --> Schema[.llmwiki schema and config]
|
|
90
|
+
Scanner --> Cards[Source cards]
|
|
91
|
+
Docs --> DocCards[Documentation cards]
|
|
92
|
+
Cards --> Planner[Bootstrap or incremental planner]
|
|
93
|
+
DocCards --> DocLint[Documentation linter]
|
|
94
|
+
Schema --> Planner
|
|
95
|
+
Schema --> Compiler[Wiki compiler]
|
|
96
|
+
Planner --> Compiler
|
|
97
|
+
DocLint --> Compiler
|
|
98
|
+
Compiler --> Wiki[Local GitHub Wiki markdown]
|
|
99
|
+
Wiki --> Index[Index.md]
|
|
100
|
+
Wiki --> Log[Log.md]
|
|
101
|
+
Wiki --> WikiLint[Wiki linter]
|
|
102
|
+
WikiLint --> Publisher[Git-based publisher]
|
|
103
|
+
Publisher --> GitHubWiki[OWNER/REPO.wiki.git]
|
|
104
|
+
Publisher --> GitHubPages[GitHub Pages branch or docs path]
|
|
105
|
+
Wiki --> Query[Future query and search]
|
|
106
|
+
Query --> DurableAnswer[Optional filed-back wiki page]
|
|
107
|
+
DurableAnswer --> Wiki
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Dual-role operating model
|
|
111
|
+
|
|
112
|
+
```mermaid
|
|
113
|
+
flowchart LR
|
|
114
|
+
Package[repo-wiki package] --> ExternalRepo[Any external repository]
|
|
115
|
+
Package --> SelfRepo[This repository]
|
|
116
|
+
ExternalRepo --> ExternalWiki[External repo GitHub Wiki]
|
|
117
|
+
SelfRepo --> SelfWiki[This package's GitHub Wiki]
|
|
118
|
+
SelfWiki --> AgentDocs[Agent context for improving the package]
|
|
119
|
+
ExternalWiki --> ExternalAgents[Agents and developers working on external repo]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
The package must avoid special-casing itself. Self-maintenance should be a normal consumer workflow:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npm run self:wiki
|
|
126
|
+
npm run kb:publish
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
External usage should be equivalent:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
npx repo-wiki init --repo . --write-agents
|
|
133
|
+
npx repo-wiki run --mode bootstrap --repo . --wiki .llmwiki/wiki
|
|
134
|
+
npx repo-wiki publish --wiki .llmwiki/wiki --remote https://github.com/OWNER/REPO.wiki.git
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Publication supports explicit targets, including a GitHub Wiki target and a GitHub Pages target:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx repo-wiki publish --target github-wiki --wiki .llmwiki/wiki --remote https://github.com/OWNER/REPO.wiki.git
|
|
141
|
+
npx repo-wiki publish --target github-pages --wiki .llmwiki/wiki --branch gh-pages --pages-path .
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Publish targets should own destination-specific rendering policy. GitHub Wiki should strip or transform leading YAML frontmatter by default because hosted wiki pages render it visibly. GitHub Pages/Jekyll should preserve frontmatter by default because Jekyll consumes it as page metadata.
|
|
145
|
+
|
|
146
|
+
## Source authority model
|
|
147
|
+
|
|
148
|
+
```mermaid
|
|
149
|
+
flowchart TB
|
|
150
|
+
Code[Code at pinned commit] --> Authority[Authority decision]
|
|
151
|
+
Tests[Tests] --> Authority
|
|
152
|
+
CI[CI, build, config] --> Authority
|
|
153
|
+
Schemas[Generated schemas and migrations] --> Authority
|
|
154
|
+
Docs[Markdown docs] --> Secondary[Secondary evidence]
|
|
155
|
+
Secondary --> Authority
|
|
156
|
+
Issues[Issues, PRs, comments] --> Context[Context only]
|
|
157
|
+
Context --> Authority
|
|
158
|
+
Wiki[Existing wiki pages] --> Derived[Derived artifact]
|
|
159
|
+
Derived --> Authority
|
|
160
|
+
Authority --> WikiClaim[Compiled wiki claim]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Default authority order:
|
|
164
|
+
|
|
165
|
+
1. Code at pinned commit.
|
|
166
|
+
2. Tests.
|
|
167
|
+
3. CI, build, and runtime configuration.
|
|
168
|
+
4. Generated schemas, route maps, and migrations.
|
|
169
|
+
5. Markdown documentation as secondary evidence.
|
|
170
|
+
6. Issues, PRs, comments, and meeting notes as context only when explicitly ingested.
|
|
171
|
+
7. Existing generated wiki pages as derived evidence only.
|
|
172
|
+
|
|
173
|
+
Markdown should not be excluded by default. It contains intent, product language, onboarding flows, architectural rationale, and operational practice. The risk is not ingestion; the risk is trusting it without validation.
|
|
174
|
+
|
|
175
|
+
## Configurable documentation ingestion
|
|
176
|
+
|
|
177
|
+
Configuration lives in `.llmwiki/config.json`:
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"documentation": {
|
|
182
|
+
"ingest": true,
|
|
183
|
+
"authority": "secondary",
|
|
184
|
+
"include": ["README.md", "docs/**/*.md", "ADR/**/*.md", ".github/**/*.md"],
|
|
185
|
+
"exclude": ["CHANGELOG.md", "docs/archive/**", "docs/old/**"],
|
|
186
|
+
"stale_after_days": 180,
|
|
187
|
+
"require_code_validation": true,
|
|
188
|
+
"allow_unvalidated_context": true,
|
|
189
|
+
"preserve_original_claims": false,
|
|
190
|
+
"fail_on_stale_docs": false,
|
|
191
|
+
"fail_on_conflicting_docs": true
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Recommended modes:
|
|
197
|
+
|
|
198
|
+
| Mode | Behavior |
|
|
199
|
+
|---|---|
|
|
200
|
+
| `documentation.ingest=false` | Ignore markdown except schema and AGENTS guidance. |
|
|
201
|
+
| `authority=secondary` | Use docs for context and intent, but validate claims before promoting them. |
|
|
202
|
+
| `authority=weak` | Treat docs only as hints and debt signals. |
|
|
203
|
+
| `authority=primary_for` future extension | Allow docs to be primary for product terminology or ADR rationale only. |
|
|
204
|
+
|
|
205
|
+
## Documentation ingestion and validation flow
|
|
206
|
+
|
|
207
|
+
```mermaid
|
|
208
|
+
flowchart TD
|
|
209
|
+
Markdown[Markdown files] --> Include[Apply include/exclude rules]
|
|
210
|
+
Include --> Parse[Parse headings, links, code blocks, commands, env vars]
|
|
211
|
+
Parse --> Claims[Extract documentation claims]
|
|
212
|
+
Claims --> Validate[Validate against source cards, tests, config, schemas]
|
|
213
|
+
Validate --> Status{Status}
|
|
214
|
+
Status --> Validated[validated]
|
|
215
|
+
Status --> Unvalidated[unvalidated]
|
|
216
|
+
Status --> Stale[stale]
|
|
217
|
+
Status --> Contradicted[contradicted]
|
|
218
|
+
Validated --> Wiki[May influence wiki]
|
|
219
|
+
Unvalidated --> Debt[Documentation Debt Report]
|
|
220
|
+
Stale --> Debt
|
|
221
|
+
Contradicted --> Debt
|
|
222
|
+
Debt --> OpenQuestions[Open Questions]
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Current scaffold validation is intentionally conservative. It extracts operational claims, commands, environment variable names, stale-language markers, and broken relative links. The production implementation should add deeper validators:
|
|
226
|
+
|
|
227
|
+
- package-script validation against `package.json`.
|
|
228
|
+
- command validation against Makefiles, task runners, and CI workflows.
|
|
229
|
+
- route validation against framework-specific route extractors.
|
|
230
|
+
- environment-variable validation against config/schema/code usage.
|
|
231
|
+
- file-reference validation against the repository tree.
|
|
232
|
+
- ADR recency and supersession detection.
|
|
233
|
+
- generated-wiki claim validation against source paths and previous compiled state.
|
|
234
|
+
|
|
235
|
+
## Bootstrap ingestion for existing repositories
|
|
236
|
+
|
|
237
|
+
Bootstrap mode handles repositories that do not yet have a generated wiki.
|
|
238
|
+
|
|
239
|
+
```mermaid
|
|
240
|
+
sequenceDiagram
|
|
241
|
+
participant User
|
|
242
|
+
participant CLI
|
|
243
|
+
participant Scanner
|
|
244
|
+
participant Planner
|
|
245
|
+
participant DocsLint
|
|
246
|
+
participant Compiler
|
|
247
|
+
participant WikiLint
|
|
248
|
+
participant Publisher
|
|
249
|
+
|
|
250
|
+
User->>CLI: repo-wiki run --mode bootstrap
|
|
251
|
+
CLI->>Scanner: Full repository scan
|
|
252
|
+
Scanner-->>CLI: manifest + source cards + documentation cards
|
|
253
|
+
CLI->>Planner: Create page plan
|
|
254
|
+
Planner-->>CLI: bootstrap-plan.json
|
|
255
|
+
CLI->>DocsLint: Validate ingested markdown
|
|
256
|
+
DocsLint-->>CLI: documentation issues
|
|
257
|
+
CLI->>Compiler: Generate local wiki
|
|
258
|
+
Compiler-->>CLI: markdown pages
|
|
259
|
+
CLI->>WikiLint: Validate wiki
|
|
260
|
+
WikiLint-->>CLI: wiki issues
|
|
261
|
+
alt publish requested and lint passed
|
|
262
|
+
CLI->>Publisher: Push selected target: GitHub Wiki or GitHub Pages
|
|
263
|
+
end
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Bootstrap page order:
|
|
267
|
+
|
|
268
|
+
1. Foundation pages: `Home`, `_Sidebar`, `Index`, `Log`, `Agent-Context-Pack`, `Repository-Overview`, `Architecture`, `Build-Test-and-Run`, `Documentation-Debt-Report`, `Open-Questions`.
|
|
269
|
+
2. Module/service/package pages.
|
|
270
|
+
3. Cross-cutting pages: dependencies, tests, config, security, operations, APIs, data models.
|
|
271
|
+
4. Cross-linking and linting pass.
|
|
272
|
+
|
|
273
|
+
## Incremental ingestion
|
|
274
|
+
|
|
275
|
+
Incremental mode should eventually scan only changed files and affected knowledge units. The current scaffold wires the mode but still performs a broad scan.
|
|
276
|
+
|
|
277
|
+
```mermaid
|
|
278
|
+
flowchart TD
|
|
279
|
+
Base[previous compiled commit] --> Diff[git diff base..head]
|
|
280
|
+
Head[current commit] --> Diff
|
|
281
|
+
Diff --> ChangedFiles[Changed files]
|
|
282
|
+
ChangedFiles --> AffectedCards[Affected source and doc cards]
|
|
283
|
+
AffectedCards --> AffectedPages[Affected wiki pages]
|
|
284
|
+
AffectedPages --> Patch[Wiki patch]
|
|
285
|
+
Patch --> Lint[lint-docs + lint]
|
|
286
|
+
Lint --> Publish[Publish if policy passes]
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Affected-page mapping should use:
|
|
290
|
+
|
|
291
|
+
- file path to module mapping.
|
|
292
|
+
- bounded file-hierarchy propagation from a touched file to directory/module pages and parent aggregate pages only when those pages summarize the changed subtree.
|
|
293
|
+
- symbol extraction.
|
|
294
|
+
- import/dependency graph.
|
|
295
|
+
- test-to-source relationships.
|
|
296
|
+
- route/schema/config extractors.
|
|
297
|
+
- documentation links and claims.
|
|
298
|
+
- previous wiki page frontmatter source paths.
|
|
299
|
+
- `Index.md` and `Log.md` updates for changed knowledge.
|
|
300
|
+
- stale generated-page detection for renamed or removed modules.
|
|
301
|
+
|
|
302
|
+
Propagation should be evidence-based rather than automatic. A changed file always affects its directly owned page and the operation log. It should affect parent hierarchy pages only when page membership, summarized counts, public API, runtime behavior, or subtree-level claims change. It should affect semantic aggregate pages only when their inputs changed: dependency graph pages for import changes, testing pages for test or test-to-source changes, API pages for route changes, configuration/security pages for environment or sensitive-surface changes, and documentation debt pages for documentation-card changes. In LLM mode, enrichment must run only for the affected wiki pages selected by this policy; untouched enriched pages should remain byte-stable to avoid unnecessary model cost and noisy publishes.
|
|
303
|
+
|
|
304
|
+
## Query and filing-back workflow
|
|
305
|
+
|
|
306
|
+
Karpathy's pattern treats good answers as durable knowledge. `repo-wiki` should eventually support this directly.
|
|
307
|
+
|
|
308
|
+
```mermaid
|
|
309
|
+
sequenceDiagram
|
|
310
|
+
participant User
|
|
311
|
+
participant CLI
|
|
312
|
+
participant Search
|
|
313
|
+
participant Wiki
|
|
314
|
+
participant Source
|
|
315
|
+
participant Compiler
|
|
316
|
+
|
|
317
|
+
User->>CLI: repo-wiki query "How does auth work?"
|
|
318
|
+
CLI->>Search: Search Index.md, wiki pages, cards
|
|
319
|
+
Search-->>CLI: Candidate pages and source paths
|
|
320
|
+
CLI->>Wiki: Read relevant compiled pages
|
|
321
|
+
CLI->>Source: Verify material claims against source cards/files
|
|
322
|
+
CLI-->>User: Source-cited answer
|
|
323
|
+
alt answer is durable
|
|
324
|
+
User->>CLI: file this answer
|
|
325
|
+
CLI->>Compiler: Create or update wiki page with provenance
|
|
326
|
+
Compiler->>Wiki: Write generated or mixed page
|
|
327
|
+
end
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Shipped query/path/explain behavior and planned file-back:
|
|
331
|
+
|
|
332
|
+
- Read `Index.md` first at small and medium scale.
|
|
333
|
+
- Use local search over wiki pages and cards as scale grows.
|
|
334
|
+
- Treat the wiki as the first navigation layer, not the final authority.
|
|
335
|
+
- Verify operational or behavioral claims against source evidence.
|
|
336
|
+
- Offer to file durable answers into topic, module, runbook, or investigation pages.
|
|
337
|
+
- Append query and file-back events to `Log.md`.
|
|
338
|
+
|
|
339
|
+
## Wiki health linting
|
|
340
|
+
|
|
341
|
+
Karpathy's lint operation is broader than syntax checks. The existing `repo-wiki lint` command should remain the primary validation gate and grow to include wiki-health checks; a future `repo-wiki health` command can expose the same graph-oriented checks as a focused diagnostic surface rather than a competing gate.
|
|
342
|
+
|
|
343
|
+
Health checks should detect:
|
|
344
|
+
|
|
345
|
+
- missing required pages.
|
|
346
|
+
- broken wiki links.
|
|
347
|
+
- orphan pages with no inbound links.
|
|
348
|
+
- important concepts mentioned repeatedly but lacking their own page.
|
|
349
|
+
- stale pages whose source commit is far behind HEAD.
|
|
350
|
+
- pages with low or missing source coverage.
|
|
351
|
+
- contradictions between wiki pages, documentation cards, and source cards.
|
|
352
|
+
- missing cross-references between related module and cross-cutting pages.
|
|
353
|
+
- oversized pages that should be split.
|
|
354
|
+
- generated pages for files or modules that no longer exist.
|
|
355
|
+
- human-owned pages that conflict with current source behavior.
|
|
356
|
+
|
|
357
|
+
The output should be both human-readable and machine-readable so CI can fail on configured policy and agents can propose repair patches.
|
|
358
|
+
|
|
359
|
+
## Required components
|
|
360
|
+
|
|
361
|
+
```mermaid
|
|
362
|
+
classDiagram
|
|
363
|
+
class CLI {
|
|
364
|
+
init()
|
|
365
|
+
scan()
|
|
366
|
+
plan()
|
|
367
|
+
lintDocs()
|
|
368
|
+
compile()
|
|
369
|
+
lint()
|
|
370
|
+
publish()
|
|
371
|
+
run()
|
|
372
|
+
query()
|
|
373
|
+
doctor()
|
|
374
|
+
diff()
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
class Scanner {
|
|
378
|
+
walkFiles()
|
|
379
|
+
classifyPath()
|
|
380
|
+
detectLanguage()
|
|
381
|
+
extractImports()
|
|
382
|
+
extractSymbols()
|
|
383
|
+
detectRuntimeHints()
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
class DocumentationIngestor {
|
|
387
|
+
isDocumentationFile()
|
|
388
|
+
extractHeadings()
|
|
389
|
+
extractLinks()
|
|
390
|
+
extractCodeBlocks()
|
|
391
|
+
extractClaims()
|
|
392
|
+
createDocumentationCard()
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
class DocumentationLinter {
|
|
396
|
+
detectStaleDocs()
|
|
397
|
+
detectBrokenLinks()
|
|
398
|
+
detectUnvalidatedClaims()
|
|
399
|
+
detectContradictionSignals()
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
class Planner {
|
|
403
|
+
groupIntoModules()
|
|
404
|
+
createPagePlan()
|
|
405
|
+
createAffectedPagePlan()
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
class Compiler {
|
|
409
|
+
renderFoundationPages()
|
|
410
|
+
renderModulePages()
|
|
411
|
+
renderCrossCuttingPages()
|
|
412
|
+
renderDocumentationDebtReport()
|
|
413
|
+
applyStructuredPatch()
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
class WikiLinter {
|
|
417
|
+
requiredPages()
|
|
418
|
+
brokenWikiLinks()
|
|
419
|
+
secretLikeContent()
|
|
420
|
+
frontmatterPolicy()
|
|
421
|
+
graphHealth()
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
class QueryEngine {
|
|
425
|
+
searchWiki()
|
|
426
|
+
searchCards()
|
|
427
|
+
assembleAnswerContext()
|
|
428
|
+
fileBackAnswer()
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
class Publisher {
|
|
432
|
+
selectTarget()
|
|
433
|
+
applyTargetTransforms()
|
|
434
|
+
cloneDestination()
|
|
435
|
+
copyPages()
|
|
436
|
+
deleteStaleGeneratedPages()
|
|
437
|
+
commit()
|
|
438
|
+
push()
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
CLI --> Scanner
|
|
442
|
+
CLI --> DocumentationLinter
|
|
443
|
+
Scanner --> DocumentationIngestor
|
|
444
|
+
CLI --> Planner
|
|
445
|
+
CLI --> Compiler
|
|
446
|
+
CLI --> WikiLinter
|
|
447
|
+
CLI --> QueryEngine
|
|
448
|
+
CLI --> Publisher
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
## Generated wiki topology
|
|
452
|
+
|
|
453
|
+
```mermaid
|
|
454
|
+
flowchart TD
|
|
455
|
+
Home --> Agent[Agent-Context-Pack]
|
|
456
|
+
Home --> Overview[Repository-Overview]
|
|
457
|
+
Home --> Architecture
|
|
458
|
+
Home --> Build[Build-Test-and-Run]
|
|
459
|
+
Home --> Index
|
|
460
|
+
Home --> Log
|
|
461
|
+
Home --> DocsDebt[Documentation-Debt-Report]
|
|
462
|
+
Index --> Modules[Module Pages]
|
|
463
|
+
Index --> Cross[Cross-cutting Pages]
|
|
464
|
+
Index --> Investigations[Filed Query and Investigation Pages]
|
|
465
|
+
DocsDebt --> Open[Open-Questions]
|
|
466
|
+
Architecture --> Modules
|
|
467
|
+
Modules --> Dependency[Dependency-Map]
|
|
468
|
+
Modules --> Testing[Testing-Strategy]
|
|
469
|
+
Modules --> API[API-HTTP-Routes]
|
|
470
|
+
Modules --> Data[Data-Model-and-Migrations]
|
|
471
|
+
Cross --> Security[Security-and-Secrets]
|
|
472
|
+
Cross --> Runbook[Operational-Runbook]
|
|
473
|
+
Investigations --> Modules
|
|
474
|
+
Investigations --> Cross
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
## Page conventions
|
|
478
|
+
|
|
479
|
+
Every generated local wiki page should eventually include:
|
|
480
|
+
|
|
481
|
+
- YAML frontmatter with `kind`, `source_commit`, `compiled_at`, `source_paths`, `page_state`, and optional confidence metadata.
|
|
482
|
+
- Target-specific publish transforms should hide or move metadata when the destination renders frontmatter visibly. GitHub Wiki publishing should default to stripping leading YAML frontmatter from the published copy while preserving it in local `.llmwiki/wiki` artifacts and machine-readable provenance.
|
|
483
|
+
- source path citations for material claims.
|
|
484
|
+
- Commit-pinned source links should include line or range anchors when scanner metadata can identify the exact construct being cited; file-level links remain the fallback for whole-file or module-level references.
|
|
485
|
+
- stable headings suitable for wiki links.
|
|
486
|
+
- compact summaries first, detail later.
|
|
487
|
+
- links to related module and cross-cutting pages.
|
|
488
|
+
- open questions or uncertainty when evidence is incomplete.
|
|
489
|
+
- `HUMAN_NOTES` markers when human annotation should be preserved.
|
|
490
|
+
|
|
491
|
+
`Index.md` should include:
|
|
492
|
+
|
|
493
|
+
- every wiki page.
|
|
494
|
+
- one-line summaries.
|
|
495
|
+
- page category.
|
|
496
|
+
- source count or source paths when useful.
|
|
497
|
+
- freshness or source commit metadata.
|
|
498
|
+
|
|
499
|
+
`Log.md` should include parseable chronological entries such as:
|
|
500
|
+
|
|
501
|
+
```markdown
|
|
502
|
+
## [2026-05-08] ingest | bootstrap | abc1234
|
|
503
|
+
## [2026-05-08] query | auth routing investigation
|
|
504
|
+
## [2026-05-08] lint | wiki health | 0 errors, 4 warnings
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
## CLI contract
|
|
508
|
+
|
|
509
|
+
Current commands:
|
|
510
|
+
|
|
511
|
+
```text
|
|
512
|
+
repo-wiki init Add config/schema/agent pointer files to a repo.
|
|
513
|
+
repo-wiki scan Produce manifest, source cards, and documentation cards.
|
|
514
|
+
repo-wiki plan Produce bootstrap or incremental page plan.
|
|
515
|
+
repo-wiki lint-docs Validate ingested markdown before compilation.
|
|
516
|
+
repo-wiki compile Generate local wiki markdown.
|
|
517
|
+
repo-wiki lint Validate generated wiki markdown.
|
|
518
|
+
repo-wiki publish Publish local wiki markdown to a configured Git remote, targeting GitHub Wiki or GitHub Pages.
|
|
519
|
+
repo-wiki run Orchestrate scan -> plan -> lint-docs -> compile -> lint -> optional publish.
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
Current `run` invokes `lint-docs`, but making documentation-lint errors block publish is planned P0 hardening rather than fully enforced behavior today.
|
|
523
|
+
|
|
524
|
+
Planned commands:
|
|
525
|
+
|
|
526
|
+
```text
|
|
527
|
+
repo-wiki doctor Explain readiness, detected stacks, skipped files, config gaps, and publish safety.
|
|
528
|
+
repo-wiki diff Show wiki pages that would change for a branch or PR.
|
|
529
|
+
repo-wiki query Ask an offline evidence-cited question against local wiki/search/graph artifacts.
|
|
530
|
+
repo-wiki path Traverse the local wiki graph between two nodes or paths.
|
|
531
|
+
repo-wiki explain Explain a wiki page or graph node with local evidence.
|
|
532
|
+
repo-wiki search Local search over generated wiki pages, cards, and selected source metadata.
|
|
533
|
+
repo-wiki health Focused wiki-health diagnostics, using the graph/orphan/stale/contradiction checks also enforced by lint policy.
|
|
534
|
+
repo-wiki publish --target github-wiki|github-pages
|
|
535
|
+
Select destination-specific publish behavior and frontmatter policy.
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
## Local dogfooding workflow
|
|
539
|
+
|
|
540
|
+
```bash
|
|
541
|
+
npm install
|
|
542
|
+
npm run self:wiki
|
|
543
|
+
npm run lint:docs
|
|
544
|
+
npm run lint:local
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Publishing this repository's own wiki:
|
|
548
|
+
|
|
549
|
+
```bash
|
|
550
|
+
LLMWIKI_PUBLISH_REMOTE=https://github.com/OWNER/repo-wiki.wiki.git npm run kb:publish
|
|
551
|
+
npx repo-wiki publish --target github-pages --wiki .llmwiki/wiki --remote https://github.com/OWNER/repo-wiki.git --branch gh-pages --pages-path .
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
The GitHub Pages target supports richer static-site publication while preserving YAML frontmatter for Jekyll:
|
|
555
|
+
|
|
556
|
+
```bash
|
|
557
|
+
repo-wiki publish --target github-pages --wiki .llmwiki/wiki --branch gh-pages --pages-path .
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
The public repo should use its own generated GitHub Wiki as the flagship demo. The README should link to the published wiki when available and explain which pages are generated, mixed, human-owned, and source authoritative.
|
|
561
|
+
|
|
562
|
+
## GitHub Actions workflow
|
|
563
|
+
|
|
564
|
+
```mermaid
|
|
565
|
+
flowchart TD
|
|
566
|
+
Trigger[workflow_dispatch or push to main] --> Checkout[Checkout source]
|
|
567
|
+
Checkout --> Install[npm ci]
|
|
568
|
+
Install --> Test[npm test]
|
|
569
|
+
Test --> Wiki[repo-wiki run]
|
|
570
|
+
Wiki --> Policy{publish credentials configured?}
|
|
571
|
+
Policy -->|no| Artifact[Keep local wiki / no publish]
|
|
572
|
+
Policy -->|yes| Publish[Push selected target: GitHub Wiki or GitHub Pages]
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
Security policy:
|
|
576
|
+
|
|
577
|
+
- Do not publish from untrusted pull requests.
|
|
578
|
+
- Use a dedicated GitHub App token or fine-grained PAT for wiki or Pages push.
|
|
579
|
+
- Never expose tokens in generated wiki pages, scan artifacts, logs, or publish summaries.
|
|
580
|
+
- Fail publication on secret-like content.
|
|
581
|
+
- Optionally require human review for auth, billing, deployment, and security-sensitive pages.
|
|
582
|
+
- Treat hosted LLM output as an untrusted patch that must pass validation before it can modify files.
|
|
583
|
+
|
|
584
|
+
## Linting gates
|
|
585
|
+
|
|
586
|
+
Documentation lint gates:
|
|
587
|
+
|
|
588
|
+
| Gate | Default | Purpose |
|
|
589
|
+
|---|---:|---|
|
|
590
|
+
| stale documentation | warning | Surface likely old docs without blocking early adoption. |
|
|
591
|
+
| contradicted documentation | error | Block docs that contain strong contradiction signals when configured. |
|
|
592
|
+
| broken relative links | warning | Detect doc rot. |
|
|
593
|
+
| unvalidated operational claims | warning | Prevent unchecked commands/API claims from becoming authoritative. |
|
|
594
|
+
| secret-like content | error | Prevent sensitive values from reaching generated artifacts. |
|
|
595
|
+
|
|
596
|
+
Wiki lint gates:
|
|
597
|
+
|
|
598
|
+
| Gate | Default | Purpose |
|
|
599
|
+
|---|---:|---|
|
|
600
|
+
| required pages missing | error | Ensure a usable wiki skeleton. |
|
|
601
|
+
| broken wiki links | warning in scaffold, should become error for navigation-critical links | Keep the wiki navigable. |
|
|
602
|
+
| missing source commit | warning | Keep generated pages auditable. |
|
|
603
|
+
| secret-like content | error | Prevent credential leaks. |
|
|
604
|
+
| excessive page count or size | warning | Avoid GitHub Wiki sprawl and agent-unfriendly pages. |
|
|
605
|
+
| orphan pages | warning | Keep the graph navigable and reduce stale knowledge. |
|
|
606
|
+
| missing citations | warning in deterministic mode, error in LLM mode | Prevent unsupported material claims. |
|
|
607
|
+
| stale generated pages | warning or error by policy | Remove pages for deleted or renamed sources. |
|
|
608
|
+
|
|
609
|
+
## Backlog epics
|
|
610
|
+
|
|
611
|
+
GitHub Issues are the execution backlog. This section is not a parallel backlog; it is the planning source used to create or update Issues, milestones, labels, and detailed feature plans under `docs/plans/`. Once an item is accepted for execution, track status in GitHub Issues rather than by checking boxes in this document.
|
|
612
|
+
|
|
613
|
+
Related GitHub issues and recently closed work:
|
|
614
|
+
|
|
615
|
+
- #2 - Incremental maintenance and safe publishing
|
|
616
|
+
- #3 - LLM compiler and source-grounded wiki synthesis
|
|
617
|
+
- #4 - Production scanner and repository analysis (closed; parent for scanner extraction work)
|
|
618
|
+
- #5 - Agent integration and query workflows
|
|
619
|
+
- #7 - Add TypeScript/JavaScript AST-level symbol extraction (closed)
|
|
620
|
+
- #8 - Complete framework route and API surface detection (closed)
|
|
621
|
+
- #9 - Build import graph and dependency metadata for scanner output (closed)
|
|
622
|
+
- #10 - Map tests to source modules (closed)
|
|
623
|
+
- #11 - Detect database migrations and ORM model surfaces (closed)
|
|
624
|
+
- #12 - Add affected-page graph inputs for incremental mode (closed)
|
|
625
|
+
- #14 - Add Python source extraction support (closed)
|
|
626
|
+
- #15 - Add Go source extraction support (closed)
|
|
627
|
+
- #16 - Add Rust source extraction support (closed)
|
|
628
|
+
- #17 - Add Ruby source extraction support (closed)
|
|
629
|
+
- #18 - Documentation validation and debt reporting
|
|
630
|
+
- #19 - Wiki knowledge graph and navigation
|
|
631
|
+
- #20 - CI publishing and release workflow
|
|
632
|
+
- #33 - Compiler context assembly and token budgeting (closed)
|
|
633
|
+
- #34 - LLM provider boundary and prompt templates (closed)
|
|
634
|
+
- #35 - Structured wiki patch format and lint-gated acceptance
|
|
635
|
+
- #36 - Human section preservation and page ownership metadata (closed)
|
|
636
|
+
- #37 - Citation, confidence, and contradiction enforcement for generated pages
|
|
637
|
+
- #38 - Validate documented commands and package scripts (closed)
|
|
638
|
+
- #39 - Validate documented file paths and environment variables (closed; informs follow-up validation work)
|
|
639
|
+
- #40 - Documentation debt report strictness and route-claim validation
|
|
640
|
+
- #46 - Honor source excludes and ignore nested worktree noise during scan (closed; informs remaining source-filtering follow-up work)
|
|
641
|
+
- #49 - Strip or transform YAML frontmatter when publishing to GitHub Wiki
|
|
642
|
+
- #50 - Add GitHub Pages publish target
|
|
643
|
+
|
|
644
|
+
### P0: Trust, correctness, and safety hardening
|
|
645
|
+
|
|
646
|
+
These items make the current scaffold match its stated policy.
|
|
647
|
+
|
|
648
|
+
- Make `repo-wiki run` fail or stop before publish when `lint-docs` reports error-level issues.
|
|
649
|
+
- Complete source filtering policy, including `source.include` and remaining nested-worktree or edge-case exclusions.
|
|
650
|
+
- Hash every file, including files whose content is too large or binary to parse.
|
|
651
|
+
- Redact secret-like strings before writing manifests, documentation cards, page contexts, logs, or generated pages.
|
|
652
|
+
- Sanitize all remotes and URLs before displaying or writing them.
|
|
653
|
+
- Delete stale generated wiki pages during publish while preserving unmanaged and human-owned pages.
|
|
654
|
+
- Continue hardening publish safety around target-specific remotes, paths, and rendering policies.
|
|
655
|
+
- Add JSON schema validation for `.llmwiki/config.json`.
|
|
656
|
+
- Make lint severity fully config-driven.
|
|
657
|
+
- Add golden end-to-end tests for `init -> scan -> plan -> lint-docs -> compile -> lint -> publish --dry-run`.
|
|
658
|
+
|
|
659
|
+
### P1: Karpathy pattern completeness
|
|
660
|
+
|
|
661
|
+
These items make `repo-wiki` a faithful software-repository version of the LLM Wiki pattern.
|
|
662
|
+
|
|
663
|
+
- Treat `Index.md` and `Log.md` as first-class, parseable operating surfaces.
|
|
664
|
+
- Append deterministic log entries for ingest, compile, lint, query, and publish operations.
|
|
665
|
+
- Add wiki health linting for orphan pages, stale pages, missing cross-references, and recurring unpageified concepts.
|
|
666
|
+
- Add filed-back query pages for durable analyses and investigations.
|
|
667
|
+
- Add page frontmatter suitable for Obsidian, Dataview, GitHub Wiki navigation, and future search.
|
|
668
|
+
- Add graph metadata that can power both navigation and incremental maintenance.
|
|
669
|
+
- Preserve page metadata locally and in provenance artifacts even when GitHub Wiki publishing strips visible frontmatter from the pushed markdown.
|
|
670
|
+
- Publish this repository's own generated wiki as the canonical demo.
|
|
671
|
+
- Offer GitHub Pages as a richer static-site destination for generated repository knowledge bases.
|
|
672
|
+
|
|
673
|
+
### P2: LLM compiler and structured patch acceptance
|
|
674
|
+
|
|
675
|
+
These items turn the deterministic compiler into a semantic compiler.
|
|
676
|
+
|
|
677
|
+
- Wire `compiler.mode=llm` into `compileWiki` using the provider boundary and prompt templates.
|
|
678
|
+
- Use assembled page contexts with explicit budgets and omitted-context reporting.
|
|
679
|
+
- Require structured patches from hosted LLMs instead of accepting free-form markdown.
|
|
680
|
+
- Validate patch shape, page ownership, source paths, citations, and lint gates before writing.
|
|
681
|
+
- Preserve human notes byte-for-byte across deterministic and LLM modes.
|
|
682
|
+
- Add retry/failure behavior for invalid provider output.
|
|
683
|
+
- Add citation, confidence, contradiction, and open-question metadata to generated pages.
|
|
684
|
+
- Add source-range metadata to scanner and compiler context outputs so generated citations can link to exact commit-pinned source lines where available.
|
|
685
|
+
- Add evaluation fixtures that compare generated pages against expected source-grounded claims.
|
|
686
|
+
|
|
687
|
+
### P3: Query, search, and file-back workflows
|
|
688
|
+
|
|
689
|
+
These items make the wiki useful after generation.
|
|
690
|
+
|
|
691
|
+
- Implement `repo-wiki search` over wiki pages, source cards, and documentation cards.
|
|
692
|
+
- Implement `repo-wiki query`, `path`, and `explain` with source-cited local evidence and JSON output.
|
|
693
|
+
- Support a `--file-back` mode that creates or updates investigation/topic pages.
|
|
694
|
+
- Add local search adapters, starting with a simple built-in index and optionally supporting qmd or MCP later.
|
|
695
|
+
- Ensure query answers never treat stale or contradicted docs as authoritative.
|
|
696
|
+
- Log query and file-back events in `Log.md`.
|
|
697
|
+
|
|
698
|
+
### P4: Real incremental maintenance
|
|
699
|
+
|
|
700
|
+
These items make the wiki stay current at low cost.
|
|
701
|
+
|
|
702
|
+
- Persist previous compiled commit and manifest metadata.
|
|
703
|
+
- Compute changed files from `base..head`.
|
|
704
|
+
- Rescan changed files and required graph neighbors.
|
|
705
|
+
- Use affected-page graph data to update only relevant pages.
|
|
706
|
+
- Propagate changes upward through the file hierarchy only to parent aggregate pages whose subtree summaries or claims are affected.
|
|
707
|
+
- Propagate changes semantically to cross-cutting pages only when route, dependency, test, config, security, data-model, documentation, or similar signals change.
|
|
708
|
+
- Regenerate global pages only when relevant source, graph, navigation, or metadata inputs change.
|
|
709
|
+
- Keep untouched LLM-enriched pages byte-stable across incremental builds.
|
|
710
|
+
- Handle deleted and renamed files/modules by updating index, links, and stale generated pages.
|
|
711
|
+
- Add PR-oriented `repo-wiki diff` output for review before publish.
|
|
712
|
+
|
|
713
|
+
### P5: Production scanner and framework plugins
|
|
714
|
+
|
|
715
|
+
These items increase repository coverage and confidence.
|
|
716
|
+
|
|
717
|
+
The following baseline implementations are already shipped (regex/AST scaffold, closed issues #7–#17):
|
|
718
|
+
|
|
719
|
+
- TypeScript/JavaScript AST-backed metadata extraction for symbols, imports, exports, and framework surfaces (`src/extractors.ts`).
|
|
720
|
+
- Framework route detection: Express, Fastify, Next.js, Hono, tRPC, GraphQL, and OpenAPI surfaces.
|
|
721
|
+
- Python, Go, Rust, and Ruby import and symbol extraction (regex baseline).
|
|
722
|
+
- Test-to-source mapping (regex baseline).
|
|
723
|
+
- Database migration and ORM model detection: Prisma, TypeORM, and Sequelize (path/regex baseline).
|
|
724
|
+
|
|
725
|
+
Remaining production hardening and coverage gaps:
|
|
726
|
+
|
|
727
|
+
- Deepen Python framework support: Django views/URLs, FastAPI route decorators, Flask blueprints, pytest fixtures, and pyproject metadata.
|
|
728
|
+
- Deepen Go framework support: HTTP handler patterns, gorilla/mux, Gin, Echo, and common config conventions.
|
|
729
|
+
- Deepen Rust framework support: Axum, Actix-web, Rocket route macros, Cargo feature flags.
|
|
730
|
+
- Add Ruby/Rails and PHP/Laravel extraction where useful.
|
|
731
|
+
- Expand ORM/migration coverage: SQLAlchemy, Active Record, Django ORM, and raw SQL patterns.
|
|
732
|
+
- Add NestJS and Koa route detection.
|
|
733
|
+
- Add `repo-wiki init --profile` templates for Node, Python, Go, Rust, Rails, and monorepos.
|
|
734
|
+
- Harden test-to-source mapping accuracy across all supported languages.
|
|
735
|
+
- Add AST-level source range metadata (`line`, `end_line`) to extracted constructs for commit-pinned citations.
|
|
736
|
+
|
|
737
|
+
### P6: Adoption, CI, and developer experience
|
|
738
|
+
|
|
739
|
+
These items make the tool easy to adopt.
|
|
740
|
+
|
|
741
|
+
- Add GitHub Pages publishing support for richer static-site output.
|
|
742
|
+
- Add a reusable GitHub Action.
|
|
743
|
+
- Add `repo-wiki doctor` for readiness and configuration diagnostics.
|
|
744
|
+
- Add `repo-wiki init --profile` templates for Node, Python, Go, Rust, Rails, and monorepos.
|
|
745
|
+
- Add `--dry-run` and machine-readable JSON output to every command that mutates state.
|
|
746
|
+
- Publish example generated wikis for representative repositories.
|
|
747
|
+
- Document safe token setup and wiki publishing permissions.
|
|
748
|
+
- Add package smoke tests for `npx repo-wiki` against packed output.
|
|
749
|
+
|
|
750
|
+
### Recommended new or expanded issues
|
|
751
|
+
|
|
752
|
+
The following issue drafts should be filed as GitHub Issues or used to expand the related issues above. They are included here to preserve acceptance criteria while keeping planning in one document.
|
|
753
|
+
|
|
754
|
+
#### Trust hardening for generated wiki artifacts
|
|
755
|
+
|
|
756
|
+
Parent: new epic or attach to #2, #3, #18, and #20.
|
|
757
|
+
|
|
758
|
+
Acceptance criteria:
|
|
759
|
+
|
|
760
|
+
- Error-level docs lint failures can block run/publish according to config.
|
|
761
|
+
- Scan output respects configured source filtering, including remaining `source.include` and nested-worktree edge cases.
|
|
762
|
+
- Every source card has a stable hash or an explicit hash failure reason.
|
|
763
|
+
- No scan artifact or generated page contains known secret-like patterns from fixtures.
|
|
764
|
+
- Publisher removes stale generated pages without touching unmanaged or human-owned pages.
|
|
765
|
+
|
|
766
|
+
Suggested verification:
|
|
767
|
+
|
|
768
|
+
- `npm test`
|
|
769
|
+
- `npm run check`
|
|
770
|
+
- `npm run coverage`
|
|
771
|
+
- End-to-end fixture: `init -> scan -> plan -> lint-docs -> compile -> lint -> publish --dry-run`
|
|
772
|
+
|
|
773
|
+
#### First-class parseable `Index.md` and `Log.md`
|
|
774
|
+
|
|
775
|
+
Parent: #19 and #5.
|
|
776
|
+
|
|
777
|
+
Acceptance criteria:
|
|
778
|
+
|
|
779
|
+
- Agents can read `Index.md` first to route to relevant pages.
|
|
780
|
+
- `grep '^## \[' Log.md | tail -5` or an equivalent documented pattern returns the latest operations.
|
|
781
|
+
- Re-running compilation with the same inputs does not create noisy index/log churn.
|
|
782
|
+
|
|
783
|
+
#### Source line anchors for generated citations
|
|
784
|
+
|
|
785
|
+
Parent: #37 and #3.
|
|
786
|
+
|
|
787
|
+
Acceptance criteria:
|
|
788
|
+
|
|
789
|
+
- Source cards and derived analysis records can carry optional `line` and `end_line` metadata for constructs such as package scripts, CI workflow commands, symbols, exports, routes, environment variables, migrations, models, and documentation claims.
|
|
790
|
+
- Generated wiki citations remain commit-pinned and include `#Lx` or `#Lx-Ly` anchors whenever precise source ranges are available.
|
|
791
|
+
- File-level links remain the fallback for whole-file, module-level, or unresolved references.
|
|
792
|
+
- Compiler and prompt context preserve source ranges without forcing every extractor to support them at once.
|
|
793
|
+
- Tests cover at least package scripts and CI workflow commands first, with follow-up coverage for symbols/routes as extractors grow.
|
|
794
|
+
|
|
795
|
+
Suggested verification:
|
|
796
|
+
|
|
797
|
+
- `npm test`
|
|
798
|
+
- Fixture snapshots or assertions for generated GitHub source URLs with line anchors.
|
|
799
|
+
|
|
800
|
+
#### Wiki health linting
|
|
801
|
+
|
|
802
|
+
Parent: #19, #18, and #37.
|
|
803
|
+
|
|
804
|
+
Acceptance criteria:
|
|
805
|
+
|
|
806
|
+
- Health findings are deterministic under the same wiki and manifest inputs.
|
|
807
|
+
- Config controls warning vs error severity.
|
|
808
|
+
- Lint output can be consumed by CI and by an agent proposing repair patches.
|
|
809
|
+
|
|
810
|
+
#### Query and file-back workflow
|
|
811
|
+
|
|
812
|
+
Parent: #5 and #3.
|
|
813
|
+
|
|
814
|
+
Acceptance criteria:
|
|
815
|
+
|
|
816
|
+
- Query answers cite source paths for material claims.
|
|
817
|
+
- Filed-back pages include provenance, query text, source paths, and page state.
|
|
818
|
+
- The feature works in deterministic/mock mode for tests.
|
|
819
|
+
|
|
820
|
+
#### Local search and optional qmd/MCP integration
|
|
821
|
+
|
|
822
|
+
Parent: #5 and #19.
|
|
823
|
+
|
|
824
|
+
Acceptance criteria:
|
|
825
|
+
|
|
826
|
+
- `repo-wiki search "query"` returns ranked wiki pages and evidence paths.
|
|
827
|
+
- Search can run without external services.
|
|
828
|
+
- Optional provider integrations do not change core scan/compile behavior.
|
|
829
|
+
|
|
830
|
+
#### Publish targets: GitHub Wiki and GitHub Pages
|
|
831
|
+
|
|
832
|
+
Parent: #50, #49, #20, #2, and #3.
|
|
833
|
+
|
|
834
|
+
Acceptance criteria:
|
|
835
|
+
|
|
836
|
+
- `repo-wiki publish` has explicit target selection for `github-wiki` and `github-pages`.
|
|
837
|
+
- GitHub Wiki publishing defaults to hiding generated metadata by stripping or converting leading YAML frontmatter.
|
|
838
|
+
- GitHub Pages publishing defaults to preserving YAML frontmatter for Jekyll/static-site metadata.
|
|
839
|
+
- Dry-run output reports target, destination branch/path or remote, and frontmatter policy.
|
|
840
|
+
- The target abstraction can later support local artifacts, MkDocs, Docusaurus, or other static-site outputs.
|
|
841
|
+
|
|
842
|
+
#### GitHub Wiki frontmatter publish policy
|
|
843
|
+
|
|
844
|
+
Parent: #49, #20, #2, and #3.
|
|
845
|
+
|
|
846
|
+
Acceptance criteria:
|
|
847
|
+
|
|
848
|
+
- GitHub Wiki publishing does not expose generated YAML metadata as visible tables.
|
|
849
|
+
- Local `.llmwiki/wiki` files can retain frontmatter for tooling, search, Obsidian/Dataview, and incremental maintenance.
|
|
850
|
+
- The publish transform strips only valid leading YAML frontmatter and leaves thematic breaks or later `---` blocks intact.
|
|
851
|
+
- Accepted policies are `strip`, `html-comment`, `provenance`, and `preserve`, with `github-wiki` defaulting to `provenance`.
|
|
852
|
+
|
|
853
|
+
#### Self-wiki flagship demo
|
|
854
|
+
|
|
855
|
+
Parent: #20 and #5.
|
|
856
|
+
|
|
857
|
+
Acceptance criteria:
|
|
858
|
+
|
|
859
|
+
- Public users can inspect a real generated wiki for this repo.
|
|
860
|
+
- README links to `Agent-Context-Pack`, `Architecture`, `Build-Test-and-Run`, `Documentation-Debt-Report`, and `Index` when available.
|
|
861
|
+
- Publish flow is dry-run safe and credential safe.
|
|
862
|
+
|
|
863
|
+
#### `repo-wiki doctor`
|
|
864
|
+
|
|
865
|
+
Parent: adoption / new issue.
|
|
866
|
+
|
|
867
|
+
Acceptance criteria:
|
|
868
|
+
|
|
869
|
+
- `repo-wiki doctor --repo .` is useful before first `run`.
|
|
870
|
+
- It never requires hosted LLM credentials.
|
|
871
|
+
- It gives clear next steps when the generated wiki would be low quality or unsafe to publish.
|
|
872
|
+
|
|
873
|
+
#### Reusable GitHub Action
|
|
874
|
+
|
|
875
|
+
Parent: #20 or new adoption epic.
|
|
876
|
+
|
|
877
|
+
Acceptance criteria:
|
|
878
|
+
|
|
879
|
+
- A consumer repo can add repo-wiki with a short workflow snippet.
|
|
880
|
+
- The action works without publish credentials.
|
|
881
|
+
- Publishing requires explicit credentials and safe event context.
|
|
882
|
+
|
|
883
|
+
## Detailed feature plans
|
|
884
|
+
|
|
885
|
+
Detailed planned-feature epics live as one markdown file per feature under `docs/plans/`. GitHub Issues are the execution backlog; these docs define scope, acceptance criteria, and implementation direction.
|
|
886
|
+
|
|
887
|
+
Existing plans:
|
|
888
|
+
|
|
889
|
+
- `docs/plans/production-scanner.md`
|
|
890
|
+
- `docs/plans/doc-validation.md`
|
|
891
|
+
- `docs/plans/wiki-graph.md`
|
|
892
|
+
- `docs/plans/llm-compiler.md`
|
|
893
|
+
- `docs/plans/incremental-mode.md`
|
|
894
|
+
- `docs/plans/ci-publishing.md`
|
|
895
|
+
- `docs/plans/agent-integration.md`
|
|
896
|
+
- `docs/plans/karpathy-llm-wiki-alignment.md` - product vision, operating model, and repo-specific interpretation of the LLM Wiki pattern.
|
|
897
|
+
- `docs/plans/wiki-health.md` - graph linting, orphan detection, stale-page detection, cross-reference repair, and page split suggestions.
|
|
898
|
+
- `docs/plans/query-and-file-back.md` - source-cited queries, durable answer filing, investigation pages, and query logs.
|
|
899
|
+
- `docs/plans/search-index.md` - built-in local search, optional qmd adapter, and MCP/search integration.
|
|
900
|
+
- `docs/plans/trust-hardening.md` - redaction, config schema, hash coverage, severity policy, publish safety, and artifact safety.
|
|
901
|
+
- `docs/plans/github-action.md` - reusable action, PR diff comments, artifacts, and safe publication.
|
|
902
|
+
|
|
903
|
+
## Implementation phases
|
|
904
|
+
|
|
905
|
+
These phases describe the desired implementation sequence in this plan. They are not one-to-one with GitHub Milestones, because the repository already has GitHub Milestones 1-5 with historical issue assignments. Use GitHub Issues and their assigned milestones for execution tracking; use these phases for roadmap ordering.
|
|
906
|
+
|
|
907
|
+
### Phase 1: Current scaffold
|
|
908
|
+
|
|
909
|
+
- CLI package with executable `repo-wiki`.
|
|
910
|
+
- Library exports.
|
|
911
|
+
- Bootstrap scanner.
|
|
912
|
+
- Documentation card extraction.
|
|
913
|
+
- Configurable documentation ingestion.
|
|
914
|
+
- Documentation lint command.
|
|
915
|
+
- Deterministic wiki compiler.
|
|
916
|
+
- Wiki lint command.
|
|
917
|
+
- Git-based publisher.
|
|
918
|
+
- Self-dogfooding workflow.
|
|
919
|
+
|
|
920
|
+
### Phase 2: Trust hardening and Karpathy alignment
|
|
921
|
+
|
|
922
|
+
- Enforce docs-lint errors in `run` and publish paths.
|
|
923
|
+
- Complete source filtering policy, including `source.include` and remaining exclusion edge cases.
|
|
924
|
+
- Hash all files and redact all generated artifacts.
|
|
925
|
+
- Sanitize remotes and unsafe URLs.
|
|
926
|
+
- Treat `Index.md` and `Log.md` as first-class parseable wiki surfaces.
|
|
927
|
+
- Add wiki health linting for orphans, stale pages, missing links, and generated-page drift.
|
|
928
|
+
- Publish this repository's generated wiki as the flagship example.
|
|
929
|
+
|
|
930
|
+
### Phase 3: Production scanner
|
|
931
|
+
|
|
932
|
+
- Parse package scripts.
|
|
933
|
+
- Add TypeScript/JavaScript AST extraction.
|
|
934
|
+
- Detect Express, Fastify, NestJS, Next.js, Hono, Koa, tRPC, GraphQL, and OpenAPI surfaces.
|
|
935
|
+
- Map tests to modules.
|
|
936
|
+
- Extract database migrations and ORM models.
|
|
937
|
+
- Build import graph and affected-page graph.
|
|
938
|
+
|
|
939
|
+
### Phase 4: LLM compiler
|
|
940
|
+
|
|
941
|
+
- Replace deterministic placeholder summaries with LLM synthesis.
|
|
942
|
+
- Use source cards, documentation cards, and targeted excerpts.
|
|
943
|
+
- Preserve human notes.
|
|
944
|
+
- Output structured patches.
|
|
945
|
+
- Enforce source citations.
|
|
946
|
+
- Add contradiction and confidence metadata.
|
|
947
|
+
- Reject or downgrade unsupported claims.
|
|
948
|
+
|
|
949
|
+
### Phase 5: Query, search, and file-back
|
|
950
|
+
|
|
951
|
+
- Add local wiki/card search.
|
|
952
|
+
- Add `repo-wiki query`.
|
|
953
|
+
- Add source-cited answers with confidence metadata.
|
|
954
|
+
- Allow durable answers to be filed back into the wiki.
|
|
955
|
+
- Append query and file-back events to `Log.md`.
|
|
956
|
+
|
|
957
|
+
### Phase 6: Incremental maintenance
|
|
958
|
+
|
|
959
|
+
- Store previous compiled commit.
|
|
960
|
+
- Compute changed files.
|
|
961
|
+
- Update only affected pages.
|
|
962
|
+
- Apply bounded hierarchy propagation from changed files to affected parent aggregate pages.
|
|
963
|
+
- Apply semantic propagation to affected cross-cutting pages.
|
|
964
|
+
- Keep untouched LLM-enriched pages byte-stable.
|
|
965
|
+
- Re-run cross-link and debt report passes.
|
|
966
|
+
- Delete stale generated pages safely.
|
|
967
|
+
- Publish safely after lint gates.
|
|
968
|
+
- Provide PR-friendly wiki diffs.
|
|
969
|
+
|
|
970
|
+
### Phase 7: Agent integration and adoption
|
|
971
|
+
|
|
972
|
+
- Generate `AGENTS.md` or `AGENTS.repo-wiki.md` pointers.
|
|
973
|
+
- Generate `Agent-Context-Pack.md` optimized for coding agents.
|
|
974
|
+
- Add optional local search index or MCP endpoint.
|
|
975
|
+
- Add a reusable GitHub Action.
|
|
976
|
+
- Add GitHub Pages publish examples and safe branch/path configuration.
|
|
977
|
+
- Add `repo-wiki doctor`.
|
|
978
|
+
- Provide example generated wikis and adoption guides.
|
|
979
|
+
|
|
980
|
+
## Open implementation questions
|
|
981
|
+
|
|
982
|
+
- Should the publisher open a pull request against the wiki repo, a GitHub Pages branch, or both instead of pushing directly?
|
|
983
|
+
- Which documentation claims should block publishing by default?
|
|
984
|
+
- How should ADR supersession be represented?
|
|
985
|
+
- What source-range schema should generated wiki pages use for line-anchored citations across languages and extractors?
|
|
986
|
+
- How much raw code should the LLM compiler be allowed to read per page?
|
|
987
|
+
- How should existing human-authored wiki pages be reconciled?
|
|
988
|
+
- What is the right schema for filed-back query pages and investigation pages?
|
|
989
|
+
- Should query outputs be generated only locally or also published automatically after review?
|
|
990
|
+
- Should the first search backend be a built-in simple index, qmd integration, or MCP-first?
|
|
991
|
+
- How should wiki health lint distinguish useful hub pages from overly broad pages?
|
|
992
|
+
- How should confidence metadata be represented in local frontmatter while GitHub Wiki published pages hide or strip that metadata?
|
|
993
|
+
- How should private repositories avoid leaking sensitive path names, remotes, or environment-variable names in published wikis?
|