Skip to content

lanes: record trigger facts as pointers #7592

Closed
1 of 1 issue completed
Closed

Description

@kyle-sexton

Parent

Refs #7555. Source: PLAN Phase 24, topic poteto-review. Thread: Outer loop and communication
(buildable part).

Outcome

Every triggered lane frames outer-loop text as data under the untrusted-content convention and runs
under ADR 0049's limits, and the trigger facts are recorded as pointers with as-of date and recheck
trigger.

Decisions

  • Untrusted outer-loop text is framed as data under the untrusted-content convention; triggered agents
    run under ADR 0049 limits (Q577). Origin: ours.
  • Facts recorded: routines trigger on schedule, API and GitHub PR/release events; Slack is Claude Tag
    (Team and Enterprise); cloud sessions carry ccr.session.id (D46, D116). These go in as pointers,
    not restated values.
  • communication is its own plugin, lowest priority, covering all personal written communication;
    chat adapters live there as seeds conforming to the trigger-dispatch contract (D89, Q154, Q156;
    owner's). Its details are the parked communication item.
  • Replies are drafts only, always reviewed before sending, easy to paste (Q142; owner's).
  • Rejected: a convention with no plugin; trigger-dispatch owning the port; routines banned from write
    work; silence as consent (D45).
  • Security review applies (untrusted text, lanes with push credentials).

Key interfaces

Variation verdicts: "Chat and communication providers: abstract now; communication seeds on the
trigger-dispatch contract (Q156, D89); details deferred." Conventions followed: ADR 0049, the
untrusted-content convention.

Done when

  • rg --files-without-match 'untrusted' .github/workflows/intake-triage.yml .github/workflows/work-resolve-issue.yml
    prints nothing, and each fixed entry point has a test showing an instruction in issue text is not
    followed.
  • The trigger facts appear as pointers with as-of date and recheck trigger in the owning
    convention.

Out of scope

  • Building the communication plugin (parked item).

Related

Activity

  1. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 16, 2026
  2. added theissue type on Oct 16, 2026
  3. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    I understood this as a bounded change with two parts. Add tests showing that an instruction in issue text is not followed at the entry points that frame it as untrusted. Add the Slack and cloud-session trigger facts as pointers, each with an as-of date and a recheck trigger. I found no likely duplicates.

    Decision recorded.

    This supersedes the record above, which cut the first body criterion as deferred hardening. The owner ruled on 2026-10-31 that work with value is not deferred out of an issue to meet a target. Issue text instructing a lane is a real risk, so the test half of that criterion stays here; the rg half already passes. The issue's title and the other criteria are unchanged from the record above. Agents decided this on evidence under standing direction §1.

    Done when

    • Each fixed entry point that frames issue text as untrusted has a test showing an instruction in issue text is not followed; the PR's CI runs it.
    • plugins/autonomy/skills/setup/templates/trigger-adapters.md has a pointer to https://code.claude.com/docs/en/claude-tag and https://code.claude.com/docs/en/slack with an as-of date and a recheck trigger, in the form of its "Routine triggers" entry.
    • plugins/autonomy/skills/setup/context/agent-session-telemetry.md has a pointer to the "Attribute telemetry to cloud sessions" section of https://code.claude.com/docs/en/monitoring-usage for ccr.session.id, with an as-of date and a recheck trigger.
    • scripts/check-changelog-fragments.sh --check passes with an autonomy fragment.

    #7592 (comment)

    This decision settles the open questions.

    Automated triage, applied by the lanes App.

  4. removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 24, 2026
  5. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.

    To hold this issue again, add needs-human (or status: needs-decision) and say why in a comment.

  6. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  7. 27 remaining items

  8. removed
    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 31, 2026
  9. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 31, 2026
  10. kyle-sexton commented on Oct 31, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded.

    This supersedes the record above after /discovery:research. Its verifier failed rows 4, 7 and 12: the exact redirect from the code.claude.com Claude Tag URL, one sitemap date, and restatement labels. The page quotes used here held at their links, so this record stops relying on that redirect and points at the docs page directly. It also adds one correction: the "Routine triggers" entry says GitHub triggers do not cover issues, but Supported events now lists Issue, which is that entry's own recheck trigger. The Slack page describes a separate earlier version, so the new pointer keeps the two products apart. Agents decided this on evidence under standing direction §1.

    Done when

    • Each fixed entry point that frames issue text as untrusted has a test showing an instruction in issue text is not followed; the PR's CI runs it.
    • plugins/autonomy/skills/setup/templates/trigger-adapters.md has a pointer to https://claude.com/docs/claude-tag/overview for Claude Tag and to https://code.claude.com/docs/en/slack for the earlier Claude Code in Slack version, as two products, with an as-of date and a recheck trigger, in the form of its "Routine triggers" entry.
    • That file's "Routine triggers" entry no longer says issues are not covered, carries a new as-of date, and its recheck trigger no longer names the issues trigger.
    • plugins/autonomy/skills/setup/context/agent-session-telemetry.md has a pointer to the "Attribute telemetry to cloud sessions" section of https://code.claude.com/docs/en/monitoring-usage for ccr.session.id, with an as-of date and a recheck trigger.
    • scripts/check-changelog-fragments.sh --check passes with an autonomy fragment.
  11. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    needs-specNeeds a Brief or plan before anyone can build it.
    on Oct 31, 2026
  12. github-actions commented on Oct 31, 2026

    @github-actions
    Contributor
    No description provided.
  13. github-actions commented on Oct 31, 2026

    @github-actions
    Contributor
    No description provided.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    Work status

    needs-spec

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions