|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to AMPERE are recorded here. Dates are in UTC. |
| 4 | + |
| 5 | +The project is pre-1.0; breaking changes are acceptable and explicitly called out. |
| 6 | + |
| 7 | +## [Unreleased] |
| 8 | + |
| 9 | +### Breaking |
| 10 | + |
| 11 | +- **PROPEL `CognitivePhase` enum is now canonically six members** |
| 12 | + ([AMPR-172](https://linear.app/miley/issue/AMPR-172)). |
| 13 | + |
| 14 | + `CognitivePhase` in |
| 15 | + `link.socket.ampere.agents.domain.cognition.sparks.PhaseSpark.kt` |
| 16 | + becomes the full PROPEL cycle in canonical order: |
| 17 | + |
| 18 | + ```kotlin |
| 19 | + enum class CognitivePhase { |
| 20 | + PERCEIVE, |
| 21 | + RECALL, |
| 22 | + OBSERVE, |
| 23 | + PLAN, |
| 24 | + EXECUTE, |
| 25 | + LEARN, |
| 26 | + } |
| 27 | + ``` |
| 28 | + |
| 29 | + Previously the enum carried only `PERCEIVE / PLAN / EXECUTE / LEARN`, |
| 30 | + silently dropping `RECALL` and `OBSERVE`. The acronym is now load-bearing: |
| 31 | + `enumValues<CognitivePhase>().toList()` yields the cycle in order. |
| 32 | + |
| 33 | + **Migration for external consumers:** |
| 34 | + - Any `when (phase: CognitivePhase)` site without an `else` branch will |
| 35 | + fail to compile with an exhaustiveness error. Add explicit branches |
| 36 | + for `RECALL` and `OBSERVE`. |
| 37 | + - Code that iterated `CognitivePhase.entries` will now see six phases |
| 38 | + instead of four. Test matrices that assumed four-phase coverage will |
| 39 | + automatically extend; tests that hardcoded a four-element list need |
| 40 | + updating. |
| 41 | + - Declarative spark `.spark.md` frontmatter that previously enumerated |
| 42 | + `"phases": ["PERCEIVE", "PLAN", "EXECUTE", "LEARN"]` continues to |
| 43 | + parse, but the spark will not apply during `RECALL` or `OBSERVE`. If |
| 44 | + full coverage is intended, update the list to all six phases. |
| 45 | + - Serialized values are unchanged: existing `"PERCEIVE"` / `"PLAN"` / |
| 46 | + `"EXECUTE"` / `"LEARN"` strings still deserialize. AMPERE does not |
| 47 | + persist `CognitivePhase` across runs today, so no data migration is |
| 48 | + required. |
| 49 | + |
| 50 | +- **CLI `AmperePhosphorBridge` removes the `LEARN → EVALUATE` paveover.** |
| 51 | + The bridge now uses `PhosphorPhase.RECALL` for AMPERE's `RECALL`, |
| 52 | + reuses the `PERCEIVE` height-pulse for `OBSERVE` (until Phosphor adds |
| 53 | + an `OBSERVE` ramp of its own), and continues to map `LEARN` to |
| 54 | + Phosphor's `EVALUATE` only as an interop bridge until Phosphor's enum |
| 55 | + is renamed in a sibling ticket. The `LEARN → EVALUATE` mapping is now |
| 56 | + documented as a known interop gap rather than a silent rename. |
| 57 | + |
| 58 | +### Added |
| 59 | + |
| 60 | +- `PhaseSpark.Recall` and `PhaseSpark.Observe` built-in sparks with |
| 61 | + default `promptContribution` strings tuned for memory-recall and |
| 62 | + state-monitoring behavior, respectively. `PhaseSpark.forPhase` covers |
| 63 | + all six members. |
| 64 | + |
| 65 | +### Notes |
| 66 | + |
| 67 | +- Phosphor's own `CognitivePhase` enum (in |
| 68 | + `link.socket.phosphor.signal.CognitivePhase`) still uses |
| 69 | + `PERCEIVE / RECALL / PLAN / EXECUTE / EVALUATE / LOOP / NONE` and is |
| 70 | + out of scope for this change. A sibling Phosphor ticket should add |
| 71 | + `OBSERVE` and rename `EVALUATE → LEARN` to bring Phosphor onto the |
| 72 | + canonical PROPEL acronym. |
| 73 | + |
| 74 | +## [0.6.0] — 2026-05 |
| 75 | + |
| 76 | +Released; see `git log v0.6.0` for the commit history. |
0 commit comments