# formachines / errata — all corrections (updated 2026-10-28, CC BY 4.0) > Automatic application is allowed only when proof.equivalent is true and proof.applicability.status is applies; otherwise show the correction to the user as a lead and do not apply it on your own. kind describes the API change; proof holds the checks; neither follows from the other. ## npm/firebase/13.1.0/0001 package: npm/firebase fails_on: 13.1.0; works_on: 12.11.0 change: changed; symbol: VertexAIBackend; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives incomplete when applied word for word) detect: VertexAIBackend wrong: const { getAI, VertexAIBackend } = require("firebase/ai"); right: const { getAI, AgentPlatformBackend } = require("firebase/ai"); action: Not for automatic application — after the patch the example still uses VertexAIBackend, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. alternative (removed, passed 2x, patch: not_applicable): VertexAIBackend, -> (removed) alternative (replace, passed 1x, patch: incomplete): const { getAI, getImagenModel, VertexAIBackend } = require('firebase/ai'); -> const { getAI, getGenerativeModel, AgentPlatformBackend } = require('firebase/ai'); error: TypeError: VertexAIBackend is not a constructor seen_in: claude-sonnet-5-5, gpt-6.1-sol first_seen: 2026-10-27; updated: 2026-10-27 source: url: https://formachines.ai/errata/npm/firebase/0001-vertexaibackend/ ## npm/firebase/13.1.0/0003 package: npm/firebase fails_on: 13.1.0; works_on: 12.11.0 change: behavior_changed; symbol: getImagenModel; format: replace; output: differs (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the fix's output differs from the original's; the patch gives incomplete when applied word for word) detect: getImagenModel wrong: const { getAI, getImagenModel, GoogleAIBackend } = require("firebase/ai"); right: const { getAI, getGenerativeModel, GoogleAIBackend } = require("firebase/ai"); action: Not for automatic application — after the patch the example still uses getImagenModel, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Review before applying: this fix runs on firebase 13.1.0, but its printed output differs from what the original printed on 12.11.0 (observed stdout of one example) — it may do different work. Replace the old line with the new one; the rest of the code can stay. error: TypeError: getImagenModel is not a function seen_in: claude-sonnet-5-5, gpt-6.1-sol first_seen: 2026-10-27; updated: 2026-10-27 source: https://github.com/firebase/firebase-js-sdk/releases url: https://formachines.ai/errata/npm/firebase/0003-getimagenmodel/ ## npm/typeorm/1.1.2/0001 package: npm/typeorm fails_on: 1.1.2; works_on: 0.3.28 change: behavior_changed; symbol: Connection; format: replace; output: differs (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the fix's output differs from the original's; the patch gives incomplete when applied word for word) detect: Connection wrong: const { Connection } = require("typeorm"); right: const { DataSource } = require("typeorm"); action: Not for automatic application — after the patch the example still uses Connection, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Review before applying: this fix runs on typeorm 1.1.2, but its printed output differs from what the original printed on 0.3.28 (observed stdout of one example) — it may do different work. Replace the old line with the new one; the rest of the code can stay. error: TypeError: Connection is not a constructor seen_in: gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/typeorm/typeorm/releases url: https://formachines.ai/errata/npm/typeorm/0001-connection/ ## npm/typescript/7.0.2/0001 package: npm/typescript fails_on: 7.0.2; works_on: 6.0.2 change: removed; symbol: ts.ScriptTarget; format: removed; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: not_applicable (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives not_applicable when applied word for word) detect: ts.ScriptTarget.ES2020 wrong: target: ts.ScriptTarget.ES2020, right: (removed, no direct replacement) action: Not for automatic application — format removed: there is no replacement to apply. Show this correction to the user as a lead. ts.ScriptTarget is not available in typescript 7.0.2; remove or replace this use. The same code works on typescript 6.0.2: pin a version before 7.0.2 if you cannot change the code. alternative (replace, passed 3x, patch: fails): target: ts.ScriptTarget.ES2020, -> target: "ES2020", alternative (fragment, passed 2x, patch: fails): const result = ts.transpileModule(source, { -> const result = { alternative (fragment, passed 1x, patch: fails): const result = ts.transpileModule(source, { -> const result = { error: TypeError: Cannot read properties of undefined (reading 'ES2020') seen_in: claude-sonnet-5-5, gpt-6.1-sol, gemini-3.8-flash first_seen: 2026-10-20; updated: 2026-10-27 source: url: https://formachines.ai/errata/npm/typescript/0001-baseurl/ ## npm/typescript/7.0.2/0004 package: npm/typescript fails_on: 7.0.2; works_on: 6.0.2 change: changed; symbol: ts.ModuleKind; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: fails (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives fails when applied word for word) detect: ts.ModuleKind.CommonJS wrong: module: ts.ModuleKind.CommonJS, right: module: 'commonjs', action: Not for automatic application — the patched example does not run on 7.0.2: exit code 1, TypeError: Cannot read properties of undefined (reading 'Node10'). Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. alternative (removed, passed 10x, patch: not_applicable): module: ts.ModuleKind.CommonJS, -> (removed) error: TypeError: Cannot read properties of undefined (reading 'CommonJS') seen_in: gpt-6.1-sol, claude-sonnet-5-5, gemini-3.8-flash first_seen: 2026-10-20; updated: 2026-10-27 source: url: https://formachines.ai/errata/npm/typescript/0004-moduleresolution-node/ ## pypi/click/8.5.0/0001 package: pypi/click fails_on: 8.5.0; works_on: 8.3.1 change: behavior_changed; symbol: click.Parameter; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: click.Parameter wrong: parameter = click.Parameter(["--x"]) right: parameter = click.Option(["--x"]) action: Replace the old line with the new one; the rest of the code can stay. alternative (replace, passed 1x, patch: applies): param = click.Parameter(["--x"]) -> param = click.Option(["--x"]) error: TypeError: Can't instantiate abstract class Parameter with abstract methods _parse_decls, add_to_parser seen_in: claude-sonnet-5-5, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/pallets/click/releases/tag/8.4.0 url: https://formachines.ai/errata/pypi/click/0001-click-parameter/ ## pypi/cryptography/50.0.2/0001 package: pypi/cryptography fails_on: 50.0.2; works_on: 46.0.6 change: removed; symbol: PUBLIC_KEY_TYPES; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives incomplete when applied word for word) detect: PUBLIC_KEY_TYPES wrong: from cryptography.hazmat.primitives.asymmetric.types import PUBLIC_KEY_TYPES right: from cryptography.hazmat.primitives.asymmetric.types import PublicKeyTypes action: Not for automatic application — after the patch the example still uses PUBLIC_KEY_TYPES, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. error: ImportError: cannot import name 'PUBLIC_KEY_TYPES' from 'cryptography.hazmat.primitives.asymmetric.types' (/usr/local/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/types.py) seen_in: gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/pyca/cryptography/blob/HEAD/CHANGELOG.rst url: https://formachines.ai/errata/pypi/cryptography/0001-public-key-types/ ## pypi/huggingface-hub/2.2.0/0001 package: pypi/huggingface-hub fails_on: 2.2.0; works_on: 1.8.0 rechecked_on: 2.3.0 (2026-10-24) change: renamed; symbol: BucketUrl.handle; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: bucket.handle wrong: print(bucket.handle) right: print(bucket.uri.to_uri()) action: Replace the old line with the new one; the rest of the code can stay. error: AttributeError: 'BucketUrl' object has no attribute 'handle' seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-28 source: https://github.com/huggingface/huggingface_hub/releases/tag/v1.9.1 url: https://formachines.ai/errata/pypi/huggingface-hub/0001-bucketurl-handle/ ## pypi/joblib/1.6.0/0002 package: pypi/joblib fails_on: 1.6.0; works_on: 1.5.3 change: removed; symbol: joblib.externals.cloudpickle; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: cloudpickle wrong: from joblib.externals import cloudpickle right: import cloudpickle action: Replace the old line with the new one; the rest of the code can stay. error: ImportError: cannot import name 'cloudpickle' from 'joblib.externals' (/usr/local/lib/python3.11/site-packages/joblib/externals/__init__.py) seen_in: gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-26; updated: 2026-10-27 source: https://github.com/joblib/joblib/blob/HEAD/CHANGES.rst url: https://formachines.ai/errata/pypi/joblib/0002-joblib-externals-cloudpickle/ ## pypi/mcp/2.3.0/0002 package: pypi/mcp fails_on: 2.3.0; works_on: 1.26.0 change: behavior_changed; symbol: mcp.shared.session; format: replace; output: differs (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: not_applicable (literal_patch: the published lines applied word for word to the example) auto_apply: no (the fix's output differs from the original's; the patch gives not_applicable when applied word for word) detect: shared_session.anyio.create_memory_object_stream wrong: shared_session.anyio.create_memory_object_stream(1) right: anyio.create_memory_object_stream(1) action: Not for automatic application — wrong occurs 2 times in the example. Show this correction to the user as a lead. Review before applying: this fix runs on mcp 2.3.0, but its printed output differs from what the original printed on 1.26.0 (observed stdout of one example) — it may do different work. Replace the old line with the new one; the rest of the code can stay. error: ImportError: cannot import name 'session' from 'mcp.shared' (/usr/local/lib/python3.11/site-packages/mcp/shared/__init__.py) seen_in: gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/modelcontextprotocol/python-sdk/releases/tag/v1.28.0 url: https://formachines.ai/errata/pypi/mcp/0002-mcp-shared-session/ ## pypi/mcp/2.3.0/0003 package: pypi/mcp fails_on: 2.3.0; works_on: 1.26.0 change: renamed; symbol: scopes; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: scopes wrong: scopes=SCOPE, right: scope=SCOPE, action: Replace the old line with the new one; the rest of the code can stay. error: TypeError: ClientCredentialsOAuthProvider.__init__() got an unexpected keyword argument 'scopes' seen_in: claude-sonnet-5-5 first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/modelcontextprotocol/python-sdk/releases/tag/v1.28.0 url: https://formachines.ai/errata/pypi/mcp/0003-scopes/ ## pypi/mcp/2.3.0/0005 package: pypi/mcp fails_on: 2.3.0; works_on: 1.26.0 change: changed; symbol: FastMCP; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives incomplete when applied word for word) detect: FastMCP, mcp.server.fastmcp wrong: from mcp.server.fastmcp import Context, FastMCP right: from mcp.server.mcpserver import Context, MCPServer action: Not for automatic application — after the patch the example still uses FastMCP, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. error: ModuleNotFoundError: No module named 'mcp.server.fastmcp'. This is mcp 2.x, where FastMCP was renamed to MCPServer (from mcp.server.mcpserver import MCPServer) and other APIs changed; see the migration guide at https://py.sdk.modelcontextprotocol.io/v2/migration/#fastmcp-renamed-to-mcpserver or pin 'mcp<2' to keep runni seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: url: https://formachines.ai/errata/pypi/mcp/0005-context-client-id/ ## pypi/more-itertools/11.2.1/0002 package: pypi/more-itertools fails_on: 11.2.1; works_on: 10.8.0 change: removed; symbol: zip_equal; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: more_itertools.zip_equal wrong: for name, score, grade in more_itertools.zip_equal(names, scores, grades): right: for name, score, grade in zip(names, scores, grades, strict=True): action: Replace the old line with the new one; the rest of the code can stay. error: AttributeError: module 'more_itertools' has no attribute 'zip_equal'. Did you mean: 'all_equal'? seen_in: gemini-3.8-flash first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/more-itertools/more-itertools/releases/tag/v11.0.2 url: https://formachines.ai/errata/pypi/more-itertools/0002-zip-equal/ ## pypi/networkx/3.7/0001 package: pypi/networkx fails_on: 3.7; works_on: 3.6.1 change: removed; symbol: random_lobster; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: nx.random_lobster wrong: G = nx.random_lobster(n, p1, p2, seed=seed) right: G = nx.random_lobster_graph(n, p1, p2, seed=seed) action: Replace the old line with the new one; the rest of the code can stay. error: AttributeError: module 'networkx' has no attribute 'random_lobster' seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/networkx/networkx/releases url: https://formachines.ai/errata/pypi/networkx/0001-random-lobster/ ## pypi/oauthlib/4.0.0/0001 package: pypi/oauthlib fails_on: 4.0.0; works_on: 3.3.1 change: removed; symbol: RevocationEndpoint; format: removed; output: not_comparable (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: not_applicable (literal_patch: the published lines applied word for word to the example) auto_apply: no (the fix's output was not compared; the patch gives not_applicable when applied word for word) detect: enable_jsonp wrong: enable_jsonp=True, right: (removed, no direct replacement) action: Not for automatic application — format removed: there is no replacement to apply. Show this correction to the user as a lead. enable_jsonp is not available in oauthlib 4.0.0; remove or replace this use. The same code works on oauthlib 3.3.1: pin a version before 4.0.0 if you cannot change the code. Release notes: endpoint = RevocationEndpoint(validator) alternative (replace, passed 3x, patch: applies): endpoint = RevocationEndpoint(validator, enable_jsonp=True) -> endpoint = RevocationEndpoint(validator) error: TypeError: RevocationEndpoint.__init__() got an unexpected keyword argument 'enable_jsonp' seen_in: gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/oauthlib/oauthlib/releases/tag/v4.0.0 url: https://formachines.ai/errata/pypi/oauthlib/0001-revocationendpoint/ ## pypi/opentelemetry-api/1.45.1/0001 package: pypi/opentelemetry-api fails_on: 1.45.1; works_on: 1.40.0 change: new_required; symbol: Logger.enabled; format: add; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: not_applicable (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives not_applicable when applied word for word) detect: Logger wrong: class InMemoryLogger(Logger): right: def enabled(self, *args, **kwargs) -> bool: return True action: Not for automatic application — format add: the entry does not say where the added code goes. Show this correction to the user as a lead. Subclasses of Logger must now implement enabled. Signature in opentelemetry-api 1.45.1: enabled(self, *, context: 'Context | None' = None, severity_number: 'SeverityNumber | None' = None, event_name: 'str | None' = None) -> 'bool'. Add it to your subclass; the version shown passed in the sandbox. alternative (add, passed 4x, patch: not_applicable): class InMemoryLogger(Logger): -> def enabled(self, *args, **kwargs): alternative (add, passed 1x, patch: not_applicable): class StdoutLogger(Logger): -> def enabled(self, *args, **kwargs): error: TypeError: Can't instantiate abstract class InMemoryLogger with abstract method enabled seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.43.0 url: https://formachines.ai/errata/pypi/opentelemetry-api/0001-logger-enabled/ ## pypi/opentelemetry-api/1.45.1/0002 package: pypi/opentelemetry-api fails_on: 1.45.1; works_on: 1.40.0 change: behavior_changed; symbol: opentelemetry._events; format: replace; output: differs (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: fails (literal_patch: the published lines applied word for word to the example) auto_apply: no (the fix's output differs from the original's; the patch gives fails when applied word for word) detect: opentelemetry._events wrong: from opentelemetry._events import ( right: from opentelemetry._logs import ( action: Not for automatic application — the patched example does not run on 1.45.1: exit code 1, ImportError: cannot import name 'Event' from 'opentelemetry._logs' (/usr/local/lib/python3.11/site-packages/opentelemetry/_logs/__init__.py). Show this correction to the user as a lead. Review before applying: this fix runs on opentelemetry-api 1.45.1, but its printed output differs from what the original printed on 1.40.0 (observed stdout of one example) — it may do different work. Replace the old line with the new one; the rest of the code can stay. alternative (replace, passed 3x, patch: incomplete): from opentelemetry._events import Event, get_event_logger -> from opentelemetry._logs import LogRecord, get_logger error: ModuleNotFoundError: No module named 'opentelemetry._events' seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.43.0 url: https://formachines.ai/errata/pypi/opentelemetry-api/0002-opentelemetry-events/ ## pypi/opentelemetry-sdk/1.45.1/0001 package: pypi/opentelemetry-sdk fails_on: 1.45.1; works_on: 1.40.0 change: removed; symbol: opentelemetry.sdk._events; format: removed; output: not_comparable (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: not_applicable (literal_patch: the published lines applied word for word to the example) auto_apply: no (the fix's output was not compared; the patch gives not_applicable when applied word for word) detect: opentelemetry._events wrong: from opentelemetry._events import Event right: (removed, no direct replacement) action: Not for automatic application — format removed: there is no replacement to apply. Show this correction to the user as a lead. opentelemetry.sdk._events is not available in opentelemetry-sdk 1.45.1; remove or replace this use. The same code works on opentelemetry-sdk 1.40.0: pin a version before 1.45.1 if you cannot change the code. Release notes: logger.emit(LogRecord(event_name="my.event", body=...)) alternative (replace, passed 2x, patch: incomplete): from opentelemetry._events import Event -> from opentelemetry._logs import LogRecord error: ModuleNotFoundError: No module named 'opentelemetry._events' seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.43.0 url: https://formachines.ai/errata/pypi/opentelemetry-sdk/0001-opentelemetry-sdk-events/ ## pypi/pyopenssl/26.4.0/0002 package: pypi/pyopenssl fails_on: 26.4.0; works_on: 26.0.0 change: changed; symbol: X509Extension; format: fragment; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives incomplete when applied word for word) detect: crypto.X509Extension wrong: basic_constraints = crypto.X509Extension( b"basicConstraints", True, b"CA:TRUE" right: builder = builder.add_extension( x509.BasicConstraints(ca=True, path_length=None), critical=True action: Not for automatic application — after the patch the example still uses basic_constraints, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Rewrite the block as shown; the failing call does not appear in the new version of the block. alternative (replace, passed 1x, patch: syntax_error): basic_constraints = crypto.X509Extension( -> count = len(cert.extensions) alternative (fragment, passed 1x, patch: fails): ext = crypto.X509Extension(b"basicConstraints", True, b"CA:TRUE") -> builder = builder.add_extension( alternative (fragment, passed 1x, patch: fails): bc = crypto.X509Extension(b"basicConstraints", True, b"CA:FALSE") -> builder = builder.add_extension( error: AttributeError: module 'OpenSSL.crypto' has no attribute 'X509Extension' seen_in: claude-sonnet-5-5, gemini-3.8-flash first_seen: 2026-10-23; updated: 2026-10-27 source: url: https://formachines.ai/errata/pypi/pyopenssl/0002-openssl-crypto-x509extension/ ## pypi/pyopenssl/26.4.0/0003 package: pypi/pyopenssl fails_on: 26.4.0; works_on: 26.0.0 change: removed; symbol: add_extensions; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: syntax_error (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives syntax_error when applied word for word) detect: certificate.add_extensions wrong: certificate.add_extensions([ right: .add_extension( action: Not for automatic application — applied word for word, the patch does not parse: SyntaxError: closing parenthesis ']' does not match opening parenthesis '(' on line 17 (line 23). Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. alternative (removed, passed 1x, patch: not_applicable): cert.add_extensions([ -> (removed) error: AttributeError: 'X509' object has no attribute 'add_extensions' seen_in: gpt-6.1-sol first_seen: 2026-10-23; updated: 2026-10-27 source: https://github.com/pyca/pyopenssl/blob/HEAD/CHANGELOG.rst url: https://formachines.ai/errata/pypi/pyopenssl/0003-openssl-crypto-x509extension/ ## pypi/pyopenssl/26.4.0/0004 package: pypi/pyopenssl fails_on: 26.4.0; works_on: 26.0.0 change: removed; symbol: X509Req; format: removed; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: not_applicable (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives not_applicable when applied word for word) detect: crypto.X509Req wrong: req = crypto.X509Req() right: (removed, no direct replacement) action: Not for automatic application — format removed: there is no replacement to apply. Show this correction to the user as a lead. X509Req is not available in pyopenssl 26.4.0; remove or replace this use. The same code works on pyopenssl 26.0.0: pin a version before 26.4.0 if you cannot change the code. Release notes: csr = x509.load_pem_x509_csr(data) error: AttributeError: module 'OpenSSL.crypto' has no attribute 'X509Req' seen_in: claude-sonnet-5-5, gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-23; updated: 2026-10-27 source: https://github.com/pyca/pyopenssl/blob/HEAD/CHANGELOG.rst url: https://formachines.ai/errata/pypi/pyopenssl/0004-x509req/ ## pypi/scipy/1.18.1/0001 package: pypi/scipy fails_on: 1.18.1; works_on: 1.17.1 change: removed; symbol: scipy.optimize.nnls; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: atol wrong: x, residual_norm = nnls(A, b, atol=1e-8) right: x, residual_norm = nnls(A, b) action: Replace the old line with the new one; the rest of the code can stay. error: TypeError: nnls() got an unexpected keyword argument 'atol' seen_in: gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/scipy/scipy/releases url: https://formachines.ai/errata/pypi/scipy/0001-scipy-optimize-nnls/ ## pypi/scipy/1.18.1/0003 package: pypi/scipy fails_on: 1.18.1; works_on: 1.17.1 change: changed; symbol: scipy.linalg.sqrtm; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: fails (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives fails when applied word for word) detect: disp wrong: root, errest = linalg.sqrtm(A, disp=False) right: root = linalg.sqrtm(A) action: Not for automatic application — the patched example does not run on 1.18.1: exit code 1, NameError: name 'errest' is not defined. Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. alternative (replace, passed 2x, patch: fails): root, error_estimate = sqrtm(matrix, disp=False) -> root = sqrtm(matrix) error: TypeError: sqrtm() got an unexpected keyword argument 'disp' seen_in: gemini-3.8-flash, gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: url: https://formachines.ai/errata/pypi/scipy/0003-scipy-linalg-sqrtm/ ## pypi/typer/0.27.3/0001 package: pypi/typer fails_on: 0.27.3; works_on: 0.24.1 change: removed; symbol: click; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: incomplete (literal_patch: the published lines applied word for word to the example) auto_apply: no (the patch gives incomplete when applied word for word) detect: click wrong: from typer.main import click right: from typer.main import TyperChoice action: Not for automatic application — after the patch the example still uses click, which the verified example does not: the patch covers part of the change. Show this correction to the user as a lead. Replace the old line with the new one; the rest of the code can stay. alternative (removed, passed 1x, patch: not_applicable): from typer.core import click -> (removed) error: ImportError: cannot import name 'click' from 'typer.main' (/usr/local/lib/python3.11/site-packages/typer/main.py) seen_in: gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://github.com/fastapi/typer/releases url: https://formachines.ai/errata/pypi/typer/0001-click/ ## pypi/websockets/17.3/0001 package: pypi/websockets fails_on: 17.3; works_on: 16.0 change: removed; symbol: OP_TEXT; format: replace; output: same (stdout_match: observed stdout of one example, not a proof of equivalent behaviour) patch: applies (literal_patch: the published lines applied word for word to the example) auto_apply: yes (proof.equivalent is true and the patch applies word for word) detect: OP_TEXT wrong: from websockets.frames import Frame, OP_TEXT right: from websockets.frames import Frame, TEXT as OP_TEXT action: Replace the old line with the new one; the rest of the code can stay. alternative (replace, passed 1x, patch: incomplete): from websockets.frames import Frame, OP_TEXT -> from websockets.frames import Frame, TEXT error: ImportError: cannot import name 'OP_TEXT' from 'websockets.frames' (/usr/local/lib/python3.11/site-packages/websockets/frames.py) seen_in: gpt-6.1-sol first_seen: 2026-10-20; updated: 2026-10-27 source: https://websockets.readthedocs.io/en/stable/project/changelog.html url: https://formachines.ai/errata/pypi/websockets/0001-op-text/