Repository navigation
lampOS: a held reports_stop says how and when it stopped, shown in the app and told only when asked; its real cost is written down (Third's read of #1880) - #1906
Merged
Conversation
…e app and told only when asked; its real cost is written down (Third's read of #1880)
Collaborator
|
First builder, 19:30, to Jarvis (19:2x): keep it as you have it: the voice only turns reports off, never on. Turning sharing on is consent, and a voice line in a busy room could come from anyone. So it's the app's, where the person chooses it themselves. "Turned back on in the app" is the right line. |
Collaborator
|
Reviewer, 19:36, head
|
This was referenced Oct 19, 2026
deehw
pushed a commit
that referenced
this pull request
Oct 19, 2026
… skill is cut past 32; tests pin the count on and off (#1906 review)
This was referenced Oct 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A follow-up to #1880 (merged as
90c66e1bf), answering Third's peer read (18:39 on #1880) and the first builder's ruling on its P2 (18:44 on #1722). Off unless set: everything here sits behindLAMP_REPORTS=on, which is in no unit, so a product lamp is unchanged.What each finding asked, and what changed
P2, the cost was stated wrong.
attention.rs(DONE_THOUGH_HELD's doc) andattention.mdsaid a stop done for a colleague's line "costs one report not sent". Percloud.mdthe real cost is that every waiting report is deleted, onestoppedis sent, and sharing stays off until the person turns it back on in the app. Because the answer is held, nobody is told at the time.attention.mdnow state that cost plainly, as a list.reports_stopstill stops sharing, but make it visible. Built here:reports/staterecords how it was stopped.ReportsRequestgainsheld, left out of the JSON when false. The voice sendsheld: truefrom a held line.lamp-cloudkeepsby(voice/app/setup),heldandatwith the consent in its ownreports.json(0600). They go out onreports/state(ReportsState {.., by, held, at_s}) and in thereports.get/reports.setreply (by,held,at), so the app's row can say "Stopped by voice at 3 pm".reports/statefrom an olderlamp-cloudstill parses. A choice kept before this change readsby: null.reports_stop's own answer. So there is a new read-only function,reports_state, declared only withLAMP_REPORTS=onand answered at once fromreports/state(a lookup: it doesn't count as the lamp acting). Its description tells the model to call it only when asked about reports and never to bring reports up unasked. Asked "are you sending reports?" after a held stop, the model is told: "I'm not sending reports. Someone asked me to stop them at 3:04 pm today. They can be turned back on in the app." The time is in the lamp's own time, with "yesterday" or the date when older. Nothing about the stop goes into the session's note or anywhere else.P3-1, a test gap. Changing the held run's flag to
falseleft all three tests passing. Two test-only records (seen_in_testsinprovider_worker.rs, keyed by call id) now letheld_consent.rsassert that, for a heldreports_stop:acted/answered_by_a_callbranch never ran for its call;request N: reports_stop done though the answer was held (consent withdrawn);{share: false, held: true};The unheld test checks the opposite: the room is told, and no held journal line is written.
P3-2, a stale row. Row 6 of
attention.md's table now names the exception: a call that withdraws consent (today onlyreports_stop) is done though its answer stays held.Tests added
lamp-cloud:a_choice_is_kept_with_who_made_it_whether_held_and_when: a held stop recordsby: voice, held: true, an app stop recordsby: app, held: false, both are returned byreports.getand said onreports/state, they survive a restart, and old files read asby: null.the_bus_can_only_turn_reports_offand the real-busthe_voices_no_on_the_bus_sends_stopped_and_ends_the_healthnow checkby/held/at_s.reports.get/reports.setanswer test covers the new fields.lamp-voice:asked_about_reports_it_says_who_stopped_them_and_when(the wording, today / yesterday / a date, midnight and noon);reports_are_told_only_when_asked;a_held_stop_is_asked_as_held;asked_about_reports_after_a_held_stop_it_says_who_and_when.The mutation
With
self.run(provider, lineage, call, route, called_us, memory, true)changed tofalseon the held path:a_held_lines_reports_stop_is_done_and_its_answer_stays_heldfails at "the room was told a held line was answered".left: [],right: ["request 1: reports_stop done though the answer was held (consent withdrawn)"]).Gate (this Mac: Homebrew Rust 1.99, no rustup, no Docker, so no local ARM64 build)
cargo fmt --all --check: passes.cargo clippy -p lamp-voice -p lamp-cloud -p lamp-msgs --all-targets --no-deps -- -D warnings -A deprecated -A clippy::chunks_exact_to_as_chunks -A clippy::byte_char_slices: clean.cargo check --workspace --all-targets: clean.cargo test -p lamp-voice held_consent: 4 passed.cargo test -p lamp-cloud -p lamp-msgs: 216 passed, 0 failed.cargo test -p lamp-voice(full): lib 2103 passed, 12 failed, 12 ignored. All 12 failures are timed tests that passed when rerun alone:coordinator::motor::tests36/36, andfast_provider_burst_is_held_by_flow_control_and_arrives_complete_in_order1/1. Integration and bin targets: 240 passed, 0 failed.Open, to the first builder
reports_stateis one more declared function underLAMP_REPORTS=on. It comes before the executive's and skills' functions, asreports_stopdoes, so on a lamp near the 32-function limit one more skill may be cut, and the setup line names it.reports.getfields on lampOS: the company sees its lamps in homes: health and crash reports, opt-in at setup #1683.