feat: compile-check closes its miss-side gaps and is shown as an ordinary command
Summary
uloop compile-check closes the remaining gaps on its miss side and is shown as an ordinary command: it is listed in --help, uloop list --names, shell completion, the README, and the glossary, and uloop skills install installs its skill. The decision and the exact guarantee are recorded in ADR 0018 (docs/adr/0018-compile-check-is-its-own-command-and-is-shown.md).
This is the integration branch feature/compile-check-visible (cut from main at e917059fd). Every change arrived through a reviewed pull request against the branch:
- #3355 docs: ADR 0018 records that compile-check stays its own command and is shown
- #3356 fix: a reference an assembly definition lost is detected and refused with
COMPILE_CHECK_UNITY_BUILD_REQUIRED - #3357 feat: build settings that moved since the last Unity build are detected (a record written by the first run after a build; added scripting defines are checked one-way when
ProjectSettings.assetwas saved after that build) - #3358 feat: a dependent a run skips keeps its result, baseline and saved generator output; a dependent with analyzers and no saved generator output is compiled once rather than narrowed by name
- #3359 fix: identifiers written with
\u/\Uescapes are read by the name index - #3360 feat: new scripts outside every assembly definition are compiled with the predefined assembly Unity assigns them (
Assembly-CSharpand its Editor / firstpass siblings); the folders Unity's importer never compiles are left out - #3361 feat: compile-check is shown in help, list, completion, README, and skills
- #3362 docs: the skill no longer says a skipped dependent is compiled in full next; a stale comment in the result store follows
- #3363 fix:
compile-check --helpcloses with the skill guidance line; the one-way define refusal names its part in the VibeLog
What stays undetected
ADR 0018 lists the remaining limitations (a) through (h): a generator reading a referenced assembly, async method builder changes, Unity versions without the Library/Bee build-trace files, settings changed before the record exists, new scripts in package folders without an assembly definition, analyzer configs added since the last build, Dedicated Server targets, and Unity 6 build profiles that override Player Settings. Each is also stated in docs/compile-check.md and the skill.
Verification
- Every pull request passed its CI and an independent review; the Go modules pass
gofmt,go vet,golangci-lint, andgo test. - A final acceptance round on a large Unity 6 project (6000.3.15f1, hundreds of assemblies) ran eleven scenarios against a binary built from this branch: zero false errors and zero refusals that a subsequent
uloop compiledid not clear. The refusals for a lost assembly-definition reference, an added scripting define, and a removed scripting define all cleared as designed; new scripts outside assembly definitions compiled withAssembly-CSharp; a script underAssets/StreamingAssets/was left out; a dependent of 1,293 sources kept its changed-files check after the run that skipped it.
Compatibility
- No change to the IPC wire format:
protocolVersionandREQUIRED_CLI_PROTOCOL_VERSIONare untouched. - No C# change under
Packages/src; the package change is the skill's frontmatter (internal: trueremoved) and its text. cli/commonchanged, so the shared-inputs stamps of both native CLI components are updated byscripts/stamp-release-inputs.shin the pull requests that changed it.- Release version fields and changelogs are untouched; release-please stamps them.