Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ jobs:
# Hosted runners clamp every process, so the unclamped-root case can only
# be recorded as not run there; the summary still shows incomplete.
run: python3 scripts/qualify.py dg1-scopes --allow-incomplete --output target/qualification/dg1-scopes
- name: Native launch helper functional checks
if: runner.os == 'macOS'
# The same clamp leaves the unclamped-helper refusal case not run there.
run: python3 scripts/qualify.py dg1-launch --allow-incomplete --output target/qualification/dg1-launch
- name: Native reconciliation functional checks
if: runner.os == 'macOS'
run: python3 scripts/qualify.py dg1-reconcile --output target/qualification/dg1-reconcile
- name: Preserve qualification evidence
if: always()
uses: actions/upload-artifact@v6
Expand All @@ -52,9 +59,9 @@ jobs:
import json, os
from pathlib import Path
with open(os.environ['GITHUB_STEP_SUMMARY'], 'a') as out:
for name in ['ci', 'dg1-authority', 'dg1-auth', 'dg1-probes', 'dg1-scopes']:
for name in ['ci', 'dg1-authority', 'dg1-auth', 'dg1-probes', 'dg1-scopes', 'dg1-launch', 'dg1-reconcile']:
path = Path('target/qualification') / name / 'report.json'
status = json.loads(path.read_text())['status'] if path.exists() else 'not_run'
out.write(name + ': ' + status + '\n\n')
out.write('Contract regression, service/UDS, native host evidence and native scope functional checks only; native suites run on macOS. Workload launch, self-use and foreground SLO qualification are not run.\n')
out.write('Contract regression, service/UDS, native host evidence, native scope, launch helper and reconciliation functional checks only; native suites run on macOS. Self-use and foreground SLO qualification are not run.\n')
PY
14 changes: 14 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[workspace]
resolver = "2"
members = ["crates/contract", "crates/core", "crates/daemon", "crates/client", "crates/macos"]
members = ["crates/contract", "crates/core", "crates/daemon", "crates/client", "crates/macos", "crates/launch"]

[workspace.package]
version = "0.1.0"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

DevGuard centralizes resource admission for development workloads while preserving the resources needed to inspect and stop them.

The repository implements **DG-0 contracts and a durable authority core**, with DG-1 now in progress. C01 supplies canonical paths/bootstrap/storage checks; C02 supplies authenticated, bounded local communication with a small client and private credential-FD transfer; C03 supplies the native macOS boot clock, process identity and host pressure evidence that activate the service's journal; C04 supplies cooperative QoS/nice application with readback and observed process-group scope evidence for the future launch helper. PR and post-merge main delivery evidence is tracked separately from implementation. Registration over the wire, principals, leases and execution remain closed until the launch and reconciliation work in P3; Linux cgroups are not yet available. Use the operating guide for actual command availability; the design also contains future interfaces.
The repository implements **DG-0 contracts and a durable authority core**, with DG-1 now in progress. C01 supplies canonical paths/bootstrap/storage checks; C02 supplies authenticated, bounded local communication with a small client and private credential-FD transfer; C03 supplies the native macOS boot clock, process identity and host pressure evidence that activate the service's journal; C04 supplies cooperative QoS/nice application with readback and observed process-group scope evidence; C05 supplies registration over the wire and the fenced `devguard-launch` helper; C06 supplies reconciliation, and with native evidence the service opens all three. PR and post-merge main delivery evidence is tracked separately from implementation. There is no execution CLI yet (DG1-C07), and Linux cgroups are not yet available. Use the operating guide for actual command availability; the design also contains future interfaces.

- [Authoritative design reference](docs/design.md) · [Korean translation](docs/ko/design.md)
- [Historical approved design (Korean, immutable)](docs/design.ko.md)
Expand All @@ -26,7 +26,7 @@ python3 scripts/qualify.py dg1-scopes --offline # macOS only

Omit `--offline` when the locked crates have not been downloaded. Builds and tests use one Cargo job and one test thread by default. Results, source fingerprints and logs are written under `target/qualification/`. A newer compiler can be used with `--allow-toolchain-mismatch` for a supplemental check, which never counts as qualification for 1.95.0.

DG-0 tests use an explicitly fake OS backend. Their passing reports establish accounting, persistence and state-transition contracts. The additional C01–C04 suites check actual local storage, peer observations, credential transport, native macOS host evidence and cooperative scope evidence within bounded fixtures. They do not qualify registration over the wire, launch, Linux enforcement, browser responsiveness or self-governed execution; these remain `not_run`.
DG-0 tests use an explicitly fake OS backend. Their passing reports establish accounting, persistence and state-transition contracts. The additional C01–C06 suites check actual local storage, peer observations, credential transport, native macOS host evidence, cooperative scope evidence, the launch helper and reconciliation within bounded fixtures. They do not qualify an execution CLI, Linux enforcement, browser responsiveness or self-governed execution; these remain `not_run`.

## Repository boundaries

Expand Down
Loading