Skip to content

chore: finalize v3.0.0 public release prep - #15

Merged
setuidloot merged 3 commits into
mainfrom
chore/public-release-prep
Jul 4, 2026
Merged

chore: finalize v3.0.0 public release prep#15
setuidloot merged 3 commits into
mainfrom
chore/public-release-prep

Conversation

@setuidloot

Copy link
Copy Markdown
Owner

Completes the v3.0.0 public-release preparation on top of the src-layout restructure. Two commits: functional release-prep changes, then an isolated black reformatting pass.

Release prep (0f22077)

  • Licensing / attribution — Apache-2.0 metadata, NOTICE, SECURITY.md, and fork attribution to upstream GH05TCREW across README and LICENSE.
  • Release flow — tag-driven release.yml (build → PyPI Trusted Publishing → GitHub Release) replacing the auto-bump-on-push workflow; new docs/RELEASING.md and MCP server.json; pytest config moved into pyproject.toml.
  • CI — full pytest suite across a Python 3.10–3.13 matrix.
  • Docs — all guides and scripts/test_mcp_connection.py updated to the new src layout and CLI (metasploit-mcp, tests/harness.py, poetry run pytest); stale project-structure tree rewritten.
  • Teststest_force_exploit_autocheck.py imported the pre-restructure top-level module and was therefore skipped in every run. It now imports metasploit_mcp.server, restoring 5 tests covering force-option validation.

Reformatting (a3e6055)

  • black (line-length 100, per pyproject) applied across all of src/ and tests/ (26 files). Mechanical only, kept in a separate commit for reviewability. One source-text assertion in test_event_loop_monitor.py made whitespace-insensitive so it survives formatter line-wrapping.

Verification

  • Full suite: 370 passed, 39 skipped (only intentional slow/network/FastMCP-internals skips).
  • black --check src tests clean.

Before tagging a release (not blocking this PR)

  • Update the 3.0.0 date in CHANGELOG.md (currently 2026-04-29) to the actual release date.
  • Configure the PyPI Trusted Publisher (repo cbdmaul/MetasploitMCP, workflow release.yml, environment pypi) and a matching GitHub pypi environment before the first v* tag, or the publish job will fail. See docs/RELEASING.md.

🤖 Generated with Claude Code

setuidloot and others added 3 commits July 3, 2026 11:39
Complete the v3.0.0 public-release preparation on top of the src-layout
restructure:

- Licensing/attribution: Apache-2.0 metadata, NOTICE, SECURITY.md, and fork
  attribution to upstream GH05TCREW throughout README and LICENSE.
- Release flow: tag-driven release.yml (build + PyPI Trusted Publishing +
  GitHub Release) replacing the auto-bump-on-push workflow; add docs/RELEASING.md
  and MCP server.json; move pytest config into pyproject.toml.
- CI: run the full pytest suite across a Python 3.10-3.13 matrix.
- Docs: update all guides and the test-connection script to the new src layout
  and CLI (metasploit-mcp, tests/harness.py, poetry run pytest); rewrite the
  stale project-structure tree.
- Tests: fix test_force_exploit_autocheck.py, which imported the pre-restructure
  top-level module and was therefore skipped in every run. It now imports
  metasploit_mcp.server, restoring 5 tests covering force-option validation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Run `black` (line-length 100, per pyproject) over the entire src/ and tests/
tree, which was not uniformly formatted. Mechanical changes only — no behavior
change. Also make one source-text assertion in test_event_loop_monitor.py
whitespace-insensitive so it survives line-wrapping by the formatter.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Targeted `poetry update` of the packages flagged by Dependabot, refreshing
poetry.lock to patched versions while deliberately keeping the framework stack
(fastmcp 3.2.4, fastapi 0.136.1) on the versions the suite is tested against —
a blanket update pulls fastmcp 3.4.2, which resolves to the broken `fastmcp-slim`
variant and breaks `from fastmcp import FastMCP`.

Patched: langchain-core (critical serialization advisory), starlette,
python-multipart, urllib3, cryptography, requests, idna, pyjwt, msgpack, authlib,
joserfc, orjson, langsmith, python-dotenv, pygments, filelock, virtualenv, black,
pytest. Clears 46 of the 47 open alerts. Full suite: 370 passed, 39 skipped.

The remaining alert is pymetasploit3 (GHSA-qpc3-8vqg-8g6w): the latest published
release 1.0.6 has no upstream fix. It is a required runtime dependency and the
command-injection path is inherent to the tool's purpose (executing operator-
chosen Metasploit modules); documented as a known, accepted advisory in
SECURITY.md.

Also applies black 26's stable-style reformat to two test files (consequence of
the black bump in this update).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@setuidloot
setuidloot merged commit 18519a2 into main Jul 4, 2026
4 checks passed
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