primitive-0rigins/bar
GitHub: primitive-0rigins/bar
BAR 是一个 Rust 编写的行为保证运行时守护进程,通过学习软件 runtime 的预期行为、检测偏差、准备人工审批的修复并独立验证变更结果,为软件系统提供持续的行为合规保障。
Stars: 0 | Forks: 0
# BAR — 行为保证运行时
[](https://github.com/primitive-0rigins/bar/actions/workflows/ci.yml)
一个轻量级、可选模型的保证 daemon,使用 Rust 编写。你将其指向一个或多个软件 runtime;它会从 runtime 自身学习每个 runtime 的*预期*行为,将这种意图与具体实现和实时执行进行比较,准备就绪的修复发现,等待**人工审批**,将获批的工作交给连接的编码 agent,然后独立验证结果。
**状态概览**
- **目前已可用** — 无模型 daemon 引导程序、防篡改的哈希链审计日志([见下方演示](#see-it-catch-tampering))、关系型存储(SQLite/PostgreSQL)、只读目标与修订标识、增量制品清单、带有层级和冲突裁决的源码绑定契约提取、Rust/Python 静态架构事实、确定性的契约到代码可追溯性、带有修订新鲜度策略的证明义务,以及绑定修订的影子发现候选。`cargo test --workspace` 涵盖了所有这些内容。
- **等待人工审查** — Phase 5 静态适配器和 Phase 6 可追溯性、证明义务与新鲜度实现(完成证据位于 `docs/phase-evidence/` 下)。
- **进行中** — 静态发现引擎(Phase 7);其缺失实现的候选基础已经就绪。
- **尚未构建** — daemon 监视器和目标调度、runtime 证据捕获、人工审批工作流、编码 agent 交接以及变更后验证。
构建过程按阶段逐步推进,详见 [`docs/spec.md`](docs/spec.md) §21;[`STATUS.md`](STATUS.md) 记录了当前的工作和完成证据。
## 它是什么
BAR 是一个持续维护的模型,反映了一个 runtime *声称、允许、执行并能证明* 的内容。其运行的 pipeline 为:
```
target pointer → artifact discovery → contract extraction → hierarchy & adjudication
→ static/path model → build-deployment identity → runtime evidence
→ proof-obligation & coverage → finding & causal investigation → repair-ready contract
→ human approval → coding-agent implementation → pre-merge impact → post-change verification
→ assurance history
```
### 职责边界
| BAR 负责 | 人工负责 | 编码 agent 负责 | 外部系统负责 |
|---|---|---|---|
| 发现、证据、契约、发现结果、修复约束、验证 | 解释裁决、审批、豁免、接受的风险 | 仓库检查、计划、编辑、测试、实现报告 | 源代码控制、CI、制品构建、部署、生产凭证 |
### 设计承诺
- **目标优先资源。** 被监控的工作负载独占机器。BAR 在没有 GPU 的情况下运行,默认不驻留任何模型,在没有任何变化时保持接近空闲状态,并在目标压力下暂停可选的语义工作。
- **并发多 runtime 监控(计划中)。** 一个 daemon 将通过隔离的状态、每个目标的任务串行化以及有限的目标公平共享 worker,同时监视多个已注册的目标。集群级别的模式建议仍然是一个较晚的、独立的功能。
- **模型可选。** 即使禁用所有模型,BAR 依然有用。
- **人工把关修复。** 在获得批准之前,任何修复任务对编码 agent 都是不可见的;审批绑定到确切的任务内容、目标、范围、基础修订版本和有效期。BAR 绝不授予生产部署权限。
- **诚实的证据。** 文档就是证据,但可能已过时、自相矛盾或是错误的——它本身永远不会成为证明。每一项发现都引用确切的证据并说明其局限性。
### 明确的非目标
它不是个人助手、agent 编排器、调度程序、安全扫描仪、CI/CD 系统、问题跟踪器或可观测性的替代品——并且它不会输出单一的“正确性分数”。参见 [`docs/spec.md`](docs/spec.md) §2.1。
## 仓库布局
```
bar/
├── crates/
│ ├── bar-core/ # IDs, enums, schemas, typed errors
│ ├── bar-config/ # configuration contract (spec Appendix C)
│ ├── bar-audit/ # append-only hash-chained audit log
│ ├── bar-store/ # sqlx store + migrations (SQLite / PostgreSQL)
│ ├── bar-target/ # read-only target resolution and revision identity
│ ├── bar-discovery/ # incremental inventory and dependency-aware reparse plans
│ ├── bar-contract/ # source-bound claims, hierarchy, glossary, conflicts
│ ├── bar-static/ # shadow static architecture facts (Phase 5 foundation)
│ ├── bar-coverage/ # deterministic contract-to-static-fact traceability
│ ├── bar-findings/ # shadow static-finding candidates (Phase 7 foundation)
│ ├── bar-bench/ # resource benchmark harness (spec §4, §22)
│ └── bar-daemon/ # the mandatory model-free process (spec §5.1)
├── migrations/ # root SQL migrations, embedded at compile time
├── fixtures/ # versioned adversarial and end-to-end test corpora
├── docs/ # normative specification and phase evidence
├── STATUS.md # living project status
└── Cargo.toml # workspace root
```
完整的目标布局(19 个 crate、UI、适配器、测试夹具)定义在 [`docs/spec.md`](docs/spec.md) §5 中。Crate 会随着其所属阶段的实现而加入,因此目录树始终能保持干净构建。
## 构建
### 快速开始
BAR 目前提供其无模型的 bootstrap daemon,而其余阶段仍在构建中。在拥有稳定 Rust 工具链(1.85+)的检出版本中:
```
cargo run -p bar-daemon
```
该命令会初始化结构化日志,报告其无模型就绪状态,并正常退出。它尚未监视目标或公开计划中的 API;这些功能将在后续阶段加入。设置 `BAR_LOG_FORMAT=json` 以获取机器可读的日志。当不存在配置文件时,daemon 使用内置默认值;设置 `BAR_CONFIG=/path/to/bar.toml` 可加载经过明确验证的配置。其完整契约位于 [`docs/spec.md`](docs/spec.md#appendix-c-complete-configuration-contract) 中。
### 查看它捕获篡改
审计链是 BAR 的信任锚,它可以在三十秒内实现自我防御:
```
cargo run -p bar-audit --example tamper_evidence
```
该示例将一项裁决、一次审批和一次证据变更封存入链中,验证完整无缺的链,然后通过三种方式篡改“已存储”的记录——重写审批、删除裁决和重排事件顺序——并展示验证过程如何以确切的理由拒绝每一次篡改:
```
sealed #0 ruling ruled ambiguous retry contract as intended-once
sealed #1 approval approved repair job within reviewed scope
sealed #2 evidence_mutation invalidated stale coverage evidence after repair
intact: chain verifies
edited record: REFUSED — corrupt input: audit record 1 content does not match its hash
deleted record: REFUSED — corrupt input: audit record at position 0 has seq 1
reordered records: REFUSED — corrupt input: audit record at position 1 has seq 2
```
### 查看确定性的配置可追溯性
```
cargo run -p bar-coverage --example config_traceability
```
该示例将显式的契约引用映射到确切的 JSON 配置路径和源码行,且不会将这种映射视为行为证明:
```
mapping status: Mapped
`server.port` → config/runtime.json:1 (Configuration)
```
### 查看未完成的证明如何保持未证实状态
```
cargo run -p bar-coverage --example proof_assessment
```
该示例映射了 `authorize`,但故意遗漏了 `audit`。其评估结果保持未证实状态,并指出了差距所在,而不是将一个匹配的符号视为对整个契约的支持:
```
mapping status: PartiallyMapped
proof status: Unproven
unresolved: audit
```
### 验证检出代码
```
cargo test --workspace --all-targets
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all -- --check
```
CI 会在每个 pull request 上运行相同的格式化、lint 和测试门控。请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md) 了解贡献期望,并参阅 [`SECURITY.md`](SECURITY.md) 私下报告漏洞。
## 文档
- [`docs/spec.md`](docs/spec.md) — 完整的、规范化的实现规范和构建手册(本仓库构建所依据的契约)。
- [`STATUS.md`](STATUS.md) — 当前阶段、已交付证据和已知技术债务。
- [`CONTRIBUTING.md`](CONTRIBUTING.md) — 开发和审查期望。
- [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) — 社区参与标准。
- [`SECURITY.md`](SECURITY.md) — 漏洞报告政策。
## 许可证
基于 [MIT 许可证](LICENSE) 授权。
标签:Rust, 云安全监控, 可视化界面, 守护进程, 开发辅助, 模块化设计, 测试用例, 网络流量审计, 自动化修复, 通知系统, 静态分析