You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-ups found while fixing #7161 (#7204) and #7167 (#7202). Each is pre-existing or newly exposed, and each needs its own fix.
No config key supplies --app-slug. Under a GitHub App token, the telemetry scripts in work-loop (lane-telemetry-upsert.sh) and babysit-loop (telemetry-upsert.sh) now need --app-slug to resolve their write identity. Only the launch prompt can supply it today. Add one userConfig key shared by both lanes and harness-ops restart-consumer.sh (fix(harness-ops): restart-consumer reads restart_request from any sentinel comment #7203).
Two rules on escalation markers conflict.plugins/work-items/reference/escalation-marker.md says a marker stands "only while it wears the role label". plugins/work-items/skills/work-loop/reference/c3-ratification-queue.md says "at most one, ever". Reconcile them so a C3 ratification comment can't be re-posted after the label is removed.
Reconcile the conflicting escalation-marker rules in escalation-marker.md and c3-ratification-queue.md so a C3 ratification comment can't reappear after its role label is removed.
Items 2 and 4 touch write-identity/authorization for telemetry, so I've tagged this for security visibility. Nothing is missing for scoping; each item references its own file. No duplicates found, though it's closely related to #7167, #7202, #7203, and #7206.
This issue is split into 6 pieces, each sized for one lane PR. Four independent follow-ups, and three still hold as written on origin/main. No plugin declares an app-slug userConfig key. harness-ops telemetry-upsert.sh resolves identity only through gh api user. The two marker rules still disagree. The config-key work spans three plugins at about 5 files each, so it splits per plugin. The trusted-author lookup leaves open whether a telemetry issue a person opened is still valid.
not filed: fix(harness-ops): accept a lane telemetry issue only from a trusted author: owner-decision: which authors make a telemetry issue valid (only the lanes' write identity, or also the repo's write/admin holders who open one by hand), and which lookups must enforce it (restart consumer, morning-brief, work-loop and babysit-loop discovery)
Filed pieces are sub-issues of this one, and the paced queue admits them to the lane. Unfiled pieces wait on the blocker shown. The owner approved this split in an attended backlog-shaping session on 2026-10-18.
Question: Lanes find their telemetry issue by searching for its exact title, and anyone can open an issue with that title. The fix makes the issue's author count. The open question is which authors are trusted. Options: (a) only the lane's write identity (the issue's own wording); (b) the lane's write identity plus anyone with write, maintain or admin access to the repository; (c) no author check, relying on the existing check of each comment's author.
Owner's answer: (b). Every existing telemetry issue (#7396, #3742, #3739 and older ones) was opened by kyle-sexton. Under (a), a lane that moves to an App token, which children 1-3 of this split prepare for, would reject all of them and lose their labels and history. Someone with write access can already edit lane state, so trusting them adds no new attacker. Apply it to every lookup: the restart consumer, morning-brief, and work-loop and babysit-loop discovery. Basis: gh issue list --search "Lane telemetry in:title" output this session; restart-consumer.sh:102-113 (comment-author filter and identity order), :867, :1236 (title search).
The owner accepted this recommendation as item D1 of a 17-decision batch in an attended backlog-shaping session on 2026-10-18. The batch question: "Accept all 17 batch 5 decisions as recommended, D1, D2, D3, D5 and D17 included? I post a quoted 'Decision recorded.' comment on each of the 11 issues." The owner answered: "Accept all 17 (Recommended)".
Posted by AI from the owner's answer in that session.
Item 2 is still open. The owner decided it on 2026-10-18 (Decision recorded. on this issue, D1): option (b), trust the lane's write identity plus anyone with write, maintain or admin access to the repository, and apply that to every lookup. It is not built. On origin/main:
plugins/harness-ops/skills/lanes/scripts/restart-consumer.sh:878-885: resolve_issue_by_title picks the lowest-numbered open issue whose title matches. It is called at :1080 and :1253.
The same file at :1250-1252 takes the first gh issue list --search "loop-lane telemetry running per-lane status in:title" hit.
plugins/harness-ops/skills/morning-brief/scripts/morning-brief.sh:245: TELEMETRY_SEARCH matches by title.
plugins/source-control/skills/babysit-loop/SKILL.md:296 and plugins/work-items/skills/work-loop/SKILL.md:74: the default telemetry issue is "the open issue titled ... (exact match)".
This narrows a control on a decided rule, with no workflow path, so it is lane work.
Done when:
Every code path that resolves a lane telemetry issue by title (at least the sites listed above; search for others that build the title from a variable) accepts a candidate issue only when its author is the lane's resolved write identity (the fix(source-control): only adopt babysit-loop telemetry comments the lane wrote #7202 resolution order, lane_app_slug included), or a user whose repository permission is write, maintain or admin. A candidate that fails the check is skipped with a warning naming its number and author, and the next match is tried.
A failed permission read is reported as an error. It is never treated as trusted, and never as "no telemetry issue".
Each changed script has tests for three cases: an issue by the write identity is accepted, an issue by a write-access user is accepted, and an issue with the same title by a read-only or unknown author is skipped.
The two SKILL.md defaults state the author rule. A changelog fragment is added for each touched plugin.
Not admitted to the issue lane: Size unset is not one of small, medium; Uncertainty unset is not one of known, knowable. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).
Scope narrowed: item 2 (require the telemetry issue's author to be the lane's write identity) guards against our own actors. It is deferred under the owner's hardening deferral (owner decisions Q15/Q16, 2026-10-29: hardening returns as configuration once open issues and open PRs reach 0). Items 1 (app-slug config key), 3 (marker rule conflict) and 4 (harness-ops telemetry identity under App tokens) stay in scope.
Every sub-issue of this split is closed by a listed human or a merge (#7999, #8000, #8001, #8002, #8003, #11119), so the lanes App closes it as completed.
Activity
github-actions commentedon Oct 11, 2026
Thanks for filing this. I read it as four distinct follow-ups from the #7161/#7204 and #7167/#7202 work, each independently fixable:
--app-slugso work-loop'slane-telemetry-upsert.sh, babysit-loop'stelemetry-upsert.sh, and harness-ops'restart-consumer.sh(fix(harness-ops): restart-consumer reads restart_request from any sentinel comment #7203) can resolve a write identity under an App token without relying on the launch prompt.escalation-marker.mdandc3-ratification-queue.mdso a C3 ratification comment can't reappear after its role label is removed.telemetry-upsert.sh(~line 379) the same--app-slugidentity resolution as fix(source-control): only adopt babysit-loop telemetry comments the lane wrote #7202/fix(harness-ops): read restart requests only from the lanes' write identity #7206, since it currently only checksgh api user.Items 2 and 4 touch write-identity/authorization for telemetry, so I've tagged this for security visibility. Nothing is missing for scoping; each item references its own file. No duplicates found, though it's closely related to #7167, #7202, #7203, and #7206.
Automated triage. A maintainer reviews it.
kyle-sexton commentedon Oct 18, 2026
This was generated by AI during backlog shaping.
This issue is split into 6 pieces, each sized for one lane PR. Four independent follow-ups, and three still hold as written on origin/main. No plugin declares an app-slug userConfig key. harness-ops telemetry-upsert.sh resolves identity only through
gh api user. The two marker rules still disagree. The config-key work spans three plugins at about 5 files each, so it splits per plugin. The trusted-author lookup leaves open whether a telemetry issue a person opened is still valid.Filed pieces are sub-issues of this one, and the paced queue admits them to the lane. Unfiled pieces wait on the blocker shown. The owner approved this split in an attended backlog-shaping session on 2026-10-18.
kyle-sexton commentedon Oct 18, 2026
Decision recorded.
Question: Lanes find their telemetry issue by searching for its exact title, and anyone can open an issue with that title. The fix makes the issue's author count. The open question is which authors are trusted. Options: (a) only the lane's write identity (the issue's own wording); (b) the lane's write identity plus anyone with write, maintain or admin access to the repository; (c) no author check, relying on the existing check of each comment's author.
Owner's answer: (b). Every existing telemetry issue (#7396, #3742, #3739 and older ones) was opened by
kyle-sexton. Under (a), a lane that moves to an App token, which children 1-3 of this split prepare for, would reject all of them and lose their labels and history. Someone with write access can already edit lane state, so trusting them adds no new attacker. Apply it to every lookup: the restart consumer, morning-brief, and work-loop and babysit-loop discovery. Basis:gh issue list --search "Lane telemetry in:title"output this session; restart-consumer.sh:102-113 (comment-author filter and identity order), :867, :1236 (title search).The owner accepted this recommendation as item D1 of a 17-decision batch in an attended backlog-shaping session on 2026-10-18. The batch question: "Accept all 17 batch 5 decisions as recommended, D1, D2, D3, D5 and D17 included? I post a quoted 'Decision recorded.' comment on each of the 11 issues." The owner answered: "Accept all 17 (Recommended)".
Posted by AI from the owner's answer in that session.
kyle-sexton commentedon Oct 28, 2026
Re-triage.
Sub-issues, all closed (completed):
lane_app_slug(item 1).lane_app_slug(item 1).lane_app_slug(item 1).Item 2 is still open. The owner decided it on 2026-10-18 (Decision recorded. on this issue, D1): option (b), trust the lane's write identity plus anyone with write, maintain or admin access to the repository, and apply that to every lookup. It is not built. On origin/main:
plugins/harness-ops/skills/lanes/scripts/restart-consumer.sh:878-885:resolve_issue_by_titlepicks the lowest-numbered open issue whose title matches. It is called at:1080and:1253.:1250-1252takes the firstgh issue list --search "loop-lane telemetry running per-lane status in:title"hit.plugins/harness-ops/skills/morning-brief/scripts/morning-brief.sh:245:TELEMETRY_SEARCHmatches by title.plugins/source-control/skills/babysit-loop/SKILL.md:296andplugins/work-items/skills/work-loop/SKILL.md:74: the default telemetry issue is "the open issue titled ... (exact match)".This narrows a control on a decided rule, with no workflow path, so it is lane work.
Done when:
lane_app_slugincluded), or a user whose repository permission is write, maintain or admin. A candidate that fails the check is skipped with a warning naming its number and author, and the next match is tried.melodic-automation-lanes commentedon Oct 29, 2026
Not admitted to the issue lane: Size unset is not one of small, medium; Uncertainty unset is not one of known, knowable. Admission takes the issue once each of those is met, when intake triages it again (
.github/actions/resolve-config/admission-rules.json).kyle-sexton commentedon Oct 29, 2026
Scope narrowed: item 2 (require the telemetry issue's author to be the lane's write identity) guards against our own actors. It is deferred under the owner's hardening deferral (owner decisions Q15/Q16, 2026-10-29: hardening returns as configuration once open issues and open PRs reach 0). Items 1 (app-slug config key), 3 (marker rule conflict) and 4 (harness-ops telemetry identity under App tokens) stay in scope.
melodic-automation-lanes commentedon Oct 30, 2026
Every sub-issue of this split is closed by a listed human or a merge (#7999, #8000, #8001, #8002, #8003, #11119), so the lanes App closes it as completed.