N7 Moving in beside what is already there
- Area
- N — Companion
- Audience
- operator
- Kind
- feature
- Status
- accepted
- Maturity
- built
- Labels
- mobile, storage, wiring, ux
The feature in the specification · Read at
Requirements
What an import could not carry MUST be shown with the reason for each, and MUST NOT be subordinated to a success message.
The stance of a move MUST be rendered as given, and unchanged, pending or blocked MUST NOT be presented as applied.
A refusal MUST be shown with the reason the stack gave, and MUST NOT be rendered as a generic failure or a retry prompt.
Where the stack would take something over destructively and wants a copy first, the app MUST say so before the decision is agreed to.
A conflict MUST name what already holds the thing it conflicts over.
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
A wiring the stack could not assess MUST be shown as its own answer, and MUST NOT be rendered as sound.
Where a wiring carries a severity, what would break and what would put it right MUST both be shown.
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
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
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.
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
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
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
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).
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
A write a service rejected MUST be shown with the service's own words, and MUST NOT be paraphrased (D1-R11).
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).
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.