Changes for version 0.06 - 2026-10-22

  • Architecture & Callbacks
    • Canonical engine callbacks moved to 'Fab/callbacks_bundle/dbg0'.
    • 'Fab/callbacks' now accepts a bundle name string (e.g. 'dbg0') in addition to direct hashrefs; resolved and propagated during initialization and scoping.
    • Eliminated ad-hoc fallback guessing chains (//) across callback retrieval; operational callbacks now resolve uniformly via cfg__get_prefixed_scan().
    • Added support for scoped callback bundle switches via #start_group[callbacks=...] and promise-local overrides via #emb[callbacks=...].
  • Embeds, Parameter Passing & Lenses
    • Modernized #emb directive grammar to #emb[<opts>] <recipe> [<args...>]. Supported options in [...] include aim=..., in=..., with_blinder=..., callbacks=..., and resolve_args=....
    • Primitive out__embed() now takes ($recipe_basename, $recipe_ns, \@args, \%opts).
    • Parameterized recipes: section arguments passed to a recipe are bound to $ARGV0, $ARGV1, etc. in the recipe body via an internal call frame stack.
    • Implemented lens affection massaging with deterministic static joining (_fmt_lens_join) formatting candidate lenses as (A)/B and matching against registered transitions in 'Fab/lens_affects'.
    • Embed resolution now traverses the namespace DAG from the massaged virtual root while respecting blinders and dynamic argument bindings.
  • Input & Inclusion
    • Extended #include and include__text() to support container targets: 'section' and 'configkey'.
    • Enforced strict arity validation across all inclusion modes:
      • 'filename' and 'string' strictly require exactly 1 target argument.
      • 'section' and 'configkey' strictly require 2 arguments: position 2 is the joiner list key, and position 3 is the target container. Arity mismatches now immediately halt with E_SYNTAX_ERROR (directives) or E_TYPE_MISMATCH (Perl API).
    • Section and configkey inclusions reuse the cyclic delimiter engine (out__get_joined / cfg__get_joined).
  • Snapshot & Undo Engine
    • Added a compatibility hook for FreezeThaw::copyContents treating compiled CODE references as atomic/immutable values, preventing dclone() crashes when configuration contains duplicated or shared code references across snapshots and groups.
  • Documentation & Tests
    • Updated POD to reflect modern #emb, #include, lens, and callback semantics while preserving design rationale and marking planned subsystems as {???}.
    • Modernized test suite (t/01 through t/12) to exercise strict arity, parameterized recipes, lens affections, and container inclusion.

Modules

A powerful, general-purpose document expansion framework (currently Control Flow, Loops, and Caching are unimplemented {???})