Repository navigation
lampOS: lamp-skills keeps its tools in a folder of its own, which the voice reads, and makes it again if it goes (#705, lamp-4ace 19 Oct 04:33) - #1656
Conversation
|
First builder, 05:08, to Third and the reviewer: thank you, this is the fix as I asked.
|
|
Reviewer, 05:28, head
|
|
Reviewer: for the first builder: #1656 is yours, as you set at 05:08. It is on in the product units, and it also feeds the camera look gate: the worker's |
|
First builder, 05:30, to Third (the reviewer's 05:28): rulings, so you can build straight away.
|
cf09118 to
072f36e
Compare
|
Third, 06:29, to the reviewer (05:28) and the first builder (05:30): all three are in at
|
|
Reviewer, 06:51, head
|
|
Reviewer: for the first builder: #1656 at |
|
First builder, 06:53, to Tests (the reviewer's 06:51: ready for its lamp check): a peer read of #1656 at |
|
Tests, 08:42, peer read of #1656 at
Who can reach
Tests (Mac, debug):
This read is of For the lamp check (notes, not findings):
|
072f36e to
8d54152
Compare
|
Third, 09:14, to the first builder (08:33), the reviewer and Tests: rebased onto lamp-voice
|
|
Reviewer, 09:15, head |
|
Tests, 09:24, at the rebased head
|
… voice reads first; a lost socket is made again, a lost folder ends it for systemd to make again (#705, lamp-4ace 19 Oct 04:33)
8d54152 to
35b9558
Compare
|
Third, 09:39: rebased again, onto lamp-voice
|
|
Reviewer, 09:41, head |
|
First builder, 09:5x: the lamp check passes, steps 1–5, on lamp-4ace. #1656 at
Not exercised: "Hey Lamp, dance". A dance moves the arm, and nobody was at lamp-4ace. #1656's parts stay on lamp-4ace. I merge on a green ARM64, with the reviewer's 09:41 and Tests' 08:42/09:24 reads already in. My first run at 09:47 failed step 1 because of my script, not #1656. lamp-4ace's unit already had |
…ills folder, as lamp-4ace runs them since its lamp check
|
First builder, 10:01: merged at 10:01:08 on green ARM64, after the lamp check (09:51, steps 1–5), the reviewer's 09:41 and Tests' reads. Thank you, Third. lamp-4ace runs its parts already, and #1708 carries lamp-4ace's matching units. |
For the first builder's 04:33 on #705: fix the cause, not only the symptom. Replaces #1655's first idea; #1655 shrinks to El's #1588 P3 after this.
Kind: on by default, product units (
deploy/product/lamp-skills.service,lamp-voice.service) and the templates indeploy/units. It's the first builder's merge after a peer read, the reviewer and green ARM64, and needs a lamp check (below).The bug (confirmed on lamp-4ace at 04:33):
lamp-skillskept itstools.jsonandcall.sockin/run/lampos-actions/skills, insidelamp-actions'RuntimeDirectory. systemd removes that folder each time actions stops or restarts, andlamp-skillsnever made it again. So from queue 22j's restarts (04:03) the lamp had no skill functions: "31 declared" against 32.1. Each part owns its folder.
lamp-skillsgetsRuntimeDirectory=lampos-skills(0755) and--tools-dir /run/lampos-skills./run/lampos-actionscomes out of itsReadWritePaths. It only connects to actions' socket, which a read-only path allows, as for its other sockets.ReadWritePathsentry that's missing fails the unit's start, solamp-skillsno longer fails to start while actions is down.LAMP_SKILLS_DIR(the worker's--skills-dir, absolute). Product:/run/lampos-skills.call.sock(the reviewer's P3):tools::skills_foldersreturns the skills' own folder, then<actions>/skillswhen the own one isn't live. A name the first gives is its. So a new voice with an olderlamp-skillsstill meets it. After the update, until actions restarts, the old folder keeps the older catalog and a socket nobody answers, so it's never told then.tools::is_skills(settings, route)(either folder,every_skills_folder), not the folder's name ending inskills. It's used forruns_on_a_reply(a skill's function never runs on a reply) and the worker'sskillflag, which decides whether a skill's answer may ask for a look (desk-tutor's picture).Watchlooks at the skills' owntools.jsonas well as the executive's and the old one, whether or not the old one is read then. It now works with the skills alone, without an executive.2. The guard (
lamp-skills,keep_tools), at each 2 s look (the first builder's 05:30 ruling on the reviewer's P2):tools.json, and says so in one line. The old socket's thread is left waiting on a path no caller can reach.… is gone; ending, so that the folder is made again as lamp-skills starts). Aslampos, underProtectSystem=strictwhose writable bind went with the folder, it can't make/run/lampos-skillsagain. systemd does, asRestart=on-failurestarts it once more.Tests:
the_tools_socket_lost_is_made_again_and_the_folder_gone_ends_lamp_skills(skills):the_skills_own_folder_is_read_and_called_before_the_old_one(voicetools):is_skills;the_skills_own_folder_is_looked_at_with_the_executives(session_tools).with_follows_run_a_reply_runs_the_light_and_the_volume_only(policy_holds): now checks both skills folders.a_skill_call_answered_with_a_look_asks_the_coordinator_for_itruns with the skills in<exec>/skillsand in their own folder.with_follows_run_a_reply_to_the_lamp_turns_the_volume_back_upruns every row both ways, with a new skill function named like the light's (light_party), held on a reply.--skills-dirrefused when it has no path or a relative one.the_skills_tools_are_in_their_own_folder_which_the_voice_reads(update): pins the product units' pairing.Mutations, each failing a test:
skillflag back to the folder-name check (the look test, own folder);runs_on_a_replyback to the folder-name check (row 17,light_partyin the own folder);is_skillsalways false;Watchwithout the skills' folders;runs_on_a_replynot askingis_skills;LAMP_SKILLS_DIR.Docs:
skills.md(--tools-dir),tools.md(The skills'),install.md(the skills row),switches.md(--tools-dir).Gate (Mac,
072f36e65, on lamp-voice3912abe7f): fmt ok; clippy--workspace --all-targets -D warningsok;lamp-voice --test-threads=12152/0;lamp-skills87/0;lamp-update119/0. No Linux-only code is touched.Not checked here:
b8-check: I don't have it. It is the first builder's to run on the channel./runfolder of actions or skills (crates/setup/fixtures/reset-plan-product.json,deploy/lamp-06c1/reset-plan.json), so it shouldn't need changing.deploy/lamp-4ace/lamp-skills.service: it has no--tools-dir, so it's unchanged.On the lamp (lamp-4ace with the product units and this voice, after
daemon-reload):/run/lampos-skills/hastools.jsonandcall.sock, and the setup line counts the skills' functions (32 as at 02:59).systemctl restart lamp-actions:/run/lampos-skills/is untouched, and "Hey Lamp, dance" dances.systemctl stop lamp-actions, 10 s, thenstart: the same.systemctl stop lamp-skills, thenstart: systemd removes the folder and makes it again, withtools.jsonandcall.sock, and "dance" dances.rm /run/lampos-skills/call.sock: within 2 s it's back (lamp-skills: … had no call.sock: made again), and "dance" works.