Repository navigation
Gate Linux CI with strict TypeScript and required server integration - #2
Merged
Merged
Conversation
|
joey-huckabee
marked this pull request as ready for review
November 11, 2026 05:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Pelorus now has a strict frontend typecheck and one bounded Linux CI gate. The existing esbuild bundle remains separate. CI requires the real Cargo-built server, all client cases passing, zero skips, and explicit passing results for both named integration tests.
Base:
efb59e62dc0a2511dbae5d4bdc273646b7317d7d. Review exact head6c8d543671edcb8b8ad63def6def9742a6372921and its full diff. This is stabilization task 4; reviewerthr_qsvwmtnn8fand root/coordinator approval are required before an ordinary merge. No merge/release/version/tag/deployment/protection change is requested.Gate and source fixes
src/**/*.ts; unused and fallthrough checks are enabled. Full declaration checking remains enabled.Deck<MapView>generic, div container, and removal of the ignored legacy depth parameter block. Three upstream diagnostics: a non-exported texture type import and two nullable generic constraints in locked luma.gl declarations. TypeScript 5.9.3 and 7.0.2 reproduce the same baseline errors. Exact messages are preserved in docs/typecheck.md.querySelector<HTMLDivElement>is unchecked; its contract is thediv#map-containerselector and actual fixed<div id="map-container">tag. The.mjstests execute under Node but are not included in the source typecheck. The legacydepthTest: falsekey is ignored in the locked Deck/luma draw path; the final source removes that block entirely, preserving actual runtime defaults. No newdepthCompare/depthWriteEnabledsetting is activated. The DOM test stub gains the query method; no existing test/assertion is removed. No new blanket casts/any, protocol change, runtime dependency or framework is introduced.contents: read, no persisted checkout credentials, 20-minute timeout, stale-run cancellation, maximum two Cargo/compiler/test workers. Rust 1.99.1, Node 24.22.1.npm ci→ explicitnpm run typeprep→ strictnpm run typecheck→npm run test:ci→ existing build. No lifecycle hooks. Server continues binding127.0.0.1unchanged.PELORUS_SERVER_BIN. The test runner preserves child exit failures, enforces TAP totals (all registered tests pass; no skips, failures, cancellations or TODOs), and requires both named real-server cases to pass. There is no shell test-output pipeline to hide a failure. Proof-parser negative tests cover missing/ambiguous summaries, bad totals, failed/missing integration cases and skips.Narrow luma.gl declaration repair — exact review required
Root/reviewer approved this approach in principle subject to the guards and identity evidence below. Explicit preparation changes only two installed
.d.tsfiles / three expressions in existing@luma.gl/coreand@luma.gl/engine9.2.6:ShaderPropsT[P]generic arguments inNonNullable, preserving pre-existinganyunchanged.Both package versions and both input hashes are checked before any writes. Both files must be original, or both approved-after; mixed states fail without writes. All computed output hashes are checked before writes and actual hashes checked afterward. Both-after is an idempotent no-write path. There is no network access, npm postinstall/prepare hook, skipped library checking, other declaration edit or new declaration dependency.
docs/typecheck.md records the exact before/after expressions and SHA-256s, original diagnostics, compiler comparison, pinned upstream sources/runtime rationale and why augmentation does not fix the invalid original generic declarations. Upstream's optional map introduces
undefined; the implementation supplies object props. The repair narrows that optional value and does not broaden the runtime API.Executed Linux aarch64 evidence
The actual local shell exported the worker limits across the entire sequence. Results: 21 Rust tests passed; 42 client/proof/integration tests passed; zero skips. Both named integration cases passed. Format, warnings-denied Clippy, strict tsc, client bundle and
git diff --checkpassed. GitHub Actions result will be checked separately after opening the draft.Negative checks also passed:
srcfile with a project type error and obsolete Deck API fails withTS2322/TS2353; correctedShaderInputsstill rejects string props for a numeric field (TS2322).Identity evidence (full digests and reports in docs): all 378 existing lock package records are identical, including versions, resolutions, dependency edges, integrities and flags. The 21 added records are only development TypeScript and its optional
@typescriptplatform binaries; these are transitive dev-tool records, not product runtime dependencies. All 554 non-target files in the two affected luma packages are identical, including 114 JavaScript files. The same corrected project source produces identical bundle/map hashes before versus after declaration preparation:The identity comparison isolates declaration preparation; source API corrections can change project-emitted bytes relative to the base. No Windows validation or browser/GPU/performance claim is made. Existing npm deprecation and Node module-type warnings remain. CI uses
npm ci --ignore-scriptsto prevent dependency lifecycle execution; explicit preparation is a separate command. Sonar rules and policy are unchanged. Local machine files/installs and other project repositories were not accessed. Existing branches and edits were preserved.Current-head review refinements
Follow-up
6c8d543671edcb8b8ad63def6def9742a6372921is bounded to removal of the depth block, the tag-qualified selector and honest disclosures, CI install--ignore-scripts, the three reported script readability findings, and updated preparation-only hash evidence. No new source contract, dependency, protocol or rendering design.The prior Linux run passed, but SonarCloud correctly blocked its permissive install step. That finding is fixed directly rather than suppressed; new Linux and Sonar results must be checked on this exact head before merge. Local clean
npm ci --ignore-scripts→ preparation checks → strict typecheck → 42-test / zero-skip gate → build passed on the revised source. All drift/version/mixed-state/no-write, idempotence, project/API misuse and runtime/lock/bundle identity checks were rerun. The unchanged Rust sources retain their 21-test/format/Clippy/locked-build local evidence; fresh hosted CI will run those again.Reviewer
thr_qsvwmtnn8fmust approve the exact revised head. Root retains ordinary merge control after all checks are green. No browser/GPU, Windows or performance claim is made.