Repository navigation
feat(lanes): private, aggregatable store for lane transcripts #7676
Copy link
Copy link
Open
Labels
needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.Human-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.Awaiting a human or maintainer judgment call.
Description
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
- Every lane run uploads its transcript, encrypted and gzipped, as a CI artifact with 7-day retention.
- A puller copies artifacts to the sink named by one config value; changing the sink changes only that value. The laptop is the first sink.
- Sink retention: full transcripts 30 days, metrics records 1 year, a 5 GB cap, and an alert if no pull has happened in 5 days.
- Stored transcripts are queryable across runs by lane, model, outcome and date.
- No transcript, key or decrypted content lands in a tracked file or a public artifact.
- The published per-run fields (lane, outcome, duration, turns, models, tokens, estimated cost, run link) live in Utilization tracking: weekly use per subscription and credit spend per org against the near-full target #6973, Outcome metrics that steer allocation toward work that ships and sticks #6974 and Lane telemetry: work-loop #7396 and are out of scope here.
Related
- Utilization tracking: weekly use per subscription and credit spend per org against the near-full target #6973: utilization per subscription and org; consumes published fields, not transcripts.
- Outcome metrics that steer allocation toward work that ships and sticks #6974: outcome metrics that steer allocation; reads published fields, not transcripts.
- Lane telemetry: work-loop #7396: work-loop lane telemetry home; holds the published per-run record.
Out of scope
- The published per-run fields and their format.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.Human-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.Awaiting a human or maintainer judgment call.
Type
Fields
No fields configured for Feature.
Activity
github-actions commentedon Oct 16, 2026
Proposed work class: none
Size: Large
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: none
#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.
kyle-sexton commentedon Oct 18, 2026
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 throughvault-execfrom 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.
kyle-sexton commentedon Oct 25, 2026
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(orstatus: needs-decision) and say why in a comment.melodic-automation-lanes commentedon Oct 25, 2026
The triage verdict left this issue at
status: needs-decision: