Skip to content

refactor: remove the deprecated names and flags ahead of 0.12.0 - #1754

Merged
HuiJun merged 6 commits into
developfrom
refactor/remove-deprecated
Nov 1, 2026
Merged

HuiJun merged 6 commits into
developfrom
refactor/remove-deprecated

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

What and why

Pre-cut cleanup for 0.12.0: every deprecated name whose replacement has shipped and is documented, and which nothing in the repository still uses, is removed. No stubs or compatibility shims are kept.

Removed:

  • sysml CLI: -to (replaced by -convert in 0.0.7) and -pdf-title-page, -pdf-toc, -pdf-number-sections (replaced by -doc-title-page, -doc-toc, -doc-number-sections in 0.9.0, listed under a Deprecated help group since). The deprecatedFlag type and the Deprecated usage group go with them; the man page is regenerated (make man-check passes).
  • Python client: the opensysml.eval, opensysml.RuntimeError and opensysml.errors.RuntimeError aliases and the two __getattr__ shims that served them (warning since 0.9.0); opensysml.evaluate and opensysml.ExecutionError remain.
  • Node client: the ParseOptions.strict alias of strictConformance and strictConformanceOf (deprecated in 0.10.0); the conformance runner passes strictConformance in both places it mapped the wire field. Two parse scenarios now tell strict conformance from the default (parse/strict_conformance_refuses_an_extension: one error for an OpenSysML-only choice c;; parse/an_extension_is_a_warning_by_default: the same fixture, one warning), so a runner that drops the field fails the suite.
  • Go client: EditResult.Content (deprecated in 0.9.0 for EditResult.Documents). ApplyEdits and ApplyDocumentEdits now require the edit_documents capability, which every service since 0.9.0 advertises, and refuse a service without it with CodeUnimplemented; requireEditDocuments goes with the field. The conformance adapter still fills the wire-level ApplyEditsResponse.content for a one-document model from Documents[0], so the wire contract is unchanged.
  • Tests that existed only to assert the old names worked or warned are deleted; the tests that used an old name now use the replacement. Docs are updated to match (reference pages keep a one-line "removed in 0.12.0" note where they had a migration table; the dated design record docs/internals/design/python-grpc-bindings.md and the archived changelog keep their historical wording).

Inventory

Surface Item Deprecated since Decision
CLI -to 0.0.7 (-convert) removed
CLI -pdf-title-page, -pdf-toc, -pdf-number-sections 0.9.0 (-doc-*) removed
Python opensysml.eval 0.9.0 (evaluate) removed
Python opensysml.RuntimeError, opensysml.errors.RuntimeError 0.9.0 (ExecutionError) removed
Node ParseOptions.strict 0.10.0 (strictConformance) removed
Go client EditResult.Content 0.9.0 (Documents) removed
Wire ParseFileRequest.content_hash = 3 [deprecated = true] (and the generated #[deprecated] / @deprecated it produces in the Rust and Node bindings) 0.0.7 kept — 1.0 item. The schema is frozen for wire compatibility (api/proto/buf.yaml breaking: FILE, which includes FIELD_NO_DELETE; client/python/tests/test_wire_compat.py pins the field number). The service ignores it, but deleting it is a breaking proto change and a regeneration of all seven bindings — belongs in the 1.0 wire review, not a minor.
sysml-grpc -health-port separate listener 0.3.0 (warned under the Connect transport only) kept. The flag is live: under the gRPC transport the separate listener is the only /health; only its use alongside Connect is deprecated. Removing it is a transport behaviour change, not an alias removal.
Environment legacy SYSML_* names for the pre-0.9.0 variables 0.9.0 (OPENSYSML_*) kept. docs/reference/environment.md documents them as "accepted indefinitely" with a one-time warning; dropping them would contradict the published contract.
CLI -include-library-stubs — kept. A documented compatibility mode for pre-0.11.0 API-JSON readers, not a deprecated name.
REPL %exit — kept. An alternate spelling (alias: true), never deprecated.
Notation choice/junction/history pseudostate keyword spellings warned as nonstandard-notation (replacement #choice state, …) kept. Language syntax, not an API: 119 fixtures, goldens and examples in the repository still write them, the lowering is tested, and -strict is the documented path to refuse them. Dropping them is a grammar change for its own PR.
Java, Rust (hand-written), Julia, MATLAB, Jupyter kernel, VS Code extension, SysON/MDK — — nothing deprecated found (@Deprecated, #[deprecated, Base.depwarn, warning(...deprecated), migration shims).
Go (// Deprecated: outside *.pb.go) — — EditResult.Content was the only one.

No removal collides with an open PR: #1730's internal/translate/export files, #1749's lockfiles and #1740's docs are untouched.

Skipped the deprecation cycle

None. Every removed name was deprecated in a released version (0.0.7, 0.9.0, 0.10.0 — all ≤ 0.11.0).

How it was verified

  • go build ./..., go vet ./..., gofmt -l . (empty), go test ./... with the training, pilot and library-XMI corpora downloaded, and make lint
  • make man-check
  • client/python: pytest — 1549 passed, 141 skipped (the skips need a running service binary)
  • client/node: npm run build && npm run lint && npm test — 456 passed, 1 skipped
  • go test -C tools ./cmd/conformance (the Go adapter and the new scenarios) and npm run conformance in client/node: 188 passed, 8 skipped on each of grpc, connect and connect-json
  • Java, Rust, Julia and MATLAB clients are untouched, so their suites were not run.

Checklist

  • make test and make lint pass locally
  • Tests added or updated for the change
  • Documentation extended where it already covers the surface (see CONTRIBUTING.md)
  • Changelog entry added as changes/unreleased/<slug>.<section>.md, not as an edit to CHANGELOG.md
  • baselines regenerated and make docs-counts run if a gate count moved (none moved)
  • No internal work-item labels (waves, slices, F4, K5) in the body, docs, or changelog

Link to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/06b2c19b7ba9490db57a6184b7b4616d
Open in Devin Desktop: https://nasa-jpl-demo.devinenterprise.com/desktop/session/06b2c19b7ba9490db57a6184b7b4616d?variant=devin
Requested by: @HuiJun

devin-ai-integration Bot and others added 3 commits October 30, 2026 13:58
Remove the surfaces deprecated in releases up to 0.10.0 whose replacements
are documented: the sysml CLI's -to and -pdf-title-page/-pdf-toc/
-pdf-number-sections, the Python client's opensysml.eval and RuntimeError
aliases, the Node client's strict parse option, and the Go client's
EditResult.Content. ApplyEdits and ApplyDocumentEdits now require the
edit_documents capability, which every service since 0.9.0 advertises.
The tests that only exercised the deprecated names go with them; the
others read the replacements. Docs, the manual page and the changelog
fragments follow.

Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
…d alias current

Co-Authored-By: jason.han <hanhuijun@gmail.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration
devin-ai-integration Bot marked this pull request as ready for review October 30, 2026 14:17
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration Bot and others added 3 commits October 30, 2026 14:22
…ctConformance

The runner still mapped the wire field to the removed strict option, so a
strict ParseFile scenario was sent without strict conformance. Two parse
scenarios now tell the modes apart: an OpenSysML-only notation is one
error under strict conformance and one warning by default, so a runner
that drops the field fails the suite.

Co-Authored-By: jason.han <hanhuijun@gmail.com>
…allback

Co-Authored-By: jason.han <hanhuijun@gmail.com>
Resolves the Node client conflicts with the client-parity and action-trace
work (#1766, #1786, #1778): ParseOptions keeps strictConformance alone,
ParseSourcesOptions extends it, connection.ts and model.ts read
options.strictConformance directly without the removed strictConformanceOf,
and the sources test of the removed strict alias becomes a strictConformance
test (an OpenSysML-only notation is a warning by default, an error strictly).
The merged tree's remaining references to the removed names (the sysml REPL
testing skill, a conversion.ts comment) are updated.

Co-Authored-By: jason.han <hanhuijun@gmail.com>
@HuiJun
HuiJun merged commit e25faa8 into develop Nov 1, 2026
34 checks passed
@HuiJun
HuiJun deleted the refactor/remove-deprecated branch November 1, 2026 05:12
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