test(framework): a real session per tool, on Windows and on Linux
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 38/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- github-actions, typescript
- Domain
- cli, observability, testing-qa
Research direction
Start with the existing cli / Windows job and the platform-specific exclusions for persona.e2e.test.ts and telemetry-multi-tool.e2e.test.ts, then trace the CLI entry points that journal and report tool activity. Run real Claude Code, Codex, Copilot, Cursor, and OpenCode sessions on Windows and Linux; done means each supported session journals and reports correctly, with Windows privacy expectations documented.
Written by the indexing model from the issue text.
Description
Every probe behind this layer was run on macOS. Most of that is no longer true, and this
ticket was rewritten on 2026-09-03 to say what is left rather than what was once unknown.
Settled since it was opened
| Was unknown | Answer, and where |
|---|---|
Figures land in .config on Windows, where nothing expects them |
%APPDATA%\aidd when the variable is set, .config kept when a machine already journalled there — cli/src/infrastructure/home-dir.ts:41, cli/src/infrastructure/adapters/telemetry-sink-adapter.ts:57 |
skills/01-cost/scripts/lib/sink.js resolves the path |
that file no longer exists; the read path moved into the CLI |
| "Nothing about Linux has been measured" | one job of twenty-two runs on windows-latest; every other runs on ubuntu-latest, so the whole suite is Linux evidence |
| Every hook path, the git calls, the journal's privacy | the cli / Windows job runs the chain end to end — allow measurement with nothing installed, journal a captured payload, the journal stays private while git add -A still works, the plugin suite, a globally installed CLI, diagnose through the command each skill names, then unit, integration and e2e |
Windows went green for the first time on 2026-09-03 (#749), and it earned its place
immediately: it found two real defects that macOS could not. A mode assertion that measured
the platform rather than the repair, and check reporting "its script is not executable, so
git will not run it" about a hook git runs — an unknown printed as a fault on every Windows
run.
Two e2e files stay excluded there, each for a stated platform reason, not a workaround:
persona.e2e.test.ts needs /usr/bin/expect, and telemetry-multi-tool.e2e.test.ts puts an
extensionless #!/bin/sh stand-in on PATH, which Windows resolves by PATHEXT and never by
a shebang.
POSIX modes carry no information on Windows. Measured, not read from documentation:
statSync().mode & 0o777 reports 0o666 for every writable file whatever it was chmod'ed
to, and 0o444 when read-only. So 0700/0600 on the journal is not a privacy guarantee
there — it is a no-op, and any claim resting on it must say so.
What is actually left
- One real session per tool, on Windows and on Linux, that journals and reports. With the
tool's own binary, not a stand-in. CI proves the chain against captured payloads; it does
not prove that a real Claude Code, Codex, Copilot, Cursor or OpenCode session on those
platforms writes what the reader expects. - What replaces the mode bits on Windows, if anything does. Either the journal's privacy
rests on the directory ACL and that is stated, or it is stated that it rests on nothing.
Done when
- The figures are written where each platform expects them, and where they are written is stated per platform.
- The journal's privacy on Windows is established by observation, and if POSIX modes mean nothing there, that is written down rather than implied.
- One real session per tool that runs on the platform, on Windows and on Linux, journals and reports.
That last box overlaps #694, which proves the same chain under load. Whichever runs first
should carry both.
- Dominant language
- TypeScript
- Stars
- 481
- Forks
- 45
- Avg merge
- 17h 40m
- Merged PRs (30d)
- 106
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ai-driven-dev/framework
-
refactor(aidd-orchestrator): the check zone says when to stop, and reviews its axes in one round Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ai-driven-dev/framework#887 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
ai-driven-dev/framework#873 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
ai-driven-dev/framework#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
ai-driven-dev/framework#625 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ai-driven-dev/framework#467 · 1 comment ·
All issues in ai-driven-dev/framework
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
danielmiessler/LifeOS#2218 ·