Skip to content

Investigate v5 Learning Loop integration — port-side curation layer + community research #169

@virtualian

Description

@virtualian

Context

The v5.0.0+ port plan (Plans/v5-0-0-plus-port.md, item #10 in the MED
list) flags the Learning standalone pack (~/.pai/skills/Learning/) as
"closes the /learn loop … v5 has nothing equivalent" and parks it for
later port work. A separate read-only investigation has now produced a
detailed contrast.

Report: reports/v5-learning-loop-vs-pack.md
(generated 2026-05-10; ~310 lines, citation-heavy).

Headline findings

  • v5 has a substantial automated capture pipeline (5 capture hooks, 5
    readback functions injected per session, weekly LearningPatternSynthesis
    CLI, WisdomFrames with [CRYSTAL: %] confidence) but no human
    curation loop
    : no /learn, no AISTEERINGRULES.md, no PENDING/
    ACCEPTED/APPLIED proposal lifecycle, no force-loaded steering file.
  • v5's system prompt actively counter-recommends writing behavioural
    rules to harness auto-memory ("infrastructure is the memory"). The
    fork's /learn apply writes "DO MORE" patterns there. Doctrinal
    conflict that needs deliberate resolution at port time.
  • The fork's runtime learning-readback.ts is one function behind v5
    — missing loadSynthesisPatterns(). Adopting v5's hook code wholesale
    picks this up free.
  • v5 chose CLAUDE.md @imports over loadAtStartup. Fork must decide
    whether to overlay loadStartupFiles() back in or migrate
    AISTEERINGRULES to an @import.
  • v5's WisdomFrames is a different primitive the fork could adopt
    instead of (or alongside) AISTEERINGRULES.
  • Neither side has runtime↔release drift detection for steering files;
    the fork accepts forward drift by design.

Scope of this issue

A. Port-side integration design

Decide how (and whether) to integrate the fork's curation layer on top of
v5's automated capture, given the constraint "don't change v5 if I can
help it"
:

  • Resolve the doctrinal conflict on harness auto-memory — adopt v5's
    stance, retain fork's stance, or carve a documented exception
  • Decide load-back primitive: overlay loadStartupFiles() /
    loadAtStartup or migrate to CLAUDE.md @imports
  • Decide whether to adopt v5's WisdomFrames (with confidence gating)
    as the new write target instead of AISTEERINGRULES.md
  • Pull v5's loadSynthesisPatterns() readback into runtime (free win
    regardless of larger decisions)
  • Map fork's RatingCapture ↔ v5's SatisfactionCapture/
    SessionAnalysis consolidation; confirm pipeline inputs survive
    the swap

B. Community / ecosystem research (NEW — added per user direction)

The Learning Loop is the most-debated PAI subsystem (see closed cluster
#50, #73, #109, #141 + open #80, #86, #97). v5 is now public; investigate
what others are doing with v5's learning subsystem:

  • Survey known forks of danielmiessler/Personal_AI_Infrastructure
    for Learning Loop modifications (GitHub fork list + recent commits)
  • Search GitHub issues/discussions/PRs on upstream and notable forks
    for Learning, WisdomFrames, LearningPatternSynthesis, AISTEERING
  • Check Daniel Miessler's blog / videos / Twitter for v5
    Learning-subsystem commentary post-release; capture the design intent
  • Identify any third-party tooling that wires
    LearningPatternSynthesis.ts to a scheduler (cron, GitHub Action,
    CI) — v5 ships it without a trigger
  • Note any community resolutions of the same doctrinal conflict
    (curation layer over auto-capture)

Report findings inline on this issue or in a follow-up
reports/v5-learning-community-survey.md.

Open questions from the report (§6)

These remain unresolved with file evidence alone and should be answered as
part of A/B above:

  1. Has anyone ever run LearningPatternSynthesis.ts on v5? No
    cron/hook trigger ships in the baseline.
  2. What writes ~/.pai/MEMORY/STATE/learning-cache.sh? The reader exists
    in both trees; the writer is invisible in the v5 distribution.
  3. What does v5's install.sh actually deploy for
    skills/PAI/AISTEERINGRULES.md? config-gen.ts:34-35 references the
    path; the baseline tree has no such file.
  4. Does v5's WorkCompletion-driven MEMORY/LEARNING/{ALGORITHM,SYSTEM}/
    feed back beyond loadLearningDigest()? If not, captures accumulate
    indefinitely as dead weight.
  5. Is fork's RatingCapture.hook.ts a verbatim ancestor of v5's
    SatisfactionCapture.hook.ts? Line-by-line confirmation needed.

Out of scope

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions