fix(memory,prompts): rollover repair + retire-for-all + seedgo #37 path cleanup

Batch of S243/S244 work held for PR640. Only devpulse has git write, so all
branches' changes (@memory, @prax, @hooks, @aipass, @skills, @flow, @backup,
@seedgo) land through this single commit.

Memory rollover (correctness):
- @hooks rollover hook now delegates to drone @memory rollover check/run — it
  had been reading stale .trinity limits (moved to memory.config.json by
  DPLAN-0210), falling back to a 600-line check that never fired, so rollover was
  silently dead for weeks. compact.py reads the current list schema. Both fail loud.
- @memory removed the v1 line-count/600 fallback entirely — v2-only, fail-loud
  (959 tests).

Retire-for-all (DPLAN-0215):
- Legacy global prompt fully removed across every runtime: global_loader.py +
  tests deleted, hooks.json/project_hooks.json blocks stripped, bootstrap global
  seeding removed, cadence default + bypass cleaned, global .md files archived.
  Codex SessionStart + Claude cadence read the same tier files.

Hardcoded-path cleanup (seedgo #37):
- New HARDCODED_PATH checker (#37). @memory symbolic.py + @prax branch_detector.py
  home paths -> dynamic/generic. Both 100% Hardcoded_Path.
- seedgo provider_hooks_snapshot.json fixture refreshed to the tiered baseline.

Genericization: patrick -> user across tracked source, docs, templates.
CHANGELOG: 2026-06-19 + 2026-06-23 sections added.
This commit is contained in:
AIOSAI
2026-06-23 16:17:10 -07:00
parent 4cd68a78b6
commit 6db606eb01
56 changed files with 1739 additions and 1182 deletions
+4 -14
View File
@@ -167,11 +167,10 @@ def print_help() -> None:
console.print(" [cyan]help[/cyan] Show this help message")
console.print()
console.print("[bold]LIMITS:[/bold]")
console.print(" v1 (schema <2.0): Line-count based (max_lines, default 600)")
console.print(" v2 (schema 2.0+): Entry-count based (max_sessions, max_key_learnings)")
console.print(" v2 entry-count based (sessions, key_learnings, observations) from config")
console.print()
console.print("[bold]WORKFLOW:[/bold]")
console.print(" 1. Detect files exceeding limits (line count or entry count)")
console.print(" 1. Detect files exceeding v2 entry-count limits")
console.print(" 2. Extract oldest entries")
console.print(" 3. Generate embeddings via fastembed")
console.print(" 4. Store vectors in local + global ChromaDB")
@@ -400,21 +399,12 @@ def show_status() -> None:
console.print(f" [bold]{branch_name}[/bold]")
for memory_type, file_stats in branch_stats.items():
current = file_stats["current"]
max_val = file_stats["max"]
ready = file_stats["ready"]
remaining = file_stats["remaining"]
schema_ver = file_stats.get("schema_version", "1.0.0")
v2_reason = file_stats.get("v2_reason", "")
status_marker = "[red]![/red]" if ready else "[green]OK[/green]"
if schema_ver.startswith("2"):
status_text = f"READY ({v2_reason})" if ready else "OK (v2)"
console.print(f" {status_marker} {memory_type}: {status_text}")
else:
status_text = "READY" if ready else f"{remaining} remaining"
console.print(f" {status_marker} {memory_type}: {current}/{max_val} lines ({status_text})")
status_text = f"READY ({v2_reason})" if ready else "OK"
console.print(f" {status_marker} {memory_type}: {status_text}")
console.print()
+7 -10
View File
@@ -869,7 +869,8 @@ def run_demo() -> None:
mock_fragments = [
{
"summary": "User was stuck on a code error for a while, then solved it with assistant's step-by-step debugging guidance",
"summary": "User was stuck on a code error for a while, then solved it with "
"assistant's step-by-step debugging guidance",
"insight": "Step-by-step debugging with explanation is more effective than just providing the fix",
"type": "episodic",
"triggers": ["error", "debug", "stuck", "breakthrough"],
@@ -877,7 +878,8 @@ def run_demo() -> None:
"technical_domain": "debugging",
},
{
"summary": "Collaborative pattern where assistant explains reasoning before giving solutions leads to better understanding",
"summary": "Collaborative pattern where assistant explains reasoning before giving "
"solutions leads to better understanding",
"insight": "Teaching approach builds deeper knowledge than direct answers",
"type": "procedural",
"triggers": ["explain", "step by step", "understanding"],
@@ -1408,15 +1410,10 @@ def _find_bootstrap_sessions(max_sessions: int = 8) -> List[Path]:
return []
# Priority branch directories (diverse content sources)
aipass_src = Path(__file__).resolve().parents[3]
priority_dirs = [
"-home-patrick-Projects-AIPass-src-aipass-memory",
"-home-patrick-Projects-AIPass-src-aipass-devpulse",
"-home-patrick-Projects-AIPass-src-aipass-seedgo",
"-home-patrick-Projects-AIPass-src-aipass-drone",
"-home-patrick-Projects-AIPass-src-aipass-flow",
"-home-patrick-Projects-AIPass-src-aipass-prax",
"-home-patrick-Projects-AIPass-src-aipass-ai-mail",
"-home-patrick-Projects-AIPass-src-aipass-api",
str(aipass_src / name).replace("/", "-").replace("_", "-")
for name in ["memory", "devpulse", "seedgo", "drone", "flow", "prax", "ai_mail", "api"]
]
selected = []