← The board

N7 Moving in beside what is already there

Area
N — Companion
Audience
operator
Kind
feature
Status
accepted
Maturity
built
Labels
mobile, storage, wiring, ux
Requires
N1A5
Relates to
D1A6E3N2N13

The feature in the specification · Read at

Requirements

  1. N7-R1acceptedMUST

    What an import could not carry MUST be shown with the reason for each, and MUST NOT be subordinated to a success message.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/TheImport.phpapp-modules/kernel/src/Api/Unsupported.phpapp-modules/kernel/tests/Api/AMoveAgreedTest.phpapp-modules/kernel/tests/Api/AMoveTest.php
  2. N7-R2acceptedMUST

    The stance of a move MUST be rendered as given, and unchanged, pending or blocked MUST NOT be presented as applied.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AMove.phpapp-modules/kernel/src/Api/Stance.phpapp-modules/kernel/tests/Api/AMoveAgreedTest.phpapp-modules/kernel/tests/Api/AMoveTest.php
  3. N7-R3acceptedMUST

    A refusal MUST be shown with the reason the stack gave, and MUST NOT be rendered as a generic failure or a retry prompt.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AMove.phpapp-modules/kernel/src/Api/WhatBecameOfTheMove.phpapp-modules/kernel/tests/Api/AMoveAgreedTest.phpapp-modules/kernel/tests/Api/AMoveTest.php
  4. N7-R4acceptedMUST

    Where the stack would take something over destructively and wants a copy first, the app MUST say so before the decision is agreed to.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AMoveAgreed.phpapp-modules/kernel/src/Api/AServiceAdopted.phpapp-modules/kernel/tests/Api/AMoveAgreedTest.phptests/Arch/TheAppOpensOnlyTheseDoorsTest.php
  5. N7-R5acceptedMUST

    A conflict MUST name what already holds the thing it conflicts over.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/APortHeld.phpapp-modules/kernel/src/Api/WhatTheVerbCameTo.phpapp-modules/kernel/tests/Api/TheSurveyTest.phpapp-modules/kernel/tests/Api/WhatTheVerbCameToTest.php
  6. N7-R6acceptedMUST

    Where a service was placed on a different port to avoid a conflict, the app MUST keep that reachable afterwards and MUST NOT show it only at the moment it happened.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/APortMoved.phpapp-modules/kernel/tests/Api/AMoveTest.phpapp-modules/kernel/tests/Api/TheSurveyTest.php
  7. N7-R7acceptedMUST

    A wiring the stack could not assess MUST be shown as its own answer, and MUST NOT be rendered as sound.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/HowDriftWasJudged.phpapp-modules/sdk/src/Api/WhatTheWiringCameTo.phpapp-modules/kernel/tests/Api/TheWiringTest.phpapp-modules/kernel/tests/Api/WhatBecameOfTheWiringTest.php
  8. N7-R8acceptedMUST

    Where a wiring carries a severity, what would break and what would put it right MUST both be shown.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/WhatItWouldBreak.phpapp-modules/sdk/src/Api/WhatTheWiringCameTo.phpapp-modules/kernel/tests/Api/TheWiringTest.phptests/Contract/WiringTheServicesContractTest.php
  9. N7-R9acceptedMUST

    An import that carried nothing MUST be told apart from an import that has not run.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/operator/src/Internal/Presenters/HowAMoveReads.php
  10. N7-R10acceptedMUST

    A rehearsed wiring run MUST be labelled as a rehearsal, on the same terms as N6-R1.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/TheWiring.phpapp-modules/kernel/tests/Api/TheWiringTest.phpapp-modules/kernel/tests/Api/WhatBecameOfTheWiringTest.php
  11. N7-R11acceptedMUST

    The app MUST offer the survey of what is already on the machine, and MUST show every project and service it found, with whether each is running and whether it could be taken over, before any mode is offered (A5-R1, A5-R2). A survey that could not look MUST be told apart from one that found nothing.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AProjectStanding.phpapp-modules/kernel/src/Api/AServiceStanding.phpapp-modules/kernel/tests/Api/TheSurveyTest.phptests/Contract/MovingInContractTest.php
  12. N7-R12acceptedMUST

    The app MUST offer the modes the stack gives, in the stack's order, each with what it would come to and whether it disturbs what is running. It MUST NOT preselect a mode the stack did not preselect, and MUST NOT preselect replacement (A5-R3).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AMode.phpapp-modules/kernel/src/Api/TheModes.phpapp-modules/kernel/tests/Api/TheSurveyTest.phptests/Contract/MovingInContractTest.php
  13. N7-R13acceptedMUST

    Where the survey reports a layout that cannot hardlink, the app MUST show why, what it costs and the remedy, and MUST offer the remedy only as an act of its own, never as part of a move (A5-R10).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/WhatLinkingCosts.phpapp-modules/kernel/tests/Api/TheSurveyTest.phptests/Contract/MovingInContractTest.php
  14. N7-R14acceptedMUST

    A service the survey found and cannot take over MUST be named as unsupported with the reason, and MUST NOT be omitted (A5-R12).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/Unsupported.phpapp-modules/kernel/tests/Api/AMoveTest.phpapp-modules/kernel/tests/Api/TheWiringTest.php
  15. N7-R15acceptedMUST

    The app MUST offer a wiring run, and MUST show each connection with the state the stack gave it. Skipped MUST NOT be rendered as failed, and a connection kept because the operator changed it MUST NOT be rendered as wired or as drift to repair (D1-R3, D1-R5, D1-R6).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/WhereAConnectionStands.phpapp-modules/sdk/src/Api/WhatTheWiringCameTo.phpapp-modules/kernel/tests/Api/TheWiringTest.phptests/Feature/EveryWireValueIsACaseTest.php
  16. N7-R16acceptedMUST

    Where a connection is kept because the operator changed it, the app MUST say it is kept; where the operator's value and lemonfiber's both moved, the app MUST show what the service holds beside what lemonfiber would write. The app MUST NOT offer to overwrite the operator's value (N19-R4).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/HowAConnectionEnded.phpapp-modules/kernel/tests/Api/TheWiringTest.phptests/Contract/WiringTheServicesContractTest.php
  17. N7-R17acceptedMUST

    A write a service rejected MUST be shown with the service's own words, and MUST NOT be paraphrased (D1-R11).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/HowAConnectionEnded.phpapp-modules/operator/src/Internal/ViewModels/AConnectionAsShown.phpapp-modules/kernel/tests/Api/TheWiringTest.phptests/Contract/WiringTheServicesContractTest.php
  18. N7-R18acceptedMUST

    A replacement MUST show what it would stop before it is agreed to, and afterwards what stopped and what is still running. It MUST NOT be presented as done while anything it replaces is still running, whatever its stance says, and its agreement MUST name what it would stop and MUST NOT be carried forward from another screen or another operation (N13-R7).

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/AMoveAgreed.phpapp-modules/kernel/src/Api/TheReplacement.phpapp-modules/kernel/tests/Api/AMoveAgreedTest.phptests/Arch/TheAppOpensOnlyTheseDoorsTest.php
  19. N7-R19acceptedMUST

    The app MUST offer adopting the operator's own edits as the stack's expected state, and before it is applied MUST show, labelled as a rehearsal (N6-R1), each value that would be kept as theirs from then on and each connection it would wire. A value adopted MUST afterwards be shown as the operator's, and MUST NOT be shown as drift.

    locked by
    no version locks it yet
    recorded done
    lemonfiber-companionapp-modules/kernel/src/Api/WiringTheServices.phpapp-modules/sdk/src/Api/Wirers.phpapp-modules/operator/src/Internal/AdoptsTheEdits.phptests/Contract/WiringTheServicesContractTest.phptests/Feature/AdoptingTheEditsTest.php