You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The `dotnet.yml` and `release.yml` Windows lanes share temp pinning and Defender exclusion setup here so both workflows keep the same test-host performance assumptions. General `TMP` / `TEMP` point to the runner's fast `RUNNER_TEMP\cdidx-temp` storage. Executable plugin, hook, and Git fixtures instead use `USERPROFILE\cdidx-trusted-test-temp`, whose protected current-user ACL and trusted ancestor chain satisfy the production executable-boundary contract; the script publishes this separate root as `CDIDX_TEST_TRUSTED_TEMP_ROOT`. Do not move ordinary SQLite or filesystem fixtures into that protected root, because placing the entire suite on the system drive materially increases Windows runtime. The script includes both roots in its normalized, de-duplicated Defender audit. When the `WinDefend` service is running, it submits the resulting string array in one `Add-MpPreference` invocation, reads Defender preferences back, and fails if any path is missing. When the service is stopped or unavailable, exclusions are irrelevant and the script emits a warning while continuing host setup; other Defender configuration or verification failures remain fatal. Update `CiWorkflowTests` when changing this split, batching, availability, audit, verification, or workflow call contract.
782
782
- The `dotnet.yml` SDK setup has one conditional retry for transient SDK download failures. Keep the first attempt marked `continue-on-error` only while the retry is guarded by its failed outcome, so a second failure still fails the job.
783
+
- `IndexCommandRunnerTests.cs`
784
+
Numeric `index` option coverage owns inclusive boundaries, zero/negative/overflow/non-numeric forms, duplicate precedence, text and JSON `E010_USAGE_ERROR` output before database mutation, and structured environment fallback warnings with source/effective-value provenance. Keep every numeric option in the shared matrix when its range or parsing changes.
783
785
- `DbRecoveryTests.cs`
784
786
Database corruption recovery and graceful degradation behavior. Filesystem setup failures for `cdidx index` (read-only DB files and unwritable DB parent directories) are covered in `IndexCommandRunnerTests.cs` so they exercise the same CLI JSON/stderr boundary users see.
785
787
- `Issue4857ManagedRestoreBackupTests.cs`
@@ -1867,6 +1869,8 @@ dotnet test --filter "FullyQualifiedName~GitHelperTests"
-**Invalid explicit numeric `index` options now fail before database setup (#5097)** — zero outside an option's inclusive range, negative, overflowed, non-numeric, and over-limit CLI values return structured `E010_USAGE_ERROR` output instead of warning and silently using a fallback. Environment-variable compatibility fallbacks remain warnings and now report their source and effective value in JSON output.
new(){Name="--show-paths",Description="Show resolved local paths in maintenance diagnostics, recovery commands, or status --config output",PrimaryCommands=Set(RecoveryPathCommands.Concat(["index","backfill-fold","optimize","vacuum","db","status"]).ToArray())},
652
-
new(){Name="--dry-run-path-limit",ValuePlaceholder="<n>",Description="Dry run only: candidate path processing limit before truncated lower-bound estimates",PrimaryCommands=Set("index")},
652
+
new(){Name="--dry-run-path-limit",ValuePlaceholder="<n>",Description="Dry run only: candidate path processing limit (1..1000000); explicit invalid values fail before database setup",PrimaryCommands=Set("index")},
653
653
new(){Name="--checkpoint",Description="Create a DB checkpoint even when backfill preflight is already complete",PrimaryCommands=Set("backfill-fold")},
654
654
new(){Name="--no-checkpoint",Description="Skip the automatic DB checkpoint before a required backfill mutation",PrimaryCommands=Set("backfill-fold")},
new(){Name="--duration-format",ValueDomain=Values(["auto","seconds","hms"]),Description="Index elapsed time display format",PrimaryCommands=Set("index")},
671
-
new(){Name="--max-file-bytes",ValuePlaceholder="<bytes>",Description="Override the per-file indexing size limit",PrimaryCommands=Set("index")},
672
-
new(){Name="--max-symbols-per-file",ValuePlaceholder="<n>",Description="Skip file content, symbols, and references when one file emits too many symbols (max 50000)",PrimaryCommands=Set("index")},
673
-
new(){Name="--max-references-per-file",ValuePlaceholder="<n>",Description="Skip references when one file emits too many references (max 1000000)",PrimaryCommands=Set("index")},
674
-
new(){Name="--parallelism",ValuePlaceholder="<n>",Description="Full-scan and authoritative C# update extraction worker count (default: CPU count capped at 8; explicit max: 16; also honors CDIDX_INDEX_PARALLELISM)",PrimaryCommands=Set("index")},
671
+
new(){Name="--max-file-bytes",ValuePlaceholder="<bytes>",Description="Per-file indexing size limit (1..2147483647 bytes; optional B/K/M/G suffix); invalid CDIDX_MAX_FILE_BYTES warns and uses the built-in default",PrimaryCommands=Set("index")},
672
+
new(){Name="--max-symbols-per-file",ValuePlaceholder="<n>",Description="Skip file content, symbols, and references when one file emits too many symbols (1..50000)",PrimaryCommands=Set("index")},
673
+
new(){Name="--max-references-per-file",ValuePlaceholder="<n>",Description="Skip references when one file emits too many references (1..1000000)",PrimaryCommands=Set("index")},
674
+
new(){Name="--parallelism",ValuePlaceholder="<n>",Description="Extraction worker count (1..16; default CPU count capped at 8); invalid CDIDX_INDEX_PARALLELISM warns and uses the documented effective value",PrimaryCommands=Set("index")},
675
675
new(){Name="--memory-trace",Description="Include phase memory samples in index JSON output",PrimaryCommands=Set("index")},
676
676
new(){Name="--commits",ValuePlaceholder="<commit-ref>",Description="Update files changed in given git commits",PrimaryCommands=Set("index")},
677
677
new(){Name="--changed-between",ValuePlaceholder="<old-ref> <new-ref>",Description="Update files changed between two git refs",PrimaryCommands=Set("index")},
678
678
new(){Name="--files",ValuePlaceholder="<path>",ValueKind=CliOptionValueKind.FilePath,Description="Update explicit files after validating the full selection atomically; invalid or duplicate paths reject before writes, while indexed missing paths remain deletion targets",PrimaryCommands=Set("index")},
new(){Name="--debounce",ValuePlaceholder="<ms>",Description="Watch only: coalesce file events into one update after <ms> of quiet (default 500)",PrimaryCommands=Set("index")},
681
-
new(){Name="--watch-pending-path-limit",ValuePlaceholder="<n>",Description="Watch only: changed-path queue limit before full-rescan fallback",PrimaryCommands=Set("index")},
680
+
new(){Name="--debounce",ValuePlaceholder="<ms>",Description="Watch only: coalesce file events after 0..60000 ms of quiet (default 500)",PrimaryCommands=Set("index")},
681
+
new(){Name="--watch-pending-path-limit",ValuePlaceholder="<n>",Description="Watch only: changed-path queue limit (1..262144); invalid CDIDX_INDEX_WATCH_PENDING_PATH_LIMIT warns and uses the documented effective value",PrimaryCommands=Set("index")},
682
682
new(){Name="--output",ShortName="-o",ValuePlaceholder="<path>",ValueKind=CliOptionValueKind.FilePath,Description="Report bundle or suggestions export output path",PrimaryCommands=Set("report","suggestions")},
683
683
new(){Name="--redact-paths",Description="Redact machine-specific paths (the default for recovery/config JSON and reports)",PrimaryCommands=Set(RecoveryPathCommands.Concat(["status","report"]).ToArray())},
684
684
new(){Name="--no-log",Description="Exclude global tool log from bundle",PrimaryCommands=Set("report")},
0 commit comments