Skip to content

Releases: Con-Benksl/NetOps

NetOps 0.6.0

Choose a tag to compare

@Con-Benksl Con-Benksl released this 30 Aug 10:06

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 netops plus 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: b4cc71f4bb01d909e7c34ca4130eb2c0803d08ebab5b697965e9558d33cd6c54
    • netops_skill-0.6.0.tar.gz: 53628d8dcebb6c26ee2e825c8a5115219f757a76e53e1be835f3d71b1c35ac08

See SHA256SUMS for machine-verifiable checksums.

v0.5.1

Choose a tag to compare

@Con-Benksl Con-Benksl released this 02 Aug 16:53

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 /tmp literals 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 main and v0.5.1 GitHub 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

Choose a tag to compare

@Con-Benksl Con-Benksl released this 26 Jul 12:45
6cac441

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-code and --agent '*' alongside --agent codex, verified against the pinned skills CLI.
  • Structured question guidance names request_user_input (Codex) and AskUserQuestion (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 block guard 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

Choose a tag to compare

@Con-Benksl Con-Benksl released this 26 Jul 09:36
6ba0a02

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.decision is now allow or warn only. The unconditional block is gone, and risk blocked is renamed unresolved. 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 as acknowledged_risks. Hard refusals now cover exactly two cases: hardware you do not own, and features that are not released.
  • target_independence_verified is split out of independent_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 promote unknown, 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.py detects bare UUIDs. The rules forbid committing credential UUIDs, and a VLESS client id is a bare uuid4, so the scanner previously reported clean on exactly the secret it named. run_id and observation_id stay 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.py parses every documented netopsctl command against the shipped parser and normalises every documented control_channel payload. It caught two real defects on its first runs.
  • scripts/check_install_tree.py rejects build residue, asserts the version pairing, and with --install-root compares 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

Choose a tag to compare

@Con-Benksl Con-Benksl released this 22 Jul 13:38

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

Choose a tag to compare

@Con-Benksl Con-Benksl released this 22 Jul 13:18

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; regenerate 2.0 plans)
  • 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

Choose a tag to compare

@Con-Benksl Con-Benksl released this 22 Jul 08:16

NetOps 0.2.0 是首个正式发布版本,面向 VPS、代理节点与本机网络问题提供“先取证、后决策”的中文工作流。

主要内容

  • 一个根路由 Skill 和五个工作流 Skill:netops-startnetops-scannetops-fixnetops-buildnetops-manage,共覆盖 59 个意图。
  • 核心工具仅依赖 Python 标准库;支持 Python 3.10–3.14。
  • 提供只读环境/节点/客户端扫描、诊断、脱敏支持包、变更计划、监控 dry-run 审查材料和本地状态检查。
  • 每个用户可见诊断同时输出中文入门报告和机器可读 JSON。
  • 公共诊断包、私有 fleet 覆盖和变更计划合同统一为 schema_version: "2.0"

安全边界

  • 本版本不发布远程写入执行器。change applychange 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 核验下载完整性。