Skip to content

test(framework): nothing here has ever run on Windows or Linux #707

Description

@blafourcade

Every probe behind this layer was run on macOS. Nothing about Windows or Linux has been measured, and the code makes at least one choice that is wrong for Windows by convention.

What is known to be shaky

skills/01-cost/scripts/lib/sink.js resolves where figures are stored as:

process.env.AIDD_USER_CONFIG_DIR || path.join(process.env.HOME || os.homedir(), ".config", "aidd")

On Windows HOME is usually unset, so os.homedir() gives C:\Users\<name> and the figures land in C:\Users\<name>\.config\aidd. That works — and it is not where a Windows user, or anything else on a Windows machine, expects application data to live. %APPDATA% is.

What is unknown, which is the larger part

  • The permission tightening. 0700 on directories, 0600 on files, plus an explicit chmod. The comment says "Windows ignores POSIX modes rather than erroring on them", which was read from documentation, never observed. What actually happens to the privacy of a journal on a Windows filesystem is unestablished.
  • Every hook path. The five tools spawn the journal differently, and the commands are strings with paths in them. None of that has run on either platform.
  • The git calls. getRepoRoot shells out to git, and warnIfTracked runs git ls-files. Both assume a git on PATH behaving as it does here.
  • The skill's own script search. It uses a find invocation with ~-prefixed paths. That is a shell convention this repository's own tests never exercise off macOS.

Why it is worth a ticket rather than a fix

The fix for the first item is one line. The rest cannot be fixed without running them somewhere, and guessing at them would be the exact mistake this layer catalogues elsewhere: a claim written more confidently than its evidence.

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.
  • Anything that cannot be made to work is declared, per platform, the way each tool's limits already are.

Bounds

This does not claim the layer is broken off macOS. It claims nobody knows, and that the documentation currently reads as though somebody does.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Status
    Ideation

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions