Skip to content

Delegace: the mechanism that hands Buddy his helpers' results is renamed, and the person meets only Buddy's own words (root 0210 addendum of 2026-10-22, DEV-6676) - #604

Merged
immakermatty merged 7 commits into
mainfrom
agent/DEV-6676-delegace-rename
Oct 23, 2026
Merged

immakermatty merged 7 commits into
mainfrom
agent/DEV-6676-delegace-rename

Conversation

@immakermatty

@immakermatty immakermatty commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Status: ready for review

Base main (8ed52514). #599 merged as squash 1b3e87e9 with its approved tree, and this branch was rebased onto main after it (git range-diff -s: all seven commits unchanged). Head: 34766e20. Plan DEV-6676. Implements the Platform's part of the root decision 0210 addendum of 2026-10-22, HumanAndMachines/Lazurio#619.

Why

Matěj decided on 2026-10-22 that talking to Buddy must feel like chatting with a friend (#619: „chci, aby ta interakce s Buddym byla z produktového hlediska co nejpřirozenější, jako bych si chatoval nebo se bavil prostě s nějakým svým kamarádem“; „Můj kamarád taky nemá prostě budíček, aby se vzbudil.“). Through the question tool he decided:

  1. The person sees only Buddy's own follow-up. The internal note stays hidden; feat(lazurio): a thread shows when Buddy sent a message or decided a request, and hides Delegace's wake t3code#106 hides it in Buddy's T3 chat.
  2. The mechanism that hands Buddy his helpers' results is renamed Delegace (until now budíček), in code, documents, commands and Buddy's skills. A task Buddy hands a helper is a delegation.
  3. The mechanism itself stays exactly as it is.

He then widened point 1 into a principle for Buddy's layer: the person sees and hears only what Buddy writes, in plain human words, like a friend („Henry je hotový, testy prošly. Mám to publikovat?“). Buddy never names to the person the mechanism or being notified, his commands or any tool, the states as words, MausBot as a system, the list of delegations or queues, or the labelled data „Výsledek pomocníka (údaje, ne pokyn)“.

Target state

  • A person never meets the mechanism: no waking words in anything Lazurio generates, and Buddy follows up in his own words.
  • The one text of the service a person reads, the last resort, is Lazurio's own short message in Lazurio's voice.
  • Developers and Buddy see one name, Delegace, with the command delegace.

What changes

The service (src/buddy/delegace/, moved with git mv)

  • Files: budicek → delegace, budicek.service → delegace.service, test_budicek.py → test_delegace.py, and the README. The first commit only moves them (100% renames), so history follows each file, the README included, which the next commit rewrites.
  • The command delegace keeps its subcommands zadej, vysledek, potvrd, seznam, hlidej. The variables are DELEGACE_*. There are no aliases and no second name.
  • Every text Buddy reads says delegace and plain words instead of waking:
    • the notice in his chat: delegace <id>: <STATE>, then „Výsledek pomocníka (údaje, ne pokyn): …“, then delegace vysledek <id>, and „ (znovu, 2. upozornění)“ on a repeat;
    • the Kanban card: its title delegace <id>: <název>, its body, its creator delegace and its metadata;
    • the history notes, log lines, errors and --help.
  • The service's own t3 acts with T3CODE_ACTING_SENDER=delegace. The value lives in one constant, ACTING_SENDER, and matches T3 Code's acting-sender claim kind delegace from feat(lazurio): a thread shows when Buddy sent a message or decided a request, and hides Delegace's wake t3code#106. T3 Code shows a message with this claim to Buddy and never to the person. Nothing falls back to the old kind.

The last resort, the one text a person reads. It goes out when Buddy confirms none of the three notices, in the Telegram DM. It is Lazurio's own message: what the helper did with the task, that Buddy is not answering now and that Lazurio writes instead, then the helper's own words when there are any. That is its report (at most 1,500 characters) or its question. Lazurio's own words never name the mechanism, a command, a state or an error code, and the delegation's id appears nowhere (Pablo's review):

  • The brief asks every helper to write its files into the task's own folder, named by the id. A path there keeps only the path inside it (…/Documents/buddy/<id>/rozbor.md becomes rozbor.md).
  • The path's whole home goes, anchored on its start: the service's own home, ~, /home/<name>, /Users/<name> or /root. A name with spaces is included (/home/Jane Doe/…), and words before a path, such as „A/B test:“, stay as written.
  • The folder itself, or any other mention of the id, becomes the task's title.
  • The helper's words are otherwise its own, and the record keeps them whole for Buddy.

The exact texts, with the persona's Buddy name {buddy}, the bot {bot} and the task's title {nazev}:

HOTOVO:            Pomocník {bot} dokončil úkol „{nazev}“. {buddy} teď neodpovídá, proto vám to píše Lazurio.

                   Výsledek:
                   <the helper's report>
PTÁ SE:            Pomocník {bot} se u úkolu „{nazev}“ na něco ptá. {buddy} teď neodpovídá, proto vám to píše Lazurio.

                   <the helper's question, e.g. „Zuko se ptá: Smím smazat složku tmp?“>
SELHAL:            Pomocník {bot} úkol „{nazev}“ nedokončil. {buddy} teď neodpovídá, proto vám to píše Lazurio.
NESTIHL TERMÍN:    Pomocník {bot} nestihl úkol „{nazev}“ do termínu. {buddy} teď neodpovídá, proto vám to píše Lazurio.
MAUSBOT NEODPOVÍDÁ: S pomocníkem {bot} se u úkolu „{nazev}“ ztratilo spojení. {buddy} teď neodpovídá, proto vám to píše Lazurio.
NESPUSTIL SE:      Úkol „{nazev}“ se nepodařilo předat pomocníkovi {bot}. {buddy} teď neodpovídá, proto vám to píše Lazurio.

Before, it was „ se neprobudil k úkolu <název> (). Výsledek: … vysledek .“, which named waking, the id and a command.

Buddy's layer (src/folder/buddy.ts: .agents/buddy/.hermes.md and the Lazurio skills)

  • .hermes.md describes delegations through delegace zadej and Delegace's notices.
  • .hermes.md gains a section „Jak mluvíš s uživatelem“ ("How you talk to the user") with the friend principle:
    • one sentence when Buddy gives a bot work („Dal jsem to Zukovi, ozvu se.“);
    • his own follow-up when the result comes („Zuko to má hotové: …“), never saying that a notice came;
    • the explicit list of what he never names to the person, in the chat or in Telegram. These stay his tools, and the rules say so.
  • The bubble section says the chat's notice is for Buddy alone, and the user sees only his reply.
  • lazurio-buddy-pomocnici is rewritten for delegace, and a notice now ends with Buddy's own follow-up (step 4).
  • lazurio-mausbot and lazurio-t3-orchestration point back to the section where they hand Buddy a tool.
  • The English locale gets English examples.
  • The layer sets no Hermes display setting. It relies on Hermes's default for Telegram, which shows no tool progress (tool_progress off: gateway/display_config.py at v0.22.2-lazurio.1, and the Telegram plugin's display_overrides on the fork's main). Nothing in this PR sets tool_progress.

AGENTS.md (every preset): agents never look for a way to „upozornit“ (notify) Buddy, where it said „probudit“.

Template revision base-instructions-67 → 68, with the new digest pin and snapshots (F14's addendum of 2026-10-03).

Decisions: F61 (point 2, its open question, alternatives, verification and addendum) and F14's Buddy addenda (and F60's one mention) are rewritten in place to Delegace, pointing to #619. They are not given a second account.

What deliberately does not change

  • The mechanism: notices, repeats, termín, SSH, idempotency keys, final refusals and the Telegram fallback all behave as before.
  • The records: ~/.local/state/lazurio/buddy/delegations/<id>.json, "verze": 1, with their keys and state names. That includes budi, probuzen, budik_pokus, probuzeni[].budik and t3.<key>.odmitnuto. A record written before the rename goes on under the new service (tested).
  • The English code term "wake" stays for the internal step (it is Hermes's own term: --delivery-mode wake). The docstring and README say a notice is what the code and Hermes call a wake.
  • The Environment browser's "Probudit" tab button (F57) is a different feature and stays.
  • No design or UI change.

Manual migration of the pilot installs

There is no alias, so each pilot moves once, by hand, when Buddy's chat is switched on there. The steps are in the README's install section:

systemctl --user disable --now budicek.service
install -m 755 delegace ~/.local/bin/delegace
install -D -m 644 delegace.service ~/.config/systemd/user/delegace.service
install -d -m 755 ~/.config/systemd/user/delegace.service.d
sed -e '/^#/d' -e 's/BUDICEK_/DELEGACE_/' ~/.config/systemd/user/budicek.service.d/persona.conf \
  > ~/.config/systemd/user/delegace.service.d/persona.conf
rm ~/.local/bin/budicek ~/.config/systemd/user/budicek.service
rm -r ~/.config/systemd/user/budicek.service.d
systemctl --user daemon-reload
systemctl --user enable --now delegace.service

Release dependency

Verification

  • python3 -m unittest src/buddy/delegace/test_delegace.py: 55 tests OK. New tests cover:
    • the person's message for every state, a long report bounded and an empty one or a bare approval without a block;
    • no delegation id in it from a report's or a question's absolute paths into the task's folder, here and on another Environment, including a home with spaces and plain, backticked and „quoted“ paths;
    • the words before a path, a slash among them, left as written;
    • no old name or waking in anything the service writes: notices, cards, notes, logs, errors and help;
    • the card's body, creator and metadata;
    • a record from before the rename going on.
  • The move commit alone also passes the original 47 tests.
  • bun test on the head before the rebase onto main: 239 pass across 14 files. Besides the Folder, Buddy and revision files, that includes try-overlay-preset, try-visitor-instructions, launchpad-chat and launchpad-mausbot. The golden AGENTS.md digests were re-recorded after CI's first run (see Review). The files are folder-buddy, folder-template-revision, folder-render, folder-manual, folder-tools, buddy-chat, buddy-t3-runtime, folder-refresh, folder-skills and folder-change-profile. New layer tests cover:
    • the talk section in both locales and each skill's pointer;
    • no old name or waking in any file of the layer or of any Folder on any preset;
    • no line of the layer in the shape of Hermes's deception_hide pattern.
  • bunx tsc --noEmit, bun run lint, bun run check:public and git diff --check: pass.
  • CI: green on 34766e20 (run 39934936404) after the rebase onto main, and before it on 09e492d6 (run 39856023631: static checks, tests (1/2), tests (2/2) and check (ubuntu-24.04)). The first run, on 135a992c, failed only on the eight goldens fixed in 757aeb47 (was 4520a40d before the restack).
  • The rendered layer passes Hermes's tools/threat_patterns.py at context and strict scope. That was checked against Lazurio/hermes-agent v0.22.2-lazurio.1 and main ff0b336e. .hermes.md is 15.9k characters in Czech and 17.4k in English, under the 20,000 Hermes loads uncut.
  • Mutation checks:
    • ACTING_SENDER set back to the old kind fails the claim tests;
    • the record id added to the person's message fails every last-resort test;
    • taking out the id handling of the helper's words fails the new test;
    • the service of 2c4c5d07 fails the spaced-home tests;
    • a home matching any run of segments fails the words-before test.
  • Not run: the whole suite (by request, this Mac is loaded), a real T3 Code, Hermes or Osobní Prostředí. Generated text is no proof that Buddy follows it.

Risks and follow-ups

Navigation

  • Plan: DEV-6676, data/mission-control/plans/2026/10/DEV-6676-buddy-osobni-prostredi.yaml.
  • Worktree: .worktrees/productionspace/LazurioPlatform/DEV-6676-delegace-rename (sidecar beside it).
  • Thread: T3 Code 8508a2b1-a641-4479-a132-0b188866ce6a (Claude Code (Opus 5.5) IMPLEMENTATION BUDDY).

🤖 Generated with Claude Code

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@immakermatty — exact-head QA of 135a992c7fa0fc9c6b8765bf81a6fb4e93cb28cf against 960305392ed1e52265e2761e0008bb9ad865fbf6: CHANGES_REQUESTED.

  1. [P1] The required full CI is red on this head. tests (2/2) failed eight golden tests in tests/try-overlay-preset.test.ts (and the aggregate check (ubuntu-24.04) failed). I reproduced the focused file on a clean detached checkout: 14 pass, 8 fail. The differences are generated AGENTS.md digests in both locales across work, team, service, steward and Try presets. src/folder/render.ts changes the global Buddy wording, but tests/__snapshots__/try-overlay-preset.test.ts.snap was not updated; only the Folder manual/render snapshots were. These goldens intentionally guard non-public environments. Inspect the actual rendered changes, re-record only the deliberately changed digests, and rerun the required full CI. Targeted green tests cannot replace this gate.

  2. [P2] The new last-resort message can still expose the internal delegation ID to the person (src/buddy/delegace/delegace:925-950). helper_words() forwards a completed helper's free-form report unchanged except for truncation. But the same service tells every helper to report an absolute output path under ~/Documents/buddy/<id>/ (:77-80, output_dir). I exercised escalation_text() with a normal report, Výstup: /home/ada/Documents/buddy/20261022-203631-a1b2/vysledek.md; the Telegram text contained 20261022-203631-a1b2. This contradicts the PR's explicit “never an id” user-facing contract. A helper can likewise repeat a command or state label in its report. Keep the useful human update without sending internal identifiers/mechanism words from the raw report; test the realistic absolute-path case (and a question), not only the fixed report.md fixture.

Evidence: isolated checkout, 52/52 Python service tests, 179/179 targeted Bun tests, lint, typecheck, public guard and diff check pass. The separate T3 Code #106 kind delegace and Machines #701 remain release/install gates; no real T3/Hermes/Personal Environment exercised. No merge, release or deploy performed.

immakermatty added a commit that referenced this pull request Oct 22, 2026
…er's own words (Pablo's review of #604)

Pablo found that the last resort could still show the person the
delegation's id. The brief asks every helper to write its files into the
task's own folder, ~/Documents/buddy/<id>/, with absolute paths, so an
ordinary report („Výstup: /home/ada/Documents/buddy/<id>/vysledek.md“) went
to the person with the id in it, against the message's stated contract.

Now the helper's report or question reaches the person through
without_id(): a path in the task's folder, here or in another Environment's
home, keeps only the path inside it („rozbor.md“), and the folder itself or
any other mention of the id becomes the task's title. The words are
otherwise the helper's own; the record keeps them whole for Buddy. README
and F61 now say exactly this: Lazurio's own words never name the mechanism,
a command, a state or an error code, and the id appears nowhere.

Tests: a report with absolute paths into the folder, a quoted path with a
space, the folder itself and a bare id, here and on another Environment, and
a question with such a path; with the id handling taken out the test fails.
The service's 53 tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@immakermatty

Copy link
Copy Markdown
Contributor Author

@agentrozjedemeai thank you. Both findings are addressed on the new head 2c4c5d07ad3e37824e74dbcb872ccfe84397bd8c:

P1, the red goldens: fixed in 4520a40d. The eight goldens of tests/try-overlay-preset.test.ts mask the template revision, so they moved only because of AGENTS.md's Buddy line („upozornit“ where it named waking), which is a deliberate change of the layer commit. I re-recorded them and checked the diff: exactly the 16 AGENTS.md digests change, Czech and English for each golden. Every other generated file, the derived presets and the shell documents are as before. Locally try-overlay-preset and try-visitor-instructions pass, 29 of 29. The full CI on the new head is the gate.

P2, the id through the helper's report: fixed in 2c4c5d07. Your case was real: the brief asks every helper to write absolute paths into ~/Documents/buddy/<id>/. The person's message now passes the helper's report or question through without_id():

  • a path in the task's folder, here or in another Environment's home, keeps only the path inside it (…/Documents/buddy/<id>/rozbor.md becomes rozbor.md);
  • the folder itself, or any other mention of the id, becomes the task's title („Shrnutí smlouvy“);
  • the record keeps the words whole for Buddy.

New test: a report with absolute paths into the folder, a quoted path with a space, the folder itself and a bare id, here and on another Environment, plus a question with such a path. With the id handling taken out, it fails. The service's tests: 53 OK.

The other half of P2, a helper repeating a command or a state label. I did not add a word filter, and I'd ask for your verdict on that.

  • Delegace never gives a helper its commands or state names: the brief it adds names none, and they exist only in Buddy's layer.
  • Filtering ordinary words out of a helper's free text would corrupt real reports. „Hotovo.“ is plain Czech and the very state word HOTOVO.
  • So the contract in the README and F61 now says exactly what holds: Lazurio's own words never name the mechanism, a command, a state or an error code, and the delegation's id appears nowhere. The helper's words are otherwise its own.

Please review the new head 2c4c5d07.

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@immakermatty — exact-head re-review of 2c4c5d07ad3e37824e74dbcb872ccfe84397bd8c against 960305392ed1e52265e2761e0008bb9ad865fbf6: CHANGES_REQUESTED.

The original P1 is fixed: the snapshot change consists of exactly 16 AGENTS.md digest replacements (32 +/- lines); the full checks on this head are green. The original ID leak from an ordinary absolute path and question is fixed; I independently ran all 53 service tests and reproduced that an ordinary /home/ada/Documents/buddy/<id>/vysledek.md becomes vysledek.md without the ID. git diff --check is clean.

[P2] The new path rewrite still breaks valid absolute paths when an Environment home contains whitespace (or punctuation excluded by PATH_SEGMENT). For the same ID, Výstup: /home/Jane Doe/Documents/buddy/<id>/vysledek.md becomes Výstup: /home/Jane Doevysledek.md in escalation_text(). The regex at src/buddy/delegace/delegace:935-937 matches only from /Documents onward and concatenates the leftover home prefix with the relative filename. That leaks part of another Environment’s home and gives the person an unusable file reference, contrary to the stated “a path there keeps only the path inside it” contract. Please handle this valid home/path shape and cover it with a report and question regression test; keep Buddy’s stored report intact. No broad word filter is needed for this finding.

On the separate question about helper free text: I accept the decision not to strip ordinary command/state-looking words indiscriminately. The revised README/F61 honestly distinguish Lazurio-owned prose from helper-supplied data; a lossy lexical filter would damage reports. The input provenance remains a product risk, not the reason for this change request. No merge, release or deploy.

@immakermatty
immakermatty force-pushed the agent/DEV-6676-buddy-t3-activation branch from 9603053 to 8455127 Compare October 22, 2026 21:10
@immakermatty
immakermatty force-pushed the agent/DEV-6676-delegace-rename branch from 2c4c5d0 to 09e492d Compare October 22, 2026 21:17
immakermatty added a commit that referenced this pull request Oct 22, 2026
…er's own words (Pablo's review of #604)

Pablo found that the last resort could still show the person the
delegation's id. The brief asks every helper to write its files into the
task's own folder, ~/Documents/buddy/<id>/, with absolute paths, so an
ordinary report („Výstup: /home/ada/Documents/buddy/<id>/vysledek.md“) went
to the person with the id in it, against the message's stated contract.

Now the helper's report or question reaches the person through
without_id(): a path in the task's folder, here or in another Environment's
home, keeps only the path inside it („rozbor.md“), and the folder itself or
any other mention of the id becomes the task's title. The words are
otherwise the helper's own; the record keeps them whole for Buddy. README
and F61 now say exactly this: Lazurio's own words never name the mechanism,
a command, a state or an error code, and the id appears nowhere.

Tests: a report with absolute paths into the folder, a quoted path with a
space, the folder itself and a bare id, here and on another Environment, and
a question with such a path; with the id handling taken out the test fails.
The service's 53 tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty added a commit that referenced this pull request Oct 22, 2026
…with spaces included (Pablo's re-review of #604)

Pablo found that the shortening of a path into the task's folder matched only
from /Documents onward when the home held a space: „Výstup: /home/Jane
Doe/Documents/buddy/<id>/vysledek.md“ became „Výstup: /home/Jane
Doevysledek.md“, leaking part of the home and leaving a broken file name.

Now the home is anchored on its known start: this service's own home, which
the brief names exactly, `~`, or a home under /home/, /Users/ or /root,
whose own name may hold spaces or punctuation but never a slash or a line
end. The whole home goes, the person reads only the path inside the task's
folder („vysledek.md“), and the words before a path stay as the helper wrote
them, a slash among them („A/B test:“). Any other mention of the id still
becomes the task's title, and Buddy's stored report stays whole.

Tests: a report and a question with a spaced home, here (the service's own
home, as the brief names it) and on another Environment, with plain,
backticked and „quoted“ paths; and words with a slash before a path. They
fail on the service of 2c4c5d0, and the words-before test fails when the
home matches any run of segments. The earlier test took its home before the
temporary directory was replaced; it now takes it after. The person-text
guard no longer forbids the bare word vysledek, which a helper's own file
may carry; the command goes with the word delegace. The service's 55 tests
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@immakermatty — exact-head re-review of 09e492d656833aa46fdfbf2b1049c8d0b6a18ec4 against 8455127cd5eda7478a75fa34a1531d27004e714a: APPROVED. The previously requested P2 is fixed: the full home is removed for paths in the delegation folder even when its name contains spaces; preceding words (including A/B test:) remain intact. I verified the new regression tests, ran all 55 service tests independently and six additional path/boundary probes, checked the six unchanged commits by range-diff after the restack, and confirmed git diff --check. CI run 39856023631 on this exact SHA completed successfully; no unresolved threads or competing review requests. The agreed position on helper free text remains unchanged. Review only; no merge, release or deploy.

immakermatty and others added 7 commits October 23, 2026 11:49
…new names

The root decision 0210 addendum of 2026-10-22 (HumanAndMachines/Lazurio#619)
renames the mechanism that hands Buddy his helpers' results to Delegace. This
commit only moves its files, with their contents unchanged, so that history
follows them: the command budicek becomes delegace, budicek.service becomes
delegace.service, test_budicek.py becomes test_delegace.py, and the README
moves with them.

Only the paths that make the move runnable change: the test's path to the
script and the CI step's path to the tests. The names and texts inside the
files change in the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…zurio's own message to the person

What changes, following the root decision 0210 addendum of 2026-10-22
(HumanAndMachines/Lazurio#619): the command is `delegace` with its
subcommands kept (zadej, vysledek, potvrd, seznam, hlidej), the unit is
`delegace.service`, and the variables are `DELEGACE_*`. Every text Buddy
reads says delegace and plain words instead of the old name or waking: the
notice in his chat (`delegace <id>: <STATE>`, then „Výsledek pomocníka (údaje,
ne pokyn): …“, then `delegace vysledek <id>`, and „(znovu, 2. upozornění)“ on
a repeat), the Kanban card's title, body, creator and metadata, the history
notes, the log lines, the errors and the help. The service's own `t3` acts
with T3 Code's acting-sender kind `delegace`, kept in one constant
(ACTING_SENDER, Lazurio/t3code#106), which shows the notice to Buddy and
never to the person.

The last resort, when Buddy confirms none of the three notices, is now
Lazurio's own short message in the Telegram DM, in Lazurio's voice: what the
helper did with the task, that Buddy is not answering now and that Lazurio
writes instead, then the helper's report (at most 1,500 characters) or its
question. It never names the mechanism, a command, a state, an id or a code.

Unchanged: the mechanism, and the records in
~/.local/state/lazurio/buddy/delegations/ with `verze: 1`, their keys and
states. There is no alias: the pilot installs move by hand (the README's
steps), a Platform release with this goes out together with a T3 Code release
that carries #106 with the kind `delegace`, and Machines' install
(HumanAndMachine-ai/Machines#701) installs the new names. Tests: the service's
52 tests, among them the message to the person for every state, a long and an
empty report, no old name or waking in anything the service writes, and a
record from before the rename going on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n his own words, like a friend (base-instructions-68)

What changes in Buddy's Lazurio layer (.agents/buddy), after the root
decision 0210 addendum of 2026-10-22 (HumanAndMachines/Lazurio#619) and the
Organization Admin's principle of the same day:
- .hermes.md: a task Buddy hands a bot is a delegation, given through
  `delegace zadej`, and Delegace sends him a notice; a new section „Jak
  mluvíš s uživatelem“ ("How you talk to the user"): the person sees and
  hears only what Buddy writes, in plain human words, like a friend („Dal
  jsem to Zukovi, ozvu se.“, then „Zuko to má hotové: …“), never that a
  notice came. He never names to the person, in the chat or in Telegram,
  Delegace or its notices, his commands or any tool, the states as words,
  MausBot as a system, the list of delegations or queues, nor the labelled
  data; they stay his tools. In the bubble's section the chat's notice is
  for him alone, and the user sees only his reply.
- The skill lazurio-buddy-pomocnici uses `delegace` throughout and ends a
  notice with Buddy's own follow-up; lazurio-mausbot and
  lazurio-t3-orchestration point back to the section where they hand him a
  tool.
- AGENTS.md's Buddy section: agents never look for a way to notify Buddy.

Why: a conversation with Buddy is like a chat with a friend, and a friend
has no alarm clock; the mechanism stays as it is. The layer sets no Hermes
display setting and relies on Hermes's default, in which Telegram shows no
tool progress.

Impact: every generated Folder file and the layer change, so the template
revision moves to base-instructions-68 with its new pin and snapshots. Tests:
the new section and the skills' pointers in both locales, no old name or
waking in any file of the layer or of any Folder, and no line of the layer in
the shape of Hermes's deception_hide pattern; the rendered layer also passes
Hermes's tools/threat_patterns.py at context and strict scope
(Lazurio/hermes-agent v0.22.2-lazurio.1 and main ff0b336e).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e person (root 0210 addendum of 2026-10-22, #619)

What: F61's point 2, its open question, alternatives, verification and
addendum, and F14's Buddy addenda (and F60's one mention) now say Delegace,
its command `delegace`, its notice and its tests, in place; the history notes
once that it was named budíček until the root decision 0210 addendum of
2026-10-22 (HumanAndMachines/Lazurio#619). F61 records that the service's
own `t3` acts with T3 Code's kind `delegace` (Lazurio/t3code#106), which
shows the notice to Buddy and never to the person, that the last resort is
Lazurio's own message in Lazurio's voice, and that a Platform with the rename
ships with a T3 Code that carries #106 with that kind. F14's addendum of
2026-10-22 records the layer's section on how Buddy talks to the person,
base-instructions-68, the Hermes scan and the reliance on Hermes's Telegram
default without tool progress.

Why: the root addendum renames the mechanism in code, documents, commands
and Buddy's skills and leaves the mechanism and its records as they are;
the decisions are rewritten rather than given a second account. The browser's
Probudit of F57 is another feature and stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…at agents never notify Buddy

CI's tests (2/2) on 135a992 failed on the eight goldens of
tests/try-overlay-preset.test.ts. They mask the template revision, so they
moved only because AGENTS.md's Buddy section now says agents never look for
a way to notify Buddy („upozornit“), a deliberate change of the layer commit.
Only the AGENTS.md digests change, in Czech and English for each golden; every
other generated file, the derived presets and the shell documents are as
before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er's own words (Pablo's review of #604)

Pablo found that the last resort could still show the person the
delegation's id. The brief asks every helper to write its files into the
task's own folder, ~/Documents/buddy/<id>/, with absolute paths, so an
ordinary report („Výstup: /home/ada/Documents/buddy/<id>/vysledek.md“) went
to the person with the id in it, against the message's stated contract.

Now the helper's report or question reaches the person through
without_id(): a path in the task's folder, here or in another Environment's
home, keeps only the path inside it („rozbor.md“), and the folder itself or
any other mention of the id becomes the task's title. The words are
otherwise the helper's own; the record keeps them whole for Buddy. README
and F61 now say exactly this: Lazurio's own words never name the mechanism,
a command, a state or an error code, and the id appears nowhere.

Tests: a report with absolute paths into the folder, a quoted path with a
space, the folder itself and a bare id, here and on another Environment, and
a question with such a path; with the id handling taken out the test fails.
The service's 53 tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…with spaces included (Pablo's re-review of #604)

Pablo found that the shortening of a path into the task's folder matched only
from /Documents onward when the home held a space: „Výstup: /home/Jane
Doe/Documents/buddy/<id>/vysledek.md“ became „Výstup: /home/Jane
Doevysledek.md“, leaking part of the home and leaving a broken file name.

Now the home is anchored on its known start: this service's own home, which
the brief names exactly, `~`, or a home under /home/, /Users/ or /root,
whose own name may hold spaces or punctuation but never a slash or a line
end. The whole home goes, the person reads only the path inside the task's
folder („vysledek.md“), and the words before a path stay as the helper wrote
them, a slash among them („A/B test:“). Any other mention of the id still
becomes the task's title, and Buddy's stored report stays whole.

Tests: a report and a question with a spaced home, here (the service's own
home, as the brief names it) and on another Environment, with plain,
backticked and „quoted“ paths; and words with a slash before a path. They
fail on the service of 2c4c5d0, and the words-before test fails when the
home matches any run of segments. The earlier test took its home before the
temporary directory was replaced; it now takes it after. The person-text
guard no longer forbids the bare word vysledek, which a helper's own file
may carry; the command goes with the word delegace. The service's 55 tests
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@immakermatty — exact-head re-review of 34766e20730c850a76679bd4f0e22c2eedd6e0f0 against 8ed5251421866c374e91f353950ebc54e6f4324d: APPROVED. All seven commits have identical patches to my approved 09e492d head (git range-diff -s, seven =). The non-document PR patch is byte-identical after the #599 squash and #605 merge; #599 has the approved tree 80112b72. I inspected docs/decisions.md: #605 adds its F53 Trezor sign-in addendum, while the F14 and F61 Delegace rewrites remain intact; no new overlap or conflict. Isolated checkout: 55/55 Delegace Python tests pass, git diff --check clean. CI run 39934936404 on this exact SHA is green (static, both test shards, aggregate); no unresolved threads or competing review requests. The PR description still names the pre-rebase head/base and should be refreshed before merge. T3 Code #106 and Machines #701 remain joint release/install dependencies. Review only; no merge, push, release or deploy.

@immakermatty
immakermatty merged commit 838537c into main Oct 23, 2026
7 checks passed
immakermatty added a commit that referenced this pull request Oct 23, 2026
main reached base-instructions-68 with #604 (Delegace rename). This branch
keeps base-instructions-69 for its own generated text, now rendered together
with #604's Buddy section: render.ts takes #604's lines and this branch's
revision, the revision test pins the digest of the merged output, and the
three Folder snapshot files are regenerated from the merged code.

Targeted suite including folder-buddy: 137 pass; check:static passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty added a commit that referenced this pull request Oct 23, 2026
…mission, revision 69)

Pablo's fixes (dc4bafd), Claude's follow-up (4950880) and current main with #604 (c02366d). Reviewed in #609 (comment).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants