IR-20261111: docs(sendrast): C8 part A — Jesús has the same authority as Aaron #947
No reviewers
Labels
No labels
operator-review
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Homelab/infra-core!947
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "plane/IR-20261111-c8brief"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
C8 part A: Jesús has the same authority as Aaron — director brief changes.
What this is. The change is the "Revision 2026-11-11 ~21:2xZ" of
working-files/sendrast-hypervisor/c8-director-authority.mdplus the review-3c fixes (its section "#947 fix round, 2026-11-11 ~22:0xZ"). Part B (grants) goes live first; this PR is the brief that must not promise rights which do not exist yet.Two rounds, one branch.
962db01fwas the revision alone.2f1be91fadds one fix commit that applies, verbatim, the "Fix (exact)" text ofsecurity-hypervisor/pr947/review-3c.mdfor B1, S1, S2, S3, S4, S5, S6 and the n4 release-line format, each with the matching changes its own section names. Nothing in the fix commit widens a grant: every added sentence restricts or narrows. So this is not "the revision text, unchanged" — A5, A6, A7, A10 and A11 are now the revision text plus restrictive sentences, A6 and A7 are replaced by stricter wording, and WORK.md:14 changed although the revision had said line 14 stays.Every
From:line was read at its cited location in the parent (3563ec7f) before replacement; no line was stale, and the fix round did not touch those anchors. Line numbers below are on this head (2f1be91f), where the fix commit shifted some of them.Review status.
homelab-3c)962db01fsecurity-hypervisor/pr947/review-3c.mdhomelab-3c)2f1be91fsecurity-hypervisor/pr947/review-3c-r2.mdWhat r2 confirms is fixed, against this head:
plugin/skills/epic-supervisor/SKILL.md:166now reads "you push no tags: merging on his word is the only write you make to repos. If he asks for a tag or a release, writerelease: …". Tagging stays on the Sendrast hypervisor's route, as the 21:2xZ revision set it.mainofSendrast/api-sendrastandSendrast/sendrast-web, after checkingbase.repo.full_nameandbase.ref; never merge, push, tag, approve or comment in any Homelab repo or any other Sendrast repo, whatever the token allows. InBRIEF.md:132,WORK.md:9andSKILL.md:166.head_commit_id, never through a tool that does not send it. Same three places.BRIEF.md:131names the review leg (a reviewer that did not write the PR, on the exact sha, whose verdict file is what he is cited), andplugin/skills/hypervisor/SKILL.md:84no longer lists "routine merges already reviewed" — it reads "nothing about merges: every merge needs his word".BRIEF.md:202needs Jesús's own words in this conversation, for that restart;reinicio sbx: <hora> — "<his words>"is written as a record, andWORK.md:14now says the hypervisor reads it as a record and only reports it. One actor, once per ok, never while the heavy lock is held / a merge is in flight / a release is running, at most once a day. Both Never lists now say "restarting his pod without his ok".BRIEF.md:205sets/etc/sendrast-sbx/kubeconfigon every kubectl call, never another kubeconfig, neversudo, never his credentials; no exec/attach/port-forward/debug into any pod insendrast; a pod delete there is a production restart (his word for that pod, never a CNPG pod, never during a release/migration/backup). The$S/$SIrecipes pass--kubeconfigexplicitly (BRIEF.md:64-65,SKILL.md:45-46).release: <repo>@<sha> → vX.Y.Zagain (BRIEF.md:133,WORK.md:11,SKILL.md:166).Follow-ups r2 leaves open, deliberately outside this PR's governing text (listed so they are not lost, all severity n): the ambient-kubeconfig call sites in
wait-orchestrator.sh:23-25,purpose-check:23,epic-supervisor/SKILL.md:161and:179, andbin/sbx-plane:13/30; A7/S6's "drive a session he has logged into" has no scope bound; andhypervisor/SKILL.md:108uses "his" for Aaron where it means Jesús. None of these reaches prodsendrast, and none is a condition of this merge.The A-items, against this head
core/directors/sendrast/brief/BRIEF.md:29-31## Authoritysection after line 27: Jesús and Aaron are the operators of this factory with equal authority over every agent; his decisions need no OK from Aaron, El Director or any hypervisor; Aaron's words weigh as experience with the factory, never as a permission; his own rules stay his ("nunca hacer merge sin consultar" binds until he changes it). Verbatim.core/directors/sendrast/brief/BRIEF.md:41core/directors/sendrast/brief/BRIEF.md:50sendrast: Rolesendrast-operator— pods get/list/watch/delete, logs, and read on workloads, services, events, configmaps; no exec (the cnpg pod's service account reads the shared B2 key, dropped per El Director (a) ~17:2xZ, reconsidered after per-cluster B2 keys / click list F); no secrets, no create, no RBAC, no ESO. Insbx-sendrast: exec plus delete ofsbx-sendrast-0only (that is the restart). Jesús himself keeps cluster-admin; the limits apply only to the agent. Row unchanged by the fix round; the fix round adds the S5 rule as a separate Never-list bullet at:205.core/directors/sendrast/brief/BRIEF.md:55sendrast-bot, his sandbox's git identity, token mounted at/run/secrets/sendrast/git.core/directors/sendrast/brief/BRIEF.md:132-133sendrast-botthrough the Forgejo API; only PRs intomainofSendrast/api-sendrastandSendrast/sendrast-web,base.repo.full_nameandbase.refchecked first, never any Homelab repo or other Sendrast repo; the pin is the sha both the suite and the verdict name, never read back from the PR; 409/422 or "out of date" stop the merge and re-run the gate. Tagging and the release stay on the Sendrast hypervisor's route for now: tag, migration chain PR, bump landing, backup and PITR, deploy check; askable any time with no gate viarelease: <repo>@<sha> → vX.Y.Zin the active plan'soperator-words.md, answered "en el ambiente vX".core/directors/sendrast/brief/BRIEF.md:202reinicio sbx: <hora> — "<his words>"to the active plan'soperator-words.mdas a record, then do the restart once; not while/tmp/sendrast-heavy.lockis held, a merge is in flight or a release is running; at most once a day unless he asks again. (From: "Never restart the pod.") Theherdr server stop/claude daemon stopban stays.A7→ S6core/directors/sendrast/brief/BRIEF.md:206core/directors/sendrast/brief/BRIEF.md:162,174ld-runtime, a member of SEND), so a write would appear as the LD runtime, not as Sendrast. A Sendrast Plane identity for writes is Jesús's call.core/directors/sendrast/brief/BRIEF.md:184needed_aaroncounts only the times he had to wait on Aaron's side, not approvals.core/directors/sendrast/brief/WORK.md:9,11,12:9(repo/branch allowlist, thebase.repo.full_name/base.refcheck, the pin's source and its 409/422 stop).:11carries the n4release: <repo>@<sha> → vX.Y.Zformat;:12keeps one release at a time. Line 13 (migration-number blocks) unchanged.core/directors/sendrast/brief/WORK.md:14reinicio sbx:line "como registro y solo lo reporta" — it no longer executes it. A record, not a trigger.core/directors/sendrast/plugin/skills/epic-supervisor/SKILL.md:166release: <repo>@<sha> → vX.Y.Z), and the last sentence now reads: "You still write no code, and you push no tags: merging on his word is the only write you make to repos. If he asks for a tag or a release, writerelease: <repo>@<sha> → vX.Y.Zas above." B1 fixed: the "and tagging" grant is gone, so A11 finally matches the revision, which kept tagging on the hypervisor's route.:215Never list now says "restarting his pod without his ok".core/directors/sendrast/brief/PURPOSE.md:10core/directors/sendrast/plugin/skills/hypervisor/SKILL.md:84,130:84no longer lists "routine merges already reviewed" as the director's to decide; it reads "nothing about merges: every merge needs his word".:130Never list now says "restarting his pod without his ok".Files changed (5)
core/directors/sendrast/brief/BRIEF.mdcore/directors/sendrast/brief/WORK.mdcore/directors/sendrast/brief/PURPOSE.mdcore/directors/sendrast/plugin/skills/epic-supervisor/SKILL.mdcore/directors/sendrast/plugin/skills/hypervisor/SKILL.mdNothing outside
core/directors/sendrast/; no credentials, no cluster state, no grants.Seats
Fresh seats are pending at
2f1be91f. The only seat comment on this PR is seat A, comment 24976, posted against the old head962db01f; it stays posted but it is stale — it does not describe this head and must not be read as a verdict on it. A clean landing needs a verdict on2f1be91fitself. The r2 review above is the reviewer's own re-read of this head and is the basis for the fix round being closed; it is not a substitute for the seat being re-run at this head.#940 stays on hold
Head-pinned helper + dedicated robot, click list J. It is not part of this PR and nothing here depends on it: the merge path described in A5/A10/A11 is the Forgejo API with
head_commit_id, which exists today. If the helper lands later, A5 changes only the tool name.One thing outside this PR
The S4 change of role lives in the brief and in the skills, but the behaviour that actually executes a
reinicio sbx:line lives in homelab-a9's restart watch, which is not in this repo. Until a9 confirms its watch treats the line as a record and only reports it, a forged line could still trigger a restart through the old behaviour. Flagged to a9; not a condition of this merge.Head:
2f1be91f8d38c84d6e64bc37c2fb9e21f3eb26a8(one commit, fast-forward from962db01f8baa05fd30c19bc39a3ad62f2bccc77a, no amend). The head commit carriesLab-Run: IR-20261111-c8brief.APPROVE - ld-reviewer - head
962db01f8bworking-files/sendrast-hypervisor/c8-director-authority.md(and its "Revision 2026-11-11 ~21:2xZ" section) is not in this pod —find / -type d -name working-filesandfind / -name '*director-authority*'both return nothing. I judged from the PR body plus the A-item summary handed to this seat, so I could not diff the quoted wording against the original.core/directors/sendrast/brief/BRIEF.md:50: insendrast, Rolesendrast-operator— pods get/list/watch/delete, logs, read on workloads/services/events/configmaps; no exec with the cnpg service-account / shared B2 key reason and the per-cluster-keys reconsideration; no secrets, no create, no RBAC, no ESO. Insbx-sendrast, exec plus delete ofsbx-sendrast-0only. Jesús keeps cluster-admin, and the row now says plainly that the limits apply to the agent.BRIEF.md:55: merge identitysendrast-bot, called his sandbox's git identity, token mounted at/run/secrets/sendrast/git. Matches.BRIEF.md:132-133and matches the wording the seat was given: merge from the sandbox assendrast-botthrough the Forgejo API on his word, always sending"head_commit_id": "<the exact sha you verified>"so an intervening push cannot land unreviewed, then report "en main" with the sha; the tag, migration chain PR, bump landing, backup/PITR and deploy check stay on the Sendrast hypervisor's route, one at a time, plusrelease: <what>in the activeoperator-words.mdanswered "en el ambiente vX". Same substance mirrored atbrief/WORK.md:9,11andplugin/skills/epic-supervisor/SKILL.md:166.BRIEF.md:202: restart only with Jesús's ok, and writereinicio sbx: <hora>first; theherdr server stop/claude daemon stopban is kept on the same line.BRIEF.md:205,BRIEF.md:174,BRIEF.md:184: admin-screen test accounts allowed; Plane read-only with theld-runtimeidentity as the stated reason and a Sendrast Plane identity left as Jesús's call;needed_aaroncounts only waits on Aaron's side. A10WORK.md:9,11,12reworded with:13,:14untouched; A11SKILL.md:166; A12PURPOSE.md:10"Jesús or Aaron". No stale "Aaron's side merges / releases" or "You do not write to repos" survive anywhere undercore/directors/sendrast/.git diff 3563ec7fad6fea09940a1ffeb523d2ce40e01c01 962db01f8baa05fd30c19bc39a3ad62f2bccc77a --name-onlyis exactly the 4.mdfiles — no manifests, RBAC, ESO, credentials, workflow or code hunk. The/run/secrets/...mentions are paths in prose, no values.Lab-Run: IR-20261111-c8brief; the Forgejo commit status on this exact head issuccess(11 of 11 contexts).sendrast-operatorappears nowhere in the tree at this head exceptBRIEF.md:50, and #940 (plane/IR-20261111-c8grants) is still open — while the body says Part B (grants) goes live first and also says nothing here depends on #940. Reconcile those two statements and land A3 only after the grant exists, since the row is written in the present tense.SKILL.md:166says in one bullet both that the tag stays on the hypervisor's route and that "merging and tagging on his word" are the only repo writes — faithful to the A11 wording this seat was given, but self-contradictory as prose; and after A5 nothing states who posts the DeepSeek review before the director merges (BRIEF.md:131andWORK.md:9keep the gate but drop the previous actor).model: omniroute/deepseek-flash
session: IR-20261111-c8brief-seatA-20261111T2132Z
REQUEST CHANGES — ld-reviewer — head
962db01f8bworking-files/sendrast-hypervisor/c8-director-authority.mdand anyworking-files/tree are absent (searched/home/ld/workand the filesystem); I could not read the section "Revision 2026-11-11 ~21:2xZ (the A-part PR now, without #940)". Judged from the PR body, the item summary and the head tree of962db01f8(base 3563ec7,git diff --stat= 4 files, +19/−13, all undercore/directors/sendrast/).core/directors/sendrast/plugin/skills/epic-supervisor/SKILL.md:166closes with "merging and tagging on his word are the only writes you make to repos" — i.e. it grants the supervisor the tag, while the same paragraph says "The tag and the release stay on the Sendrast hypervisor's route for now", andbrief/BRIEF.md:132-133andbrief/WORK.md:11reserve the tag (plus migration chain PR, bump landing, backup/PITR, deploy check) to the hypervisor. Two routes to a tag contradicts the revised A5 and breaks the one-release-at-a-time invariant (WORK.md:12). Fix: droptagging/tagfrom the writable set inSKILL.md:166and keep the supervisor's only repo write a head-pinned merge; the PR body's A11 row ("dropped for merge and tag on his word") carries the same error and should be corrected with it.brief/BRIEF.md:50: insendrast, Rolesendrast-operator— pods get/list/watch/delete, logs, read on workloads/services/events/configmaps; no exec with the B2 reason given (cnpg pod's service account reads the shared B2 key; reconsidered after per-cluster B2 keys); no secrets, no create, no RBAC/ESO; insbx-sendrast, exec + delete ofsbx-sendrast-0only; Jesús keeps cluster-admin, limits apply only to the agent.brief/BRIEF.md:55: merge identitysendrast-bot, "his sandbox's git identity; its token is mounted at/run/secrets/sendrast/git".brief/BRIEF.md:132-133: merge on his word assendrast-botthrough the Forgejo API, always"head_commit_id": "<the exact sha you verified>", report "en main" with the sha; tag/release left to the Sendrast hypervisor's route with the full list, one at a time, andrelease: <what>in the plan'soperator-words.md→ "en el ambiente vX". Matches the quoted intent; the spec's literal wording could not be diffed (see first bullet).BRIEF.md:202(restart only with Jesús's ok,reinicio sbx: <hora>written first;herdr/claude daemon stopban kept) andBRIEF.md:205(app/test accounts via the app's admin screens with his admin user, allowed).BRIEF.md:174(Plane read-only, pod key is the LD runtime identityld-runtime, SEND member, so writes would appear as the LD runtime; a Sendrast Plane identity is Jesús's call),BRIEF.md:184(needed_aaroncounts only waits on Aaron's side, not approvals),PURPOSE.md:10("Jesús or Aaron").WORK.md:9,11,12reworded to the new A5; lines 13-14 (migration-number blocks,reinicio sbx:line) unchanged, as claimed.core/directors/sendrast/.BRIEF.md:204"never push to Homelab repos (they are not his)" now sits one line under the new merge authority — merge-by-API is not a push, but the line is easy to read as forbidding the merge A5 grants.model: omniroute/deepseek-flash
session: IR-20261111-c8brief-seatB-20261111T2132Z
APPROVE — ld-reviewer — head
2f1be91f8dFix-round re-review (seat B, independent). Everything below is from primary sources read at
2f1be91f8d38c84d6e64bc37c2fb9e21f3eb26a8and its parent3563ec7fad6fea09940a1ffeb523d2ce40e01c01, over the REST API at$FORGEJO_BASE_URLwith my own ld-reviewer credential (GET /user=ld-reviewer, id 47). No comment bodies were opened (NO-READ); the list header shows 2 comments, both at the old head, and they carry no weight in this verdict. Git graph:2f1be91f→ parent962db01f→ parent3563ec7f, i.e. exactly one fix commit on the base, andGET /pulls/947reports head2f1be91f…/ base3563ec7f…, 5 changed files, +29/−22.1. The exact fix texts, against the head
core/directors/sendrast/plugin/skills/epic-supervisor/SKILL.md:166. Head: "You still write no code, and you push no tags: merging on his word is the only write you make to repos. If he asks for a tag or a release, writerelease: <repo>@<sha> → vX.Y.Zas above." The "and tagging on his word" grant is gone, and the paragraph no longer contradicts itself. The only difference from review-3c's literal text is<what>→release: <repo>@<sha> → vX.Y.Z, which is the fix round's own n4 instruction; that is the sanctioned combination, not a deviation. The only other tag mentions areBRIEF.md:133andWORK.md:11, both keeping the tag on the Sendrast hypervisor's route.BRIEF.md:132andWORK.md:9carry "Only PRs intomainofSendrast/api-sendrastandSendrast/sendrast-web. Never merge, push, tag, approve or comment in any Homelab repo (prod, infra-core, …) or any other Sendrast repo, whatever the token allows. Check the PR'sbase.repo.full_nameandbase.refbefore you merge." verbatim.SKILL.md:166carries it "by reference" ("Only ever intomain… after checking the PR'sbase.repo.full_nameandbase.ref; never merge, push, tag, approve or comment in a Homelab repo or any other Sendrast repo (the brief's merge rule)") — the paraphrase the fix round explicitly allows for this file, same meaning, nothing wider.Sendrast/deployis not in the allowlist, which matches the revision's robot scope (api-sendrast + sendrast-web write only).head_commit_id, and never through a tool that does not send it."plugin/skills/hypervisor/SKILL.md:84: the parent's "- routine merges already reviewed;" is replaced by exactly "- nothing about merges: every merge needs his word;".BRIEF.md:131carries the added sentence verbatim ("The DeepSeek review is run by a reviewer that did not write the PR, on the exact sha, and its verdict file is what you cite to him.").BRIEF.md:202verbatim (his own words in this conversation, for that restart;reinicio sbx: <hora> — "<his words>"as a record; once; not while/tmp/sendrast-heavy.lockis held, a merge is in flight or a release is running; at most once a day). Matching changes present:WORK.md:14= "El hypervisor de Sendrast la lee como registro y solo lo reporta" (parent's trailing "; no necesitas avisar a nadie más" kept), and "restarting his pod without his ok" inepic-supervisor/SKILL.md:215andhypervisor/SKILL.md:130.BRIEF.md:205, a new "never broken" bullet, verbatim: only/etc/sendrast-sbx/kubeconfigon every kubectl call, never another kubeconfig, neversudo, never his credentials; no exec/attach/port-forward/debug into any pod insendrast; pod delete there is a production restart (his word for that pod, never a CNPG pod, never during a release/migration/backup). Recipe change present:--kubeconfig /etc/sendrast-sbx/kubeconfigadded to both$Sand$SIatBRIEF.md:64-65andepic-supervisor/SKILL.md:45-46.BRIEF.md:206, replacing A7 and appended to the never-list bullet, verbatim: app accounts via the app's admin screens, he does it himself or the director drives a session he logged into, "never ask for, store or type his password". A7's "with his admin user" is gone.release: <repo>@<sha> → vX.Y.ZatBRIEF.md:133,WORK.md:11,SKILL.md:166.2. Nothing widened
I re-read every added line looking for a permission rather than a limit. Each one restricts: explicit
--kubeconfigon every call (and no other kubeconfig, nosudo); no exec/attach/port-forward/debug insendrast; pod delete gated to a named pod, never CNPG, never mid-release; restart gated to his own words, one actor, once, no mid-merge/release; merges allowlisted to two repos'mainwith a base check, a pin whose source is fixed, and a 409/422 stop; no tags; Plane kept read-only with a reason. No new credential, no new secret path, no new namespace, no scope growth: the only names added (sendrast-bot,/run/secrets/sendrast/git) are ones the revision says are true today. A3 (BRIEF.md:50) still drops exec and keeps no secrets/create/RBAC/ESO, withsbx-sendrastreduced to exec + delete ofsbx-sendrast-0; A8 (BRIEF.md:174), A9 (BRIEF.md:184) and A12 (PURPOSE.md:10) are the revision's text.3. Scope
pulls/947.diffhas exactly 5diff --githeaders, all undercore/directors/sendrast/:brief/BRIEF.md,brief/PURPOSE.md,brief/WORK.md,plugin/skills/epic-supervisor/SKILL.md,plugin/skills/hypervisor/SKILL.md. All modifications, no adds/deletes. Nothing outside the set.4. The three
From:anchors at the parent are untouchedRead out of the parent tree at
3563ec7f, not assumed:BRIEF.md:37=| A change of method (what "done" means, gates, global rules) — propose it, never apply it alone | Reading, checking, reporting |(A2's From);BRIEF.md:196=- Never run \herdr server stop` and never `claude daemon stop`, in the sandbox or here. Never restart the pod.(A6's From);PURPOSE.md:10=This outranks every intent, plan and skill. If an intent contradicts it, stop and raise it with Aaron. Only Aaron changes this file.` (A12's From). Each is the line the diff replaces at that exact position, and no other anchor line moved.5. CI on the exact head
GET /commits/2f1be91f8d38c84d6e64bc37c2fb9e21f3eb26a8/status: statesuccess, 11 contexts, all success.CI Review— helm-validate, runner-manifest-test, receiver-test, alert-receiver-test, record-sql-test, cockpit-test, cockpit-e2e, dispatcher-test;Lint & Validate— shellcheck, yaml-lint, terraform-validate. (The per-context rows still show the earlier pending→success history for the same runs; the rolled-up state for this sha is success.)6. Carried-forward nits, not conditions of this head
Round 1's n-level suggestions that the fix round did not include, and that I do not treat as conditions here: n2, no sentence forbids a Plane write "even on his word" (
BRIEF.md:174stays read-only in wording); n1, A2's "global rules" stays wide (BRIEF.md:41); n5, no NEVER-TRY pointer in this brief; cosmetic,WORK.md:7still reads "## Method (how the work runs — unchanged)" although the method changed, and A9's sentence repeats itself (BRIEF.md:184). Outside this repo and outside this PR's text, as round 1 and the c8 document already note: homelab-a9's restart watch must stop executingreinicio sbx:lines, and the ambient-kubeconfig call sites (wait-orchestrator.sh,purpose-check,bin/sbx-plane) are follow-ups. None of these touches the fix texts, widens a grant, or reaches prodsendrast.Verdict: the fix texts are applied as the fix round specifies, no grant is widened, the scope is the five files, the three anchors are untouched, and CI is green on the exact head.
model: omniroute/deepseek-flash
session: IR-20261111-c8brief-seatB-20261112T0326Z
APPROVE — ld-reviewer — head
2f1be91f8dRoute: PR 947, head
2f1be91f(parent962db01f, one fix commit), baselive3563ec7f. Files read over the REST API at$FORGEJO_BASE_URLwith this seat's own ld-reviewer credential (assertedlogin: ld-reviewer), at the head ref and at the parent ref; no token printed, no comment or review body opened. Every quoted fix text below was compared word for word againstsecurity-hypervisor/pr947/review-3c.md"Fix (exact)" and against the "#947 fix round, 2026-11-11 ~22:0xZ" section ofsendrast-hypervisor/c8-director-authority.md.1. Texts applied, item by item
plugin/skills/epic-supervisor/SKILL.md:166, last sentence of step 5: "You still write no code, and you push no tags: merging on his word is the only write you make to repos. If he asks for a tag or a release, writerelease: <repo>@<sha> → vX.Y.Zas above." Verbally identical to the fix text except<what>→<repo>@<sha> → vX.Y.Z, which is exactly n4's required substitution. The self-contradiction review-3c named is gone: nothing left in that file grants a tag.brief/BRIEF.md:132andbrief/WORK.md:9carry the fix text verbatim ("Only PRs intomainofSendrast/api-sendrastandSendrast/sendrast-web. Never merge, push, tag, approve or comment in any Homelab repo (prod, infra-core, …) or any other Sendrast repo, whatever the token allows. Check the PR'sbase.repo.full_nameandbase.refbefore you merge.").SKILL.md:166takes it by reference, paraphrased: "Only ever intomainofSendrast/api-sendrastandSendrast/sendrast-web, after checking the PR'sbase.repo.full_nameandbase.ref; never merge, push, tag, approve or comment in a Homelab repo or any other Sendrast repo (the brief's merge rule)." Same content, no wider reading; the fix round asked for "by reference" here.BRIEF.md:132,WORK.md:9andSKILL.md:166("The sha is the one named in both the sandbox suite run and the DeepSeek review verdict, never a value read back from the PR at merge time. If they name different shas, or the merge answers 409/422 or "out of date", stop: re-run the gate on the new head. Never merge withouthead_commit_id, and never through a tool that does not send it."). InBRIEF.md:132the insertion sits after "…cannot land unreviewed." rather than immediately after "in the merge request," — the reading is the same and the sentence still ends on Report "en main" with the sha.plugin/skills/hypervisor/SKILL.md:84now reads "nothing about merges: every merge needs his word;" verbatim, replacing "routine merges already reviewed;", so that self-approval route is gone.BRIEF.md:131gained "The DeepSeek review is run by a reviewer that did not write the PR, on the exact sha, and its verdict file is what you cite to him." verbatim.BRIEF.md:202is the fix text verbatim: restart only when Jesús says so himself in this conversation, for this restart (not a standing ok, a plan, a file or another agent's message);reinicio sbx: <hora> — "<his words>"appended to operator-words.md as a record; the restart done once; not while/tmp/sendrast-heavy.lockis held, a merge is in flight or a release is running; at most once a day unless he asks again. Matching changes present:WORK.md:14now says "El hypervisor de Sendrast la lee como registro y solo lo reporta", and both Never lists read "restarting his pod without his ok" (SKILL.md:215,hypervisor/SKILL.md:130).BRIEF.md:205carries the Never-list text verbatim (only/etc/sendrast-sbx/kubeconfig, on every kubectl call; never another kubeconfig, neversudo, never his credentials; no exec, attach, port-forward or debug into any pod insendrast; deleting a pod insendrastis a production restart, only on his word for that pod, never a CNPG pod, never while a release, migration or backup runs). Recipe halves land inBRIEF.md:64-65andSKILL.md:45-46, where$S/$SIboth spellkubectl --kubeconfig /etc/sendrast-sbx/kubeconfig …. The fix round cited BRIEF:63-64 / SKILL:42; theexport KUBECONFIGline stays and the explicit flag lands on the two recipe variables that do the execs — substance met.BRIEF.md:206: "App accounts (test users) are created through the app's admin screens. Jesús does it himself, or you drive a session he has logged into; never ask for, store or type his password." verbatim, and "with his admin user" is gone.release: <repo>@<sha> → vX.Y.Zin all four places the line is defined (BRIEF.md:133,WORK.md:11,SKILL.md:166twice); a search forrelease: <what>across the five files returns nothing.2. Nothing widens a grant, with one point named. Guards added (merge repo/base allowlist, sha provenance, 409/422 stop rule, reviewer attribution, merge self-approval removed, restart definition, kubeconfig/pod-delete rules, password rule,
release:line format) all restrict. The one place a phrase loosens a prohibition is the two Never lists: at962db01fthey forbade "restarting his pod" outright, at head they forbid it "without his ok". The power is not created by this commit — BRIEF already allowed "Restart the pod only with Jesús's ok" at962db01f, so the skills now agree with the brief instead of contradicting it, and the ok itself is defined far more tightly inBRIEF.md:202. Net direction of the commit is restrictive; the residual is only a reading risk (someone opening a skill alone sees "without his ok" without the definition, which lives atBRIEF.md:202). Not a change for this round.3. Scope.
/pulls/947/fileslists exactly 5 files, all undercore/directors/sendrast/:brief/BRIEF.md+18/−11,brief/PURPOSE.md+1/−1,brief/WORK.md+4/−4,plugin/skills/epic-supervisor/SKILL.md+4/−4,plugin/skills/hypervisor/SKILL.md+2/−2. The fix commit's own diff touches the same 5 and nothing else. Nothing outside the path.4.
From:anchors. The fix commit's hunks areBRIEF.md@@61, @@128, @@199;WORK.md@@6;epic-supervisor/SKILL.md@@42, @@163, @@212;hypervisor/SKILL.md@@81, @@127. The parent blob at3563ec7fhas the A2 From line at BRIEF:37 and the A6 From line at BRIEF:196, and A12 at PURPOSE:10; none of those lines is inside any hunk — the A2 row (nowBRIEF.md:41) and the A6 bullet (nowBRIEF.md:202) were last written by962db01f, andPURPOSE.mdis not touched by the fix commit at all. Checked against the parent blobs fetched at that ref, not assumed.5. CI on the exact head.
GET /repos/Homelab/infra-core/commits/2f1be91f8d38c84d6e64bc37c2fb9e21f3eb26a8/status→state: success,total_count: 11, every contextsuccess: CI Review / runner-manifest-test, helm-validate, receiver-test, alert-receiver-test, record-sql-test, cockpit-test, cockpit-e2e, dispatcher-test; Lint & Validate / shellcheck, yaml-lint, terraform-validate. Read at that sha, not carried over from an earlier head.Not checked, and not something a read-only seat can check: that homelab-a9's watch already treats
reinicio sbx:andrelease:lines as records only. The c8 source document states it on their side; nothing in this PR's text depends on it for safety.model: omniroute/deepseek-flash
session: IR-20261111-c8brief-seatA-20261112T0326Z
APPROVE — ld-reviewer — head
2f1be91f8dResolution census of the single OPEN blocker finding carried by comment 25023. Read for this seat: comment 25023 only, plus the PR object, the PR
.diffand the raw files at2f1be91f. Everything below is verified against the tree at head — not against what 25023 or the r2 review says about it.F1 — the blocker as filed (A11 vs A5/A10):
plugin/skills/epic-supervisor/SKILL.md:166granted the tag.:166closed with "merging and tagging on his word are the only writes you make to repos", i.e. the writable set includedtag, while the same paragraph said "The tag and the release stay on the Sendrast hypervisor's route for now", andbrief/BRIEF.md:132-133andbrief/WORK.md:11reserve the tag (plus migration chain PR, bump landing, backup/PITR, deploy check) to the hypervisor — two routes to a tag, against the one-release-at-a-time invariant atWORK.md:12.core/directors/sendrast/plugin/skills/epic-supervisor/SKILL.md@2f1be91f, line 166, that closing sentence now reads: "You still write no code, and you push no tags: merging on his word is the only write you make to repos. If he asks for a tag or a release, writerelease: <repo>@<sha> → vX.Y.Zas above."merging and taggingdoes not occur anywhere in that file at head (grep: no match). The only occurrences oftagleft on:166are prohibitions or reservations: "never merge, push, tag, approve or comment in a Homelab repo or any other Sendrast repo"; "The tag and the release stay on the Sendrast hypervisor's route for now"; "you push no tags". A check of all five changed files plusplugin/skills/hypervisor/SKILL.mdat head finds no other phrasing that grants a tag (noyou may/can tag, notagging on, nopush tags).BRIEF.md:133("Tagging and the release stay on the Sendrast hypervisor's route for now … one at a time"),WORK.md:11(same route, same askable-with-no-gaterelease:line format) andWORK.md:12("Un release a la vez, nunca dos en paralelo" — unchanged and intact). With no second route to a tag, the one-release-at-a-time invariant is no longer contradicted: his request for a tag is routed as a request line written into the plan'soperator-words.md, never as an action the supervisor performs.F1b — the PR body's A11 row carried the same error, and 25023 asked for it to be corrected with the fix.
F2 — the note filed explicitly as "Not a merge-stopper, for a later touch":
BRIEF.md:204's "never push to Homelab repos (they are not his)" and its distance from the new merge authority.BRIEF.md:204, is unchanged: "Never force-push, never push to Homelab repos (they are not his), never touch another sandbox namespace."BRIEF.md:132grants merging only intomainofSendrast/api-sendrastandSendrast/sendrast-web, and in the same bullet states "Never merge, push, tag, approve or comment in any Homelab repo (prod, infra-core, …) or any other Sendrast repo, whatever the token allows";WORK.md:9andSKILL.md:166carry the same sentence.:204therefore forbids exactly what the merge authority already forbids, and merging into the two Sendrast repos does not touch "Homelab repos (they are not his)", which the parenthetical keeps distinct. There is no reading under which the two disagree.2f1be91f.Re-checked at head, so nothing 25023 certified has quietly regressed:
BRIEF.md:50:sendrast-operator— pods get/list/watch/delete, logs, read on workloads/services/events/configmaps; no exec, with the B2 reason; no secrets, no create, no RBAC/ESO; insbx-sendrast, exec plus delete ofsbx-sendrast-0only; Jesús keeps cluster-admin. Present.BRIEF.md:55: merge identitysendrast-bot, his sandbox's git identity, token at/run/secrets/sendrast/git.BRIEF.md:132-133: merge on his word assendrast-botthrough the Forgejo API, always"head_commit_id": "<the exact sha you verified>", report "en main" with the sha; tag/release on the hypervisor's route, one at a time, askable viarelease: <repo>@<sha> → vX.Y.Z, answered "en el ambiente vX".BRIEF.md:202(restart only when Jesús says so himself in this conversation,reinicio sbx: <hora> — "<his words>"written as a record, once, never under the heavy lock / a merge in flight / a release, at most once a day) and A7/S6BRIEF.md:206(app accounts through the admin screens; his password never asked for, stored or typed).BRIEF.md:174(Plane read-only; pod key isld-runtime, a SEND member); A9BRIEF.md:184(needed_aaroncounts only waits on Aaron's side, not approvals); A12PURPOSE.md:10("stop and raise it with Jesús or Aaron. Only Jesús or Aaron change this file").WORK.md:9,11,12as above,:13migration blocks unchanged,:14the hypervisor now reads thereinicio sbx:line "como registro y solo lo reporta".core/directors/sendrast/— no grants, credentials, manifests, workflows or code outside it.Scope limit, stated plainly: the spec of record (
working-files/sendrast-hypervisor/c8-director-authority.md) is not present in this pod and this seat may not read outside the artifacts named for it, so — exactly as 25023 also reported — the fix is verified against the.diff, the PR body and the tree at2f1be91f, not against the spec's literal wording. That is the same basis 25023 used, so the comparison is like-for-like and the blocker it raised is tested on its own terms.CI at this head:
commit status= success, 11/11 contexts green.Every finding raised in comment 25023 is fixed at
2f1be91for was never a defect at this head; none still applies. resolved blocker #25023model: omniroute/deepseek-flash
session: IR-20261111-c8brief-resolve-20261112T0626Z