Skip to content

feat(lanes): private, aggregatable store for lane transcripts #7676

Description

@kyle-sexton

Refs: #6958

Context

The claude.dev post "Building effective agent automations" (2026-10-08, https://claude.dev/blog/building-effective-agent-automations/) recommends reading each run's transcript to find what went wrong. This repo's lanes publish telemetry but keep no transcript store, so runs cannot be pulled and compared to find errors and bottlenecks or to measure improvement.

Decision

  • Q25, C18: the store is swappable. CI always emits an encrypted, gzipped artifact kept 7 days; a puller copies it to a sink set by one config value. The laptop is the first sink; others (object storage, another machine) are a config change.
  • Q28, C23: transcripts stay private and easy to aggregate. Published per-run fields go to the telemetry issues below, not here.
  • Q33 is open for planning: where the encryption key lives, and the puller's host, schedule and repo.

Acceptance criteria

Related

Out of scope

  • The published per-run fields and their format.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 16, 2026
  2. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Proposed work class: none

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

    Decision recorded.

    Owner's answer: asymmetric encryption, with the private key in Key Vault, read through vault-exec, and the puller as a daily task on the laptop. The estate already resolves secrets through vault-exec from Key Vault, so a key kept only on the laptop would be a second, unbacked-up way of holding secrets. The public key is not secret, so CI can hold it as a repo variable.

    [quote truncated; the full decision is at the link]

    #7676 (comment)

    The decision settles the open Q33 questions: key location, puller host and schedule. The work covers CI encrypted upload, a puller, a sink config value and a cross-run query. Part of it needs a person: setting up the daily puller task on the laptop is an attended host step. I've applied needs-human for that. The CI-side work can be triaged and done separately.

    Automated triage. A maintainer reviews it.

  3. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 16, 2026
  4. kyle-sexton commented on Oct 18, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded.

    Question: Every lane run would upload its transcript, encrypted, as a 7-day artifact, and a puller copies it to one sink. This is a public repository, so artifacts must be encrypted before upload. Q33 asks where the decryption key lives and where the puller runs. Options: (a) public key in CI, private key on the laptop, puller a scheduled task on the laptop; (b) key in Azure Key Vault, puller on a fleet host; (c) defer the store until #6973/#6974 show it is needed.

    Owner's answer: asymmetric encryption, with the private key in Key Vault, read through vault-exec, and the puller as a daily task on the laptop. The estate already resolves secrets through vault-exec from Key Vault, so a key kept only on the laptop would be a second, unbacked-up way of holding secrets. The public key is not secret, so CI can hold it as a repo variable. (c) does not fit: #6973 and #6974 read the published fields, not transcripts (#7676 "Related"). This is a security decision, so the owner must answer it. Basis: ~/.config/estate/ESTATE.md:34-36; #7676 body.

    The owner accepted this recommendation as item D3 of a 21-decision batch in an attended backlog-shaping session on 2026-10-18. The batch question: "Accept all 21 batch 7 decisions, with my change to D13 (#6008 goes to the lane, but you merge its PR because it edits AGENTS.md)? I post a 'Decision recorded.' comment on each issue." The owner answered: "Accept, with my D13 change (Recommended)".

    Posted by AI from the owner's answer in that session.

  5. removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 25, 2026
  6. kyle-sexton commented on Oct 25, 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.

  7. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    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 25, 2026
  8. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    The triage verdict left this issue at status: needs-decision:

    • held by needs-human
    • no lanes App verdict comment shows whether an earlier verdict was flagged
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

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions