test(framework): a real session per tool, on Windows and on Linux

Open
#707 0 comments 0 reactions 0 assignees View on GitHub

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

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ai-driven-dev/framework

All issues in ai-driven-dev/framework

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.