Skip to content

Bankrupt TypeScript + the bug zoo#1936

Merged
TSavo merged 1 commit into
mainfrom
codex/bankrupt-typescript
Jun 5, 2026
Merged

Bankrupt TypeScript + the bug zoo#1936
TSavo merged 1 commit into
mainfrom
codex/bankrupt-typescript

Conversation

@TSavo
Copy link
Copy Markdown
Owner

@TSavo TSavo commented Jun 5, 2026

TypeScript was the least-developed kit: no source-oracle resolve path (just a lift-refusal + an LLM propose path), so per the whole-tree bankruptcy it goes. The bug zoo — the main pnpm exec tsx consumer — is bankrupt too.

Deleted

  • implementations/typescript
  • the 2 ts shims (provekit-shim-typescript-better-sqlite3 / -pg)
  • the 3 ts realize manifests under .provekit/realize/
  • menagerie/bug-zoo (workspace member + Makefile target + help echo)
  • wholly-ts rust integration tests (cmd_recognize_typescript_parity, cmd_emit_typescript_vitest, cmd_mint_typescript_source_runtime_failure, cmd_verify_typescript_production_bridge, and the now-empty library_tag_dispatch_test)

Build/CI

  • removed build-ts / test-ts targets; dropped build-ts from test-rust + build-all
  • removed the ci.yml node/pnpm setup steps

Self-skipping leftovers (harmless): kit_declaration_rpc's ts case skip-guards on BCARGO_TYPESCRIPT_ENV; multi_kit::test5_typescript_kit_dispatch skip-guards on provekit-lsp-ts being on PATH (never built now). Both skip in CI.

numpy stays (the proof). Java is the next bankruptcy (keeping the tested Product-A core).

cli tests compile; make ci parses.

TS had no source-oracle resolve path (lift-refusal + an LLM propose path, the
least-developed kit), so per the whole-tree bankruptcy it goes. The bug zoo
(the main `pnpm exec tsx` consumer) is bankrupt too.

Deleted: implementations/typescript, the 2 ts shims
(typescript-better-sqlite3 / -pg), the 3 ts realize manifests, menagerie/bug-zoo
(workspace member + Makefile target), and the wholly-ts rust integration tests
(cmd_recognize_typescript_parity / cmd_emit_typescript_vitest /
cmd_mint_typescript_source_runtime_failure / cmd_verify_typescript_production_bridge,
and the now-empty library_tag_dispatch_test). build-ts / test-ts +
the ci.yml node/pnpm setup removed; build-ts dropped from test-rust + build-all.

kit_declaration_rpc's typescript test already skip-guards on BCARGO_TYPESCRIPT_ENV
(skips in CI). numpy stays (the proof); java is the next bankruptcy.

cli tests compile; make ci parses.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 5, 2026

Important

Review skipped

Too many files!

This PR contains 295 files, which is 145 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b21d806b-4556-4474-bfff-34ee60d89793

📥 Commits

Reviewing files that changed from the base of the PR and between 493ebae and 3bf58a2.

⛔ Files ignored due to path filters (5)
  • implementations/rust/Cargo.lock is excluded by !**/*.lock
  • implementations/typescript/provekit-emit-typescript-vitest/package-lock.json is excluded by !**/package-lock.json
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/package-lock.json is excluded by !**/package-lock.json
  • implementations/typescript/provekit-realize-typescript-core/package-lock.json is excluded by !**/package-lock.json
  • implementations/typescript/provekit-realize-typescript-pg/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (295)
  • .github/workflows/ci.yml
  • .provekit/realize/typescript-better-sqlite3/manifest.toml
  • .provekit/realize/typescript-pg/manifest.toml
  • .provekit/realize/typescript/manifest.toml
  • Makefile
  • examples/provekit-shim-typescript-better-sqlite3/.gitignore
  • examples/provekit-shim-typescript-better-sqlite3/.provekit/config.toml
  • examples/provekit-shim-typescript-better-sqlite3/.provekit/lift/typescript-bind/manifest.toml
  • examples/provekit-shim-typescript-better-sqlite3/README.md
  • examples/provekit-shim-typescript-better-sqlite3/blake3-512:6e5ce1aa41e928a4ed61a14052f41b3d9c7fe13f1bb9f915b1eb850e53db44b8699e375a158854efc98c165fcf9f976555a7c50021669bf8f9f8ee35efda705e.proof
  • examples/provekit-shim-typescript-better-sqlite3/package.json
  • examples/provekit-shim-typescript-better-sqlite3/provekit.proof
  • examples/provekit-shim-typescript-better-sqlite3/src/index.ts
  • examples/provekit-shim-typescript-pg/.provekit/config.toml
  • examples/provekit-shim-typescript-pg/.provekit/lift/typescript-bind/manifest.toml
  • examples/provekit-shim-typescript-pg/README.md
  • examples/provekit-shim-typescript-pg/blake3-512:e61d9922bff20daff087025fff7b3500c740258e50be3d862fbb4e75a8630179528aa8ff3bbacfbb3ec4b659d08c1a6aa7f83cf50cf5fa9d316a09daa2d13b83.proof
  • examples/provekit-shim-typescript-pg/package.json
  • examples/provekit-shim-typescript-pg/provekit.proof
  • examples/provekit-shim-typescript-pg/src/index.ts
  • implementations/rust/Cargo.toml
  • implementations/rust/provekit-cli/tests/cmd_emit_typescript_vitest.rs
  • implementations/rust/provekit-cli/tests/cmd_mint_typescript_source_runtime_failure.rs
  • implementations/rust/provekit-cli/tests/cmd_recognize_typescript_parity.rs
  • implementations/rust/provekit-cli/tests/cmd_verify_typescript_production_bridge.rs
  • implementations/rust/provekit-cli/tests/library_tag_dispatch_test.rs
  • implementations/typescript/.provekit/config.toml
  • implementations/typescript/.provekit/lift/typescript-source/manifest.toml
  • implementations/typescript/.provekit/lift/typescript/manifest.toml
  • implementations/typescript/.provekit/lift/typescript/plugin.sh
  • implementations/typescript/packages/ts-types-proof/README.md
  • implementations/typescript/packages/ts-types-proof/example/usage.ts
  • implementations/typescript/packages/ts-types-proof/package.json
  • implementations/typescript/packages/ts-types-proof/src/index.ts
  • implementations/typescript/provekit-emit-typescript-vitest/package.json
  • implementations/typescript/provekit-emit-typescript-vitest/src/emitter.js
  • implementations/typescript/provekit-emit-typescript-vitest/src/main.js
  • implementations/typescript/provekit-emit-typescript-vitest/src/rpc.js
  • implementations/typescript/provekit-emit-typescript-vitest/tests/emitter.test.js
  • implementations/typescript/provekit-emit-typescript-vitest/tests/rpc.test.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/.gitignore
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/package.json
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/src/main.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/src/platform_semantics.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/src/realizer.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/src/rpc.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/tests/platform_semantics.test.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/tests/realizer.test.js
  • implementations/typescript/provekit-realize-typescript-better-sqlite3/tests/rpc.test.js
  • implementations/typescript/provekit-realize-typescript-core/package.json
  • implementations/typescript/provekit-realize-typescript-core/src/assemble.js
  • implementations/typescript/provekit-realize-typescript-core/src/dependency_proofs.js
  • implementations/typescript/provekit-realize-typescript-core/src/literal_encoding.js
  • implementations/typescript/provekit-realize-typescript-core/src/main.js
  • implementations/typescript/provekit-realize-typescript-core/src/platform_semantics.js
  • implementations/typescript/provekit-realize-typescript-core/src/realizer.js
  • implementations/typescript/provekit-realize-typescript-core/src/rpc.js
  • implementations/typescript/provekit-realize-typescript-core/tests/assemble.test.js
  • implementations/typescript/provekit-realize-typescript-core/tests/dependency_proofs.test.js
  • implementations/typescript/provekit-realize-typescript-core/tests/fixtures/body-templates/ntt-sql-guard.json
  • implementations/typescript/provekit-realize-typescript-core/tests/literal_encoding.test.js
  • implementations/typescript/provekit-realize-typescript-core/tests/platform_semantics.test.js
  • implementations/typescript/provekit-realize-typescript-core/tests/realizer.test.js
  • implementations/typescript/provekit-realize-typescript-pg/package.json
  • implementations/typescript/provekit-realize-typescript-pg/src/main.js
  • implementations/typescript/provekit-realize-typescript-pg/src/platform_semantics.js
  • implementations/typescript/provekit-realize-typescript-pg/src/realizer.js
  • implementations/typescript/provekit-realize-typescript-pg/src/rpc.js
  • implementations/typescript/provekit-realize-typescript-pg/tests/platform_semantics.test.js
  • implementations/typescript/provekit-realize-typescript-pg/tests/realizer.test.js
  • implementations/typescript/provekit-realize-typescript-pg/tests/rpc.test.js
  • implementations/typescript/src/bin/mint-ts-self-contracts-rpc.cjs
  • implementations/typescript/src/bin/mint-ts-self-contracts.mts
  • implementations/typescript/src/bin/mint-ts-self-contracts.test.ts
  • implementations/typescript/src/canonicalizer/ast.ts
  • implementations/typescript/src/canonicalizer/canonicalize.ts
  • implementations/typescript/src/canonicalizer/cross-impl-golden.test.ts
  • implementations/typescript/src/canonicalizer/equivalence.test.ts
  • implementations/typescript/src/canonicalizer/hash.ts
  • implementations/typescript/src/canonicalizer/index.ts
  • implementations/typescript/src/canonicalizer/irFormula.ts
  • implementations/typescript/src/canonicalizer/passes/acNormalize.ts
  • implementations/typescript/src/canonicalizer/passes/deBruijn.ts
  • implementations/typescript/src/canonicalizer/passes/impliesRemoval.ts
  • implementations/typescript/src/canonicalizer/passes/nnf.ts
  • implementations/typescript/src/canonicalizer/passes/predicates.ts
  • implementations/typescript/src/canonicalizer/passes/sorts.ts
  • implementations/typescript/src/canonicalizer/serialize.ts
  • implementations/typescript/src/claimEnvelope/bridge_v14.ts
  • implementations/typescript/src/claimEnvelope/canonicalize.ts
  • implementations/typescript/src/claimEnvelope/cid.ts
  • implementations/typescript/src/claimEnvelope/index.test.ts
  • implementations/typescript/src/claimEnvelope/index.ts
  • implementations/typescript/src/claimEnvelope/mint.test.ts
  • implementations/typescript/src/claimEnvelope/mint.ts
  • implementations/typescript/src/claimEnvelope/sign.ts
  • implementations/typescript/src/claimEnvelope/types.ts
  • implementations/typescript/src/claimEnvelope/validate.ts
  • implementations/typescript/src/claimEnvelope/variants/index.ts
  • implementations/typescript/src/config/provekitConfig.ts
  • implementations/typescript/src/ir/assert.ts
  • implementations/typescript/src/ir/brands.ts
  • implementations/typescript/src/ir/connectives.ts
  • implementations/typescript/src/ir/cvc5/cvc5.test.ts
  • implementations/typescript/src/ir/cvc5/index.ts
  • implementations/typescript/src/ir/extensions/authoring.ts
  • implementations/typescript/src/ir/extensions/bridges.test.ts
  • implementations/typescript/src/ir/extensions/bridges.ts
  • implementations/typescript/src/ir/extensions/extensions.test.ts
  • implementations/typescript/src/ir/extensions/index.ts
  • implementations/typescript/src/ir/extensions/kitDiscovery.test.ts
  • implementations/typescript/src/ir/extensions/kitDiscovery.ts
  • implementations/typescript/src/ir/extensions/registry.ts
  • implementations/typescript/src/ir/formulas.ts
  • implementations/typescript/src/ir/grammar/parse.test.ts
  • implementations/typescript/src/ir/grammar/parse.ts
  • implementations/typescript/src/ir/index.ts
  • implementations/typescript/src/ir/invariants.test.ts
  • implementations/typescript/src/ir/invariants.ts
  • implementations/typescript/src/ir/ir.test.ts
  • implementations/typescript/src/ir/lean/README.md
  • implementations/typescript/src/ir/lean/declarations.ts
  • implementations/typescript/src/ir/lean/emit.ts
  • implementations/typescript/src/ir/lean/index.ts
  • implementations/typescript/src/ir/lean/lean.test.ts
  • implementations/typescript/src/ir/lean/sorts.ts
  • implementations/typescript/src/ir/lift/__fixtures__/provekit-ir.d.ts
  • implementations/typescript/src/ir/lift/anchoring.ts
  • implementations/typescript/src/ir/lift/diagnostics.ts
  • implementations/typescript/src/ir/lift/index.ts
  • implementations/typescript/src/ir/lift/lift.test.ts
  • implementations/typescript/src/ir/lift/liftSurface.test.ts
  • implementations/typescript/src/ir/lift/liftSurface.ts
  • implementations/typescript/src/ir/lift/registry.ts
  • implementations/typescript/src/ir/lift/rules.ts
  • implementations/typescript/src/ir/lift/sorts.ts
  • implementations/typescript/src/ir/lift/visitor.ts
  • implementations/typescript/src/ir/property.ts
  • implementations/typescript/src/ir/quantifiers.ts
  • implementations/typescript/src/ir/scopes.ts
  • implementations/typescript/src/ir/smt/declarations.ts
  • implementations/typescript/src/ir/smt/emit.ts
  • implementations/typescript/src/ir/smt/index.ts
  • implementations/typescript/src/ir/smt/smt.test.ts
  • implementations/typescript/src/ir/smt/sorts.ts
  • implementations/typescript/src/ir/sorts.ts
  • implementations/typescript/src/ir/substitute.test.ts
  • implementations/typescript/src/ir/substitute.ts
  • implementations/typescript/src/ir/symbolic/bv-cross-lang-fixture.test.ts
  • implementations/typescript/src/ir/symbolic/index.ts
  • implementations/typescript/src/ir/symbolic/primitives.ts
  • implementations/typescript/src/ir/symbolic/property.ts
  • implementations/typescript/src/ir/symbolic/symbolic.test.ts
  • implementations/typescript/src/legacy-ontology-removal.test.ts
  • implementations/typescript/src/lift/README.md
  • implementations/typescript/src/lift/__fixtures__/mixedAllAdapters.ts
  • implementations/typescript/src/lift/__fixtures__/mixedZodFastCheck.ts
  • implementations/typescript/src/lift/adapters/class-validator.ts
  • implementations/typescript/src/lift/adapters/fast-check.ts
  • implementations/typescript/src/lift/adapters/provekit-annotations.ts
  • implementations/typescript/src/lift/adapters/vitest-tests.ts
  • implementations/typescript/src/lift/adapters/zod.ts
  • implementations/typescript/src/lift/class-validator.test.ts
  • implementations/typescript/src/lift/cross-kit-bridges.self-contracts.test.ts
  • implementations/typescript/src/lift/cross-kit-bridges.test.ts
  • implementations/typescript/src/lift/cross-kit-bridges.ts
  • implementations/typescript/src/lift/index.test.ts
  • implementations/typescript/src/lift/index.ts
  • implementations/typescript/src/lift/types.ts
  • implementations/typescript/src/lift/typescript-source/bin.test.ts
  • implementations/typescript/src/lift/typescript-source/bin.ts
  • implementations/typescript/src/lift/typescript-source/index.test.ts
  • implementations/typescript/src/lift/typescript-source/index.ts
  • implementations/typescript/src/lift/typescript-source/verify.test.ts
  • implementations/typescript/src/lift/typescript-source/verify.ts
  • implementations/typescript/src/lift/vitest-plugin.test.ts
  • implementations/typescript/src/lift/vitest-plugin.ts
  • implementations/typescript/src/lift/vitest-tests-bin.ts
  • implementations/typescript/src/lift/vitest-tests-rpc.test.ts
  • implementations/typescript/src/lift/vitest-tests-rpc.ts
  • implementations/typescript/src/lift/vitest-tests.test.ts
  • implementations/typescript/src/lsp/README.md
  • implementations/typescript/src/lsp/daemon-entry.ts
  • implementations/typescript/src/lsp/daemon.test.ts
  • implementations/typescript/src/lsp/daemon.ts
  • implementations/typescript/src/lsp/forward_propagator.ts
  • implementations/typescript/src/lsp/server.ts
  • implementations/typescript/src/producerKeys/index.ts
  • implementations/typescript/src/proofEnvelope/cross-lang-cpp-proof.test.ts
  • implementations/typescript/src/proofEnvelope/cross-lang-end-to-end.test.ts
  • implementations/typescript/src/proofEnvelope/cross-lang-fixture.test.ts
  • implementations/typescript/src/proofEnvelope/index.test.ts
  • implementations/typescript/src/proofEnvelope/index.ts
  • implementations/typescript/src/proofResolver/index.test.ts
  • implementations/typescript/src/proofResolver/index.ts
  • implementations/typescript/src/proveLift/__fixtures__/multiExport.ts
  • implementations/typescript/src/proveLift/__fixtures__/noExports.ts
  • implementations/typescript/src/proveLift/__fixtures__/nonPrimitive.ts
  • implementations/typescript/src/proveLift/__fixtures__/parseInt.ts
  • implementations/typescript/src/proveLift/detect.ts
  • implementations/typescript/src/proveLift/detectSort.ts
  • implementations/typescript/src/proveLift/errors.ts
  • implementations/typescript/src/proveLift/filter.ts
  • implementations/typescript/src/proveLift/index.ts
  • implementations/typescript/src/proveLift/mint.ts
  • implementations/typescript/src/proveLift/prompts/intake.md
  • implementations/typescript/src/proveLift/propose.ts
  • implementations/typescript/src/proveLift/review.ts
  • implementations/typescript/src/proveLift/tsPrimitiveAdapter.test.ts
  • implementations/typescript/src/proveLift/tsPrimitiveAdapter.ts
  • implementations/typescript/src/self-contracts/typescript-kit.self-contracts.test.ts
  • implementations/typescript/src/test-support/smtPool.test.ts
  • implementations/typescript/src/test-support/smtPool.ts
  • implementations/typescript/src/types/dag-cbor.d.ts
  • implementations/typescript/src/verifier/bridgeEnforcement.ts
  • implementations/typescript/src/verifier/index.ts
  • implementations/typescript/src/verifier/mementoPool.ts
  • implementations/typescript/src/workflow/__fixtures__/buggy-parse-byte.ts
  • implementations/typescript/src/workflow/bug-fix-smoke.test.ts
  • implementations/typescript/src/workflow/producers/bridgeEnforcement.integration.test.ts
  • implementations/typescript/src/workflow/producers/checkImplication.test.ts
  • implementations/typescript/src/workflow/producers/checkImplication.ts
  • implementations/typescript/src/workflow/producers/circularProof.integration.test.ts
  • implementations/typescript/src/workflow/producers/enumerateBridgeCallsites.test.ts
  • implementations/typescript/src/workflow/producers/enumerateBridgeCallsites.ts
  • implementations/typescript/src/workflow/producers/instantiateObligation.ts
  • implementations/typescript/src/workflow/producers/loadAllProofs.ts
  • implementations/typescript/src/workflow/producers/reportBridgeViolations.ts
  • implementations/typescript/src/workflow/producers/resolveBridgeTarget.test.ts
  • implementations/typescript/src/workflow/producers/resolveBridgeTarget.ts
  • implementations/typescript/src/workflow/producers/solveObligation.ts
  • implementations/typescript/src/workflow/types.ts
  • implementations/typescript/target/release/provekit-realize-typescript
  • implementations/typescript/target/release/provekit-realize-typescript-better-sqlite3
  • implementations/typescript/target/release/provekit-realize-typescript-pg
  • implementations/typescript/vitest.setup.ts
  • menagerie/bug-zoo/.gitignore
  • menagerie/bug-zoo/BUG-CLASS-TAXONOMY.md
  • menagerie/bug-zoo/Cargo.toml
  • menagerie/bug-zoo/README.md
  • menagerie/bug-zoo/probes/induction-defeats-smt/README.md
  • menagerie/bug-zoo/probes/induction-defeats-smt/sum.v
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/.gitignore
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/README.md
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/lab/c/chain.c
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/lab/c/chain.h
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/lab/rust/Cargo.toml
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/lab/rust/src/lib.rs
  • menagerie/bug-zoo/species/BZ-COMPOSITION-001-cross-language-equivalence/runner.sh
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/README.md
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/expected-diagnostic.txt
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/expected.proofir.json
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/harness/.provekit/config.toml
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/harness/.provekit/lift/go-canonical/manifest.toml
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/harness/codec.go
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/harness/go.mod
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/map-serializer/kit-rpc/run-go-lifter.sh
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/exhibit/sat-witness.json
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/expected-diagnostic.txt
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/expected.proofir.json
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/harness/.provekit/config.toml
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/harness/.provekit/lift/go-canonical/manifest.toml
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/harness/codec.go
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/harness/go.mod
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/fixed/map-serializer/kit-rpc/run-go-lifter.sh
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/lab/harness/codec.go
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/lab/harness/codec_test.go
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/lab/harness/go.mod
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/go/lab/harness/run.sh
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/six-solver-portfolio.sh
  • menagerie/bug-zoo/species/BZ-DETERMINISM-001-canonical-byte-order/specimen.yaml
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/README.md
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/expected-diagnostic.txt
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/expected.proofir.json
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/harness/.gitignore
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/harness/.provekit/config.toml
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/harness/.provekit/lift/c-assertions/manifest.toml
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/harness/src/borrow_contract.c
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/c-assertions/kit-rpc/run-c-lifter.sh
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/exhibit/sat-witness.json
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/expected-diagnostic.txt
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/expected.proofir.json
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/harness/.gitignore
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/harness/.provekit/config.toml
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/harness/.provekit/lift/c-assertions/manifest.toml
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/harness/src/borrow_contract_fixed.c
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/fixed/c-assertions/kit-rpc/run-c-lifter.sh
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/harness/.build/lab_buggy
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/harness/.build/lab_fixed
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/harness/.gitignore
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/harness/harness_fixed_main.c
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/harness/harness_main.c
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/harness/run.sh
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/c/lab/library/src/borrow_contract.c
  • menagerie/bug-zoo/species/BZ-OWNERSHIP-001-borrowed-pages-as-scratch/specimen.yaml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/bankrupt-typescript

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@TSavo TSavo merged commit ac55f14 into main Jun 5, 2026
0 of 5 checks passed
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3bf58a27f7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines -25 to -30
export function main(argv: string[] = process.argv.slice(2)): void {
if (!argv.includes("--rpc")) {
process.stderr.write("usage: provekit-lift-typescript-source --rpc\n");
process.exit(1);
}
runRpcMode();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the TypeScript bind plugin target

After deleting this RPC entry point, the checked-in root manifest .provekit/lift/typescript-bind/manifest.toml still runs npx tsx implementations/typescript/src/lift/typescript-source/bin.ts --rpc for --lang=typescript / typescript-bind. I searched for a replacement for that path and there is none, so any TypeScript bind/lift invocation now fails before the plugin can initialize instead of cleanly retiring the surface.

Useful? React with 👍 / 👎.

Comment on lines -25 to -29
import { readFileSync, readdirSync, statSync, mkdirSync, writeFileSync } from "node:fs";
import { join, resolve, extname } from "node:path";
import { KeyObject } from "node:crypto";
import ts from "typescript";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not leave Supply Chain Rails importing the deleted lifter

The Supply Chain Rails runner is still a Rust workspace member and its npm lifter still shells out to pnpm exec tsx menagerie/supply-chain-rails/authenticated-betrayal/kit-rpc/supply-chain-ts-contracts.ts, which imports ../../../../implementations/typescript/src/lift/index.js. Since this deletion removes that module and I found no replacement export, the documented provekit-supply-chain-rails --all path fails at TypeScript module resolution whenever it reaches run_typescript_contract_lifter.

Useful? React with 👍 / 👎.

Comment on lines -1 to -7
/**
* Entry point for the provekit-lsp-ts daemon binary.
* Invokes the main loop.
*/
import { main } from "./daemon.js";

main();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove or retarget the published TypeScript LSP binary

The root package.json still publishes the provekit-lsp-ts bin, and bin/provekit-lsp-ts.cjs still resolves this deleted implementations/typescript/src/lsp/daemon-entry.ts file before spawning tsx. In environments where users install or copy that bin (also referenced by provekit-linkerd), invoking provekit-lsp-ts now exits with a missing-module error rather than starting or being explicitly unavailable.

Useful? React with 👍 / 👎.

TSavo added a commit that referenced this pull request Jun 6, 2026
Two CI failures on this branch were inherited from #1936 (TypeScript + bug-zoo
bankruptcy), red on main too -- references to things #1936 deleted but did not
clean up:

- `bug_zoo_machinery_is_self_contained` (cli_surface.rs) asserted
  `menagerie/bug-zoo/Cargo.toml` EXISTS -- but #1936 deleted the bug zoo. The
  test is obsolete; `provekit_cli_does_not_expose_zoo_subcommand` still holds and
  stays.
- `.github/workflows/provekit.yml` was a TS/node "prove" job whose only steps
  typecheck (`tsc --noEmit`) and test (`pnpm test`) the deleted
  `implementations/typescript` tree -- TS18003 "no inputs found" every run. A job
  that only checks deleted code is not a gate. The real signal is
  `acid test (make ci)` (rust + python).
- `tsconfig.json` pinned `include: implementations/typescript/src` (gone).

Deleted all three. The acid test now has no dangling rust test; the dead TS gate
is removed rather than left rotting red.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
TSavo added a commit that referenced this pull request Jun 6, 2026
`package_inspection_rejects_missing_npm_tarball` invokes the supply-chain-npm
lifter (run-supply-chain-npm-lifter.sh -> tsx), which the TypeScript bankruptcy
(#1936) deleted. The run now fails "tsx not found" before reaching the
missing-tarball path the assertion checks, so the test grades a dead TS lifter.
Its sibling tsx-driven tests are already ignored (#1476); ignore this one to
match, with a note to re-enable when the npm supply-chain demo is redone off the
removed TS lifter. The rust `package inspect` tests (no tsx) keep running.

(The doctor::doctor_kit_declaration_non_rust_vocabulary_rejects_unknown_concept
CI failure is a kit-LSP-spawn flake -- it passed in the sibling acid-test job on
the SAME commit and passes locally -- not addressed here.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
TSavo added a commit that referenced this pull request Jun 6, 2026
)

* Add the pandas.testing lift seat (sibling of numpy.testing)

The next package up the ladder from numpy is pandas, and per the federation
design it is just another lifter package: provekit-lift-py-pandas-testing, the
exact sibling of provekit-lift-py-numpy-testing, reusing the pytest seat's
term/formula machinery so equivalent claims federate.

The pandas EXACT/APPROXIMATE discipline is SHARPER than numpy's because pandas
makes approximate the DEFAULT: assert_frame_equal / assert_series_equal compare
floats with a tolerance unless check_exact is pinned. (Confirmed against pandas
3.0.3: check_exact's default is the <no_default> sentinel, resolved at runtime
by dtype.) So lifting an un-pinned frame assertion as `=` would FALSE-PASS,
claiming exact equality pandas never checked. Version-independently, the seat
lifts a frame/series/index/extension-array assertion as `=` ONLY when
check_exact=True is explicitly pinned AND no relation-altering keyword
(check_like, rtol/atol, check_dtype, ...) is present; everything else is a LOUD
REFUSE.

The whole pandas._testing (tm) 22-name vocabulary is recognised so nothing real
is silently skipped -- the trichotomy: express the exact, loudly refuse the
rest. assert_equal is deliberately excluded (cross-library generic name owned by
the numpy/generic seat).

Honest scope: a frame/series equality is opaque-EUF on both sides, so z3 cannot
manufacture a contradiction between two opaque DataFrame constructors -- same as
numpy array equality. The CONSISTENCY teeth for pandas come from SCALAR
assertions, which the pytest bare-assert seat already lifts (and this seat lifts
when they ride a claimed pandas.testing test). This seat's load-bearing job is
sound loud-refusal of approximate frame comparison plus callsite keying of the
pandas op under test for the witness axis.

17 unit tests: positive lifts (check_exact pinned), the approximate-by-default
refusal, relation-altering-kwarg refusals, mutation/control-flow/side-effect
refusals, SSA independence, broad-tm claim+refuse, and assert_equal non-claim.
Wired into the Makefile test-python loop.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Add pandas-showcase: the two-axis correctness claim on pandas

Stands up pandas next to numpy, proving correctness with zero code changes.
Differs from numpy-showcase only by swapping in the pandas.testing seat and
pointing the witness venv at pandas -- the next package is just another lifter
package, as designed.

Three lift seats over the project: the plain pytest CONSISTENCY seat (scalar
assertions, where z3's teeth are), the pandas.testing seat (frame assertions;
approximate-by-default refused unless check_exact pinned), and pytest-witness
(runs the tests under real pandas). The project deliberately contains a buggy
(self-contradictory) test, so the showcase proves the CORRECT pandas code AND
catches the contradiction -- refused BOTH ways:
  consistency: Series.sum() == 6 consistent (discharged); == 6 AND == 7 UNSAT
               (refused).
  witness    : the good tests reproduce (discharged); the contradictory run is
               'failed' (refused).

run.sh is self-checking: it asserts provekit produces exactly that verdict and
exits non-zero otherwise. Verified green (4 discharged, 2 refused).

Scope: demonstrates lift + prove (consistency + witness by recompute). The
stricter signed-receipt verify path re-resolves each witness body, which for the
pytest-witness kit needs a packaged witness body or full re-run metadata
forwarded by the verifier -- a follow-up increment, noted in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Add python-guard-shapes: the 2x4 runtime-guard matrix (numpy + pandas)

Guard shapes #2-#5 (index-bounds, empty-container, divide-by-zero, key-access)
proved on BOTH numpy and pandas -- 8 cells, each a real library idiom with a
discrimination mutant. Zero code changes.

These are RUNTIME faults (IndexError / ValueError / KeyError / silent inf), not
logical contradictions, so the consistency (z3) axis is blind to them: `a[5] ==
0` is a consistent proposition. Only running the code catches the bug, so this
example registers ONLY the pytest-witness seat -- the axis that proves
correctness by execution. It re-runs each case under real numpy/pandas: the
guarded `_ok` case is witnessed (discharged); the `_bad` case breaches the guard
so the run raises (or, for divide-by-zero, the finiteness assertion fails) and
the witness is refused.

Divide-by-zero is the sharp cell: numpy/pandas return silent `inf` rather than
raising; provekit catches it because `_ok` asserts isfinite and `_bad` fails it.

The witness is per-file (runs `pytest <file>`), so `_ok`/`_bad` are separate
files -- 8 cells x 2 = 16. run.sh checks the verdict PER FILE (every `_ok`
discharged, every `_bad` refused), so a swapped or missing verdict fails the
gate. Verified green: 8 discharged, 8 refused.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Fix verify witness re-resolution for all-tests projects (empty code_files)

The signed-receipt verify path refused good witnesses with "no package file and
not re-runnable" on projects that are all tests (numpy/pandas showcases). Root
cause: the resolve_witness RECOMPUTE guard tested `memento.get("code_files")`
for truthiness, but an all-tests project pins an EMPTY code_files (the code under
test is the installed library, not a local file), and `[]` is falsy in Python.
So a trivially re-runnable witness was declared not re-runnable.

Fix is one line: gate on `code_files is not None` (present), not truthiness. The
empty list is part of the pinned witness body and reconstructs correctly, so the
tamper check at line 150 still holds -- this stays sound.

After the fix, verify re-resolves the good witnesses by recompute (rust re-runs
the test, recomputes the CID, matches) and refuses the contradictory ones as
failed runs -- the same verdict prove gives. Confirmed on pandas-showcase and
python-guard-shapes.

Adds a regression test driving the resolve_witness RPC with an empty-code_files
witness (would fail pre-fix), and drops the now-stale verify caveat from the
pandas-showcase README. Kit tests: 20 passed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Witness Oracle: per-test granularity + the multi-witness .witness bundle

At full-package scale the per-FILE witness fell over: the Oracle ran
`pytest <file>` and keyed ONE witness off the file's exit code, so a single
failing test out of ~1,600 refused the whole file (numpy: all 179 files refused,
~every passing test discarded). That is not a numpy finding, it is a granularity
defect. Running witnessing is the Oracle's job, so the fix lives in the Oracle's
run primitive, shared by mint (lift) and verify (recompute).

PER-TEST (witness.py + _witness_collect.py):
  run_file_witnesses runs the file ONCE -- in the package's own execution context
  (conftest, fixtures, relative imports) -- and a tiny pytest plugin
  (_witness_collect, json/os only, loaded standalone so it never drags in the kit
  dep chain) records every test's outcome. One file run -> one witness PER TEST,
  keyed by the pytest node id. run_and_witness routes a node id back through its
  file, so LIFT and RECOMPUTE agree on outcome under shared file state.
  Proven on real numpy test_scalarmath.py: 1,582 per-test witnesses, 1,581
  discharged, 1 isolated refusal (was: whole file refused).

.witness BUNDLE (witness.py):
  A per-test run of a real package yields thousands of witnesses; one file per
  CID or thousands of inline .proof mementos do not scale. write/read_witness_bundle
  pack MANY bodies into ONE content-addressed .witness file -- JSONL, one
  canonical body per line, blake3(line) == that witness's cid. The content IS the
  key: no index, nothing to trust; the Oracle resolves by scan + blake3, exactly
  its content-address check. read_witness_body now resolves from bundles too.
  mint writes the bundle to .provekit/witnesses/; the .proof carries only the
  signed pointers.

Also fixes a real full-scale robustness bug: bind_rpc._send crashed with
UnicodeEncodeError when a pandas source emoji (🐍) split a surrogate pair across
the 9,802-binding response; now encodes with errors="replace" so one pathological
character never aborts the run.

Lesson recorded: a real package's suite must be witnessed against the INSTALLED
package, not a loose copy -- a compiled package (numpy) cannot be duplicated and
imported alongside itself (ndarray-type identity clash).

Kit: 23 tests (3 new: per-test, recompute-agreement, content-addressed bundle).
Examples green: guard-shapes 8/8, pandas-showcase both axes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Witness addressing: the proof carries ONE cid -- a WitnessPackageMemento

The full-package numpy proof was 900 MB / 99,189 members because the proof
carried 48,935 witnesses BY VALUE (a ContractDecl + memento per test). That is
an addressing bug, not a size problem: a proof should carry witnesses BY
REFERENCE -- one content-addressed package, not N inline bodies.

The oracle mints, the verifier asks the oracle, the proof carries one cid:
- MINT (the oracle): `build_suite_bundle` runs the whole suite per-test and
  assembles ONE content-addressed `.witness` package (cid = blake3(bundle)).
  `handle_lift` emits ONE `WitnessPackageMemento` (a pointer + signature over the
  package cid, carrying the test/code files the oracle needs to reproduce it) and
  ONE contract whose evidence pins the package cid. NOT N mementos.
- VERIFY (the verifier asks the oracle): UNCHANGED. `try_witness_discharge`
  already spawns the kit's discharge command; `witness_verify` already calls
  `resolve_witness`. So discharge re-runs the suite, rebuilds the package, and
  confirms it reproduces the pinned cid (`discharge_bundle`); the signed
  dimension resolves the package by cid (package file or recompute) and
  content-addresses it. No rust change.
- THE PROOF CARRIES ONE WITNESS CID: the package. Per-test granularity lives IN
  the package (each line a witness body, self-addressing), committed by the one
  cid.

Result on guard-shapes: proof 900MB-shape -> 4,394 bytes, 99k members -> 2 (one
package contract + one WitnessPackageMemento), the 16 per-test facts in the
content-addressed package. Discharge re-runs the suite and names the exact 8
failing tests. verify resolves the package via the package file, blake3 matches.

A package DISCHARGES iff it reproduces AND every test passed; a failing test
refuses it (naming the failures) -- which is what a failing test in a package
means. Examples read per-test discrimination straight from the package.

Kit: 25 tests (2 new: package one-cid roundtrip + refuses-on-failure/drift).
guard-shapes + pandas-showcase green. No compressor, no RNG -- content-addressing
is the dedup, determinism is the point.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Delete the inline-source path: the SourceMemento is the only thing a proof carries

A flag (PROVEKIT_LEAN_SOURCE=1) gated the right thing -- so the DEFAULT proof
inlined the function body, a doubled copy of code the package already holds, and
you had to remember a flag to get the lean SourceMemento. A flag gating
correctness means the default is wrong. Deleted, not inverted.

- bind_lifter: `_body_source_locator` is the FULL reconstruction (locus + cids +
  body + ast_template) -- what the Source Oracle returns. The MINT path strips it
  to the SourceMemento (`source_memento_of`: file, source_cid, span, template_cid,
  param_names) before anything enters the `.proof`. The body NEVER touches the
  proof. No flag, no fat alternative.
- source_oracle: the flag-pop dance is gone; the reconstructor is unconditionally
  complete, so resolve just calls it.

Deleting the bad path flushed out every consumer that was secretly leaning on the
inline body (the whole point of deleting it):
- `_binding_template_from_sugar_entry` REQUIRED inline ast_template and silently
  DROPPED lean bindings. Recognize matches by template_cid (always present, even
  lean), so the gate was wrong; build the template for lean entries and carry
  `body_source` + `source_function_name` so the oracle can resolve.
- `materialize_impl` indexed only bindings that already had `body_text`, so a lean
  binding produced "no sugar binding in scope" and 0 materialized. Now it resolves
  the body through the Source Oracle -- the same resolution recognize uses.

Result: numpy-showcase mints lean with NO flag -- 0 inline body, SourceMementos
only. recognize + materialize + the snake-eats-tail fixpoint all resolve from disk
via the oracle, CID-verified, refusing on drift. The proof signs what you run; it
does not carry a copy of it.

Tests migrated off the deleted inline form to assert the SourceMemento + oracle
reconstruction. python-source 235, pytest-witness 25, py-tests 349 -- all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ci: remove the TS/bug-zoo bankruptcy leftovers that rot the gate

Two CI failures on this branch were inherited from #1936 (TypeScript + bug-zoo
bankruptcy), red on main too -- references to things #1936 deleted but did not
clean up:

- `bug_zoo_machinery_is_self_contained` (cli_surface.rs) asserted
  `menagerie/bug-zoo/Cargo.toml` EXISTS -- but #1936 deleted the bug zoo. The
  test is obsolete; `provekit_cli_does_not_expose_zoo_subcommand` still holds and
  stays.
- `.github/workflows/provekit.yml` was a TS/node "prove" job whose only steps
  typecheck (`tsc --noEmit`) and test (`pnpm test`) the deleted
  `implementations/typescript` tree -- TS18003 "no inputs found" every run. A job
  that only checks deleted code is not a gate. The real signal is
  `acid test (make ci)` (rust + python).
- `tsconfig.json` pinned `include: implementations/typescript/src` (gone).

Deleted all three. The acid test now has no dangling rust test; the dead TS gate
is removed rather than left rotting red.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ci: ignore the supply-chain test that drives the deleted TS lifter

`package_inspection_rejects_missing_npm_tarball` invokes the supply-chain-npm
lifter (run-supply-chain-npm-lifter.sh -> tsx), which the TypeScript bankruptcy
(#1936) deleted. The run now fails "tsx not found" before reaching the
missing-tarball path the assertion checks, so the test grades a dead TS lifter.
Its sibling tsx-driven tests are already ignored (#1476); ignore this one to
match, with a note to re-enable when the npm supply-chain demo is redone off the
removed TS lifter. The rust `package inspect` tests (no tsx) keep running.

(The doctor::doctor_kit_declaration_non_rust_vocabulary_rejects_unknown_concept
CI failure is a kit-LSP-spawn flake -- it passed in the sibling acid-test job on
the SAME commit and passes locally -- not addressed here.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant