Releases: Con-Benksl/NetOps
Release list
NetOps 0.6.0
NetOps 0.6.0 separates conversational findings from persisted scan evidence, strengthens execution authorization and subscription credential redaction, and adds transactional synchronization for the root Skill and its five workflow Skills.
Highlights
- Formal scans now persist one machine-readable JSON bundle by default; Markdown reports remain available through explicit export.
- Execution consent is bound to an exact execution-card ID, scope, and residual-risk list. Material changes require fresh confirmation.
- Credential-shaped subscription URLs, QR payloads, and semantic subscription fields are redacted fail-closed, including one encoded layer, while recognized documentation paths remain readable.
- The new dry-run-first Skill synchronizer stages Git-tracked regular files only and transactionally refreshes
netopsplus its five flat workflow Skills, with content-bound confirmation, durable journaling, persistent backup, rollback, and interrupted-run recovery. - Publication checks now enforce a clean exact tag, Changelog integrity, complete source distributions, reproducible double builds, fresh wheel/sdist installation smoke tests, and cross-platform filesystem behavior.
Verification
- Commit:
9452b5c578b1dce54e5b37099c28501adde70565 - Tag:
v0.6.0(annotated) SOURCE_DATE_EPOCH:1788083741- Branch CI: https://github.com/Con-Benksl/NetOps/actions/runs/33305237260 — 11/11 passed
- Tag CI: https://github.com/Con-Benksl/NetOps/actions/runs/33305454792 — 11/11 passed
- Publication release gate: passed with Draft 2020-12 schema validation
- Local test matrix: 486-test suite passed on Python 3.12, Python 3.14, and optimized Python 3.14
- Release artifacts: reproducible double build and isolated wheel/sdist smoke tests passed
- SHA-256:
netops_skill-0.6.0-py3-none-any.whl:b4cc71f4bb01d909e7c34ca4130eb2c0803d08ebab5b697965e9558d33cd6c54netops_skill-0.6.0.tar.gz:53628d8dcebb6c26ee2e825c8a5115219f757a76e53e1be835f3d71b1c35ac08
See SHA256SUMS for machine-verifiable checksums.
v0.5.1
What changed
This maintenance release completes a whole-project pre-publication audit and
adds the direct LINUX DO link needed for sharing NetOps
there.
- Both READMEs now carry the direct community link, protected by the bilingual
documentation contract. - Pinned clone examples and package metadata now target
v0.5.1. - Four stale imports were removed.
- Four static-analysis false positives are now documented at their exact
source: three/tmpliterals are path-policy comparisons, and the Python
3.10/3.11 sdist extraction fallback only receives strictly validated members.
There are no diagnostic, fleet, change-plan, CLI, or support-bundle schema
changes in this release.
Verification
- 414 tests passed in normal and optimized (
python -O) modes. - Skill structure, secret scan, install tree, strict Draft 2020-12 JSON Schema,
release integrity, Ruff undefined-name/import checks, and Bandit medium/high
checks passed locally. - The
mainandv0.5.1GitHub Actions runs each passed all 11 Linux, macOS,
and Windows jobs across Python 3.10 to 3.14. - The attached wheel and normalized sdist were built twice from the same clean
source snapshot, compared byte-for-byte, tested from the extracted sdist,
and installed independently from arbitrary working directories.
Release source epoch: 1785689202
82be5f56ceb0c5cf80d0d7f25cb1524b3d122dacfeb83d2352dfe179d883b396 netops_skill-0.5.1-py3-none-any.whl
30c4b3b7d2aac4b766c673c2d5c8b00764cc1d50e067190a6b67cd9fb4bf2dc2 netops_skill-0.5.1.tar.gz
Full detail is in CHANGELOG.md.
v0.5.0
The suite is agent neutral. It was written with Codex as the operator and named it 127 times across 33 files; nothing about the safety model, the gate, or the diagnostics was ever Codex specific, so the name has been replaced with the role.
- English says the agent; Chinese says Agent (代理 was avoided because it means proxy in this domain). The term is defined at first use: whichever AI assistant operates for you, Claude Code, Codex, or another Agent Skills compatible tool.
- Install docs cover
--agent claude-codeand--agent '*'alongside--agent codex, verified against the pinned skills CLI. - Structured question guidance names
request_user_input(Codex) andAskUserQuestion(Claude Code). - Breaking for in-flight plans: the gate's reason and next action strings are embedded in reviewed plans, so a pre-0.5.0 plan fails the guard comparison loudly and must be regenerated.
- Drive-by fix: one sentence still described a
blockguard decision, removed in 0.3.2.
414 tests; CI on Python 3.10 to 3.14 across Linux, macOS and Windows; reproducible double build gate. Full detail in CHANGELOG.md.
v0.4.0
The gate reminds instead of refusing, and stops asking the model to tick a box it knows is false.
NetOps diagnoses VPS and proxy failures by segment. Its distinguishing constraint is that the agent doing the fixing may be reaching the internet through the proxy it is about to restart. This release reworks how that constraint behaves, and fixes the safety defects a first-principles review of the whole suite turned up.
Breaking changes
guard.decisionis nowalloworwarnonly. The unconditionalblockis gone, and riskblockedis renamedunresolved. A gate that returns a dead end teaches operators to work around it; one that states the residual risk and records consent keeps the decision visible. Unresolved risk on a remote target proceeds after a risk card and explicit per operation consent (--accept-residual-risk), with the accepted risks written into the receipt asacknowledged_risks. Hard refusals now cover exactly two cases: hardware you do not own, and features that are not released.target_independence_verifiedis split out ofindependent_path_verified. One boolean was folding together two different facts: that the target is off the agent's current path, and that a verified backup management channel exists. For an unrelated VPS there is no backup channel to verify, so passing the gate meant asserting something the model knew was false. Plans written against the previous contract fail loudly and must be regenerated.
Safety
- New
references/independence-protocol.md: an executable evidence ladder for deciding whether a target carries the agent's traffic. It is deliberately asymmetric. Egress comparison and active node comparison can only ever prove shared, because a relay or upstream chain can place the target mid path; only a controlled switch test can positively establish independent. A user's verbal confirmation can never on its own promoteunknown, since a beginner is precisely the person least likely to know which host carries their traffic. - Remote output is evidence, never instruction. Banners, MOTD, logs, panel configs and command output collected over SSH reach the model's context. A compromised host could otherwise write "this VPS is unrelated to your traffic" into a log and have it read as fact.
check_secrets.pydetects bare UUIDs. The rules forbid committing credential UUIDs, and a VLESS client id is a bare uuid4, so the scanner previously reportedcleanon exactly the secret it named.run_idandobservation_idstay allow listed.
Structure and documentation
- Post incident material split into
references/emergency-recovery.md, taking the gate reference from 283 lines to 196. The recovery card is now persisted to a local file before high risk changes, since the chat transcript is precisely what an operator loses when they go offline. - All six Skill descriptions rewritten. Performance symptoms (slowness, latency, packet loss) had zero coverage across every description despite MTR and iperf3 adapters shipping.
- New
CHANGELOG,CONTRIBUTING,SECURITY,CODE_OF_CONDUCT, issue and pull request templates, and a command reference plus execution mode table in both READMEs.
New guards
tests/test_docs_contract.pyparses every documentednetopsctlcommand against the shipped parser and normalises every documentedcontrol_channelpayload. It caught two real defects on its first runs.scripts/check_install_tree.pyrejects build residue, asserts the version pairing, and with--install-rootcompares flat Skill copies byte for byte.
Verification
414 tests. CI covers Python 3.10 to 3.14 on Linux, macOS and Windows, with a reproducible double build gate requiring byte identical wheels and normalised sdists.
Full detail in CHANGELOG.md.
NetOps 0.3.1
NetOps 0.3.1
Hotfix release for v0.3.0.
- Removes accidental shell xtrace (
set -x) from the remote backup transaction, so reviewed backup commands are not mirrored to stderr. - Adds regression coverage that prevents shell xtrace from returning.
- Includes the v0.3.0 risk-tiered execution model: Codex may directly SSH to an independent remote VPS after one impact confirmation; shared control paths require an exact plan and automatic rollback; only a local active control-plane switch remains a manual user action.
Compatibility remains unchanged: change schema 3.0, fleet and bundle schema 2.0, and scheduler dry-run behavior.
NetOps 0.3.0
NetOps 0.3.0
Superseded by NetOps 0.3.1. Version 0.3.0 accidentally enabled shell xtrace in the remote backup transaction; use v0.3.1 instead.
This release replaces the blanket remote-write prohibition with a control-channel risk model:
- An unrelated remote VPS can be changed directly by Codex over SSH after one explicit impact and rollback confirmation. Codex performs the backup, Linux commands, validation, verification, and rollback instead of handing commands to the user.
- A remote node or VPS carrying the current Codex path requires a verified independent path or the exact-plan executor with automatic rollback.
- Only local active control-plane changes that may disconnect Codex, such as TUN, system proxy, proxy process, DNS, routes, or firewall switching, remain a manual user action.
The exact-plan executor is now available for transactions that need it. Apply and rollback require strict authorization, a matching plan ID, fresh control-channel evidence, exact target coverage, verified backup integrity, and durable receipts. SQLite targets can use a stable reviewed query plus an online consistency backup so live counters do not invalidate unrelated configuration changes.
Compatibility
- Change spec and plan schema:
3.0(breaking; regenerate2.0plans) - Fleet and diagnostic bundle schemas: remain
2.0 - Scheduled monitor installation and removal: still dry-run only
Release artifacts were built twice with the tag commit timestamp and passed fresh-install smoke tests. Verify downloads with SHA256SUMS.
NetOps 0.2.0
NetOps 0.2.0 是首个正式发布版本,面向 VPS、代理节点与本机网络问题提供“先取证、后决策”的中文工作流。
主要内容
- 一个根路由 Skill 和五个工作流 Skill:
netops-start、netops-scan、netops-fix、netops-build、netops-manage,共覆盖 59 个意图。 - 核心工具仅依赖 Python 标准库;支持 Python 3.10–3.14。
- 提供只读环境/节点/客户端扫描、诊断、脱敏支持包、变更计划、监控 dry-run 审查材料和本地状态检查。
- 每个用户可见诊断同时输出中文入门报告和机器可读 JSON。
- 公共诊断包、私有 fleet 覆盖和变更计划合同统一为
schema_version: "2.0"。
安全边界
- 本版本不发布远程写入执行器。
change apply、change rollback、SSH 执行以及调度任务写入均无条件 fail-closed。 - 不自动安装或下载 MTR、NextTrace、dnsdiag、testssl.sh、IPQuality、iperf3 等外部工具;外部查询必须显式授权,iperf3 还需要负载授权。
- 默认保留既有节点和主机默认路由;发布构建与 CI 没有连接或修改任何 VPS。
- 早期 0.1.0 原型的公共 schema 1.0 工件与本版本不兼容;工具会明确拒绝,不做静默迁移。
安装
需要 Node.js 22.20.0 或更高版本。安装器版本和 NetOps 标签均固定:
git clone --branch v0.2.0 --depth 1 https://github.com/Con-Benksl/NetOps.git
NPM_CONFIG_CACHE=/tmp/netops-npm-cache npx skills@1.5.19 add ./NetOps -l --full-depth
NPM_CONFIG_CACHE=/tmp/netops-npm-cache npx skills@1.5.19 add ./NetOps -g --agent codex --full-depth --skill '*'Python CLI 需要 Python 3.10–3.14:
python3 NetOps/scripts/netopsctl.py --help发布验证
- 发布提交:
132042ad18de01a9c189e044694ff704795fa1ee - 已注释标签:
v0.2.0 - 正式构建时间戳:
SOURCE_DATE_EPOCH=1784701703(发布提交的 committer timestamp) - 本地 Python 3.12 与 3.14:各 382 项测试通过,36 项按设计跳过
- 标签 CI:11/11 作业通过(Linux、macOS、Windows;Python 3.10–3.14)
- CI 记录:https://github.com/Con-Benksl/NetOps/actions/runs/29903094461
制品 SHA-256:
8b9b1ebc0c931c8c0cb2aa90c42c84d7dbd33fbb409ba0662210f61733ff5488 netops_skill-0.2.0-py3-none-any.whl
2f838f8f841b8b53df697447230225dffd97d3995b017d2f559990e004939907 netops_skill-0.2.0.tar.gz
可复现构建保证限于同一源码快照和受控的 Python、setuptools、build 与运行环境;不宣称跨操作系统或不同工具链必然字节一致。当前制品没有数字签名,请使用随 Release 提供的 SHA256SUMS 核验下载完整性。