Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
224 commits
Select commit Hold shift + click to select a range
afb7856
chore(core): add bootstrap documentation for product-changelog
Apr 24, 2026
8e7a9e8
feat(core): add product changelog rule for downstream projects
Apr 24, 2026
120f9d2
feat(core): require Changelog field in prd-writer output
Apr 24, 2026
8432fc1
feat(core): register changelog-writer in Agency Roles
Apr 24, 2026
25b4222
feat(core): document changelog feature in README
Apr 24, 2026
4354ec2
feat(core): wire changelog rule into --init-project installer
Apr 24, 2026
d27ff60
feat(core): add changelog-writer agent
Apr 24, 2026
a57929c
feat(core): add Version source placeholder to CLAUDE.md template
Apr 24, 2026
65a766f
feat(core): add changelog-writer hooks to pipeline commands
Apr 24, 2026
d7d6f66
fix(core): rephrase Version source prohibition to avoid literal grep …
Apr 24, 2026
5dcb545
chore(core): update scratchpad — Wave 1 complete
Apr 24, 2026
f413e4e
fix(core): clarify post-wave scope and markdown-link semantics in cha…
Apr 24, 2026
1cd30e5
chore(core): resolve TBD markers in QA test cases after planner pinning
Apr 24, 2026
d212b77
chore(core): mark product-changelog feature MERGE READY
Apr 24, 2026
16ba9b8
chore(core): add bootstrap documentation for resource-manager-architect
Apr 24, 2026
cf25c87
feat(core): bump installer banners 14→15 for resource-architect
Apr 24, 2026
b9d3f7c
feat(core): add resource-architect agent
Apr 24, 2026
f8040eb
feat(core): insert Step 3.5 resource-architect delegation into bootst…
Apr 24, 2026
0eba414
feat(core): planner reads and inlines resources-pending into plan.md
Apr 24, 2026
a52f417
feat(core): register resource-architect in Agency Roles and Plan Critic
Apr 24, 2026
8327db9
feat(core): document resource-architect feature in README
Apr 24, 2026
c925171
chore(core): update scratchpad — all 6 slices complete
Apr 24, 2026
59cedad
chore(core): mark resource-manager-architect feature MERGE READY
Apr 24, 2026
887ef19
chore(core): add bootstrap documentation for role-planner
Apr 25, 2026
d09fbb1
feat(core): bump installer banners 15→16 for role-planner
Apr 25, 2026
d400e45
feat(core): add role-planner agent
Apr 25, 2026
3d5edd1
feat(core): insert Step 3.75 role-planner delegation into bootstrap-f…
Apr 25, 2026
2c29712
feat(core): rewrite planner Process step 4 into 4a/4b/4c for dual tem…
Apr 25, 2026
4dcdc87
feat(core): register role-planner in Agency Roles and Plan Critic
Apr 25, 2026
810fcea
feat(core): document role-planner feature in README
Apr 25, 2026
4c2561a
chore(core): update scratchpad — all 6 slices complete
Apr 25, 2026
092ea59
fix(core): align tools array order and Authority Boundary capitalizat…
Apr 25, 2026
715b236
chore(core): mark role-planner feature MERGE READY
Apr 25, 2026
a298841
chore(core): add bootstrap documentation for changelog-release-packaging
Apr 25, 2026
00d47ea
feat(core): add release-engineer agent (frontmatter + structure)
Apr 25, 2026
d1d028c
feat(core): bump installer banners 16→17 for release-engineer
Apr 25, 2026
dd3347c
feat(core): add Gate 9 release packaging to merge-ready
Apr 25, 2026
73ba603
feat(core): register release-engineer in Agency Roles and extend slug…
Apr 25, 2026
afcbf4c
feat(core): document release-engineer feature in README and templates
Apr 25, 2026
4fa1134
feat(core): add release-engineer algorithm content (semver bump + CI/…
Apr 25, 2026
1314742
fix(core): correct release-engineer Commands to run block per PRD FR-6.5
Apr 25, 2026
8c2210f
fix(core): align Gate 9 step count to 7 and clarify gh release auto-c…
Apr 25, 2026
a72d804
fix(core): update README slug-collision list to include release-engin…
Apr 25, 2026
abbb46a
fix(core): correct UC-1 gate references in changelog-release-packagin…
Apr 25, 2026
611522d
chore(core): mark changelog-release-packaging feature MERGE READY
Apr 25, 2026
b2912f3
chore(core): add bootstrap documentation for resource-architect-auto-…
Apr 25, 2026
f08bd02
feat(core): add Install Mode skeleton + 4-tier authority to resource-…
Apr 25, 2026
122b548
feat(core): extend bootstrap Step 3.5 with auto-install phase
Apr 25, 2026
3bff595
feat(core): inline Auto-Install Results section in planner output
Apr 25, 2026
746910a
feat(core): update resource-architect responsibility + Plan Critic re…
Apr 25, 2026
19a3fd1
feat(core): document iteration-2 auto-install in README
Apr 25, 2026
b38f0ab
feat(core): add Resource preferences placeholder to template CLAUDE.md
Apr 25, 2026
3b4a0c2
chore(core): mark Wave 1 complete in scratchpad
Apr 25, 2026
7479a8a
feat(core): add Bash whitelist + detect-then-install to resource-arch…
Apr 25, 2026
33c5ac9
feat(core): add approval flow + halt semantics + output extension to …
Apr 25, 2026
b20d69e
chore(core): mark all 8 slices complete in scratchpad
Apr 25, 2026
15bf51f
fix(core): align README iter-2 tier examples with PRD FR-1.4/FR-1.5 +…
Apr 25, 2026
ff96d30
fix(core): correct templates Resource preferences cross-ref from Sect…
Apr 25, 2026
a0e4b25
fix(core): clarify iter-1 Authority Boundary prose for iter-2 Bash ex…
Apr 25, 2026
9fe5736
chore(core): mark resource-architect-auto-install MERGE READY
Apr 25, 2026
45c1c71
Merge branch 'feat/resource-architect-auto-install'
Apr 25, 2026
4e7b6aa
chore(core): add bootstrap documentation for role-planner-reuse-teardown
Apr 25, 2026
9f60c07
feat(core): update role-planner Authority Boundary for 17-agent inven…
Apr 25, 2026
1873702
feat(core): extend bootstrap Step 3.75 with iter-2 reuse-prompt orche…
Apr 25, 2026
a050f16
feat(core): update role-planner Responsibility text + Plan Critic rec…
Apr 25, 2026
3eb84fb
feat(core): document iteration-2 cross-feature reuse + teardown in RE…
Apr 25, 2026
918e9de
feat(core): add Step 11 On-Demand Role Teardown to merge-ready after …
Apr 25, 2026
8f83921
feat(core): add Reuse mode capability section to role-planner with 8-…
Apr 25, 2026
7230aa4
chore(core): mark all 6 slices complete in scratchpad
Apr 25, 2026
7a854b0
fix(core): align README iter-2 phrasing with PRD agent/orchestrator b…
Apr 25, 2026
6239eca
fix(core): de-stale role-planner iter-1 wording for iter-2 install su…
Apr 25, 2026
3f1db5a
fix(core): tighten Step 11 symlink defense (realpath) + add explicit …
Apr 25, 2026
1f848f5
chore(core): mark role-planner-reuse-teardown MERGE READY
Apr 25, 2026
f8f33de
Merge branch 'feat/role-planner-reuse-teardown'
Apr 25, 2026
1364595
chore(core): bootstrap cognitive-self-check feature documentation
Apr 25, 2026
16df3b1
feat(core): add cognitive-self-check rule with 4-question protocol an…
Apr 25, 2026
e7ab0de
feat(core): add Cognitive Self-Check section to 4 doc-writing thinkin…
Apr 25, 2026
a942899
feat(core): add Cognitive Self-Check section to 4 stdout-emitting rev…
Apr 25, 2026
a159f9f
feat(core): add Cognitive Self-Check section to 3 specialized agents …
Apr 25, 2026
8242896
feat(core): add cognitive-self-check enforcement to Plan Critic in sr…
Apr 25, 2026
42c34ed
docs(core): document cognitive-self-check rule in README
Apr 25, 2026
098786e
chore(core): clean up cognitive-self-check implementation
Apr 25, 2026
8c3accf
chore(core): update scratchpad — all 6 slices and cleanup complete
Apr 25, 2026
874119a
fix(core): align PRD/use-cases/QA terminology with rule + agent promp…
Apr 25, 2026
7429824
fix(core): align UC-12 verifier primary flow with FR-2.10 BEFORE-PASS…
Apr 25, 2026
b6cfaec
fix(core): complete remaining BEFORE-verdict drift in PRD §9.6 + UC-1…
Apr 25, 2026
71826a0
fix(core): final BEFORE-verdict + planner-NEAR-TOP alignment in resid…
Apr 25, 2026
e16d31a
fix(core): correct merge-ready gate numbers in use-cases and QA
Apr 25, 2026
178af27
chore(core): mark cognitive-self-check feature MERGE READY
Apr 25, 2026
9220903
Merge branch 'feat/cognitive-self-check'
Apr 25, 2026
3d2b0fd
chore(core): bootstrap local-knowledge-base feature documentation
Apr 25, 2026
ef5c3e5
chore(core): record Phase 1.5 security pre-review for slices 1, 2, 5
Apr 25, 2026
58660a9
feat(core): add sdlc-knowledge crate skeleton with project-root canon…
Apr 25, 2026
4232a5d
feat(core): add chunker, readers, FTS5 store, ingest command for sdlc…
Apr 25, 2026
9289663
feat(core): add search, list, status, delete subcommands with FTS5 BM…
Apr 25, 2026
1e3aa13
feat(infra): add cross-platform release pipeline + RELEASING.md for s…
Apr 25, 2026
7905345
feat(infra): add sdlc-knowledge binary install + Bash allowlist + pro…
Apr 25, 2026
152930b
feat(core): add knowledge-base rule for sdlc-knowledge agent activation
Apr 25, 2026
94c7f3f
feat(core): activate knowledge-base in 4 reviewer agents
Apr 25, 2026
8dbb1a7
feat(core): activate knowledge-base in 4 specialized agents
codefatherdev Apr 25, 2026
b02e4cd
feat(core): add /knowledge-ingest command and README integration
codefatherdev Apr 25, 2026
964341c
chore(core): clean up local-knowledge-base implementation
codefatherdev Apr 25, 2026
4309af6
chore(core): update scratchpad with all 8 slices + Phase 2.5 complete
codefatherdev Apr 25, 2026
d2eac24
fix(core): align knowledge-ingest spec with iter-1 aggregate JSON output
codefatherdev Apr 25, 2026
db6a0e6
chore(core): mark local-knowledge-base feature MERGE READY
codefatherdev Apr 25, 2026
9aa99c5
Merge branch 'feat/local-knowledge-base'
codefatherdev Apr 25, 2026
14e18f4
feat(core): add knowledge-base-tool rule mandating agent usage + .git…
codefatherdev Apr 25, 2026
50ed08c
Merge branch 'feat/knowledge-base-usage-mandate'
codefatherdev Apr 25, 2026
9a551ce
fix(core): grant Bash to 8 thinking agents for sdlc-knowledge invocation
codefatherdev Apr 25, 2026
270b536
Merge branch 'fix/agent-bash-for-knowledge-base'
codefatherdev Apr 25, 2026
5a64c8f
chore(core): bootstrap pdfium-pdf-extraction feature documentation
codefatherdev Apr 25, 2026
fedb026
chore(core): record Phase 1.5 pre-review findings for pdfium-pdf-extr…
codefatherdev Apr 25, 2026
ca7c6dd
feat(core): replace pdf-extract with pdfium-render in sdlc-knowledge
codefatherdev Apr 25, 2026
70f63e6
feat(core): add delete --by-id flag with mutual exclusion + summary JSON
codefatherdev Apr 25, 2026
001142b
feat(infra): install_pdfium_binary in install.sh with tar safety + id…
codefatherdev Apr 25, 2026
801dd59
docs(core): update knowledge-base rules + RELEASING.md for pdfium-ren…
codefatherdev Apr 25, 2026
d7665f4
chore(core): clean up pdfium-pdf-extraction implementation
codefatherdev Apr 25, 2026
f17fb7b
chore(core): update scratchpad with all 5 slices + Phase 2.5 complete
codefatherdev Apr 25, 2026
12f681a
chore(core): mark pdfium-pdf-extraction feature MERGE READY
codefatherdev Apr 25, 2026
521c308
Merge branch 'feat/pdfium-pdf-extraction'
codefatherdev Apr 25, 2026
3c0355b
fix(core): pdfium-render singleton binding for batch ingest
codefatherdev Apr 25, 2026
64b9037
Merge branch 'fix/pdfium-singleton-binding'
codefatherdev Apr 25, 2026
b23068d
feat(core): mandate multilingual knowledge-base querying for thinking…
codefatherdev Apr 25, 2026
2f42950
Merge branch 'feat/multilingual-knowledge-base'
codefatherdev Apr 25, 2026
0cc81c9
feat(core): add corpus scope relevance check (Step 0) before topical …
codefatherdev Apr 25, 2026
b8d7116
Merge branch 'feat/corpus-scope-relevance'
codefatherdev Apr 25, 2026
b244d7b
fix(core): remove specific corpus topics and concept examples from kn…
codefatherdev Apr 25, 2026
c8438a1
Merge branch 'fix/corpus-scope-rule-generalize'
codefatherdev Apr 25, 2026
e35edfc
chore(core): bootstrap auto-release feature documentation
codefatherdev Apr 25, 2026
b53a475
chore(core): record Phase 1.5 security pre-review findings for auto-r…
codefatherdev Apr 25, 2026
4d2f47b
feat(core): release-engineer §7 executing mode + 4-tier authority
codefatherdev Apr 25, 2026
c7381b0
chore(core): scratchpad — mark Wave 1 Slice 1 complete (4d2f47b)
codefatherdev Apr 25, 2026
0be97d0
feat(infra): install.sh REPO_URL fix + Windows uname + version 3.0.0
codefatherdev Apr 25, 2026
42c6a94
chore(core): scratchpad — mark Wave 2 Slice 2 complete (0be97d0)
codefatherdev Apr 25, 2026
7e4789c
chore(infra): .gitattributes export-ignore for source tarballs
codefatherdev Apr 25, 2026
8dc32eb
feat(infra): sdlc-core-release.yml — bare v* tag → source tarball + C…
codefatherdev Apr 25, 2026
ab666b4
feat(infra): extend sdlc-knowledge-release.yml — windows-x64 + source…
codefatherdev Apr 25, 2026
0a53a7a
chore(core): scratchpad — Wave 3 complete (Slices 3+4 parallel; ab666…
codefatherdev Apr 25, 2026
2ef5a50
feat(core): SDLC core opt-in to auto-release + changelog + pre-push hook
codefatherdev Apr 25, 2026
672efc5
feat(infra): install.sh --bootstrap-release + register_release_bash_a…
codefatherdev Apr 25, 2026
6b348e5
docs(core): auto-release feature documentation
codefatherdev Apr 25, 2026
259c159
chore(core): scratchpad — all 7 slices complete; entering Phase 2.5 c…
codefatherdev Apr 25, 2026
8ba7c92
chore(core): clean up auto-release implementation
codefatherdev Apr 25, 2026
db121a3
fix(core): Gate 2 code-review findings — drop ^git push$ from Sensiti…
codefatherdev Apr 25, 2026
5403bcc
chore(core): scratchpad — mark auto-release feature merge-ready
codefatherdev Apr 25, 2026
843255b
Merge branch 'feat/auto-release' into main
codefatherdev Apr 25, 2026
421bbac
chore(core): release 0.2.0
codefatherdev Apr 25, 2026
83650fc
fix(infra): replace broken rhysd/actionlint@v1 with download script
codefatherdev Apr 25, 2026
59bcdc7
fix(infra): iter-3.1 cross-platform — cfg(unix) gate + macos-15-intel
codefatherdev Apr 25, 2026
40768c5
fix(infra): smoke-test fixture path traversal — copy fixture to proje…
codefatherdev Apr 25, 2026
c964791
fix(infra): Windows-x64 best-effort + release with partial-success ar…
codefatherdev Apr 25, 2026
de2e122
fix(infra): bump KNOWLEDGE_VERSION 0.1.0 → 0.2.0 after binary release
codefatherdev Apr 26, 2026
3cb5f11
feat(infra): claudeknows global alias — symlink into PATH dir on install
codefatherdev Apr 27, 2026
a287bc3
docs(core): switch knowledge-base CLI invocations to claudeknows alias
codefatherdev Apr 27, 2026
07ff434
feat(core): claudeknows search --context <N> flag for paragraph-level…
codefatherdev Apr 27, 2026
91f84f6
feat(core): tier-based model assignments — sonnet/haiku for non-criti…
codefatherdev Apr 30, 2026
f945341
feat(core): /release command extracted from /merge-ready Gate 9
codefatherdev Apr 30, 2026
781f1e1
docs(infra): install.sh post-install + --help — add /release, /knowle…
codefatherdev Apr 30, 2026
c2e66f5
chore(core): src/claude.md — sync lowercase tracked path with prior C…
codefatherdev Apr 30, 2026
3a36664
chore(core): release 0.3.0
codefatherdev Apr 30, 2026
c18bed3
Merge branch 'main' into main
codefather-labs May 1, 2026
bc03c58
feat(core): auto-persist plan-mode plans + fix(infra): pdf.rs Windows…
codefatherdev May 2, 2026
3761216
chore(core): release 0.3.1
codefatherdev May 2, 2026
0962b07
feat(infra): native Windows installer (install.bat + install.ps1)
codefatherdev May 2, 2026
42d9713
fix windows
vladcraftcom May 3, 2026
e363b4f
feat(core): page-tracking + page-text retrieval in sdlc-knowledge
vladcraftcom May 3, 2026
47efd23
docs(infra): surface page subcommand in install summaries
vladcraftcom May 3, 2026
4817343
feat(core): heading-aware structural chunker (Slice 1 of vector-retri…
codefatherdev May 10, 2026
921c36f
feat(core): sqlite-vec extension + schema v1→v2 + image BLOB column (…
codefatherdev May 10, 2026
a746c5b
feat(core): parser bridge over pdfium + structural chunker (Slice 3 o…
codefatherdev May 10, 2026
227c8bd
chore(core): scratchpad — Wave 1+2 DONE (Slices 1, 2, 3 of vector-ret…
codefatherdev May 10, 2026
345efb3
feat(core): PDF image extraction + BLOB roundtrip (Slice 4 of vector-…
codefatherdev May 10, 2026
8e37fe3
feat(core): e5-multilingual-small encoder (Slice 5 of vector-retrieva…
codefatherdev May 10, 2026
c5c00c8
docs(core): bootstrap docs for vector-retrieval-backend feature
codefatherdev May 10, 2026
4060d76
feat(core): hybrid search (BM25 + dense + RRF k=60) (Slice 7 of vecto…
codefatherdev May 10, 2026
272c817
feat(core): OCR bridge stub + placeholder fallback (Slice 6 of vector…
codefatherdev May 10, 2026
ca46a0c
chore(core): scratchpad — Wave 5 DONE (Slices 6+7 of vector-retrieval…
codefatherdev May 10, 2026
6331530
feat(core): CLI wiring for --mode lexical|dense|hybrid (tech-debt #3)
codefatherdev May 10, 2026
f9c03c9
feat(core): production ingest wiring — chunks_vec population (tech-de…
codefatherdev May 10, 2026
a302988
test(core): runtime prefix-discipline regression test (tech-debt #2)
codefatherdev May 10, 2026
3563d3d
chore(core): scratchpad — tech debts #2/#3/#4 closed (vector-retrieva…
codefatherdev May 10, 2026
64b393b
docs(core): rule + README updates for hybrid retrieval (Slice 11 part…
codefatherdev May 10, 2026
eb7bbad
feat(core): benchmark harness + 12-query golden set (Slice 9 of vecto…
codefatherdev May 10, 2026
0167f89
docs(core): bench report — hybrid +75% Recall@5 over lexical (Slice 1…
codefatherdev May 10, 2026
4e69506
chore(core): scratchpad — Slices 8/9/10/11 landed (vector-retrieval-b…
codefatherdev May 10, 2026
7c72b2e
docs(core): user-facing benchmark summary for vector-retrieval-backend
codefatherdev May 10, 2026
66152d4
feat(core): claudeknows warmup + Slice 8 full corpus + updated bench …
codefatherdev May 10, 2026
935ae76
feat(infra): wire claudeknows warmup into install.sh + install.ps1 (S…
codefatherdev May 10, 2026
9275999
feat(core): real PaddleOCR PP-OCRv4 inference via ocr-rs (Slice 6b of…
codefatherdev May 10, 2026
28c8a1e
feat(core): claudeknows compare — A/B-test all 3 search modes side-by…
codefatherdev May 10, 2026
70f6ed2
docs(core): document L2/cosine equivalence + page numbering decisions…
codefatherdev May 10, 2026
76ddbbf
feat(core): page-level addressing — schema v3 + page/reindex-pages su…
codefatherdev May 10, 2026
0c7edf0
chore(infra): bump sdlc-knowledge 0.3.1 → 0.4.0; promote CHANGELOG [U…
codefatherdev May 10, 2026
50c8579
merge: reconcile main page-tracking with feat/vector-retrieval-backen…
codefatherdev May 10, 2026
fe868c9
docs(core): add 'How vector search works end-to-end' walkthrough to t…
codefatherdev May 10, 2026
ca3ecb5
merge feat/vector-retrieval-backend into main
codefatherdev May 10, 2026
2648d45
ci(infra): fix release workflow for iter-2 binary size + ort target gaps
codefatherdev May 10, 2026
73b0760
chore(infra): extract claudeknows to standalone claudebase repo
codefatherdev May 10, 2026
a731370
feat(infra): add qa-engineer agent + /qa-cycle skill for strict QA/De…
codefatherdev May 11, 2026
ace61e6
fix(infra): align installer post-install summary with positional clau…
codefatherdev May 11, 2026
ea9aaf5
feat(infra): neuroscience-inspired pipeline protocols + agent personas
codefatherdev May 15, 2026
843c3e4
fix(commands): rename claudeknows → claudebase in /knowledge-ingest spec
codefatherdev May 15, 2026
292c1c0
Merge pull request #1 from codefather-labs/fix/knowledge-ingest-claud…
codefather-labs May 15, 2026
b8a21e9
feat(infra): agent-prompt + rule integration for claudebase insights …
codefatherdev May 16, 2026
99c192e
merge: agent-insights-base SDLC integration
codefatherdev May 16, 2026
e3575ff
chore(infra): bump CLAUDEBASE_VERSION to 0.5.0
codefatherdev May 16, 2026
96327be
docs(infra): expand Windows install instructions + sync install.ps1 c…
codefatherdev May 17, 2026
594ef78
feat(infra): split claudebase into standalone-installable repo + add …
codefatherdev May 17, 2026
426e3e0
feat(core): /onboarding skill + session-changelog rule
codefatherdev May 22, 2026
a5eacfe
feat(core): replace /onboarding slash command with auto-firing hooks
codefatherdev May 23, 2026
4812e4b
feat(core): wrap hook output in <hook source=...> tag for visual pari…
codefatherdev May 23, 2026
7895c5a
feat(core): emit hook output as JSON with systemMessage for operator-…
codefatherdev May 23, 2026
78c22df
feat(infra): PostToolUse[ExitPlanMode] hook — plan.md persistence rem…
codefatherdev May 24, 2026
c780eaa
chore(core): session changelog — claudebase subdomain bullet
codefatherdev May 24, 2026
d6e5e8e
feat(core): git workflow rule — never use git rebase
codefatherdev May 25, 2026
9f65448
refactor(core): move cognitive-self-check.md ownership to claudebase
codefatherdev May 25, 2026
0e3280f
docs(core): banners + changelog for cognitive-self-check.md move
codefatherdev May 25, 2026
2d5eb8d
fix(infra): ASCII-only PowerShell hooks — Windows PS 5.1 parse failure
codefatherdev May 26, 2026
2dc4c83
docs(infra): banner lists 4 claudebase commands (+ update-claudebase)
codefatherdev May 26, 2026
9eb9618
docs(infra): banner reflects claudebase hook consolidation
codefatherdev May 26, 2026
6f920e6
docs(infra): update agent insight-create callers for v0.7.0 required …
codefatherdev May 27, 2026
5ace91c
Merge branch 'feat/insights-hybrid-corpus-callers'
codefatherdev May 30, 2026
19f853a
fix(infra): README curl|bash install — add -s -- --yes
codefatherdev May 30, 2026
993132b
Merge branch 'fix/install-curl-pipe-yes-flag'
codefatherdev May 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .claude/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Session Changelog

## 2026-05-25

- Published "Vibecoding Parallelizes Features…" article to codefather.dev (7-agent review applied)
- Article DB seeded locally + CI pipeline switched Django→rust-site/var/content.sqlite3 as source-of-truth
- New claudebase Stop hook — reflects after every turn, captures insights if agent learned something
- New SDLC git rule — never use git rebase
- New UserPromptSubmit self-check reminder hook + cognitive-self-check.md moved SDLC→claudebase

## 2026-05-24

- claudebase v0.6.0 released — 5-platform binaries + telegram-plugin-rs in GH release
- Installer always pulls server-rs from GH release (no cargo-build fallback)
- Hooks now emit JSON envelope — operator sees them in CLI like channel callbacks
- Plan quartet pushed — multi-CLI fleet / TG orchestration / per-project .claudebase/ / server foundation
- Repo cleanup: dropped claudebase-dev plugin distribution, moved agents/commands/rules → prompts/
- README rewritten — "Local infrastructure for LLM agents" with 4-layer capability stack
- .github/ scaffolding added — issue + PR templates, CONTRIBUTING + SECURITY + CoC + CHANGELOG
- GH repo metadata set via gh CLI — description, 15 topics, Discussions on, homepage link
- claudebase title.png banner added to README top
- codefather.dev: new /solutions section, claudebase as first entry, sitemap+llms.txt updated
- New ExitPlanMode PostToolUse hook — reminds agent to persist plan.md after plan-mode exit
- claudebase.codefather.dev subdomain — nginx server-block serves /solutions/claudebase at /

## 2026-05-23

- /onboarding skill + session-changelog rule shipped (commit 426e3e0)
- /onboarding replaced with SessionStart + SubagentStart hooks (commit a5eacfe on main)
- install.sh/install.ps1 deploy hooks idempotently and merge settings.json
- Channel surface still broken in Claude Code 2.1.144 — out of our reach
151 changes: 151 additions & 0 deletions .claude/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# Plan: Medium article for `claudebase` — story, evolution, decisions, benchmarks

## Context

The user wants a long-form Medium article telling the story of `claudebase` — a local-first hybrid lexical+dense+RRF retrieval CLI extracted on 2026-05-10 from the SDLC monorepo into its own repo. The article must focus on the RETRIEVAL tool specifically (not the entire SDLC pipeline), cover the idea and the evolution from BM25-only iter-1 to hybrid iter-2, the load-bearing technical decisions made along the way, and the concrete benchmark numbers.

All the source material already exists:
- `claudebase/docs/architecture/technical-decisions.md` — 5-step "How vector search works end-to-end" walkthrough + decision narratives (why hybrid, L2 vs cosine math, why fastembed-rs, why ocr-rs MNN over paddle-ocr-rs ONNX, why placeholder text for image chunks, page-level addressing).
- `claudebase/docs/benchmarks/2026-05-10-baseline.md` — 12-query golden-set numbers: Lexical / Dense / Hybrid Recall@1/3/5/10, MRR, p50/p95 latency; concrete qualitative samples (Q01 RAG, Q11 prompt engineering, Q07 Russian cross-lingual); +75% Recall@5 over BM25 baseline headline.
- `claudebase/docs/article/00-overview.md` — staging directory with a draft outline (kept as-is; the new article goes in a new file alongside).

The article is published to `claudebase/docs/article/01-claudebase-story.md` (Medium-ready Markdown, single file, English so Medium's reach is maximized; Russian example queries preserved verbatim to concretely demonstrate the cross-lingual capability).

Target length: ~3500 words, structured for Medium readability (short paragraphs, code blocks with syntax highlighting, tables for benchmark numbers).

## Implementation slices (1 slice / 1 wave)

### Slice 1: Write + commit + publish the article

- **Files**:
- NEW: `claudebase/docs/article/01-claudebase-story.md` (the article itself)
- MODIFIED: `claudebase/docs/article/00-overview.md` (one-line update: replace the "Stub status" trailer with a link to `01-claudebase-story.md`)

- **Article structure** (10 sections, Medium-ready):

1. **Lede** (~200 words) — the hook. A concrete Russian query about scalable distributed systems that BM25 either matches or misses, framing the question: what does it take to make a 39-PDF library readable by an LLM agent that doesn't speak the corpus's language?

2. **The problem space** (~300 words) — why LLM agents need a per-project knowledge base, why local-first beats hosted vector DBs for this niche, the single-SQLite-file invariant (`index.db` co-locates FTS5 + sqlite-vec + raw chunks + page-text + image BLOBs), how this contrasts with Qdrant/Pinecone deployments.

3. **Iter-1: BM25 over SQLite FTS5** (~400 words) — the MVP shipped in `sdlc-knowledge v0.3.x`: pdfium-render → 500-char sliding-window chunks → FTS5 `chunks_fts` virtual table → BM25 ranking. What worked (5-10 ms queries, deterministic, zero deploy). The three failure modes that drove iter-2: cross-lingual misses (concrete `как настроить отказоустойчивость` → 0 BM25 hits despite content existing), no semantic recall (paraphrase fail: "how to authenticate" misses "user verification"), concept-level queries that BM25 ranks glossary-pages high for (e.g. "RAG retrieval architecture").

4. **The pivot: hybrid retrieval** (~500 words) — decision narrative for iter-2. Why not pure dense (BM25 catches OOD tokens / API names / error codes that no encoder can embed reliably). Why fusion. Why Reciprocal Rank Fusion specifically over weighted-sum-of-normalized-scores (no normalization between rankers needed; the k=60 smoothing constant balances rank-1 dominance with rank-5-to-10 contribution). The architectural sketch: BM25 over FTS5 + dense K-NN over sqlite-vec, fused via `score_RRF(d) = Σᵢ 1/(60 + rankᵢ(d))`, all in the same `index.db`.

5. **The 5-step walkthrough** (~700 words) — the pedagogical core, lifted from `technical-decisions.md` "How vector search works end-to-end" and rewritten for a general technical audience. Step 1: ingest-time encoding (e5-multilingual-small → 384-dim L2-normalized vector → `chunks_vec`). Step 2: query-time encoding + sqlite-vec K-NN (exact scan, 6-7 ms on 75 k vectors). Step 3: the L2 vs cosine math — `L2² = 2 − 2·cos(θ)` for unit-norm vectors means L2 ranking IS cosine ranking (with the cos = 1 − L2²/2 conversion shown). Step 4: the e5 `passage:` / `query:` prefix asymmetry contract and how I enforce it (API design + runtime regression test). Step 5: hybrid via RRF k=60 — the formula, why k=60 is the Cormack 2009 canonical value, what gets fused (top-K·4 from each ranker, return top-K of the fused list). Include code snippets — the actual `dense_search()` SQL, the e5 prefix calls, the RRF Rust loop.

6. **Decisions made under pressure** (~500 words) — the war stories. The fastembed-rs choice (save 500 LOC of XLM-RoBERTa SentencePiece tokenizer). The paddle-ocr-rs version conflict drama (PaddleOCR via ort + fastembed via ort = 9 compile errors in `ort::value::impl_tensor::create`; switched to `ocr-rs` MNN runtime which has no ort dep at all). The L2-vs-cosine migration-cost call (chose to document the equivalence rather than re-create chunks_vec and re-embed 75 k chunks for purely cosmetic score-shape). The image-as-BLOB choice (preserves single-file invariant, ~28 MB overhead per typical PDF acceptable). The intentional `[image: figure N from <doc>]` placeholder mode for image chunks until OCR model files land (image chunks remain dense+BM25 searchable at document-grain even before real OCR).

7. **The numbers** (~500 words) — actual benchmark from the golden 12-query set. Three modes side-by-side table (Recall@1/3/5/10, MRR, latency p50/p95). Headline: +75% Recall@5 over BM25 baseline (75.0% vs 41.7%); +43% Recall@10 (83.3% vs 58.3%); +28% MRR (0.483 vs 0.378). The cost: 9 ms → 66 ms p95 (still well under the 500 ms NFR budget). The latency-vs-recall trade-off discussion. Three qualitative samples preserved with their actual chunk ranks: Q01 "RAG retrieval architecture" (lexical: no hit; hybrid: dedicated RAG book at rank 1). Q11 "prompt engineering best practices" (RRF rank-fusion bumps a mid-pack lexical-and-dense match to rank 4). Q07 Russian cross-lingual against Russian-language sources where lexical and dense both win — demonstrating that hybrid doesn't degrade consensus.

8. **The post-shipping migration** (~300 words) — the day-after story. The Rust crate started as `tools/sdlc-knowledge/` in a monorepo; that turned out to be the wrong default (it's an independent product, not an SDLC harness slice). The 2026-05-10 extraction to `github.com/codefather-labs/claudebase` as a standalone repo. The rename mapping (`sdlc-knowledge` → `claudebase`; `claudeknows` CLI alias → `claudebase`; install path `~/.claude/tools/sdlc-knowledge/` → `~/.claude/tools/claudebase/`). The install.sh auto-migration: detects the old install on next run, removes the old directory + old symlink, downloads the new binary from the new repo's release. Version-continued (sdlc-knowledge-v0.4.0 → claudebase-v0.4.0) so no version regression for users.

9. **What's next** (~200 words) — honest roadmap. ANN index (HNSW/IVF via sqlite-vec) when corpora exceed ~1M chunks (exhaustive K-NN starts to bite). Real OCR end-to-end (the ocr-rs MNN engine is wired in; the user just hasn't placed model files yet; once they do, image chunks re-embed automatically on next ingest with no schema change). Per-language stratified benchmarks expanded to ≥50 queries with multiple judgers. A potential Tantivy-backed lexical alternative if FTS5 hits scalability ceilings.

10. **Try it** (~100 words) — install one-liner, first query, link to GitHub repo + docs.

- **Code snippets** to include:
- The `sqlite-vec` K-NN SQL: `WHERE chunks_vec.embedding MATCH ?1 AND k = ?2 ORDER BY distance`
- The FTS5 BM25 SQL: `-bm25(chunks_fts) AS score ... ORDER BY score DESC`
- The e5 prefix discipline in Rust: `encode_passages()` vs `encode_query()`
- The RRF formula in Rust: the `for hit in ranker { score += 1.0 / (RRF_K + rank) }` loop
- The L2/cosine equivalence proof + the `cos = 1 − L2²/2` decoder

- **Tables**:
- Benchmark aggregate (3 modes × 4 Recall@K + MRR + 2 latency columns)
- Relative improvement (hybrid vs lexical) — 4 metric rows
- L2-to-cosine decoder (5 row sample)

- **Tone**: First-person singular ("I"), conversational-technical, paragraphs ≤ 4 sentences, no jargon without immediate definition. Russian quoted verbatim where it appears in evidence (Q07 query, the chaos-engineering page snippet). Voice consistent with the existing `technical-decisions.md` "How vector search works end-to-end" walkthrough but rewritten for a Medium audience that doesn't necessarily know the project.

- **Verify**:
- `wc -w claudebase/docs/article/01-claudebase-story.md` ≥ 2500 (target ~3500)
- `grep -c "^## " claudebase/docs/article/01-claudebase-story.md` returns 10
- `grep -c "claudebase" claudebase/docs/article/01-claudebase-story.md` ≥ 20
- `grep -F "RRF" claudebase/docs/article/01-claudebase-story.md` returns ≥ 5 hits
- `grep -F "cos = 1 − L2²" claudebase/docs/article/01-claudebase-story.md` returns ≥ 1 hit
- `grep -F "L2 = √(2 − 2·cos" claudebase/docs/article/01-claudebase-story.md` returns ≥ 1 hit (or the analogous formula text)
- `grep -F "Cormack" claudebase/docs/article/01-claudebase-story.md` returns ≥ 1 hit
- Article references benchmark numbers verbatim from `2026-05-10-baseline.md` (75.0% / 83.3% / 0.483 / 66 ms)

- **Done when**: file exists, passes verification greps, reads naturally start-to-finish without bare `TODO`s, all 10 sections present, ready to copy-paste into Medium's editor.

- **Pre-review**: none (long-form writing; the user will edit before publishing)

### Slice 2: Update staging overview + commit + push

- **Files**: `claudebase/docs/article/00-overview.md` — replace the "Stub status" trailer with a one-line pointer at `01-claudebase-story.md` (the staging directory is no longer a stub once the article exists).

- **Changes**:
- `cd claudebase`
- `git status` to confirm the diff is the new article + the trailer update
- `git add docs/article/`
- `git commit -m "docs(article): first Medium draft — claudebase story, decisions, benchmarks"`
- `git push origin main` (Sensitive — public commit; user already approved this flow in the previous extraction)

- **Verify**: `git log -1 --oneline` on the claudebase repo shows the new commit; `gh repo view codefather-labs/claudebase --web` (if browsed) shows `docs/article/01-claudebase-story.md` in the file tree.

- **Done when**: claudebase main branch on GitHub holds the article; the user can open it on GitHub or copy-paste the raw Markdown into Medium's editor.

## Files affected

**NEW**:
- `claudebase/docs/article/01-claudebase-story.md` (~3500 words)

**MODIFIED**:
- `claudebase/docs/article/00-overview.md` (one-line replacement of the "Stub status" trailer)

**INTENTIONALLY UNCHANGED**:
- All source material (`technical-decisions.md`, `2026-05-10-baseline.md`) — these are the canonical engineering documents; the article is a derivative work and must NOT diverge from the numbers / claims in those files.
- SDLC repo (`/Users/aleksandra/Documents/claude-code-sdlc/`) — the article lives in the claudebase repo only.

## Risks and dependencies

1. **R1 — Article-vs-source drift**: if the article quotes specific numbers (75.0% Recall@5, 0.483 MRR, etc.) and the underlying benchmark report later changes, the article goes stale. Mitigation: footer line in the article noting "numbers verbatim from `docs/benchmarks/2026-05-10-baseline.md`" and pinning the benchmark date in-text. Risk accepted — the article is a snapshot, not a live document.

2. **R2 — Medium-specific Markdown quirks**: Medium's editor strips some Markdown extensions (tables render but lose alignment; nested code fences need escape). Mitigation: keep tables simple (pipe-delimited, no alignment chars beyond `:---:`), avoid nested fences, use ASCII for the formula blocks rather than Unicode math symbols that Medium may not render.

3. **R3 — First-person voice when there were multiple authors**: the project was built collaboratively (vladcraftcom did the post-extraction page-tracking work; I did the iter-2 hybrid + multimodal). Mitigation: use "I" sparingly for first-person decisions ("I chose RRF k=60") but "we" or passive voice for collaborative work; explicit acknowledgement section at the end if the user wants it.

4. **R4 — Language choice**: the user asks in Russian; the article is in English. The trade-off: Medium English audience is 50–100× larger; Russian readers can use the Q07 cross-lingual evidence as a strong language-mixing demonstration. Decision: English, Russian queries preserved verbatim in evidence. If the user wants a Russian translation later, that's a follow-up.

## Verification (end-to-end)

```bash
cd /Users/aleksandra/Documents/claude-code-sdlc/claudebase

# A. Article exists and is substantial
[ -f docs/article/01-claudebase-story.md ]
words=$(wc -w < docs/article/01-claudebase-story.md)
[ "$words" -ge 2500 ] && echo "word count: $words ✓"

# B. All 10 sections present
sections=$(grep -c "^## " docs/article/01-claudebase-story.md)
[ "$sections" -ge 10 ] && echo "sections: $sections ✓"

# C. Key technical content present
grep -F "cos = 1" docs/article/01-claudebase-story.md # L2/cosine equivalence
grep -F "RRF" docs/article/01-claudebase-story.md | wc -l # ≥ 5
grep -F "Cormack" docs/article/01-claudebase-story.md # RRF citation
grep -F "passage:" docs/article/01-claudebase-story.md # e5 prefix
grep -F "75" docs/article/01-claudebase-story.md # +75% Recall@5

# D. Cross-lingual evidence preserved
grep -F "масштабируемые" docs/article/01-claudebase-story.md || \
grep -F "хаос инжиниринг" docs/article/01-claudebase-story.md

# E. Staging overview updated (no more "Stub status" trailer)
! grep -q "Stub status" docs/article/00-overview.md

# F. Commit landed
git log -1 --oneline | grep -q "Medium\|article"

# G. Pushed
git fetch origin main && \
[ "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)" ]
```

All 7 verification blocks PASS = article shipped and discoverable in the claudebase repo.

## Review Notes

(filled in after Plan Critic pass — this is a writing task, not a code change, so the standard Plan Critic checks for slice quality / dependency ordering / etc. mostly don't apply; the load-bearing review is: does the article accurately reflect the engineering decisions, do the numbers match the benchmark report, is the voice consistent with the rest of the docs.)
Loading