Skip to content

P1: Phase 3: the typed adaptive loop — ledger, proposals, governance (goal line) #714

Description

@macanderson

Phase 3 — the typed adaptive loop. This is the goal line: the phase where "adaptive context is real". Ships behind context.lifecycle.enabled (default off).

Observable: Stella proposes durable context from evidence and explains why — "three separate tasks, here they are" — and Keep/Edit/Ignore is auditable afterward. The proposal that becomes a skill is reviewable before it lands, which is the part users cannot do today.

Why third — and read this before starting: this is a migration, not a build (spec §8). A live lexical loop already does this and users depend on it. It must not regress.

Blocked on ratifying ADR 0010 — see #711, decisions 1 and 2.

Deliverables

  • 1. The lifecycle ledger. Append-only, immutable, hashed records for observations, proposals, and promotion events, born canonical per ADR 0010. No legacy rows are rewritten. New kinds have no legacy counterpart and therefore need no migration.
  • 2. Typed observation extraction, replay-idempotent with cursors, secrets redacted before persistence, sourced from the evidence already captured — reflection lessons, citations, tool outcomes.
  • 3. Proposal induction over the existing miner. Keep the clustering, the stable identity, and the thresholds. Add a durable, reviewable proposal record carrying its supporting observations, distinct-task count, and scored components. Distinct tasks, never raw events.
  • 4. Migrate the skills loop onto the typed path, behavior-compatible. Existing skill files are untouched. The per-session cap, no-clobber, and two-surface tombstone filtering all survive — asserted by test, not by inspection.
  • 5. Wire the dead rules miner through the same path. Its twin has shipped unwired since the shared clustering module was created to keep them aligned.
  • 6. Solo advisory governance. Immutable promotion events; inferred directives start advisory and can never start blocking; no automatic sharing or scope widening; a re-proposal cooldown so a declined proposal does not return next turn.
  • 7. Review surface. List proposals with their evidence; Keep, Edit, or Ignore; every outcome recorded as an immutable event.

Gate

  • Three distinct tasks produce one eligible proposal; thirty repetitions inside one task produce none.
  • No inferred directive reaches blocking by any path.
  • No sharing or scope widens without an explicit act.
  • A tombstoned lesson still cannot return as a proposal or a skill.
  • Existing skill files are byte-identical after migration.
  • Keep/Edit/Ignore replay identically from the event log.
  • Mining failure cannot fail the user's task.

Risk

The behavior-compatibility obligation is the whole risk. A typed loop that regresses forget/restore is a worse product than the lexical one it replaces. Every guarantee in spec §8 gets a test before the migration lands, not after:

  • tombstone suppression across re-learning, on every surface
  • the per-session creation cap
  • never clobbering a hand-edited file
  • deterministic, stable candidate identity
  • failure isolation — mining never fails the user's task

Blocked by Phase 2 and by #711 (decisions 1 and 2). Blocks Phase 4. Plan: docs/design/adaptive-context-plan.md § Phase 3. Part of Epic #469.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Important — next in linearea:contextstella-context — graph, embeddings, memory, retrievalenhancementNew feature or requestroadmapRoadmap item — planned direction

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions