Member Junction
    Preparing search index...

    Modify an existing interactive-form override.

    Behavior is driven by the VersionBumpKind input and the source Override's status (Override is the canonical "is this live" signal — Component.Status can drift independently):

    Source Status VersionBumpKind Behavior
    Pending in-place (default) Overwrite the existing Pending Component row in place. No new version. Iteration-loop behavior.
    Pending patch / minor / major Demote the existing Pending → Inactive, then insert a new Pending Component v(bumped) + new Pending Override pointing at it. Creates rollback.
    Active in-place Rejected — would corrupt the live Active row. Returns INVALID_BUMP_FOR_STATUS.
    Active patch / minor (default) / major Insert new Pending Component v(bumped) + new Pending Override. Active is untouched — user explicitly Activates later.
    Inactive in-place Rejected — overwriting a dead row achieves nothing. Use 'Revert Interactive Form' to re-activate first, or supply a bump kind.
    Inactive patch (default) / minor / major Branch-from-historical. Insert new Pending Component v(bumped) sourced from this Inactive spec. The Inactive source is left alone (already historical).

    Defaults preserve historical behavior: omit VersionBumpKind and Pending sources stay in-place, Active sources bump minor, Inactive sources bump patch (the conservative branch-from-historical case).

    Security clamp. Modify always writes a User-scope Pending Override, regardless of the original override's scope. Even if the caller is modifying a Role-scope or Global override (which they have permission to read because they pass the ownership check), the new Pending sibling is always User-scoped to the calling user. Scope promotion (User → Role → Global) is a separate, deliberate human action with its own permission gate in Component Studio / Form Builder. The agent cannot widen scope through Modify any more than through Create.

    Ownership check. The caller must own (or have role membership for, or be admin over) the existing override they're modifying. See checkOverrideOwnership in _shared.ts. Returns FORBIDDEN if rejected.

    Inputs:

    • OverrideID (required, string) — the override to modify
    • Spec (required, ComponentSpec | string) — the new form spec
    • Notes (optional, string) — appended to the override's Notes column
    • VersionBumpKind (optional, 'in-place' | 'patch' | 'minor' | 'major') — see table above

    Outputs:

    • ComponentID — the Component row that now holds the spec (new for snapshots, same for in-place)
    • OverrideID — the Override row that points at it
    • Mode — 'in-place' or 'new-version'
    • Version — the Component's resulting Version string

    Hierarchy (View Summary)

    Index

    Constructors

    Methods

    Constructors

    Methods