← The board

N20 What a plugin may send, and what it may never run

Area
N — Companion
Audience
operator
Kind
feature
Status
accepted
Maturity
built
Labels
mobile, security, ux
Requires
N1F8
Relates to
F3F11N5N10N2

The feature in the specification · Read at

Requirements

  1. N20-R1acceptedMUST

    A value a plugin would send to an external host MUST be stated as what it is and where it would go, in terms the operator can judge.

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AValueItCarries.phpapp-modules/operator/resources/views/what-extends-this-stack.blade.phptests/Feature/WhatExtendsThisStackTest.php
    cited by
    lemonfiber-companion@f751b49b62lemonfiber-companion@1dbd1d426d
  2. N20-R2acceptedMUST

    Such a value MUST be agreed to as itself, and MUST NOT be agreed to as a consequence of agreeing to an installation; one agreement MUST NOT cover both.

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/APluginInstallAgreed.phpapp-modules/operator/src/Internal/Screens/WhatExtendsThisStack.phptests/Feature/WhatExtendsThisStackTest.php
    cited by
    lemonfiber-companion@f751b49b62lemonfiber-companion@1dbd1d426d
  3. N20-R3acceptedMUST

    A destination MUST be shown as the name the manifest gave, and MUST NOT be shown as a resolved address.

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AValueItCarries.phptests/Contract/ExtendingTheStackContractTest.php
    cited by
    lemonfiber-companion@1dbd1d426d
  4. N20-R4acceptedMUSTClaim it

    Where a call was refused because an external name answered from inside the network, the app MUST show that refusal and its reason, and MUST NOT render it as a network error to retry.

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/sdk/src/Api/Extenders.phptests/Contract/ExtendingTheStackContractTest.php
  5. N20-R5acceptedMUSTClaim it

    A rehearsed recipe MUST show every step in the order the recipe gives, labelled as a rehearsal (N6-R1), and MUST NOT be summarised into an outcome.

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/ARecipe.phptests/Feature/WhatExtendsThisStackTest.php
  6. N20-R6acceptedMUSTClaim it

    Where a plugin names an adapter, the app MUST show which one, and that it is lemonfiber's rather than the plugin's.

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/ARecipeStep.phptests/Feature/WhatExtendsThisStackTest.php
  7. N20-R7acceptedMUSTClaim it

    The app MUST NOT execute content a plugin supplied, MUST NOT offer to, and MUST NOT present any opt-in, sandbox or capability grant that would (F3-R6).

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/sdk/src/Api/Extenders.phptests/Arch/TheAppOpensOnlyTheseDoorsTest.php
  8. N20-R8acceptedMUSTClaim it

    A plugin declaring native or executable content MUST be shown as refused with the reason, and MUST NOT be offered for installation (F3-R7).

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/HowExtendingItIsGoing.phptests/Feature/WhatExtendsThisStackTest.php
  9. N20-R9acceptedMUSTClaim it

    A refusal the core gave about a plugin MUST carry the core's own reason (N5-R10).

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/sdk/src/Api/Extenders.phptests/Contract/ExtendingTheStackContractTest.php
  10. N20-R10acceptedMUSTClaim it

    Recipes, pairs, destinations or adapters that could not be read MUST be told apart from there being none.

    locked by
    0.18.0 uncited
    recorded done
    lemonfiber-companionapp-modules/sdk/src/Internal/PluginRecords.phpapp-modules/sdk/tests/Api/PluginInstallsTest.php