Skip to content

Cross-session continuity - No deterministic enforcement of SessionProgress.ts? #1192

@tzioup

Description

@tzioup

SessionProgress.ts + LoadContext reader exist but no enforcement trigger connects them

Summary

SessionProgress.ts (the writer) and LoadContext.hook.ts → getProjectProgress() (the reader) form a complete multi-session continuity system — but nothing in the Algorithm, CLAUDE.md, or any hook mandates creating a progress file when multi-session work begins. The infrastructure is built in two halves with no enforcement layer connecting them.

What exists (working correctly)

Writer: PAI/TOOLS/SessionProgress.ts

  • Creates/updates progress files at MEMORY/STATE/progress/<project>-progress.json
  • Tracks: objectives, decisions, work completed, blockers, handoff notes, next steps
  • CLI with create, work, decision, next, handoff, resume, complete commands

Reader: hooks/LoadContext.hook.ts → getProjectProgress()

  • Fires at SessionStart
  • Reads ALL files in MEMORY/STATE/progress/ with no time cutoff
  • Injects project objectives, handoff notes, and next steps into the DA's context
  • Flags stale projects (>14 days since last update)

Short-term bridge: getRecentWorkSessions() in the same hook scans MEMORY/WORK/ ISAs from the last 48h. Non-completed ISAs appear automatically. This covers same-day/next-day continuity but expires after 48h.

What's missing

No enforcement trigger connects the writer to the workflow. Specifically:

  1. Algorithm v6.3.0 — does not reference SessionProgress.ts. The LEARN phase Learning Router routes state to PROJECTS.md (human-readable layer) but not to progress files (machine-readable layer that LoadContext actually reads programmatically).

  2. CLAUDE.md — no operational rule mandates progress file creation for multi-session work.

  3. Hooks — no hook fires at SessionEnd (or ISA creation, or phase transition) that detects "multi-session work exists without a corresponding progress file" and either auto-creates one or blocks/reminds.

  4. ISA Skill — the Scaffold workflow doesn't check whether the work it's scaffolding is multi-session and prompt for progress file creation.

Reproduction

  1. Fresh V5 install. Fifth session.
  2. User requests work that clearly spans multiple sessions (e.g., multi-step onboarding plan with 6 phases).
  3. DA creates ISA, executes first phase, marks ISA phase: complete.
  4. Session ends. No progress file created. No handoff notes. No next steps in LoadContext.
  5. New session starts. LoadContext injects nothing about the multi-session plan.
  6. User must manually remind the DA that a plan exists and where it is.

The DA "should have known" to create a progress file — but "should have known" is DA-discipline-dependent, which violates Founding Principle #6 ("As Deterministic as Possible").

Impact

For expert users, this is likely a non-issue — you know the tool exists and invoke it consciously. For new users whose DA is also encountering the system for the first time, this creates a silent continuity failure. Work gets done but the handoff between sessions doesn't happen unless the user chases it up. The system feels unreliable on first contact.

This is especially sharp because the reader (LoadContext) is already wired and waiting — the user will never see a progress injection because nothing upstream creates the file.

Proposed fix

Option A (deterministic, preferred): A hook at SessionEnd that:

  1. Checks if an ISA was active this session with effort: E3+ or with explicit multi-session indicators (next_steps in decisions, plan with future phases)
  2. Checks if a corresponding progress file exists in MEMORY/STATE/progress/
  3. If not: auto-creates one from ISA frontmatter + decisions, or emits a blocking reminder

Option B (doctrine): Add to Algorithm LEARN phase Learning Router:

| `continuity` | `MEMORY/STATE/progress/<project>-progress.json` via SessionProgress.ts | **Inline create/update.** |

With a mandate: "If this Algorithm run is part of multi-session work, a progress file MUST exist before phase: complete."

Option C (ISA Skill integration): When ISA Scaffold creates an ISA at E3+, prompt: "Is this multi-session? If yes, create progress file." Or detect it heuristically from the Features table (features with depends_on pointing to things not yet done).

Option A is most aligned with Founding Principle #6 (deterministic enforcement). Options B and C are DA-discipline-dependent but lightweight.

Design question for maintainer

Was the gap between SessionProgress.ts and LoadContext intentional (expert users invoke the tool consciously when they know work spans sessions) or an oversight (the enforcement hook was planned but not built)? The answer determines whether the fix is "add enforcement" or "document the manual invocation point more prominently."

Environment

  • PAI 5.0.0
  • Algorithm v6.3.0
  • Fresh install, fifth session

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