Skip to content

v0.15.3 — Maintenance: post-audit cleanup (25 fixes)

Latest

Choose a tag to compare

@Rahspide Rahspide released this 03 Jul 22:21

Install

npm install -g @sffmc/safety @sffmc/memory @sffmc/runtime @sffmc/cognition

What changed (EN)

Maintenance release. No breaking changes. No new dependencies.

25+ fixes covering config gaps, security, health checks, docs drift, and stale references. Recommend upgrade for everyone, especially on multi-user systems (mkdir mode fix) and v0.14.5/v0.14.7/v0.14.8 holdouts.

Configuration gaps (v0.14.5 overstated "21 values configurable")

  • Sandbox pump cadence now reads WorkflowExtendedConfigsandbox.ts had inline const SLOW_MS = 50; const FAST_WINDOW = 50 shadowing getSandboxSlowMs() / getSandboxFastWindow(). Now user YAML overrides take effect.
  • FlushManager debounce reads getFlushDebounceMs() — constructor takes optional debounceMs parameter.
  • WorkflowPersistence fsync reads getFsyncCoalesceMs()scheduleFsync() no longer uses local const.
  • SAFE_REPETITION_LIMIT exported from @sffmc/utilitiessafety/rules.ts imports it (no more duplicate const SAFE_REGEX_LIMIT = 25).

Security

  • All 5 mkdir calls in persistence.ts now use mode: 0o700 — runtime data dir no longer readable by other users on multi-user systems. Brings runtime in line with memory/dream/checkpoint which already do since v0.12.1.
  • migrateLegacyDataPaths() removed — exported but never wired. Canonical path stays uppercase SFFMC/ for backward compatibility.
  • 5 new redaction patternscloud-credential rule expanded: GitHub fine-grained PAT (github_pat_*), GitHub OAuth/user/scope tokens (gho_*/ghu_*/ghs_*/ghr_*), GitLab PAT (glpat-*), Discord bot tokens (d_* prefix), Stripe live keys (sk_live_*, rk_live_*), and JWTs (three base64url segments).
  • redactSecrets() MAX_CONTENT_BYTES = 1 MiB guard — returns unchanged with { oversize: true } so callers can chunk-stream.

Health plugin (v0.15.0 stale-string cleanup)

  • checkCompositeStructure no longer hardcodes "3 composites" — uses expectedComposites.length.
  • checkExtraOptIn refactored — was looking for deleted packages/extra/.
  • checkChangelogCurrency now also verifies CHANGELOG.ru.md (bilingual).

Audit scripts

  • audit-load-order.py: error message expected 14expected 5.
  • check-cleanroom.sh: removed dead EXCLUDE_PATTERNS for deleted packages/compose/, packages/agentic/, shared/ (all dissolved in v0.15.0 P-1).

Docs drift (8 fixes)

  • dynamic-workflow.md: "12 hours wall-clock" → "1 hour" (×3 refs). "Direct MCP bindings planned" → "available since v0.14.0".
  • bin/sffmc (bash) help: "13 packages / 13-check" → "5 / 9-check" (v0.15.1 fixed PowerShell only).
  • CONTRIBUTING.md: v0.15.1 → v0.15.3.
  • docs/install.md: SFFMC_VERSION=v0.15.0v0.15.3 (×2 refs).
  • CHANGELOG.md: stale "v0.14.7" refs → "v0.14.9" (×2; v0.14.7 never released).

Internal hygiene

  • Stale references to internal planning files cleaned up across source files and one utility. No behavior change.

Что изменилось (RU)

Maintenance-релиз. Ломающих изменений нет. Новых зависимостей нет.

25+ исправлений: конфигурационные разрывы, безопасность, health-проверки, дрейф документации, устаревшие ссылки. Рекомендуем обновиться всем, особенно на многопользовательских системах (фикс mkdir mode) и пользователям v0.14.5/v0.14.7/v0.14.8.

Конфигурационные разрывы (v0.14.5 завышал «21 значение настраивается»)

  • Sandbox pump cadence теперь читает WorkflowExtendedConfigsandbox.ts имел inline const SLOW_MS = 50; const FAST_WINDOW = 50, затеняющие getSandboxSlowMs() / getSandboxFastWindow(). YAML-переопределения пользователя вступают в силу.
  • Дебаунс FlushManager читает getFlushDebounceMs() — конструктор принимает необязательный параметр debounceMs.
  • Fsync в WorkflowPersistence читает getFsyncCoalesceMs()scheduleFsync() больше не использует локальную константу.
  • SAFE_REPETITION_LIMIT экспортирован из @sffmc/utilitiessafety/rules.ts импортирует.

Безопасность

  • Все 5 вызовов mkdir в persistence.ts используют mode: 0o700 — runtime data-каталог больше не читаем другими пользователями. Приводит runtime в соответствие с memory/dream/checkpoint с v0.12.1.
  • migrateLegacyDataPaths() удалена — экспортировалась, но никогда не подключалась. Канонический путь остаётся uppercase SFFMC/ для обратной совместимости.
  • 5 новых паттернов редактированияcloud-credential расширен: GitHub fine-grained PAT (github_pat_*), GitHub OAuth/user/scope (gho_*/ghu_*/ghs_*/ghr_*), GitLab PAT (glpat-*), Discord bot-токены (префикс d_*), Stripe live (sk_live_*, rk_live_*) и JWT (три base64url-сегмента).
  • Защита redactSecrets() по MAX_CONTENT_BYTES = 1 МиБ — возвращает неизменённым с { oversize: true }, чтобы вызывающий код мог разделить на чанки.

Health-плагин

  • checkCompositeStructure больше не хардкодит «3 композита».
  • checkExtraOptIn рефакторен — искал удалённый packages/extra/.
  • checkChangelogCurrency теперь проверяет и CHANGELOG.ru.md (билинг).

Audit-скрипты

  • audit-load-order.py: сообщение expected 14expected 5.
  • check-cleanroom.sh: удалены мёртвые EXCLUDE_PATTERNS для packages/compose/, packages/agentic/, shared/.

Дрейф документации

  • dynamic-workflow.md: «12 hours wall-clock» → «1 hour» (×3). «Direct MCP bindings planned» → «available since v0.14.0».
  • bin/sffmc (bash) help: «13 packages / 13-check» → «5 / 9-check».
  • CONTRIBUTING.md: v0.15.1 → v0.15.3.
  • docs/install.md: SFFMC_VERSION=v0.15.0v0.15.3 (×2).
  • CHANGELOG.md: устаревшие «v0.14.7» → «v0.14.9» (×2).

Внутренняя гигиена

  • Устаревшие ссылки на внутренние плановые файлы зачищены в исходниках и одной утилите. Изменений в поведении нет.

See CHANGELOG.md (English) or CHANGELOG.ru.md (Russian) for full release notes.