Requirements
The application a person is given MUST be decided by the identity that signed in, and MUST NOT be a setting or a separate build.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/kernel/src/Api/Resumed.phpapp-modules/kernel/tests/Api/WhoseTest.phptests/Contract/SecureStorageContractTest.php
- cited by
- lemonfiber@7474b9975alemonfiber@8443b32040sdk-php@21388e1a84lemonfiber-companion@032c04f9f5lemonfiber-companion@40afa41484lemonfiber-companion@16a75aa071lemonfiber-companion@f40903d6e5lemonfiber-companion@f962dda0ealemonfiber-companion@8136512700lemonfiber-companion@de34b9c195
The app MUST NOT implement its own permission model; what a member may do MUST be the core's answer.
A control a member is not entitled to MUST be refused by the core if it is ever reached, and MUST NOT rely on the app having omitted it.
Before a member asks for something, the app MUST state whether it needs approval and whether they have allowance left.
A member whose allowance is spent MUST be told before asking, with when it resets.
A member's own requests MUST carry their state in household terms, and MUST NOT expose pipeline internals.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/sdk/src/Api/Households.phptests/Contract/OwingContractTest.phptests/Feature/SeeingWhatYouAreOwedTest.php
- cited by
- lemonfiber-companion@f8b56b2cf9lemonfiber-companion@65f7445883lemonfiber-companion@0727a005e7lemonfiber-companion@5567a07a5b
A refused request MUST carry the reason that was given.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/kernel/src/Api/TurnedDown.phpapp-modules/sdk/src/Api/Households.phpapp-modules/kernel/tests/Api/TurnedDownTest.phpapp-modules/kernel/tests/Api/WantedTest.php
- cited by
- lemonfiber-companion@f897d1ae41lemonfiber-companion@e9311c476dlemonfiber-companion@de822caa91
- N3-R8withdrawn
Withdrawn. The app plays media. What this row protected is stated by N3-R14, N3-R15 and N3-R16.
- locked by
- no version locks it yet
A member MUST NOT be shown lifecycle controls, logs, credentials, diagnostics, or another member's requests.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/Screens/FindsItsWayAroundTheHouse.phpapp-modules/wayfinding/src/Internal/TheRowsOfTheMenu.phptests/Contract/OwingContractTest.phptests/Feature/AMemberNeverOpensTheOperatorsScreensTest.php
- cited by
- lemonfiber@8443b32040lemonfiber-companion@032c04f9f5lemonfiber-companion@cae8b28c17lemonfiber-companion@335ca79e4flemonfiber-companion@b636d85e37lemonfiber-companion@0727a005e7lemonfiber-companion@8136512700lemonfiber-companion@2e6395f29alemonfiber-companion@2340a57590lemonfiber-companion@5567a07a5b
Where a member's request failed because of a stack fault, the app MUST tell them it did not work and that the operator has been told, and MUST NOT show them the fault.
Parental limits MUST be rendered from the core's answer, and the app MUST NOT hold a second copy of them.
While the stack is unreachable, asking for something new MUST be declined rather than queued.
An identity removed from the household MUST result in a signed-out app at the next refused call, and MUST NOT continue to render what was already loaded.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/kernel/src/Api/Obstacle.phpapp-modules/connection/src/Api/LetsGoOfARefusedSession.phpapp-modules/operator/tests/Internal/ViewModels/HowTheReadingWentTest.phptests/Arch/ARefusedSessionIsLetGoOfTest.php
- cited by
- lemonfiber@8443b32040lemonfiber-companion@da105d58a3lemonfiber-companion@9356200302lemonfiber-companion@a55f4063a9lemonfiber-companion@e3153a3a7elemonfiber-companion@3f1f96026flemonfiber-companion@4bce0fe122lemonfiber-companion@3886666859lemonfiber-companion@d6fa38221alemonfiber-companion@7f19b2821dlemonfiber-companion@5a286ac227lemonfiber-companion@ebf258b1cclemonfiber-companion@149bd6a9a4lemonfiber-companion@cf2e9f08d4lemonfiber-companion@0727a005e7lemonfiber-companion@8136512700lemonfiber-companion@625ae74917
What a member may watch MUST be the core's answer; the player MUST NOT hold a second copy of a library, an age limit or an entitlement.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/Playing/PutsATitleOnScreen.phptests/Arch/OnlyThePlayerPlaysMediaTest.phptests/Feature/PlayingATitleTest.php
- cited by
- lemonfiber@7a05546202lemonfiber-companion@258f6fd1b9lemonfiber-companion@e69997c435lemonfiber-companion@5672b9a906lemonfiber-companion@331157e446lemonfiber-companion@73879348ablemonfiber-companion@95310ff593lemonfiber-companion@b2385cc95elemonfiber-companion@8a6bac1655lemonfiber-companion@9824ca3dc7lemonfiber-companion@1d98f47cc0
Where the media server cannot be reached, playback MUST be declined with the reason, and MUST NOT be queued or shown as buffering.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/Playing/KeepsTheMembersPlace.phpapp-modules/household/tests/Internal/Presenters/HowPlayingIsToldTest.phptests/Feature/KeepingTheMembersPlaceTest.phptests/Feature/OpeningATitleTest.php
- cited by
- lemonfiber-companion@258f6fd1b9lemonfiber-companion@e69997c435lemonfiber-companion@5672b9a906lemonfiber-companion@6c7dc35a9blemonfiber-companion@f79b2d58dclemonfiber-companion@95310ff593lemonfiber-companion@b2385cc95e
The player MUST NOT implement request, approval or allowance logic of its own.
A refusal whose code says the household could not be asked MUST be reported to the operator as the media server not answering, and to a member as their library not answering right now, in the core's household sentence (G4-R16). It MUST NOT sign the member out, and MUST NOT be reported as the account lacking entitlement (ARCH-R138).
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/sdk/src/Internal/WhatARefusalMeant.phpapp-modules/household/src/Internal/ViewModels/WhatAMemberIsTold.phpapp-modules/household/src/View/Components/WhatStoodInTheWay.phptests/Feature/SeeingWhatYouCanWatchTest.php
- cited by
- lemonfiber-companion@a85314b8bblemonfiber-companion@93ebd1b1c3lemonfiber-companion@a55f4063a9
A member MUST be able to sign in to a stack from the app with their household account's name and password, on the same screen the operator signs in on, and a refusal MUST NOT say which of the two was not recognised.
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/operator/src/Internal/Screens/SignIntoAStack.phpapp-modules/connection/src/Api/HowTheSignInWent.phptests/Feature/SigningIntoAStackTest.phpapp-modules/connection/tests/Api/HowTheSignInWentTest.php
- cited by
- lemonfiber@5d986e173esdk-php@bb56a4bf57lemonfiber-companion@16a75aa071
A member's application MUST have a bottom bar of exactly four tabs (Home, Search, Requests and Profile), and MUST have no side menu. Profile MUST hold Switch house, App settings, and Remove this house from the phone. The tab whose screen is on view, or the tab the screen on view belongs to, MUST be the only one marked current (G3-R17).
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/resources/views/components/screen-closes.blade.phpapp-modules/household/src/Internal/Screens/FindsItsWayAroundTheHouse.phpapp-modules/household/tests/View/Components/ScreenClosesTest.phpapp-modules/operator/tests/View/Components/ScreenClosesTest.php
- cited by
- lemonfiber-companion@032c04f9f5
Every sentence a member's screen shows about the stack that the core voices MUST be the core's household sentence (G4-R16), rendered and not composed (N3-R2). Where the core cannot voice an obstacle because nothing from the house arrives — the house cannot be reached, its certificate does not match the one paired (N1-R20), or it speaks a version this app does not (N1-R13) — the app MUST show its own household sentence, in plain words with no technical term (G2-R16), and MUST NOT present it as the house's own words. A sentence about the phone itself (no network, the local network refused, nowhere to keep a stack) MUST be the app's own, in household words (G2-R16). The conditions N1-R10 tells apart MUST each reach a member as a sentence and a remedy of its own.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/kernel/src/Api/KindOfObstacle.phpapp-modules/household/src/Internal/ViewModels/WhatAMemberIsTold.phpapp-modules/kernel/tests/Api/ObstacleTest.phpapp-modules/household/tests/Internal/ViewModels/WhatAMemberIsToldTest.php
- cited by
- lemonfiber-companion@39dcf21b8e
A member MUST be able to search for a title and ask for it from the app. A search MUST show only what the core answers under that member's limits (D8-R8). Before the member asks, the title MUST say, in the core's words, whether it is already here, already on its way, needs approval, and what it leaves of their allowance (N3-R4, N3-R5, D4-R5, D4-R10, D7-R15). The ask MUST be the core's action.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/Screens/LookingForATitle.phpapp-modules/household/src/Internal/Screens/AskingForATitle.phptests/Feature/SearchingForATitleTest.phptests/Contract/FindingTitlesContractTest.phptests/Contract/AskingForTitlesContractTest.php
- cited by
- lemonfiber-companion@d813497880
A title's page MUST carry one primary action whose label follows the title's state as the core answers it: Play where it is here and playable from where the phone is; Play, not usable, with the reason beside it, where it is here and cannot be played from where the phone is (N3-R15); Ask where it may be asked for; and otherwise the state itself (waiting for approval, on its way, out on a date, or not available), shown as the action and not usable. The action MUST NOT be hidden in any state.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/Screens/WhatThisTitleIs.phptests/Feature/OpeningATitleTest.phpapp-modules/household/src/Internal/Screens/AskingForATitle.phptests/Feature/SearchingForATitleTest.php
- cited by
- lemonfiber-companion@d813497880lemonfiber-companion@f8b56b2cf9lemonfiber-companion@6c7dc35a9blemonfiber-companion@15cc44ec50
Home MUST lead with the member's own titles: what they were part-way through, what they asked for that has arrived, and what they asked for that is on its way. Everything else on Home comes after those. A shelf with nothing in it MUST NOT be drawn.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/Presenters/HowTheirOwnTitlesRead.phpapp-modules/household/src/Internal/Screens/WhatYouCanWatch.phpapp-modules/household/tests/View/Components/ShelfRowTest.phptests/Feature/SeeingWhatYouCanWatchTest.php
- cited by
- lemonfiber-companion@258f6fd1b9lemonfiber-companion@e8c15e991elemonfiber-companion@15cc44ec50
Every title MUST carry its name as text. Where the core serves no artwork for a title, it MUST be drawn as a poster lettered with its name.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/household/src/Internal/ViewModels/HowAPosterIsLettered.phpapp-modules/household/src/View/Components/Hero.phpapp-modules/household/tests/Internal/ViewModels/HowAPosterIsLetteredTest.phpapp-modules/household/tests/View/Components/HeroTest.php
- cited by
- lemonfiber-web@041ad0a774lemonfiber-web@bfbf918845lemonfiber-companion@f8b56b2cf9lemonfiber-companion@15cc44ec50lemonfiber-companion@9794ec21a8
A member MUST be able to choose, from Profile, the language they hear (the title's original, Dutch or English) and the subtitles they read (none, Dutch or English). The choice MUST be kept on the phone for that member on that house, MUST be handed to the player each time a title is opened, and MUST NOT be sent to the house. Where a title offers no sound in the chosen language it MUST play the stream's own default sound, and where it offers no subtitles in the chosen language it MUST play with none; it MUST NOT be refused or reported as a fault for either.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/watching/src/Api/KeepingTheirLanguages.phpapp-modules/device/src/Api/PlatformPlayer.phptests/Contract/LanguagesKeptContractTest.phptests/Contract/PlayingContractTest.phptests/Feature/ChoosingWhatToHearAndReadTest.phptests/Feature/PlayingATitleTest.php
- cited by
- lemonfiber-companion@75608681f4
Somebody invited MUST have a way in of their own: open the invitation, sign in, and land on Home, in at most three steps, each saying which it is, in words that name no part of the system. An invitation opened on a phone that holds no house MUST lead straight to it.
- locked by
- 0.19.0 met
- recorded done
- lemonfiber-companionapp-modules/operator/src/Internal/Screens/JoiningAHouse.phpapp-modules/operator/src/Internal/Screens/YourStacks.phptests/Feature/JoiningAHouseTest.phptests/Feature/TheFirstRunIsASequenceTest.php
- cited by
- lemonfiber-companion@4f077129a2lemonfiber-companion@e22d29101b
The app MUST open lemonfiber://join links (D6-R22), from the platform and from its own scanner, and MUST refuse one with a parameter missing, a parameter it does not know, or an expires in the past, saying in household words that the invitation cannot be used and to ask whoever sent it for a new one.
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/kernel/src/Api/AJoinLink.phpapp-modules/kernel/tests/Api/AJoinLinkTest.phpbootstrap/Composition/NativePHP/ScreenRoutes.phptests/Feature/JoiningAHouseTest.php
- cited by
- lemonfiber-companion@4f077129a2lemonfiber-companion@4f6d457db0lemonfiber-companion@ffdf54bac0
Opening a join link on a phone that holds no house MUST add the house from it, pinned to its fingerprint (N1-R19), MUST ask the person to choose a password for its name where it carries claim, or to sign in where it does not, MUST claim or sign in through the core, and MUST land on Home, in at most three steps (N3-R26). On a phone that holds the link's stack under the same fingerprint, it MUST go straight to choosing a password, or to signing in where the claim is spent or absent.
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/operator/src/Internal/Screens/JoiningAHouse.phpapp-modules/sdk/src/Api/Admissions.phptests/Feature/JoiningAHouseTest.php
- cited by
- lemonfiber-companion@4f077129a2lemonfiber-companion@f844e6af1blemonfiber-companion@4f6d457db0lemonfiber-companion@ffdf54bac0
A join link whose stack the phone holds under a different fingerprint MUST be refused and MUST NOT replace the pin: an invitation is not pairing (N1-R63), and a link a stranger can forward MUST NOT re-pin a house. The refusal MUST say, in household words, that the invitation does not match the house on this phone.
A connection opened from a join link whose certificate does not match the link's fingerprint MUST be refused, as N1-R20 refuses one; the member MUST be told that the invitation could not reach the house it names and to ask whoever sent it for a new one, and MUST NOT be offered re-pairing.