ljchang/mecha는 Rust로 쓴 독립형 에이전트 하네스다. 제공자 비종속 루프, MCP 도구, 경로 감옥과 프롬프트 인젝션 차단, 샌드박스 셸, 예약 트리거, 실행 기록(trace)을 채점하는 평가 도구를 한곳에 모은 프로젝트다. 2026년 11월 7일 GitHub 커밋 d2adb37은 PR #848을 병합하면서 세션 종류 `driven`을 추가했다. `driven`은 다른 에이전트가 소유자의 실제 작업 위에서 실행한 세션을 뜻하고, `MECHA_SESSION_KIND=driven`으로 표시된다. 변경은 18개 파일에 걸친 460줄 추가와 53줄 삭제다.
이 표식이 구분하는 기준은 '어디에 저장되었나'가 아니라 '누가 실행했나'다. driven 세션은 소유자 자신의 저장소에 남지만, test나 experiment 세션과 마찬가지로 모든 리더가 기본적으로 숨기고 숨긴 개수는 세어 남긴다. `Corpus::hidden_driven`과 list·health·appraise가 붙이는 `driven_hidden` 카운터가 그 값이고, `--kind driven`을 명시해야 함께 읽힌다. 학습 경로는 아예 닫혀 있다. reflect의 트랜스크립트 패스, distill, 대비 풀, 페르소나 작성기가 모두 `Scan::admits`를 통해 driven 세션을 거부하고, reflect의 outbox 패스는 staging 세션의 admission이 거부된 draft를 건너뛴다. 설계 문서는 이 기준을 fitness(실제 사용량)라고 부르며, 하네스를 몰아서 실패하게 만드는 것은 소유자 본인의 사용이 아니라는 이유를 든다.
남는 한계도 분명하다. 이번 커밋이 다룬 것은 설계 문서의 D1 규칙까지이고, driven 실행에 전용 학습 저장소를 주고 평가 범위가 아니라 표식으로만 두는 D2는 이번 커밋의 변경 파일이 아닌 DRIVER-DESIGN.md에 남아 있다. 판단이 드러난 곳은 diagnose 명령이다. 세션을 하나도 못 읽으면 이전에는 test 세션만 짚어냈고, driven만 남은 저장소는 '필터가 아무것도 못 찾았다'로 떨어졌다. 이제는 제외된 표식을 test·experiment·driven 모두 이름 붙여 알리고, 이 동작을 확인하는 회귀 테스트도 들어갔다. ARCHITECTURE 문서와 CLI 참조 문서도 함께 갱신됐다. 다만 다른 에이전트의 실행이 소유자 저장소 안으로 들어오는 구조 자체는 그대로 남아, 이 커밋은 기본 배제로 막는 선택일 뿐이다. 저장소 설명이 언급하는 평가 도구가 이 표식의 영향을 어떻게 받는지는 주어진 자료에 없다.