microsoft / microsoft/amplifier-bundle-attractor

Upstream observation: session:start records no invocation provenance (argv/mode/isatty/launched_by) — human-vs-agent classification is heuristic-only

Open
#308 1 comment 0 reactions 0 assignees View on GitHub
vision-observation
Dominant language
Python
Stars
8
Forks
5
Avg merge
28m
Merged PRs (30d)
49

Description

## Observation (vision-observation class; foundation-level, filed here per the #256 precedent — the foundation tracker is disabled)

Two independent forensic investigations of a real local corpus (46,715 sessions; CI-graph + local-file), run while building attractor-scout's session-provenance layer (PR #307), converged on this finding:

**No positive human marker exists in recorded session data.** The `session:start` payload carries only `{parent_id, redaction, session_id, timestamp}` — no `argv`, no `--mode`, no `stdin.isatty()`, no `launched_by_session_id`. A harness-fired `amplifier run --mode single` root session is byte-indistinguishable from a human typing at a keyboard: same event shapes, same `prompt:submit` events, empty `parent_id` by design.

## Why it matters
Any tool that mines a user's own session history (attractor-scout is the first; personalization/onboarding tooling generally will follow) cannot distinguish "work the human did" from "work an agent did on their behalf" except by heuristics. PR #307 ships a measured classification ladder (definitive agent signals: parent linkage, composite sid shape, first-event `session:fork`, orchestration events; then workspace/cadence heuristics) — but its named residual bypass is structural: **a harness that paces its prompts like a human in a stable workspace is indistinguishable in today's data.** The HOME-workspace one-shot band measured ~21–29% agent-contaminated and had to be classified UNKNOWN.

## The fix shape (one boolean collapses the whole heuristic tier)
Record at `session:start` (foundation/app-cli seam):
- `argv` / invocation mode (`interactive` vs `single`/batch)
- `stdin.isatty()`
- `launched_by_session_id` when a session is programmatically driven by another

Downstream consumers then get a definitive test instead of a ladder of measured heuristics.

## Provenance
Investigation and measured accuracies: `docs/designs/2026-08-20-scout-session-provenance.md` (this repo). Consumer that needs it today: `skills/attractor-scout/scripts/attractor_scout/provenance.py`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with docs/designs/2026-08-20-scout-session-provenance.md and skills/attractor-scout/scripts/attractor_scout/provenance.py, then trace the foundation/app-cli seam where session:start is emitted. Review the existing payload and entry points; done means invocation context and programmatic launch provenance are recorded for downstream consumers.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, cli
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.