Repository navigation
installed layout v2
The installed layout v2 moves user data out of the program folder: the manifest to
%APPDATA%\drag-lint, logs and library DBs to %LOCALAPPDATA%\drag-lint. Phase 1 only resolves
paths; phase 2 adds the one-time manifest migrate. It is off by default, and nothing is moved
until you run manifest migrate --apply with the switch on.
Design: docs\superpowers\specs\2026-11-06-installed-layout-v2.md.
drag-lint manifest where [--manifest <path>] [--json]
Read-only. It prints the layout, the manifest file with its origin (explicit, appdata or
exe-dir), every lookup rung with whether it exists and is active, the log folder and the library
folder. It exits 0 even when the file does not exist.
-
Explicit:
--manifest <path>(any verb that uses the shared flags), thenDRAGLINT_MANIFEST. Honoured in both layouts. A missing file is reported and answers with no sections: it never falls through to another manifest. The flag reaches spawned index children. -
%APPDATA%\drag-lint\drag-lint.json, only withDRAGLINT_LAYOUT=v2and only if the file exists. drag-lint.jsonbeside the exe.
--config <file> still names one file for one verb and bypasses the lookup. A local
.drag-lint.json still merges over whichever file answered. Relative paths resolve against the folder
the file was found in.
drag-lint manifest migrate [--apply] [--json]
Without --apply it only plans: it names the exe-side file, the roaming target and the name the old
file would get, and touches nothing (allowed with the switch off). With --apply and
DRAGLINT_LAYOUT=v2 it writes %APPDATA%\drag-lint\drag-lint.json and then RENAMES the exe-side file
to drag-lint.json.migrated-<yyyy-mm-dd> (-2, -3 when that name is taken). It never deletes and
never overwrites.
Every DB stays where it was: the written outDir is absolute (the exe folder when it was absent) and
every relative section include becomes absolute against the exe folder. Every other key is kept.
Exit codes: 0 migrated, would migrate, or nothing to migrate; 2 refused (the roaming file exists,
--apply with the switch off, an explicit manifest in effect, %APPDATA% unset); 1 failed. The
BPL-side copy is not touched (the plugin moves in phase 3).
-
register-projectand the manifest-rewriting verbs write the file the lookup answered. When no manifest exists anywhere,register-project --applycreates%APPDATA%\drag-lint\drag-lint.json. -
%NAME%references inoutDirexpand (an unset name, a lone%and%%stay literal). With the switch offoutDiris literal, as before. - A manifest read from
%APPDATA%\drag-lintwith nooutDirputs DBs in%LOCALAPPDATA%\drag-lint\library; any other manifest with nooutDirkeeps them beside itself. - The fatal log goes to
%LOCALAPPDATA%\drag-lint\logs. -
DRAGLINT_LAYOUT=v1(or any value other thanv2) is the flat layout; it stays the way back after the default flips.
Do not set the switch on a machine with the IDE plugin yet. The plugin still reads the manifest beside the BPL or exe, so the two would disagree.
The plugin lookups (phase 3) and the installer changes (phase 4, behind the LAYOUT_V2 build
define, off) come later. A VM test is owed before the default can change (phase 5).