Skip to content

log_llm wiki memory template

Priscila Saboia Moreira edited this page Jun 28, 2026 · 38 revisions

Log — llm-wiki-memory-template

Chronological record of wiki activity.

[2026-05-20] create | Wiki initialized

  • by: Chris Sweet via claude-code
  • Scaffolded wiki structure with namespaced navigation files (Home, index, log, SCHEMA) authored to match the canonical create-mode output of wiki/init-wiki.sh
  • Wiki cloned to sibling path ../llm-wiki-memory-template.wiki/ rather than wiki/<repo>.wiki/ to avoid semantic collision with the template's wiki/ scaffolding directory; consequence: Home_<repo> up: "[[WIKI-INDEX]]" is a deliberate dangling reference for this layout
  • Ready for first ingest

[2026-05-20] ingest | Initial knowledge dump of template pattern, mechanisms, lessons, limitations

  • by: Chris Sweet via claude-code
  • Authored 18 content pages across five categories: foundation (5: Wiki-LLM-Pattern, Three-Operations, Template-vs-Derived-Projects, Agent-Overlays, Typed-Edges-and-Frontmatter), mechanisms (6: Knowledge-Graph-Pipeline, Verification-Gate, Discipline-Gates, PostToolUse-Hook, Log-Entry-Attribution, Sync-Flow), lessons (3: Parallel-File-Drift, Hook-Type-Matters, Validation-Methodology), limitations (3: Prompt-Injection-Residual, Inverse-Edges-Missing, Untested-Overlays), and applied examples (1: Microelectronics-Tutor-Demo)
  • Captured the substance of merged PRs: PR #1 (discipline gates, verification gate, PostToolUse hook) and PR #4 (log entry attribution, one-commit-per-entry), including the review feedback patterns and post-mortem lessons surfaced during structural + behavioral testing
  • Filed three open limitations explicitly: prompt-injection residual risk (not pattern-specific), missing edge inverses (issue #3, surfaced during PR #4 behavioral testing), and untested non-Claude-Code overlays (Cursor, none)
  • Used typed edges (extends:, criticizes:, supports:) wherever the relationship is clear; treated criticizes: as the right edge from a Limitation page to the concept it limits, and from a Lesson page to the prior approach it corrects
  • Index updated with all 18 pages organized by category; every page has at least 2 outbound links and a See also section
  • Verification gate criteria all pass: index updated, log entry being appended (this one), cross-references bidirectional, frontmatter present and non-untyped on every page

[2026-05-23] ingest | Governance — three-tier model for proliferating variants

  • by: Chris Sweet via claude-code
  • Filed Governance in the Foundation category in response to the wiki-llm pattern spreading beyond the base template into specialized variants (chrissweet/llm-wiki-tutor-template, with codebase-onboarding and grant-authoring siblings under discussion after the symposium demo and SIMBA collaboration)
  • The page extends Template-vs-Derived-Projects by introducing a third tier (variant template) between the base and an instantiated project; the placement rule, fork-vs-flag criteria, rebase discipline, graduation trigger, and ownership / drift detection all derive from the three-tier model
  • Cross-references the existing Sync-Flow for the ALWAYS_FILES contract (escalated one tier — variants rebase from base the same way derived projects rebase from variants) and Lesson-Parallel-File-Drift for the same footgun escalated to the variant tier
  • Three open questions flagged for resolution as the variant population grows beyond two or three: variant discovery, versioning (pin to SHA vs HEAD), cross-variant features
  • Home and Index updated in the Foundation category adjacent to Template-vs-Derived-Projects

[2026-05-31] lint | Reconcile wiki with template code; flag KG aspirational; fix none-overlay framing

  • by: Chris Sweet via claude-code
  • Audited the wiki against crcresearch/llm-wiki-memory-template main after reading all 24 pages. Triggered by an MVP-planning exercise that needed accurate references to template wiki pages.
  • Three substantive drifts found, all corrected in commit 8601db0:
    • Knowledge-Graph-Pipeline was described as implemented across 8 pages; reality is scripts/kg/build-graph.sh does not exist on main. Flagged status: aspirational with a "NOT YET IMPLEMENTED" banner; the design content preserved. Citations on the 7 dependent pages (Home, index, SCHEMA, Wiki-LLM-Pattern, Three-Operations, Typed-Edges-and-Frontmatter, Limitation-Inverse-Edges-Missing) softened to "designed, not yet implemented".
    • Limitation-Untested-Overlays and Agent-Overlays misframed --agent=none (a no-install flag in instantiate.sh) as a wiki/agents/none/ overlay. Reframed; minimal mode now described accurately as no-install. Also fixed: the claim that the README uses the phrase "untested-live"; actual README uses "Shipped but not yet validated" and "Likewise unvalidated".
    • Sync-Flow's ALWAYS_FILES section mixed contents from four arrays and listed scripts/kg/*.sh (nonexistent). Section rewritten to accurately describe all five arrays (ALWAYS_FILES, CLAUDE_FILES, CURSOR_FILES, ONE_SHOT_FILES, SUBSTITUTE_FILES) with file lists from the current sync scripts.
  • New pages: Implementation-Status (single normative source for real vs aspirational) and Wiki-Corrections-Log (append-only record of drift fixes). Home and Index gained a "Governance and meta" section linking both.
  • Withdrew an earlier flag against Lesson-Parallel-File-Drift on full re-read: the page accurately describes the CLAUDE.md.template vs claude-md-snippet.md pair (instantiate.sh path vs setup.sh --seed-memory path). No edit needed there.
  • Verification debts noted in Wiki-Corrections-Log but not resolved this round: Applied-Example-Microelectronics-Tutor-Demo status staleness (page predates the 2026-05-19 talk; today is 2026-05-31); the permission-model claims in Limitation-Prompt-Injection-Residual; the existence of chrissweet/llm-wiki-tutor-template cited by Governance.
  • Convention note: this lint entry is filed retroactively. The Verification Gate criterion "log entry appended" was missed in the 8601db0 commit cycle; the convention requires one commit per log entry, so this entry is its own commit and references the prior content commit by SHA.

[2026-05-31] ingest | Test Harness — structural CI for template changes (PR #10)

  • by: Chris Sweet via claude-code
  • Filed Test-Harness in the Mechanisms category to document the bash test harness in chrissweet/llm-wiki-memory-template add-test-harness, currently open as PR #10 against template main (addresses issue #5).
  • The page covers: what the harness validates (the structural half of Lesson-Validation-Methodology); architecture (sandbox + per-stage patch.sh + assertions.sh + run.sh discovery); the smoke test against real template state; six e2e stages against a simulated derivative with MVP patches applied; 91 total assertions on bash 3.2-compatible code.
  • Documents the GitHub Actions workflow at .github/workflows/test-harness.yml: matrix on ubuntu-latest + macos-latest (macOS is load-bearing for catching symlink path resolution and bash 3.2 array-init bugs that do not surface on Linux); jq installed on Linux only; two-pass run for clean per-category output via if: always().
  • Explains how to extend the harness with a new stage (pick a category, create tests/<category>/<name>/, write idempotent patch.sh and assertions.sh using the assert / assert_eq / assert_contains helpers; harness auto-discovers by directory; no CI workflow change needed for a new stage).
  • Calls out parts missing from the MVP feature report: the harness covers stages 2 and 5 plus Agent-Instance assertions in stage 1, all currently slated for deferral in the trimmed MVP; the harness does NOT yet cover Sync-Flow's ALWAYS_FILES contract (PR #1 hit exactly this; a smoke-test addition is filed as a follow-up).
  • Updated Implementation-Status with a new "In review (open PR)" bucket and listed the harness there. Home and Index updated in the Mechanisms section.
  • Verification gate: index updated, log entry being appended (this one), cross-references bidirectional (Test-Harness has frontmatter extends: "[[Lesson-Validation-Methodology]]" and is reachable from Home, index, Implementation-Status, and the See also sections of Lesson-Validation-Methodology-adjacent pages via the wiki graph), frontmatter present and non-untyped.

[2026-05-31] ingest | Multi-Agent-Write-Protocol — collision-free wiki writes for multi-agent setups

  • by: Chris Sweet via claude-code
  • Filed Multi-Agent-Write-Protocol in the Mechanisms category as a new aspirational design page. The protocol prevents push-level collisions by construction: each agent writes via its own contribution branch, attempts a merge against current main, and either pushes cleanly or re-plans its writes semantically before retrying. No separate reconciler agent; the writing agent reconciles its own attempts.
  • Prior-art class: Optimistic Concurrency Control with semantic retry. Roots in Bayou (Xerox PARC, 1995) and the saga pattern's compensating actions. The novel application is the LLM agent as the retry's semantic resolver.
  • Key design choices documented: union-merge for index and log files via .gitattributes (mechanical, not semantic), three-way merge for non-overlapping content (also mechanical), semantic resolution only when the same lines of the same section are touched by both agents. Conflict classification matters because we do not want to invoke expensive LLM reasoning for "we both appended a line to the index."
  • Failure modes covered: livelock (K=3 retry cap then escalate to human), network faults (standard git retry semantics), stale working branches (re-fetch in step 3), name collisions (treated as full-overlap semantic conflicts).
  • Implementation-Status updated: page listed under Aspirational. A deterministic prototype is in progress at Omniscient_2/scripts/multi-agent-write-protocol-proto/ exercising seven scenarios (different pages, different sections, same section, index union, log append, push race, livelock retry). LLM-driven prototype and template reference implementation are deferred until the deterministic prototype validates the mechanics.
  • Subsumes most of Future-Contribution-and-Reconciliation in Omniscient_2.wiki: the status-lifecycle approach proposed there was for a single-reconciler-agent model; this protocol distributes reconciliation to each writing agent and removes the need for status fields, curator metadata, and a dedicated reconciler.
  • Home and Index updated in the Mechanisms section.
  • Verification gate: index updated, log entry being appended (this one), cross-references bidirectional (the spec page links to and is linked from Verification-Gate, Sync-Flow, PostToolUse-Hook, Lesson-Hook-Type-Matters, Three-Operations, Knowledge-Graph-Pipeline, and Implementation-Status), frontmatter present with status: aspirational and extends: "[[Three-Operations]]".

[2026-06-01] lint | Multi-Agent-Write-Protocol redesign: push-time-only + SessionStart

  • by: Chris Sweet via claude-code
  • Rewrote Multi-Agent-Write-Protocol to reflect a new design after the per-agent-branch original was found to be insufficiently transparent: agents had to know about working branches, and "push" meant "merge into main" rather than standard git push. The redesign is push-time-only: agents work directly on local main like normal; a thin wiki-push wrapper handles conflict resolution only when an optimistic push is rejected. Standard git from the outside; LLM-driven semantic resolver in the middle.
  • The complementary session_start mechanism kept (the user emphasised it): fetch + fast-forward pull + report incoming commits, with clean deferral (no auto-rebase) on divergence.
  • Prototype consequences: collapsed agent_prepare / agent_publish / agent_write into a single wiki_push entry point plus an agent_session_start. Rewrote 7 existing scenarios for the new shape; added 2 scenarios for SessionStart (08-session-start-auto-pull, 09-session-start-divergent). Integrated with the test harness so all 9 scenarios run as harness assertions under a new integration/wiki-write-protocol/ test.
  • Test status: 9/9 PASS standalone (run-all.sh); 99/99 PASS in the full harness (./scripts/test-mvp/run.sh); CI green on ubuntu-latest and macos-latest. The prototype lives on chrissweet/llm-wiki-memory-template:multi-agent-write-protocol-proto, branched off the add-test-harness branch that is the head of upstream PR #10.
  • Implementation-Status updated to reflect the new design and the prototype's CI-green location. No changes to Home or index (the page name is unchanged).

[2026-06-12] ingest | Lessons-Learned-From-model_fusion — field report + verification table

  • by: Chris Sweet via claude-code
  • New page Lessons-Learned-From-model_fusion. Filed as a sister to Applied-Example-Microelectronics-Tutor-Demo: a second empirical test of the template from a different domain (NIR + PAD pharma analytics, 43 wiki pages, 24 experiments, ~5 months of active curation in PaperAnalyticalDeviceND/model_fusion)
  • Contains a verification table of 12 implementation-gap recommendations against current template HEAD fc2472a (2026-06-04): 0 fully addressed; 2 partial (#1 SessionStart auto-loads content not just reminder; #9 mechanical reciprocal-edge enforcement); 10 still missing (UserPromptSubmit/Stop hooks, analysis+decision page types, primary_wiki + cross-wiki rules, compounding-ratio metric, lint scheduling, Claude-memory vs wiki boundary, project-typed SCHEMA, CLAUDE.md re-injection, filing footer)
  • Each recommendation labelled with empirical motivation (specifically: what fell through the cracks in the model_fusion session that the recommendation would have caught)
  • Cross-references Lesson-Hook-Type-Matters (all proposed hooks are command-type per this lesson), Lesson-Parallel-File-Drift (drift caveats called out for each multi-file recommendation), Limitation-Inverse-Edges-Missing (recommendation #9 builds on this existing limitation), Verification-Gate and Discipline-Gates (existing mechanisms the recommendations complement rather than replace)
  • Includes the "recursive bootstrap problem" finding: cloning the template repo lands contributors without llm-wiki context (no wiki/<repo>.wiki/, CLAUDE.md.template not CLAUDE.md, no hooks installed). Proposed fix: dev-mode bootstrap that clones the template's own GitHub Wiki locally, with gitignore + allowlist exclusion preventing leakage into derived projects
  • Updates the index Applied-examples section with the new entry
  • Provenance section names the three derived projects sampled (chrissweet/AI_skills, PaperAnalyticalDeviceND/annotated_chemopad, PaperAnalyticalDeviceND/model_fusion) and the methodology section spells out how readers can repeat the empirical verification on their own project's state

[2026-06-12] lint | KG pipeline aspirational → implemented; bidirectional back-references; example cleanup

  • by: Chris Sweet via claude-code
  • Audit scope: scanned all 28 wiki pages for orphans, dead links, missing frontmatter, untyped pages, index gaps, naming-convention deviations, special-file integrity, and bidirectional asymmetry. Health overall: good. No orphans, no missing frontmatter on content pages, no index gaps, no convention violations.
  • Stale-claim correction: PR #14 shipped scripts/kg/ (rdflib + pyshacl, in-process KG pipeline) to template main as commit 2018186. Nine wiki pages still described the pipeline as aspirational with banners and "(not yet implemented)" parentheticals. Rewrote Knowledge-Graph-Pipeline (removed banner, switched status: to implemented, corrected architecture from Fuseki to rdflib + pyshacl, added a "Distribution to derived projects" section). Updated Implementation-Status, Wiki-LLM-Pattern, Three-Operations, Typed-Edges-and-Frontmatter, SCHEMA_llm-wiki-memory-template, Limitation-Inverse-Edges-Missing, Sync-Flow, and the index to match.
  • Honest report: scripts/kg/ is not in ALWAYS_FILES; derived projects do not auto-receive it on update-from-template.sh. Documented this as a distribution gap on both Knowledge-Graph-Pipeline and Sync-Flow, with the likely path being an opt-in feature under features/kg/ (RFC #13 framework).
  • Example cleanup: Wiki-LLM-Pattern line 23 used the placeholder example [Markov-Chain-v5c2](Markov-Chain-v5c2) (a finding-naming illustration). Replaced with [Lesson-Hook-Type-Matters](Lesson-Hook-Type-Matters) so the example points to a real wiki page.
  • Bidirectional fixes: ~70 asymmetric A→B pairs found; the high-value ~15 concept ↔ lesson/limitation pairs were patched. Index/log roll-ups (Implementation-Status, Wiki-Corrections-Log) intentionally left one-way. See Wiki-Corrections-Log entry for the full list.
  • Carry-forward debts (still open from 2026-05-31): Applied-Example-Microelectronics-Tutor-Demo staleness; Limitation-Prompt-Injection-Residual permission-model claims; Governance citation of chrissweet/llm-wiki-tutor-template.
  • Verification gate: index updated (KG row description rephrased), log entry being appended (this one), cross-references bidirectional for the patched subset, frontmatter present and non-untyped on every page.

[2026-06-12] lint | refresh Lessons-Learned-From-model_fusion to HEAD 88f4624 + bidirectional fixes

  • by: Chris Sweet via claude-code
  • User-requested review of Lessons-Learned-From-model_fusion. Page declared verification against fc2472a (2026-06-04); fc2472a does not resolve in crcresearch/llm-wiki-memory-template (likely fork-local). Refreshed against actual HEAD 88f4624 (2026-06-12, "instantiate.sh: add --dev-self flag (#25)"). Three commits between snapshot and HEAD touch the field report: PR #14 (KG pipeline shipped), PR #16 (Edge-Types vocabulary), PR #25 (--dev-self).
  • Page updates: headline tally refreshed (0 / 3 / 9 + recursive-bootstrap RESOLVED); table row 9 refined (inverse vocabulary shipped in wiki/Edge-Types.md.template but not wired into init-wiki.sh page-type list, PostToolUse does not enforce); body #9(a) rewritten to reference the shipped vocabulary and the shipped KG pipeline rather than designed-but-pending; "The recursive bootstrap problem" section flipped to "RESOLVED in PR #25" with the --dev-self behavior enumerated; Provenance section path corrected (/TCF//CRS_research/, the only real checkout) and the unresolvable SHA flagged.
  • Bidirectional back-references added on 5 of 10 unreciprocated related: entries: Applied-Example-Microelectronics-Tutor-Demo (sister page), Lesson-Hook-Type-Matters, Lesson-Parallel-File-Drift, Lesson-Validation-Methodology, Limitation-Inverse-Edges-Missing. Other 5 (Verification-Gate, Discipline-Gates, Three-Operations, PostToolUse-Hook, Implementation-Status) intentionally one-way per the morning's heavy-roll-up rule.
  • Wiki-Corrections-Log appended with the second-pass entry under today's date.
  • Verification gate: index unchanged (page already listed), log entry being appended (this one), bidirectional links patched for the high-value subset, frontmatter unchanged and non-untyped.

[2026-06-12] ingest | Analysis-of-model_fusion-Recommendations — assessment of the 12 recommendations

  • by: Chris Sweet via claude-code
  • New page Analysis-of-model_fusion-Recommendations filed in response to the user's question "do you agree with the assessment, and what parts would bring the greatest value?" after the same-day refresh of Lessons-Learned-From-model_fusion.
  • Verdict: largely agree with the field report's diagnostic frame. Endorses the high-value cluster (#1 SessionStart auto-load, #4 analysis/decision page types, #8 Claude-memory vs wiki boundary, #9(b) reciprocal-edge enforcement). Pushes back on #10 (project-typed SCHEMA risks variant proliferation per Governance), #6 (compounding ratio belongs in lint over the KG, not a hook), #11 (CLAUDE.md re-injection overlaps with auto-compact), and #2 (UserPromptSubmit synthesis hook has false-positive risk).
  • Dogfood note. Filed with type: analysis, which is not in the SCHEMA's declared type list. This is the point: recommendation #4 in the field report argues for adding analysis and decision types precisely because pages like this have nowhere clean to land. The page is empirical evidence for the recommendation it endorses. SCHEMA violation acknowledged in the page body. When #4 ships, the violation closes itself.
  • Index updated under Applied examples (immediately after the field report entry). Field report's See-also section gains a back-reference to this analysis.
  • Verification gate: index updated, log entry being appended (this one), bidirectional links (Lessons-Learned-From-model_fusion ↔ Analysis-of-model_fusion-Recommendations) in place, frontmatter present (the violation is the type, not the structure).

[2026-06-12] lint | Home sync — add model_fusion pages, refresh KG status

  • by: Chris Sweet via claude-code
  • Lint pass after PR #32 opened (Home category-nav convention). Health overall: very clean — no orphans, no dead links, no missing frontmatter, no index gaps. Two drifts found on Home_llm-wiki-memory-template, both from earlier-today ingests/lint that didn't update Home.
  • Stale claim: Home line 29 said Knowledge-Graph-Pipeline is "designed, not yet implemented" — the morning's KG aspirational → implemented correction (commit 6cd8197) updated 9 pages but missed Home. Refreshed to match the form on Index ("PR #14: scripts/kg/, rdflib + pyshacl in-process; SPARQL over wiki frontmatter, optional Fuseki").
  • Missing entries: Lessons-Learned-From-model_fusion and Analysis-of-model_fusion-Recommendations were both filed earlier today and added to Index's Applied examples; Home was not. Both qualify as representative-link material per PR #32's category-level rule. Added under Applied examples on Home with one-line descriptions matching Index.
  • Dogfood: this is the first lint pass under PR #32's convention (even though #32 itself has not yet merged). The fix-pattern — Home updated alongside Index when significant category-level changes land — is exactly what the new Verification Gate criterion will enforce mechanically once #32 lands.
  • Carry-forward debts unchanged: tutor-demo staleness, prompt-injection page's permission claims, Governance's tutor-template citation.
  • Verification gate: index unchanged (entries already present, this is a Home sync), log entry being appended (this one), Wiki-Corrections-Log entry added under today's date.

[2026-06-12] ingest | Analysis-of-Wiki-Push-Race-Pattern — empirical motivation for wiring Multi-Agent-Write-Protocol

  • by: Chris Sweet via claude-code
  • New page Analysis-of-Wiki-Push-Race-Pattern filed in response to a 2026-06-12 production collision in wiki/web_forager.wiki/. The web_forager derived project has 3-4 human+agent teams writing concurrently; Csweet1's push was rejected after Omegaice advanced remote by 20 commits in the interim; recovery required ~3 minutes of manual rebase (conflict on log_web_forager.md from same-date entries).
  • Verdict: the Multi-Agent-Write-Protocol prototype at scripts/multi-agent-write-protocol-proto/ (shipped PR #11, 9/9 CI scenarios green) handles exactly this collision shape automatically via wiki_push's mechanical union-merge for log_* files. Currently nothing in the agent overlay sources protocol.sh; the only callers are the 9 CI scenarios. The proto is implemented but not wired.
  • Reclassification: Multi-Agent-Write-Protocol's banner rewritten from "design + prototype only" to "design + prototype shipped, production wiring is the gap." Implementation-Status's row updated to name the wiring as the specific gap, not the design.
  • Second type: analysis page filed (after Analysis-of-model_fusion-Recommendations); both acknowledge the SCHEMA violation PR #29 will close.
  • Cross-references: Multi-Agent-Write-Protocol gains See-also entry to this page; Analysis-of-model_fusion-Recommendations and Lesson-Validation-Methodology gain back-refs as sister/related pages.
  • Index updated under Applied examples (immediately after Analysis-of-model_fusion-Recommendations). Home updated per PR #32's category-level rule: the page is significant enough to merit a Home representative-link slot.
  • Memory side: saved project-web-forager-wiki-multi-writer and feedback-wiki-write-default-multi-writer to personal Claude memory (per-user, not wiki pages) so future sessions default to "multi-writer matters now" for any llm-wiki-template-derived wiki.
  • Follow-up: PR6 (deferred to a separate planning round) will wire agent_session_start and wiki_push into the agent overlay's actual write path, rename the proto directory, and add the pre-push hook.
  • Verification gate: index updated, log entry being appended (this one), Wiki-Corrections-Log entry added, bidirectional links in place, frontmatter present (type: analysis acknowledged as PR #29 dogfood).

[2026-06-13] lint | Reconcile classifications after cluster + PR6 land

  • by: Chris Sweet via claude-code
  • Reconciliation pass after the model_fusion-cluster PRs (#28-#32) merged on 2026-06-12 and PR6 (#33, wiki-write-protocol rename) opened with CI green on 2026-06-13. Several classifications in Implementation-Status, Multi-Agent-Write-Protocol, and Limitation-Inverse-Edges-Missing were still in their pre-merge form. Brought them to current state.
  • Implementation-Status: five new Implemented rows for PRs #28-#32 (Memory boundary, analysis+decision page types, SessionStart auto-load, inverse-edge vocabulary, Home category-nav). Each names the specific files that landed and the Analysis-of-model_fusion-Recommendations recommendation it closes. The Aspirational Multi-Agent-Write-Protocol row split into three: production wiring (PR7, planned), inverse-edge upstream SHACL spec (deferred), inverse-edge PostToolUse write-time check (deferred). New In-review row for PR #33.
  • Multi-Agent-Write-Protocol banner: appended a 2026-06-13 line citing PR #33 and the PR6/PR7 housekeeping-then-wiring split.
  • Limitation-Inverse-Edges-Missing: substantively rewritten. Title now "(Partially Closed)". Proposed-fix table updated from the original snake-case proposal (extended-by:) to the camelCase form that actually shipped (extendedBy) and matches Edge-Types.md.template. New "What remains" section names the upstream SHACL gap and the optional PostToolUse check.
  • Wiki-Corrections-Log: receipt entry appended for today's reconciliation.
  • Three carry-forward debts unchanged: tutor-demo staleness, prompt-injection page's permission claims, Governance's tutor-template citation.
  • Verification gate: index unchanged (no new pages), log entry being appended (this one), Wiki-Corrections-Log entry added under 2026-06-13, bidirectional links unchanged (the rewrite affects existing pages, no new outbound edges), frontmatter unchanged.

[2026-06-13] ingest | Lesson-Template-Contribution-Discipline — promote local lessons to wiki memory

  • by: Chris Sweet via claude-code
  • New page Lesson-Template-Contribution-Discipline filed in response to user observation: lessons learned during template development should live in wiki memory rather than per-user local Claude memory, so they travel with the repo on a fresh clone (via --dev-self per PR #25) instead of evaporating with the local checkout.
  • Captures four rationalizations and their empirical incidents: (1) defaulting to single-writer when web_forager proved multi-writer empirically; (2) introducing speculative "Option C" integrations the user did not propose (MCP overreach in PR7's first draft); (3) hardcoding speculative PR numbers in code comments (PR #28's stale #26 references that Priscila cleaned up in e48f7d4); (4) adding structural assertions that lock historical state rather than catching behaviour regressions (PR6's three rename-locking assertions).
  • Style matches existing Lesson-* pages: synthesis type, empirical-motivation framing, each pattern has a named PR/incident citation. Cross-references Discipline-Gates (sister concept at the wiki-write layer rather than the contribution layer), Lesson-Parallel-File-Drift, Lesson-Validation-Methodology, Analysis-of-Wiki-Push-Race-Pattern, Multi-Agent-Write-Protocol.
  • Discipline-Gates See-also gains a back-reference to this new page so readers find both layers.
  • Index updated under Lessons learned (immediately after Lesson-Validation-Methodology).
  • After this lands, the four corresponding entries in personal Claude memory (feedback_wiki_write_default_multi_writer.md, feedback_pr_scope_stays_in_discussed_bounds.md, feedback_dont_hardcode_speculative_pr_numbers.md, feedback_test_assertions_test_behavior_not_state.md) can be deleted — the lessons now live where they survive a clean pull.
  • Verification gate: index updated, log entry being appended (this one), bidirectional links in place (Discipline-Gates ↔ Lesson-Template-Contribution-Discipline), frontmatter present.

[2026-06-13] lint | Fix dead wikilinks to personal-memory paths + sync Home with new Lesson page

  • by: Chris Sweet via claude-code
  • Two findings from a routine lint after the Lesson-Template-Contribution-Discipline ingest. Health otherwise clean: no orphans, no other dead links, no missing frontmatter, no index gaps.
  • Dead wikilinks (log file): yesterday's log entry for the model_fusion analysis ingest used [[project-web-forager-wiki-multi-writer]] and [[feedback-wiki-write-default-multi-writer]] syntax to reference personal Claude memory file names. They are not wiki pages; the wikilink syntax was an error that tripped the lint pass. Replaced with backticked plain text plus an explanatory note that these are per-user personal memory, not wiki pages.
  • Home missing the new Lesson page: Lesson-Template-Contribution-Discipline was filed earlier today and added to Index but not to Home. Per PR #32's category-level rule, a new Lesson page joining an existing category (3 prior Lesson-* pages) warrants a Home representative-link slot. Added under Lessons learned, fourth entry.
  • Verification gate: index unchanged (the new page was already added in the prior ingest), log entry being appended (this one), bidirectional links unchanged, frontmatter unchanged.

[2026-06-18] ingest | Lesson-Gitignore-Anchor-Propagation — .gitignore anchors travel with the file

  • by: Chris Sweet via claude-code
  • New page Lesson-Gitignore-Anchor-Propagation filed in response to an external bug report (2026-06-18) from a contributor syncing AI-Sci-Disc-Mem up to template HEAD 80e2ee6. The template's .gitignore shipped a dev-self block with leading-slash entries (/CLAUDE.md, /.claude/settings.json, /.claude/hooks/, /wiki/llm-wiki-memory-template.wiki/). Because .gitignore is in Sync-Flow's ALWAYS_FILES, update-from-template.sh copied it verbatim into every derived repo, where the anchors then matched the derived project's own paths.
  • Mostly latent (tracked files are unaffected by .gitignore), but bites three cases: projects that legitimately track .claude/hooks/, paths untracked at the moment of sync, and the general confusion of git check-ignore CLAUDE.md reporting "ignored" with no obvious cause. Block also silently re-introduced itself on every future update-from-template.sh run.
  • Fix PR #39: moved the dev-self entries out of the tracked .gitignore into .git/info/exclude, written idempotently by scripts/instantiate.sh --dev-self with BEGIN/END markers. Derived repos auto-heal on the next sync (new template .gitignore no longer has the block, hash differs, script overwrites local copy).
  • Root cause classified as "scope-sensitive content shipped through a scope-preserving channel" — cousin of Lesson-Parallel-File-Drift (same content in two files) but distinct (same file in two scopes). Page draws the contrast explicitly and proposes a pattern-recognition question for future PRs: does the path I am ignoring exist in every clone? If no, the entry does not belong in the tracked file.
  • Cross-references added bidirectionally: See-also entries on Sync-Flow, Lesson-Parallel-File-Drift, and Lesson-Template-Contribution-Discipline. Frontmatter uses criticizes: "[[Sync-Flow]]" (the contract that made the leak real) and related: "[[Lesson-Parallel-File-Drift]]" (the sister footgun).
  • Home and Index updated under "Lessons learned" — fifth Lesson-* page, joins an existing category that already has Home representation per PR #32's category-level rule.
  • Verification gate: index updated, log entry being appended (this one), bidirectional links in place across four pages, frontmatter present and non-untyped, no numerical claims to scope, honest reporting (the bug report's three "bite cases" are reproduced verbatim rather than softened).

[2026-06-24] ingest | Adopt-Existing-Repo-Design — synthesized design for additive overlay on existing repos

  • by: Priscila Saboia Moreira via claude-code
  • New page Adopt-Existing-Repo-Design filed to consolidate the design conversation under issue #6 (adopt.sh: let an existing repository adopt llm-wiki-memory). Synthesises three contributions: the original issue body (separate script, non-destructive guarantees, distribution as git clone && ./adopt.sh), and two comments from @hegu-1 on 2026-06-16 and 2026-06-17 that reframed the safety contract.
  • Load-bearing reframe from hegu-1: never-touch should be computed, not enumerated. Invert the model: maintain an allowlist of what adopt is allowed to create, and treat every pre-existing file as host-owned by default. The host writes a grants file (.llm-wiki-adopt-grants.yml) declaring which existing files adopt may touch and under what discipline (managed-block, append-only, merge); adopt reads it but never writes it, because the tool requesting permission cannot mint the permission.
  • Captured concretely in three lists (ADD allowlist owned by the template; TOUCH grants owned by the host; NEVER-TOUCH computed as existing − grants − additions), a worked dry-run report format that classifies every affected path so the refusals are legible, and a reusability table showing most of the machinery already exists from the bash-lib refactor (lw_inject_block, lw_name_from_origin, lw_install_feature, init-wiki.sh create-mode, the overlay setup.sh). New surface is principally the orchestrator, a YAML grants reader, the adoption-log writer, and two small helpers (lw_copy_if_absent, a jq deep-merge in scripts/lib/json.sh).
  • Two-layer test approach proposed: a controlled hermetic fixture at scripts/test/tests/integration/adopt-shape/ exercising every TOUCH/REFUSE class, plus a real-repo --dry-run against a public repository that has not yet adopted. Names crcresearch/FUNSD as a concrete candidate for the second layer (Python + DVC, defaults to main, has its own scripts/ and LICENSE, no wiki). markov_embeddings_and_rag is positioned as a separate kind of test: a repo that adopted manually, useful for catching divergence between the manual adoption practice and the automated one.
  • Three open questions surfaced and left unresolved: the ergonomics of granting CLAUDE.md (default template vs. require hand-authored grants file), forward compatibility of .llm-wiki-adopt-grants.yml when new TOUCH categories appear (REFUSE-unknown is the safer default), and the cheap path to unadopt.sh that the managed-block discipline opens up.
  • Cross-references in frontmatter: derived_from Multi-Agent-Write-Protocol, Agent-Overlays, Implementation-Status; related Knowledge-Graph-Pipeline. Filed under index "Mechanisms" alongside other in-design pages.
  • Verification gate: index updated, log entry being appended (this one), frontmatter present and non-untyped, honest scoping (everything design-stage is labelled as such; no claim that any line of adopt.sh exists yet), no numerical claims to fact-check.

[2026-06-25] lint | Correct test-case framing on Adopt-Existing-Repo-Design (markov_embeddings_and_rag is the prototype, not a manual adoption)

  • by: Priscila Saboia Moreira via claude-code
  • One-paragraph correction to the "Test approach" section of Adopt-Existing-Repo-Design. Original text said markov_embeddings_and_rag was "a repo that has adopted the pattern manually", which misrepresents the history: markov_embeddings_and_rag is the prototype where the llm-wiki-memory pattern was originally explored, and the template was extracted from it and then evolved separately. They share an idea ancestor, not a sync relationship.
  • Found while running the first build of scripts/adopt.sh (stub, ADD-only classification) against markov_embeddings_and_rag as a dry-run test target. The stub reported one REFUSE (wiki/init-wiki.sh, host-modified) and one SKIP (llm-wiki.md, byte-identical). My first interpretation of the REFUSE ("local customisation, or template evolved past the host") missed the actual cause: parallel evolution from a common ancestor, with the template's init-wiki.sh absorbing refinements (F1 fix, shared-lib refactor) that the prototype never received.
  • Corrected framing: running adopt.sh --dry-run against the prototype surfaces divergence between two parallel evolutions of the same idea, not "the prototype matches the template" — neither is canonical for the other. Useful as a drift-spotting test, distinct from the real "host repo adopting the template" case that needs a third repo.
  • No other claim on the page depended on the wrong framing, so the correction is scoped to one paragraph; the rest of the design (three lists, grants model, dry-run report, reusability table) stands unchanged.
  • Verification gate: corrected paragraph isolated to "Test approach"; index unchanged (page still in design); log entry being appended (this one); honest reporting (the misframing is named, not euphemised); no numerical claims.

[2026-06-25] ingest | Add team-ai-Engineering as fourth test-case category on Adopt-Existing-Repo-Design (derived-and-drifted)

  • by: Priscila Saboia Moreira via claude-code
  • One-paragraph addition to the "Test approach" section of Adopt-Existing-Repo-Design. Records team-ai-Engineering as a fourth distinct test case: a repository that was instantiated from the template, but at a moment before later template-side changes landed (the shared bash-lib refactor in particular). Running adopt.sh --dry-run against it surfaces drift in a derived project, ADD for new template files the derived lacks, REFUSE for files the template rewrote since instantiation.
  • Empirical finding from the same dry-run session: against team-ai-Engineering, the stub reported 7 ADDs (the entire scripts/lib/*.sh shared lib, which post-dates the instantiation), 6 SKIPs (llm-wiki.md, the agent gates, the feature-flag entry scripts — files unchanged since instantiation), and 3 REFUSEs (wiki/init-wiki.sh, scripts/update-from-template.sh, scripts/check-template-version.sh — all rewired in the bash-lib refactor to consume scripts/lib/ rather than open-code their logic).
  • Insight worth recording: adopt.sh --dry-run doubles as a derived-project drift detector. Complementary to update-from-template.sh's scoped file sync, which only knows about ALWAYS_FILES; adopt's classification surfaces template changes regardless of whether they sit in the sync list.
  • The four cases now documented on the page (virgin via FUNSD; prototype via markov_embeddings_and_rag; derived-and-drifted via team-ai-Engineering; hermetic fixture as Layer 1) cover the realistic surface adopt.sh has to be honest about. Concluding sentence in the test-approach paragraph names this scope explicitly so future readers know it is intentional, not opportunistic.
  • Verification gate: addition isolated to "Test approach"; index unchanged; log entry being appended (this one); honest scoping (no claim that team-ai-Engineering will receive an actual update from this dry-run, only that the report exists and is informative); no numerical claims requiring fact-check (counts above come from the dry-run output in the session, reproducible by re-running the stub).

[2026-06-25] ingest | Record deferred follow-up on Adopt-Existing-Repo-Design (manifest consolidation with update-from-template)

  • by: Priscila Saboia Moreira via claude-code
  • One-bullet addition to the "Open questions" section of Adopt-Existing-Repo-Design. Captures a concern Priscila raised during the TOUCH-grants iteration of feature/adopt-sh: adopt.sh's ADD_ALLOWLIST and update-from-template.sh's ALWAYS_FILES are parallel arrays for the same conceptual surface ("template-owned files"). They already diverge (the update list includes wiki/agents/README.md, wiki/agents/wiki-write-protocol.md, and the whole scripts/wiki-write-protocol/* tree; adopt's stub list does not). Adding a new template file today requires editing both arrays correctly, or one drifts past the other.
  • Same anti-pattern that PR #42 (James, shared bash lib) consolidated for instantiate.sh, update-from-template.sh, and the overlay setup.sh scripts. Re-introducing it via adopt.sh would undo that discipline.
  • Agreed direction (recorded on the page; not yet implemented): single source of truth in scripts/lib/template-manifest.sh. Two categories: TEMPLATE_SHARED_INFRA (canonical template content; update overwrites, adopt ADDs without overwrite) and TEMPLATE_HOST_OWNED (host owns content; update ignores, adopt classifies via grants). Both scripts source the manifest.
  • Deferred to after feature/adopt-sh matures so the current PR stays scoped to "ship adopt's own surface" without bundling a refactor of merged update-from-template.sh semantics. Follow-up should be its own issue + PR with explicit review.
  • Verification gate: addition isolated to "Open questions"; no claim that the consolidation has been built; index unchanged; log entry being appended (this one); honest naming of the divergence already present rather than glossed.

[2026-06-25] ingest | OKF-Alignment-Ideas — working analysis of Google's Open Knowledge Format v0.1

  • by: Chris Sweet via claude-code
  • New page OKF-Alignment-Ideas (type: analysis, third in the wiki) filed in response to the user's question whether Google's OKF v0.1 spec is useful for this template. Read the actual spec (451 lines), not just the blog post.
  • Earlier review of just the blog post had two material errors I corrected on re-reading: (1) OKF DOES define a log.md convention at §7 (newest-first, ISO date headings, bold-prefix prose entries); my first comparison said "no log convention." (2) OKF's untyped edges are a deliberate design choice at §5.3 ("relationship is conveyed by the surrounding prose, not by the link itself"), not an omission. Both corrections are surfaced in the analysis page so future sessions don't repeat the blog-only mistake.
  • Empirical GitHub Wiki link-rendering test (commits 7c79ef2 push + 3b9b603 revert): pushed a temporary OKF-Link-Test.md with five link forms and a non-namespaced log.md, scraped rendered HTML via curl, removed both. Results: only [[wikilink]] form gets GitHub Wiki's class="internal present" existence-check marker; OKF's recommended [name](/path/file.md) form is inherently broken (leading slash routes to github.com root not /wiki/, .md suffix routes to raw.githubusercontent.com not rendered HTML); log.md renders correctly at /wiki/log so the namespacing was never a GitHub Wiki requirement (the user confirmed it was for Obsidian-vault aggregation).
  • Analysis covers three vectors: (1) frontmatter additions description, resource, okf_version: "0.1" are free wins; (2) reserved filenames have three options of which "drop namespacing + move Obsidian aggregation from flat-vault to subdirectory-per-wiki" is recommended; (3) cross-link syntax options of which "migrate body links to [[wikilinks]]" is recommended (works in both GitHub Wiki AND Obsidian, gets ~80% of OKF compatibility without a transform). Defers: OKF export script unless external exchange becomes a real ask; upstream typed-edge proposal unless OKF gets adoption traction. Rejects: flipping log direction; dropping verification gate / write protocol / KG; abandoning GitHub Wiki.
  • Cross-references added bidirectionally (5 back-refs): See-also entries on Typed-Edges-and-Frontmatter, Wiki-LLM-Pattern, Sync-Flow, Knowledge-Graph-Pipeline, Lesson-Parallel-File-Drift. Filing meta-note: the page is type: analysis per the post-PR #28 page-type vocabulary; no back-ref on SCHEMA itself since SCHEMA is the meta-target the analysis proposes amending, not a peer.
  • Home and Index updated under Applied examples (the conventional landing for type: analysis pages in this wiki, alongside the two prior analysis pages).
  • Open follow-ups noted on the page: confirm Obsidian-vault migration acceptability with user; test GitHub Wiki [[Page-Name|Display]] piped form; inventory cross-links before any syntax migration; choose where the OKF compatibility statement lives (SCHEMA subsection vs llm-wiki.md vs dedicated OKF-Compatibility.md).
  • Verification gate: index updated, log entry being appended (this one), bidirectional links in place across five target pages, frontmatter present and non-untyped (analysis type with derived_from: field per the post-PR #28 convention), no numerical claims to scope (all citations of file counts and percentages are qualitative), honest reporting (the two blog-only errors are named as my errors rather than softened).

[2026-06-25] update | OKF-Alignment-Ideas vector 4 — adopt.sh + OKF-bundle import

  • by: Chris Sweet via claude-code
  • Extended OKF-Alignment-Ideas with a fourth vector covering the import direction (external OKF bundle → our wiki) after the user flagged that Priscila's in-progress scripts/adopt.sh (design at Adopt-Existing-Repo-Design) will support adopting OKF memory bundles as initial wiki content. Earlier draft covered only compatibility (us as producer) and export (us → OKF); the import direction was missing.
  • Vector 4 names why this strengthens earlier recommendations: reserved-filename alignment (vector 2) becomes load-bearing rather than cosmetic because OKF bundles arrive with index.md/log.md at canonical paths; cross-link syntax migration (vector 3) loses its remaining alternative because OKF's [name](/path/file.md) form is empirically broken in GitHub Wiki rendering and [[wikilink]] is the only viable normalisation target; frontmatter superset (vector 1) earns its keep because imported OKF concepts arrive with exactly the six reserved fields the superset adopts.
  • Sketches a plausible adopt.sh --seed-from-okf=<bundle-path> flow: validate per OKF §9 conformance, copy into the wiki sub-repo, rewrite body cross-links mechanically, opt-in frontmatter back-fill from cross-link inference with type: untyped fallback, and a wiki-corrections-log entry documenting the rewrite. Explicitly names what this does NOT justify: coupling source-of-truth to OKF wire format, standing reverse export, or bypassing the adoption manifest.
  • One new conclusion item ("vector 4 strengthens vectors 2 and 3"). Three new open follow-ups: link-syntax translation target on import (full path vs basename), frontmatter back-fill inference policy (lossy vs conservative), citation reconciliation across OKF's # Citations body section vs our source: frontmatter edge.
  • Cross-references added bidirectionally: frontmatter related: edge from OKF-Alignment-Ideas to Adopt-Existing-Repo-Design, See-also entries on both pages. Added adopt-sh tag to OKF-Alignment-Ideas frontmatter.
  • Verification gate: index unchanged (no new pages, vector 4 added to existing page), log entry being appended (this one), bidirectional links in place across Adopt-Existing-Repo-Design ↔ OKF-Alignment-Ideas, frontmatter still non-untyped, no numerical claims to scope, honest reporting (the "vector 4 was missing from the first draft" framing is named as a gap rather than backfilled silently).

[2026-06-25] update | OKF-Alignment-Ideas vector 5 — ask.sh + OKF-bundle query

  • by: Chris Sweet via claude-code
  • Extended OKF-Alignment-Ideas with a fifth vector after the user pointed at the agent-comms feature (PR #44) and its scripts/agent-comms/ask.sh clone-and-invoke primitive. Vector 5 generalises the federation pattern (discover → clone → claude -p) from "template-derived peers only" to "any cloneable OKF bundle that declares itself via okf_version: "0.1" in its root index.md."
  • The vector names two small affordances needed: (1) the federation index rebuild Action projects synthetic Cards from OKF bundle root frontmatter (provenance: "okf" to distinguish from Card_<repo>.md-authored entries); (2) optional OKF-aware preamble injection in ask.sh for query targets that declare okf_version (the LLM has no CLAUDE.md or SCHEMA when cd'd into a pure OKF bundle, only the bundle's own files).
  • Imports vs queries are now framed explicitly as complementary directions, not alternatives: vector 4 (adopt.sh --seed-from-okf) is "absorb the bundle's knowledge once and evolve from there"; vector 5 (ask.sh against an OKF bundle) is "read but don't absorb, cache the clone not the answers." A repo can do both: seed from one OKF bundle and federate against many others.
  • New conclusion paragraph: vector 5 widens federation reach by a few lines of rebuild-Action code, unlocking query against the entire OKF ecosystem once vector 1's frontmatter superset is in place.
  • Two new open follow-ups: federation index projection rules for pure OKF bundles (likely same nd-llm-wiki topic + trusted-owner allowlist already used for cross-org agent discovery), and the OKF-aware preamble for ask.sh.
  • Added agent-comms to the page's frontmatter tags. Two new external See-also entries pointing at the agent-comms wiki (Comms-Feature-Design and Agent-Federation-Pattern); cross-wiki refs go via full URL because GitHub Wiki and Obsidian wikilinks don't resolve across wikis. Back-references in the agent-comms wiki are deliberately not added by this update; that's a separate write to a separate repo and warrants explicit ask before reaching across.
  • Verification gate: index unchanged (no new pages, vector 5 added to existing page), log entry being appended (this one), bidirectional links in place within this wiki, cross-wiki refs documented as one-direction, frontmatter still non-untyped, no numerical claims to scope, honest reporting (the cross-wiki back-ref gap is named not silently dropped).

[2026-06-25] ingest | Record advisory-abort redesign and bash 3.2 hazard from feature/adopt-sh

  • by: Priscila Saboia Moreira via claude-code
  • Two changes file what was learned during the Tier-1 fixture pass on feature/adopt-sh (2026-06-25, branch HEAD 57457db).
  • (1) Added a "Decision: advisory abort when host is already adopted" section to Adopt-Existing-Repo-Design. Records the composite detector (Signal A: llm-wiki.md byte-identical to template; Signal B: wiki/agents/discipline-gates.md byte-identical; Signal C: wiki/init-wiki.sh present), the 2-of-3 threshold and why it sits there (one is too weak; three is too strict, the team-ai-Engineering case has Signal B drifted), the --force escape hatch, and the empirical classifications observed against the six real repos available locally on 2026-06-25 (FUNSD 0/3 virgin; team-ai-Engineering 3/3 advisory abort; markov_embeddings_and_rag 2/3 advisory abort; pad-analytics-workshop, pad-ml-pipeline, tai_ner 0/3 virgin). All four "already adopted" classifications are correct; the detector protects them from invoking their drifted overlays.
  • (2) New page Lesson-Bash32-Empty-Array-Hazard. Records the macOS bash 3.2 + set -u bug where "${arr[@]}" of a never-pushed empty declared array fires unbound variable, the asymmetric TOUCH_MISSING fixture that surfaced it, the bash -x trace from Priscila's macOS shell that pinpointed the exact line (scripts/adopt.sh:434), the single-site fix (commit 57457db), and the audit of the other five set -euo pipefail scripts in the codebase that confirmed every other "${arr[@]}" expansion was already guarded. The lesson also names the meta-point: the bug had been latent in the GRANT WARNINGS block since the start of feature/adopt-sh; only the new fixture's asymmetric-empty grant shape on macOS CI reached the buggy line.
  • End-to-end verification on macOS bash 3.2.57: virgin host scratch clone, .llm-wiki-adopt-grants.yml granting .claude/settings.json: merge on an absent target. Post-fix: RC=0, GRANT WARNINGS emitted naming .claude/settings.json, manifest written, .claude/ not silently created. The exact failure mode observed pre-fix is gone.
  • Cross-references in frontmatter: new Lesson page criticizes: Adopt-Existing-Repo-Design; both linked from index under "Lessons" with one-line hooks.
  • Verification gate: index updated, log entry being appended (this one); no projection-as-fact (all classifications above came from actual dry-run output on 2026-06-25, all assertions from real test runs); commit 57457db and CI run 28204993130 are concrete references reproducible by git show / gh run view; no numerical claim that depends on a hypothetical future run.

[2026-06-25] lint | Expand Adopt-Existing-Repo-Design empirical table from 6 repos to 10 (verified, not projected)

  • by: Priscila Saboia Moreira via claude-code
  • The empirical-classifications table on Adopt-Existing-Repo-Design's advisory-abort section initially listed six repos. Priscila pushed on the discipline check: had I actually run dry-run against everything I claimed? Audit revealed three gaps.
  • (1) FUNSD was listed as 0/3 virgin but never run this session; the line was inherited from the design doc's original test-approach paragraph. Cloned crcresearch/FUNSD into scratch, ran dry-run, confirmed 0/3 with 21 ADDs. Now real, not projected.
  • (2) Three locally-checked-out repos had been skipped: CSE-60868 (0/3 virgin, 21 ADDs), llm-wiki-branch-test (3/3 derived with 7 host-modified REFUSEs, advisory abort), and the template itself llm-wiki-memory-template (rejected with "target is the template itself" -- explicit self-target guard before the classifier runs).
  • (3) Rephrased the table to ten rows total, separated virgin/derived/self-target visually, and added a paragraph naming the two real-shell --apply runs that backed the verified path (Linux pad-analytics-workshop scratch clone; macOS bash 3.2.57 virgin with the asymmetric TOUCH_MISSING grant pattern). The table now states only outcomes observed in real script output, not design-doc projections.
  • Also tightened the Tier-1 fixture adopt-apply-touch-missing-target: dropped one inert assertion that became trivially true after two earlier simplifications (single-grant form no longer references CLAUDE.md, so a "GRANT WARNINGS does NOT list CLAUDE.md" check could not be triggered by any mutation). Re-drove three independent mutations on the post-simplification fixture; remaining 7 assertions all discriminate. Committed as 7f3f3d6.
  • Verification gate: every classification cell now references a dry-run output reproducible by re-running bash scripts/adopt.sh --target=<repo> against the named host; the test-suite refinement is reproducible by bash scripts/test/run.sh adopt-apply-touch-missing-target; no projection-as-fact; log entry being appended (this one).

[2026-06-25] update | OKF-Alignment-Ideas typed-edges posture (c) — companion spec option

  • by: Chris Sweet via claude-code
  • Extended the typed-edges entry in OKF-Alignment-Ideas's "Other deltas" section to add a third posture (c): repackage Edge-Types.md as a self-contained "OKF Typed Edges Extension v0.1" that any OKF tool can opt into without OKF v0.1 changes. Mirrors how RDFa, microdata, and Schema.org evolved as layered extensions on top of HTML.
  • Prior draft had only (a) documented local extension and (b) upstream proposal. Posture (c) names the artifact path: a spec document built on the existing Edge-Types content, the KG pipeline's existing SHACL shapes file as the machine-checkable form, plus a small conformance section covering inverse-edge materialisation. Reframes (b) as a downstream move that follows (c) once the companion spec has receipts, rather than as a parallel option.
  • Also strengthened the ontology framing: the entry now names the full vocabulary (forward predicates, inverses from PR #29, page-type vocabulary) and points at wiki/Edge-Types.md.template as the de-facto companion spec we just don't currently label as one.
  • No new cross-references, no new follow-ups, no Home/Index changes; this is an expansion of an existing bullet, not a new section.
  • Verification gate: index unchanged, log entry being appended (this one), bidirectional links unchanged, frontmatter unchanged, no numerical claims to scope, honest reporting (posture (c) is named as new thinking, not retroactively framed as obvious).

[2026-06-25] lint | Reconcile Adopt-Existing-Repo-Design with feature/adopt-sh implementation (5 drifts corrected)

  • by: Priscila Saboia Moreira via claude-code
  • Priscila pushed a verification challenge: did the wiki page actually match what feature/adopt-sh shipped? Audit against scripts/adopt.sh and the dry-run output found five drifts. Four corrected on the wiki page, one corrected in the code.
  • (1) ADD allowlist: page listed six categories with ~30 paths including scripts/wiki-write-protocol/, .claude/commands/wiki-*.md, .claude/skills/wiki-*/, and features/. Real ADD_ALLOWLIST array in adopt.sh has 21 entries; none of those four design-sketch paths made it in. Rewrote the section to list the literal array, grouped into four real categories (pattern root 4, claude-code overlay 5, shared library 8, update machinery 2, feature-flag scripts 2 -- corrects the earlier miscount). Added an explicit "Deferred surface" subsection naming the four paths that were design intent but never landed, so future readers know they were considered, not forgotten.
  • (2) Sentinel lw:wiki-section for CLAUDE.md managed-block: this sentinel does not exist anywhere in the codebase. The actual overlay setup.sh injects TWO separate sentinel-paired blocks: lw:memory-boundary and lw:wiki-maintenance. Both wiki sections that referenced lw:wiki-section (the grant-types description and the dry-run TOUCH example) updated to name the real sentinels and to acknowledge that managed-block delegates entirely to the overlay (adopt does not own those sentinel names).
  • (3) The dry-run report example: page showed a five-section format (ADD/TOUCH/REFUSE/SKIP, header Resolved: <owner>/<repo>). Real output has six sections in fixed order (ADD/SKIP/REFUSE/TOUCH/GRANT WARNINGS/NOT IMPLEMENTED YET), a banner line adopt.sh --dry-run, six header lines (Target:, Resolved:, Template:, Agent overlay:, Features:, Grants file:), and the Resolved: line shows the basename only (the <owner>/ prefix is stripped by lw_name_from_origin). Replaced the example with a verbatim shape from the real script.
  • (4) Adoption manifest fields: page claimed the manifest pins "template version pinned"; it does not. Real manifest entry fields: project name, agent, signals matched (with names), overlay(s) detected, ADD list, SKIP/REFUSE counts, init-wiki status, overlay setup status, TOUCH applied list with per-entry status. Replaced the prose summary with a verbatim manifest entry and an explicit "does NOT pin a template version (no SHA, no tag); future iteration could add" line.
  • (5) --agent=cursor errors with "not yet supported": confirmed correct (real output: error: agent 'cursor' is not yet supported (see issue #6, deferred)). No change.
  • Code change: scripts/adopt.sh known_grant_sentinel("CLAUDE.md") returned the fictional lw:wiki-section; changed to return empty string so the dry-run drops the misleading parenthetical. Display becomes ~ CLAUDE.md managed-block instead of ~ CLAUDE.md managed-block (sentinel lw:wiki-section). Full local suite 625 pass / 30 fail (the 30 are pre-existing SCHEMA failures untouched). CI green at HEAD 829ba64 on Linux + macOS. Committed as 829ba64.
  • Verification gate: every claim on the page now references a literal source (array name in adopt.sh, real dry-run output, real manifest entry); no projection-as-fact; index unchanged (no new pages); log entry being appended (this one). The audit was driven by the discipline check ("does the wiki actually match the code?") -- the kind of question that should run before, not after, a PR opens.

[2026-06-26] ingest | Knowledge-Bundles-Framing — paper-brief synthesis for the llm-wiki-paper agent

  • by: Chris Sweet via claude-code
  • New page Knowledge-Bundles-Framing (type: synthesis) filed in response to user request: "generate a document that, assuming we resolve the OKF alignment, describes our agentic approach through the lens of knowledge bundles." Suitable for handoff to the agent writing the llm-wiki-paper (at /Users/csweet1/Documents/projects/TCF/llm-wiki-paper/wiki/llm-wiki-paper.wiki/).
  • The brief uses OKF v0.1's terminology as the formalisation anchor (knowledge bundle = directory of markdown + frontmatter, distributed as git/tarball; concept = one .md file; cross-link = [[wikilink]]) and names the template's contribution as the discipline layer on top of the bundle format: typed-edge ontology (companion-spec posture (c) per OKF-Alignment-Ideas), verification gate, multi-writer write protocol, KG with SHACL shapes, federation primitive (ask.sh). Frames the agent as the primary maintainer; the human curates direction.
  • Sections: TL;DR; Terminology (OKF-anchored, 8 rows mapping bundle concepts to our usage); The agentic stance (role split + three Karpathy observations the template operationalises); Bundle lifecycle (5 ops: Create / Adopt / Maintain / Federate / Compose); Where we extend OKF (5-row table of layer → extension → substrate page); Cross-cutting properties (compounding, portable, auditable, multi-agent safe, federable, interoperable); Honest limits (not a query engine, not a runtime, not multi-machine real-time, aspirational pieces named); Naming/positioning for the paper (vocabulary to use and to avoid); Current implementation status (table of shipped vs forward as of 2026-06-26).
  • Cross-references added bidirectionally to nine pages: Wiki-LLM-Pattern, OKF-Alignment-Ideas, Three-Operations, Typed-Edges-and-Frontmatter, Adopt-Existing-Repo-Design, Multi-Agent-Write-Protocol, Verification-Gate, Knowledge-Graph-Pipeline, Sync-Flow.
  • Home and Index updated under Applied examples (the conventional landing for synthesis-of-the-system pages); also referenced from the paper's reading order list at the foot of the brief.
  • Note on the paper-wiki side: I did NOT write into /Users/csweet1/Documents/projects/TCF/llm-wiki-paper/wiki/llm-wiki-paper.wiki/ even though the user pointed at it. That is a separate-repo commit decision and the paper has its own thesis (failure-path preservation as the load-bearing finding, three-axis architecture as the conceptual framing) which doesn't currently use the knowledge-bundle vocabulary. Surfacing the option (drop a reference page in the paper wiki, copy the brief verbatim, or just give the URL) to the user for explicit decision rather than reaching across without ask, per Lesson-Template-Contribution-Discipline.
  • Verification gate: index updated, log entry being appended (this one), bidirectional links in place across nine target pages, frontmatter present and non-untyped (synthesis type with derived_from: and related: lists), no numerical claims to scope, honest reporting (the "current implementation status" footer separates shipped from forward explicitly so the paper agent can attribute correctly).

[2026-06-27] lint | Re-sync Adopt-Existing-Repo-Design with PR #51 review fixes; add FHI360_Lite end-to-end

  • by: Priscila Saboia Moreira via claude-code
  • After Chris Sweet's end-to-end review found 5 gaps in PR #51 (issues #52/#53/#54 plus the in-PR design-change), the page describing adopt's surface was again out of step with the code. Re-synced four sections after Priscila's audit pass.
  • (1) ADD allowlist: count is now 27 (was 21). Added the "CLAUDE-CODE SLASH COMMANDS + SKILLS (6)" sub-block listing the six paths landed by PR #51 item #2 (.claude/commands/wiki-{experiment,source,lint}.md + .claude/skills/wiki-{experiment,source,lint}.md). Removed those paths from the "Deferred surface" list since they are no longer deferred. Added an "Apply-time honesty" paragraph naming the FAILED_ADDS block from PR #51 item #1.
  • (2) TOUCH grants section: added a paragraph stating that absent targets are no longer moot, they create from canonical (PR #51 items 3, 4, 5). Names the per-type apply paths (append-only writes the sentinel-wrapped payload into a fresh file; managed-block lets init-wiki seed then overlay setup patches; merge lets setup.sh --hook create the file).
  • (3) Dry-run report example: replaced with a verbatim shape from a real virgin run where all three grants target absent files. Shows the new [absent; will create from canonical] marker on TOUCH rows. GRANT WARNINGS now only contains TOUCH_INVALID (the prior ? .claude/settings.json (... is moot) line is gone). Rewrote the prose explaining the section semantics.
  • (4) Adoption manifest example: replaced the 21-file entry with a 27-file one, all three TOUCH applied entries now use the new "created from canonical" status strings, added a "TOUCH status vocabulary" paragraph enumerating: applied, already-present, created from canonical, created from canonical and patched via ..., skipped, failed. Added a note on the new ADD FAILED block placement.
  • (5) Empirical table: added chrissweet/FHI360_Lite as the host where Chris ran the original PR #51 review (verified by clone-and-test 2026-06-27). Updated ADD count from 21 to 27. Re-validated the 10 prior entries against HEAD 8c3a579 (all classifications unchanged). Added "Test A" and "Test B" end-to-end FHI360_Lite results to the apply-coverage paragraph: Test A (all three absent) reproduces the original Chris report and all three grants now created from canonical; Test B (all three pre-authored) shows host prose preserved and merged content added.
  • Verification gate: every cell and every status string in the new examples comes from a literal run (logged in this session's terminal output 2026-06-27 against HEAD 8c3a579); no projection-as-fact; index unchanged (no new pages); log entry being appended (this one). The audit was again driven by the discipline check ("did the wiki actually match the code after the new fixes?").

[2026-06-27] verify | macOS bash 3.2.57 end-to-end against FHI360_Lite (PR #51 review-resolution)

  • by: Priscila Saboia Moreira via claude-code
  • Ran the same Test A + Test B FHI360_Lite shape Chris used to write PR #51's review report, this time on Priscila's macOS bash 3.2.57 against feature/adopt-sh HEAD 8c3a579. All 17 verification points passed; PR #51 is now confirmed across both OSes for both halves of the absent/present dispatch matrix.
  • Test A (virgin clone of chrissweet/FHI360_Lite, all three grants on absent targets): dry-run TOUCH section marks all three rows with [absent; will create from canonical]; --apply returns RC=0; manifest reports 27 ADDs with no ADD FAILED block; TOUCH applied lists all three as created from canonical (...and patched via setup.sh for CLAUDE.md, plain created from canonical for .gitignore, created from canonical via setup.sh --hook for settings.json); on-disk verification confirms CLAUDE.md has the four memory-boundary + wiki-maintenance sentinels, .gitignore has the wiki/*.wiki/ rule, .claude/settings.json contains the SessionStart hook entry, and the three slash commands plus the three skills landed at .claude/commands/wiki-*.md + .claude/skills/wiki-*.md (PR #51 item #2 verified on macOS).
  • Test B (FHI360_Lite clone with host-authored CLAUDE.md / .gitignore / .claude/settings.json, all three pre-existing): RC=0; manifest reports the three grants as applied (not created from canonical, correct distinction); host's # FHI360 Lite (host-authored) title preserved, alongside the four overlay sentinels added; host's *.npz and *.pyc rules preserved in .gitignore, alongside the wiki rule; host's theme: host and permissions.allow.Bash preserved in settings.json, alongside the merged SessionStart hook. The "modify safely" path is host-content-preserving in practice.
  • Coverage closed: items #1, #2, #3+4+5 of Chris's PR #51 review all confirmed end-to-end against real hosts on both Linux (commit-time on 2026-06-25 / 2026-06-27) and macOS bash 3.2.57 (2026-06-27). Follow-ups issued separately: #52 (PostToolUse hook install), #53 (--features silently ignored warning), #54 (init-wiki/overlay stderr diagnosis suppression).
  • Verification gate: every status string and every count above came from a literal run on Priscila's macOS; no projection; log entry being appended (this one); index unchanged; honest reporting (none of the seven Test B preservation checks were softened; if any host content had been lost it would have been named explicitly, not glossed).

[2026-06-27] verify | macOS bash 3.2.57 exercises PR #51 item #1 cp-failure path against FHI360_Lite (Test C)

  • by: Priscila Saboia Moreira via claude-code
  • Closes the last remaining audit gap on PR #51's review-resolution: item #1 (FAILED_ADDS capture) had been covered by a synthetic fixture and by macOS CI, but the actual cp-failure code path had not been exercised against the real host Chris used for his original review. Test C, run on Priscila's macOS bash 3.2.57 against feature/adopt-sh HEAD 8c3a579, fills that gap.
  • Test C setup: fresh clone of chrissweet/FHI360_Lite, then pre-create scripts/lib and wiki/agents/claude-code as regular files (not directories) so cp -p / mkdir -p cannot land any ADD entries underneath them. Five paths block under wiki/agents/claude-code/ (the overlay setup + 4 templates) and eight under scripts/lib/ (the shared library) -- 13 total.
  • Result: adopt returns RC=0 (failures are captured, not fatal); summary stdout reports Applied: 14 file(s) created, 13 FAILED in ... (27 ADD entries split correctly: 14 succeeded above the blockers, 13 failed under them); manifest contains the dedicated block - ADD FAILED (13 files; cp or mkdir -p returned non-zero): listing exactly those 13 paths; blockers stay as regular files (proves they really blocked); the 13 paths under them remain non-existent on disk; the unblocked llm-wiki.md is created normally. The manifest is honest about what made it to disk and what did not.
  • Item #1 is now confirmed both ways on macOS bash 3.2.57: against a real host with no failures (Test A in the prior FHI360_Lite log entry: ADD FAILED block absent) and against a real host with 13 forced failures (Test C: ADD FAILED block present with exact path list). The wiring works in both directions; the failure path is what Chris specifically reviewed and it is honest under bash 3.2.
  • Together with the prior Test A + Test B runs, all five items of Chris Sweet's PR #51 end-to-end review are now confirmed against real hosts on both Linux and macOS bash 3.2.57: #1 (FAILED_ADDS capture) Test C; #2 (.claude/commands + skills landing) Test A; #3 (dry-run language consistency) Test A dry-run output; #4 (.gitignore created when MISSING) Test A; #5 (.claude/settings.json + hooks created when MISSING) Test A. Follow-ups remain non-blocking: #52, #53, #54.
  • Verification gate: every claim above came from a literal terminal run on 2026-06-27 against HEAD 8c3a579; the awk syntax error reported in the test script's final summary line is a bug in the script (BSD awk does not accept the ternary-with-paren-in-string idiom GNU awk does), not in adopt.sh; the underlying data needed to answer that one missing print line is already in the manifest block above (13 paths in ADD FAILED, 14 paths possible above the blockers in ADDed); log entry being appended (this one); index unchanged.

[2026-06-27] ingest | Record --github-wiki design + empirical sweep on Adopt-Existing-Repo-Design (PR #59)

  • by: Priscila Saboia Moreira via claude-code
  • PR #59 (feature/adopt-github-wiki) ports --github-wiki from instantiate.sh to adopt.sh. Added a new "Decision: --github-wiki flag (added 2026-06-27)" section to Adopt-Existing-Repo-Design recording the design rationale, behavior matrix (six rows covering no-origin, non-github, wiki-already-materialized, seed-push success, 404 failure, and the dispatch-not-requested baseline), inline non-github host check that prevents lw_die from tripping inside command substitution, dry-run preview semantics with read-only probes, and the agent-orthogonality reasoning (github-wiki dispatch is independent of --agent because the wiki is useful regardless of which agent consumes it).
  • Empirical sweep recorded in the section: dry-run preview against 9 real repos (the same set tested for PR #51 and #55). 3 repos report would-skip (wiki already materialized) (FUNSD, team-ai-Engineering, markov_embeddings_and_rag — Chris created or maintains wikis on those), 4 report would-apply (seed-push to <origin>.wiki.git) (pad-analytics-workshop, pad-ml-pipeline, tai_ner, CSE-60868), 2 report would-skip (no origin remote) (p28-behavioral-test, llm-wiki-branch-test). All numbers from real terminal runs against feature/adopt-github-wiki HEAD dadd4c4 on 2026-06-27.
  • End-to-end verification recorded: Linux scratch FUNSD with fake-github origin (404 fallback path: github-wiki failed AND init-wiki applied without --github, adopt exit 0); macOS bash 3.2.57 against chrissweet/FHI360_Lite (three scenarios: no-origin soft-skip, fake-github 404, dry-run preview; 12 of 12 verification points pass).
  • Two new fixtures added in PR #59 review-resolution round: adopt-apply-github-wiki-agent-none (the agent-orthogonality case — github-wiki dispatch runs while overlay setup skips) and adopt-dryrun-github-wiki (the dry-run preview path that no end-to-end test covered before). Mutations drive each fixture's discrimination.
  • Verification gate: every status string and every count above came from real terminal runs documented in this session; no projection-as-fact; index unchanged (no new pages); log entry being appended (this one). The audit was driven by the discipline check ("did we cover all the paths --github-wiki opens?") before marking PR #59 ready for review.

Clone this wiki locally