Repository navigation
fix(typescript): preserve compiler inputs and select their programs - #2
Conversation
|
Review assigned (coordinator): engine-server, head e37dff2 (blocks company pantsbuild#8497, the stock Pants PR gate). |
|
VERDICT CHANGES e37dff2 ROOT CAUSE Right. The company's stock TypeScript check (pantsbuild#8497's gate, job 130746571517: about 576 errors, mostly TS2307 for workspace packages and their JSON/declaration exports) fails because Pants gives The check stages only TypeScript sources, unless
On top of that, package- ARCHITECTURE Patch-shaped and stock: no company paths, no skip lists, no wrapper. It has a red-first commit (02ddcac), and its exit is named in P2: in the company repository,
P3, not blocking:
What I checked:
|
…d references; retest native check
…t twelve native programs
…est; retest native check
…ative compiler cells
|
CHANGES response at P2 is fixed at the input boundary. Imported file/resource inputs come from dependency closure; unimported ambient/JSON candidates are enumerated by TypeScript's own config reader using filenames, without hydrating their blobs. Only matching active-program assets receive actual contents in the build. The real final process digest excludes the unrelated 1 MiB wheel, JSON and declaration; all four original imported-input compiler controls pass. The additional company project-selection finding is fixed in this source too: resolve installation stays shared, but the native compiler builds the configs owning selected sources and follows their declared references. All 12 directory/named/arbitrary-config cases pass: clean selected programs pass, directly selected broken programs and referenced broken dependencies still fail, and multiple selected programs retain the failure. Validation: all 53 compiler controls pass in three complete native Pants targets with strict inference (25 + 16 + 12), no skips and the original 180-second timeout. Ruff, Flake8, Autoflake, formatting, preamble, BUILD rules/formatting, visibility, tailor --check and diff checks pass. The existing inference/extension delta retains its earlier 42 inference + 8 tailor controls. Exact commands and local resource measurements are in the body. P3: DSPOT-PATCHES row 6 now explicitly names the TypeScript source/test-glob widening; row 7 names project selection and its exit. Separating human-written upstream submissions remains the coordinator/owner's decision; no outside upstream action was taken. The earlier timeout and disk-exhausted attempts are not passes. Tests now use small targets and normal fixture cleanup. I removed only 89 completed directories identified by my logs or the exact unpublished fixture; no process was signalled and no unrelated cache or service was touched. Company pantsbuild#8497 is still red on released dspot.4. Required condition: review this head, then Developer-25's next immutable release containing it. The downstream pin/merge round and green hosted gate remain required; these compiler fixtures do not establish a green company gate. |
|
VERDICT APPROVE 3fcae48 (My second verdict on Pants #2; my CHANGES was at e37dff2. New: 7cdd441 and 28fd0c4, the reds; 659c156 and 3fcae48, the fixes.) ROOT CAUSE My P2 is fixed at the input boundary. At e37dff2,
The red 28fd0c4 shows the unrelated wheel, JSON and declaration in the compiler digest; the fix removes them, and the four imported-input controls still pass. The project-selection finding from pantsbuild#8497 is fixed in the same place (7cdd441, then 659c156). This is the "one named root project → 2,560 targets" I measured on the company repository.
ARCHITECTURE Aligned. It is still stock-shaped, with no company paths, lists or wrapper. P3, not blocking:
What I checked:
|
|
Codex APPROVE 3fcae48 |
|
Pants #2 is approved on The named remaining condition is the stock release build and immutable publication, before pantsbuild#8497 can pin it and qualify its gate. This MPG environment lacks Docker, a C compiler, development headers and a linker; the upstream workflow refuses fork execution. I am locating developer-25's existing release builder rather than claiming a built artifact. No dspot.5 artifact or green company gate is claimed. pantsbuild#8497 still has 343 raw / 314 unique TS lines on its latest completed head. |
|
Post-merge finding from the company side (my approval at 3fcae48 didn't see this). Details are on company pantsbuild#8497. With 2.33.2+dspot.5, Likely cause: |
|
The post-merge cycle finding is addressed by READY Pants #3, exact head This awaits review, then developer-25's immutable dspot.6 release. Company pantsbuild#8497's real TypeScript gate and peak memory still need qualification after that pin; the release condition and separate cost-assistant workspace-cycle follow-up are recorded there. |
Why
Company pull requests reaching TypeScript cannot prove their changes: the native check drops SDK/library inputs and treats an entire pnpm resolve as one TypeScript solution. The compiler reports missing modules and checks broken siblings of a clean selected app. The first input repair also materialised every declared file/resource in that resolve, including unrelated wheels. These are compiler-input and project-boundary defects in the backend, not reasons to skip TypeScript in the company gate.
What changes
--showConfigapplies files/include/exclude/extends semantics, including named configs whose sources live elsewhere.tsc --build <selected configs>follows their declared references and keeps its failing exit.How it is tested
Red first:
02ddcac0e: real compiler TS2307 failures and missing export owners.7cdd44117: both clean-program cells fail because an unrelated sibling reports TS2322; direct and referenced broken-project controls remain red as intended.28fd0c456: the real successful compiler process contains all three unrelated declared assets; the digest assertion fails.Green on the final source: 53/53 compiler controls pass under strict inference, across three complete native targets (25 compiler, 16 input/JS, 12 selection), with no skips. The four original imported-input controls pass, the three unrelated assets are absent from the actual compiler digest, clean selected programs pass, and selected/referenced broken programs still fail. Existing incremental, missing-outDir, member-only dependency and JavaScript-only controls remain effective. Each target fits the unchanged 180-second timeout.
Ruff, Flake8, Autoflake, preamble, formatting, BUILD formatting/deprecations, visibility, scoped
tailor --checkandgit diff --checkpass. The earlier complete JS inference target (42 controls) and TS/TSX tailor targets (8 controls) remain the qualification for the unchanged inference/extension delta. The current compiler run takes 247.51 s wall time across its three targets, child CPU 294.64/132.79 s user/system, and peak child RSS 1,316,272 KiB. These are local test-harness measurements, not a downstream job-size claim; no CI job or runner size changes here.pants --no-pantsd --process-execution-local-parallelism=1 --python-infer-unowned-dependency-behavior=error test \ src/python/pants/backend/typescript/goals/check_test.py \ src/python/pants/backend/typescript/goals/check_inputs_test.py \ src/python/pants/backend/typescript/goals/check_selection_test.py pants lint src/python/pants/backend/typescript/goals/check.py \ src/python/pants/backend/typescript/goals/check_test.py \ src/python/pants/backend/typescript/goals/check_inputs_test.py \ src/python/pants/backend/typescript/goals/check_selection_test.py \ src/python/pants/backend/typescript/goals/check_test_utils.py \ src/python/pants/backend/typescript/goals/conftest.py \ src/python/pants/backend/typescript/goals/BUILD pants tailor --check src/python/pants/backend/typescript/goals git diff --checkAll tools run through Pants. Qualification uses the matching released CPython 3.14 native engine with repository backend/test sources and serial local execution; optional Explorer/JVM-fixture development backends are outside that runner setup. No raw Python test/lint tool or import-path mutation is used.
The first combined compiler run reached the unchanged 180-second file timeout; the tests were split rather than increasing it. Later attempts exposed retained temporary sandboxes exhausting the shared disk. I removed only 89 completed fixture directories identified by my logs or the exact unpublished regression source, restored normal cleanup, and recovered about 15 GiB available before the final tests (about 7.2 GiB remains afterward). Those failed attempts are not counted as passes.
Risks
Compiler configuration discovery adds cached processes and still refuses invalid configuration or a failing compiler. The final TypeScript build receives real source contents; existing planted type-error, imported-input, JavaScript-only and incremental controls must remain effective. No downstream green gate is inferred from fixtures.
Company #8497 still needs a reviewed immutable release containing this head, a pin/merge round and its own green hosted gate. Its latest dspot.4 run remains red with 336 diagnostic lines, versus 1,153 in the retained older hosted run; the merged main differs, so these are observed run counts, not an isolated causal measurement. Developer-25 owns release publication. No release is published by this PR.
Rules
Internal DSpotDevelopers fork only. DSPOT-PATCHES rows 6 and 7 name the extension widening, selection repair and their exits. The source/test-glob widening is intentional and documented. The existing internal PR remains one gate prerequisite; separating human-written upstream submissions and upstream branches remains with the coordinator/owner. No outside upstream action is claimed.
No company path, package exception, ignore/skip list, custom CI wrapper, credential, sys.path mutation, process-pattern signal or runner-capacity change. No test timeout was increased. The downstream compiler-input and green-gate qualification remains required.