@futdevpro/fsm-dynamo 1.15.12 → 1.15.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,43 @@
1
+ # BACKLOG.md
2
+
3
+ > STRICT PATTERN (MUST FOLLOW EXACTLY)
4
+ > - Entry header: "- [TYPE] (BL-YYYYMMDD-###) TITLE"
5
+ > - Immediately followed by (exact keys, colon-space, indented 2 spaces):
6
+ > - " status: <EMOJI status-key>"
7
+ > - " priority: <low|medium|high|urgent>"
8
+ > - " source: <user|system|assistant>"
9
+ > - " area: <ui|backend|infra|docs|tests|ux|general>"
10
+ > - " details: <single-line summary>"
11
+ > - NO blank line between header and fields (parser reads i+1..i+5).
12
+ > - One blank line between entries (readability).
13
+ > - TYPE values: FEATURE, BUG, IMPROVEMENT, QUESTION, RESEARCH, TASK
14
+ > - STATUS EMOJI: ❌ ⏳ 🔄 ✅ ⚠️ ❓
15
+ > - IDs: unique, format BL-YYYYMMDD-### (increment ###).
16
+
17
+ - [IMPROVEMENT] (BL-20260518-001) DyFM_StateMachine: explicit `_FailureResult` return type a `_failure()` helper-en (TS narrowing)
18
+ status: ⏳ pending
19
+ priority: low
20
+ source: assistant
21
+ area: backend
22
+ details: A `DyFM_StateMachine._failure()` jelenleg `DyFM_StateMachineTransition_Result<TState>` union-t ad vissza. A TS inference emiatt nem narrow-ol az `if (!r.ok) {...}` blokkban (a private helper visszatérése a union mind két ágát beilleszti, és a `_failure()` belső object literal `{ ok: false, ... }` típusa nem narrow-ódik le `false` literal-re). Konzumens kódban `as DyFM_StateMachineTransition_FailureResult<TState>` cast szükséges. Fix: `_failure()` return type-ja explicit `DyFM_StateMachineTransition_FailureResult<TState>` (NEM union). 1-line type-annotation change, 0 viselkedés-változás.
23
+
24
+ - [IMPROVEMENT] (BL-20260518-002) DyFM_StateMachine: `DyFM_Error` wrapping a result.error mezőben
25
+ status: ⏳ pending
26
+ priority: low
27
+ source: assistant
28
+ area: backend
29
+ details: A jelenlegi `DyFM_StateMachineTransition_FailureResult.error` `DyFM_Error | Error` típusú, de a `_failure()` raw `Error`-t propagál (callback throw-jából). Konzisztencia a többi `DyFM_*` modullal: `DyFM_Error({ status: 422, errorCode: 'DyFM-SM-<subcode>', message, error: originalError, issuerService: 'DyFM_StateMachine' })` wrappingot adni a 4 throw-elhető helyen (guard/onLeave/onEnter/persist). Subcode-ok pl. 'DyFM-SM-GR' (guard-rejected throw), 'DyFM-SM-OL' (on-leave), 'DyFM-SM-OE' (on-enter), 'DyFM-SM-PE' (persist). Spec: minden 4 error-path-on `DyFM_Error.getErrorCode(f.error)` assertion.
30
+
31
+ - [TASK] (BL-20260518-003) DyFM_StateMachine: guard-throw + self-loop spec coverage
32
+ status: ⏳ pending
33
+ priority: low
34
+ source: assistant
35
+ area: tests
36
+ details: Két explicit spec hiányzik a FR-006 (52354ba) 22-spec szettjéből: (1) guard callback throw esetén `transition()` `guard-rejected` reason-t ad-e, és a `canTransition()` `false`-t (mindkét helyen catch-eli a impl, de NEM bizonyított teszttel); (2) self-loop transition (`from === to`) explicit spec — a `_findTransition` matchel rá, de nincs lefedve. ~30 LOC spec, no impl change.
37
+
38
+ - [FEATURE] (BL-20260518-004) DyFM_StateMachine: Mongoose persist adapter
39
+ status: ⏳ pending
40
+ priority: medium
41
+ source: assistant
42
+ area: backend
43
+ details: Az MVP-ben (FR-006 / 52354ba) a `persist` callback caller-supplied (CCAP MP1-D maga írja a Mongo updateOne logikát stateVersion optimistic-lock-kal). Egy genericikus adapter ami `DyFM_dataModel`-kötött (Mongoose ControlModel) state-document-et frissít automatikusan, kevesebb boilerplate-tel. API: `createMongoosePersistAdapter({ collection: Model<T>, docFilter: { _id: 'rag-status' } }): DyFM_StateMachineConfig['persist']`. Optimistic-lock: `findOneAndUpdate({ ...filter, stateVersion: prev }, { $set: { state, stateVersion: next, lastTransitionAt: timestamp } })` — match nélkül `'persist-failed'`. Tervek szerint a consumer real-world tapasztalat (MP1-D landolása) után írandó, hogy a tényleges minta visszahatáson alapuljon.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fsm-dynamo",
3
- "version": "01.15.12",
3
+ "version": "01.15.13",
4
4
  "description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "full-stack-package",