cjchanh/mildoc-lint

GitHub: cjchanh/mildoc-lint

面向国防行政文档的本地优先确定性 linter,在文档离开本地前捕获 CUI 标记、O-SMEAC 结构、海军通信格式及 NAMP/CSEC 记录的结构性错误。

Stars: 0 | Forks: 0

# mildoc-lint [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9303445e53140017.svg)](https://github.com/cjchanh/mildoc-lint/actions/workflows/ci.yml) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](pyproject.toml) [![Lint: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Network: zero calls](https://img.shields.io/badge/network-zero%20calls-2ea44f.svg)](THREAT_MODEL.md) **面向与国防相关的行政、CUI、O-SMEAC、海军通信以及 NAMP/CSEC 战备记录的本地优先文档保障。** `mildoc-lint` 是一个确定性的 linter,可以在军事风格文档离开本地计算机*之前*捕获结构性错误。 ![mildoc-lint 在一份草拟的示例命令中标记出无效的 CUI 横幅、缺失的 O-SMEAC 指挥与信号段落,以及暴露的 SSN](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/67fa41a8fd140023.png) ## 它不是什么 简而言之:`mildoc-lint` 不生成战术计划,不证明合规性,不确定密级,也不进行网络调用。 `mildoc-lint` 不会: - 生成战术计划 - 确定密级 - 确定信息是否实际属于 CUI(这是指定机构的决定) - 证明 CMMC、RMF、NIST 或 DoD 的合规性 - 取代官方审查、QA、CSEC、指挥批准或记录系统(OOMA、NALCOMIS、DECKPLATE) - 使用网络调用、遥测、云 API 或模型调用 它不隶属于美国国防部、美国海军、美国海军陆战队、NAVAIR 或任何美国政府项目办公室。参见 [`INTENT.md`](INTENT.md)、[`docs/PUBLIC_BOUNDARY.md`](docs/PUBLIC_BOUNDARY.md) 和 [`docs/CLAIMS_MAP.md`](docs/CLAIMS_MAP.md)。 ## 适用人群 | 如果你… | mildoc-lint 为你提供 | |---|---| | 起草或审查**标有 CUI** 的文档 | 在文件离开你的计算机之前,进行确定性的横幅、部分标记和指定区块的格式检查 | | 编写 **O-SMEAC / OPORD / WARNORD / FRAGORD** 命令 | 五段落结构和执行子要素检查 | | 处理**海军通信** (SECNAV M-5216.5) | 标签顺序和主题行表面检查 | | 维护 **NAMP / CSEC** 战备记录 | 差异和战备记录格式检查 | | 在 CI 中对**文档仓库进行把关** | 用于 GitHub 代码扫描的 SARIF 2.1.0 和 `--fail-on` 退出代码 | | 在**物理隔离或许可**的环境中工作 | 零网络、零遥测、仅限合成示例、本地来源凭证 | 不熟悉终端?参见 [`docs/QUICKSTART.md`](docs/QUICKSTART.md)。想要添加到 CI 或 pre-commit?参见 [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md)。 ## 安装 有关完整的安装矩阵,请参见 [`docs/INSTALL.md`](docs/INSTALL.md)。 使用 `pipx` 安装 CLI: ``` pipx install mildoc-lint mildoc-lint --version ``` 从源码安装: ``` python -m venv .venv source .venv/bin/activate pip install -e . ``` ``` pip install -e '.[pdf]' ``` ## 运行 ``` mildoc-lint lint ./docs --profile mildoc mildoc-lint lint ./docs --profile cui --format json mildoc-lint lint ./docs --profile all --format sarif --out mildoc.sarif mildoc-lint namp check ./maintenance-records mildoc-lint new opord mildoc-lint new warnord mildoc-lint new fragord mildoc-lint new cui-designation-block mildoc-lint new namp-discrepancy ``` CI 把关: ``` mildoc-lint lint ./docs --profile mildoc --format sarif --out mildoc.sarif --fail-on error ``` 开箱即用的 GitHub Actions、pre-commit 和 Docker 配置位于 [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md) 中。`lint` 接受多个路径,因此它可以作为 pre-commit 钩子用于更改的文件。 ## 配置文件 | 配置文件 | 检查项 | |---|---| | `cui` | DoD CUI 横幅格式、指定标识区块、无效横幅、遗留标记 (FOUO/SBU)、部分标记一致性、“不要在 UNCLASSIFIED 前加前缀”规则,以及 PII 指标 | | `pii` | SSN、EDIPI/DoD ID 上下文、DOB、护照、金融账户指标 | | `osmeac` | O-SMEAC 五段落结构、任务启发式、执行子要素、OPORD/WARNORD/FRAGORD 分支 | | `naval` | 海军通信标签顺序和主题行格式(仅限 SECNAV M-5216.5 表面检查) | | `namp` | NAMP/CSEC 差异/战备记录格式:参考、差异、所有者、纠正措施、截止日期、状态、证据 | | `mildoc` | 自动检测的综合配置文件:cui + pii + osmeac + naval + namp | | `maildoc` | cui + pii + naval 通信框架的别名 | | `all` | 强制应用所有规则 | 支持的输入格式:`.txt`、`.md`、`.rst`、`.docx`。安装可选的 `pypdf` 依赖后支持 PDF。 支持的输出格式:text、JSON、SARIF 2.1.0。 ## 示例输出 ``` mildoc-lint: scanned 1 document(s), findings=6 blocker=0 error=4 warn=1 info=1 [ERROR] cui.invalid_banner @ examples/bad_cui_order.md:1:1 Invalid or legacy CUI banner form detected. snippet: CUI//CTI fix: Use standalone "CUI" for the banner/footer. Put categories and dissemination controls in the designation indicator block. ``` 预先生成的 SARIF 示例位于 [`examples/mildoc-example.sarif`](examples/mildoc-example.sarif)。 ## 为什么采用这种架构 DoD CUI 标记指南要求在包含 CUI 的文档上使用 `CUI` 标记和指定标识区块;并明确指出不要在横幅行中添加 CUI 类别或 LDC。USMC O-SMEAC 培训材料将五段命令格式定义为一种可防止遗漏并支持随时查阅的标准。NAVAIR 公开的 NAMP/CSEC 材料将 CSEC 描述为对 COMNAVAIRFORINST 4790.2 中规定的项目的检查清单/审计支持。 `mildoc-lint` 将这些标准的确定性、机械化部分编码为规则。每个发现都会引用一个公开的权威来源。运行 `mildoc-lint rules` 以打印完整列表。 有关每条规则的解释和参考资料,请参见 [`docs/CUI-Compliance-Guide.md`](docs/CUI-Compliance-Guide.md)、[`docs/OSMEAC-Compliance-Guide.md`](docs/OSMEAC-Compliance-Guide.md)、[`docs/NAMP-CSEC-Notes.md`](docs/NAMP-CSEC-Notes.md) 和 [`docs/SOURCES.md`](docs/SOURCES.md)。 ## Archivist 凭证 `mildoc-lint` v0.2 附带了一个可选的本地 **Archivist** 账本,可为每次 lint 运行生成确定性的、内容寻址的凭证。每份凭证都会记录检查了什么内容、依据什么规则包、使用了什么工具版本以及做出了什么决定。凭证以 SQLite 形式持久化存储,并在磁盘上仅支持追加。 ``` mildoc-lint archivist init mildoc-lint archivist lint docs/order.md --profile osmeac --write-receipt mildoc-lint archivist status docs/order.md mildoc-lint archivist gate docs/order.md --require-pass --require-sources --require-no-pii ``` 该账本仅在本地使用。`.mildoc/` 已被 gitignored。Archivist 不证明合规性、不确定密级,也不取代官方审查 —— 有关完整的凭证 schema、fail-closed 条件和工作流程,请参见 [`docs/Archivist-Receipts.md`](docs/Archivist-Receipts.md)。 ## 开源核心边界 有关完整的划分,请参见 [`docs/OPEN_CORE.md`](docs/OPEN_CORE.md)。 **开放(此仓库,Apache-2.0):** - 确定性规则引擎 - 本地 CLI - CUI / PII / O-SMEAC / naval / NAMP 格式检查 - JSON 和 SARIF 输出 - 合成示例 - 公开来源的权威参考 **闭源 / 未来企业版:** - 特定单位的规则包 - NAMP/CSEC 导入器 - OOMA / NALCOMIS / DECKPLATE 适配器 - SharePoint / NMCI 打包 - 签名的企业版本 - RMF / CMMC 部署包和工件 ## 安全与处理 该仓库**仅提供合成示例**。不要提交真实的命令、单位名册、维护记录、CUI、受出口管制的技术数据或操作细节。 默认在本地运行。没有遥测,没有网络调用,没有模型调用,也没有云依赖。 ## 开发 ``` pip install -e '.[dev]' python -m pytest mildoc-lint lint examples --profile all ``` 发布准备清单:[`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md)。 打包说明:[`docs/PACKAGING.md`](docs/PACKAGING.md) 和 [`docs/RELEASE_ARTIFACTS.md`](docs/RELEASE_ARTIFACTS.md)。 ## 路线图 参见 [`ROADMAP.md`](ROADMAP.md)。 ## 许可证 Apache-2.0。参见 [`LICENSE`](LICENSE)。
标签:Blue Team, Python, 云安全监控, 代码检查工具, 军事行政, 合规辅助, 安全规则引擎, 文档校验, 无后门, 本地优先, 请求拦截, 逆向工具, 静态分析