xgauntlet 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -2
- package/bin/xgauntlet.js +2 -2
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
<p align="center">
|
|
22
22
|
<a href="https://www.npmjs.com/package/xgauntlet"><img src="https://img.shields.io/npm/v/xgauntlet.svg?color=blue" alt="NPM Version" /></a>
|
|
23
|
-
<a href="https://github.com/rolfmadsen/
|
|
23
|
+
<a href="https://github.com/rolfmadsen/xgauntlet/actions/workflows/ci.yml"><img src="https://github.com/rolfmadsen/xgauntlet/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI" /></a>
|
|
24
24
|
<a href="docs/adr/0005-two-tier-verification-and-attestation-model.md"><img src="https://img.shields.io/badge/evidence-Two--Tier%20Trust%20Model-blue.svg" alt="Evidence Model" /></a>
|
|
25
25
|
<a href="wit/gauntlet_policy.wit"><img src="https://img.shields.io/badge/WASM-Zero%20Ambient%20Authority-purple.svg" alt="WASM Policy" /></a>
|
|
26
26
|
<a href="Cargo.toml"><img src="https://img.shields.io/badge/rust-2021%20edition-orange.svg" alt="Rust Version" /></a>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
**Dokumentation**: [Makro-Spec](spec.md) • [Domæne-Glossary](CONTEXT.md) • [Kodestandarder](CODING_STANDARDS.md) • [Arkitektur (ADRs)](docs/adr/)
|
|
33
33
|
|
|
34
|
-
**Kildekode & Pakker**: [GitHub](https://github.com/rolfmadsen/
|
|
34
|
+
**Kildekode & Pakker**: [GitHub](https://github.com/rolfmadsen/xgauntlet) • [NPM Pakke](packages/cli)
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -102,6 +102,9 @@ npx xgauntlet doctor
|
|
|
102
102
|
1. **Metodiske retningslinjer (Agent Skills)**: Proceskrav (såsom sokratisk grilling, TDD-disciplin og arkitektur-review), som agenten instrueres i at følge (`grill-me`, `old-coder`, `code-review`).
|
|
103
103
|
2. **Håndhævede software-gates (CLI & In-Memory WASM)**: Deterministiske kontrolpunkter i Rust-koden (`check-spec`, pre-invocation WASM hook, `verify`, `check-evidence` og `check-release`), der fysisk blokerer uautoriserede handlinger med exit-koder og multi-digest integritetskontrol.
|
|
104
104
|
|
|
105
|
+
> [!NOTE]
|
|
106
|
+
> **Bemærk om tilstande og Zero-Daemon:** Systemet styres ikke af en global database eller baggrundsdæmon, men af diskrete, uafhængige CLI-kald (`sub-3ms` koldstart). Opgavestatus (`DRAFT`, `ACTIVE`, `PASSED`, `DONE`) er forankret direkte i de enkelte task-filers OKF YAML-frontmatter (`tasks/*.md`), som evalueres on-demand af de respektive gates uden behov for en tilstandsmaskine-service.
|
|
107
|
+
|
|
105
108
|
### Oversigt over udviklingsflowet
|
|
106
109
|
|
|
107
110
|
```text
|
|
@@ -127,6 +130,83 @@ npx xgauntlet doctor
|
|
|
127
130
|
(Versionssynkronisering, CHANGELOG.md og ADR-krydsreferencer)
|
|
128
131
|
```
|
|
129
132
|
|
|
133
|
+
### Pipelinen trin for trin
|
|
134
|
+
|
|
135
|
+
#### 1. Idé- og kontekstafklaring
|
|
136
|
+
* **Type**: Metodisk proces (Agent Skill)
|
|
137
|
+
* **Hvad der sker**: Før der skrives specifikationer eller kode, aktiveres grilling-skills (`grill-me` eller `grill-with-docs`). Agenten udfordrer antagelser, identificerer risici og afstemmer planer mod eksisterende arkitektur og ADR'er.
|
|
138
|
+
* **Kontrolpunkt**:
|
|
139
|
+
* *Hvem godkender*: Udvikleren i direkte dialog.
|
|
140
|
+
* *Hvordan*: Dialogen udmønter sig i, at agenten opdaterer `CONTEXT.md` og eventuelt udarbejder en ny ADR i `docs/adr/`.
|
|
141
|
+
* *Håndhævelse i koden*: Dette er et instruktionskrav til agenten. Der findes ingen automatisk kodelås, der forhindrer oprettelse af tasks uden forudgående grilling; disciplinen bæres af udviklerens sparring med agenten. WASM-policykernen tillader udtrykkeligt skrivning til styringsdokumenter (`tasks/`, `spec.md`, `CONTEXT.md`, `CODING_STANDARDS.md`, `docs/`) uanset opgavestatus.
|
|
142
|
+
|
|
143
|
+
#### 2. Specifikation & Opgavebinding
|
|
144
|
+
* **Type**: Hård software-gate
|
|
145
|
+
* **Hvad der sker**: Opgaven defineres formelt i en markdown-fil under `tasks/` (f.eks. `tasks/001-bootstrap.md`) med eksplicit OKF v0.2 frontmatter samt eksekverbare acceptkriterier.
|
|
146
|
+
* **Kontrolpunkt**: Spec Gate (`xgauntlet check-spec`)
|
|
147
|
+
* *Hvem godkender*: Shift-left valideringsmotoren i Rust (`crates/xgauntlet-core/src/features/tasks/validator.rs`).
|
|
148
|
+
* *Hvordan*: CLI-værktøjet parser task-filerne og validerer:
|
|
149
|
+
1. Valid OKF v0.2 YAML-frontmatter (`type: Task Package`, `status`, `title`, `generated`).
|
|
150
|
+
2. Eksistensen af sektionen `## 🎯 Formål` (eller `## Purpose`).
|
|
151
|
+
3. Eksistensen af eksekverbare acceptkriterier (`- [ ]`).
|
|
152
|
+
4. Eksistensen af negative forretningsregler under `## 🚫 Must NOT`.
|
|
153
|
+
5. At definitionerne i `CONTEXT.md` følger Aristoteles' formel (`**Term**:\n<Definition>\n_Avoid_: <synonymer>`).
|
|
154
|
+
* *Håndhævelse i koden*: Returnerer exit-kode 1, hvis en task-fil mangler, er fejlbehæftet eller overtræder formateringskravene.
|
|
155
|
+
|
|
156
|
+
#### 3. Implementering under Zero-Ambient-Authority Policy (Værkstedet)
|
|
157
|
+
* **Type**: Metodisk TDD + Hård runtime-beskyttelse
|
|
158
|
+
* **Hvad der sker**: Koden skrives efter Red/Green TDD-princippet (først en fejlende test, derefter den minimale kode, der løser den, og til sidst refaktorisering).
|
|
159
|
+
* **Kontrolpunkt**: Pre-Invocation WASM Hook & Anti-Tamper Guard
|
|
160
|
+
* *Hvem godkender*: Indlejret Wasmtime policy-motor (`gauntlet_policy.wasm` bygget fra `wit/gauntlet_policy.wit`) og harness-adaptere (`crates/xgauntlet-core/src/features/adapters/`).
|
|
161
|
+
* *Hvordan*: Agentens værktøjskald (tool calls) overvåges deterministisk ved hvert kald via `xgauntlet hook <harness>`.
|
|
162
|
+
* *Håndhævelse i koden*:
|
|
163
|
+
* **Zero Ambient Authority**: WebAssembly-modulet har absolut nul adgang til værtsfilsystem, netværk, systemur eller tilfældighedskilder.
|
|
164
|
+
* Beskyttede produktions- og kildestier (`src/`, `tests/`, `crates/`, `packages/`, `.agents/`) kan **ikke** modificeres, medmindre der findes en aktiv task (`tasks/*.md`) med status `ACTIVE`.
|
|
165
|
+
* Destruktive kommandoer som `git push`, `git reset --hard`, `git clean -f`, `git branch -D` og `rm -rf /` blokeres hårdt (`reason_code: 4039`).
|
|
166
|
+
* Linux Bubblewrap (`bwrap`) er erstattet til fordel for WebAssembly + matematisk invariantkontrol (pre/post manifest-digests i verifikationspipelinen), hvilket sikrer fuld 100% krydsplatform understøttelse på tværs af Linux, macOS og Windows 11 uden kerne-afhængigheder eller root-rettigheder.
|
|
167
|
+
* *Bemærk om TDD*: Selve rækkefølgen (Red før Green) registreres ikke historisk af test-runneren; det er en metodisk adfærd instrueret via agent-skills.
|
|
168
|
+
|
|
169
|
+
#### 4. Flerlags Verifikation
|
|
170
|
+
* **Type**: Hård software-gate
|
|
171
|
+
* **Hvad der sker**: Fuld automatisk eksekvering af projektets test- og analysesuiter med matematisk beskyttelse mod selvmutation og generering af forseglede rapporter.
|
|
172
|
+
* **Kontrolpunkt**: Diagnostic & Execution Engine (`xgauntlet verify`)
|
|
173
|
+
* *Hvem godkender*: Verifikationspipelinen i Rust (`crates/xgauntlet-core/src/features/gauntlet/pipeline.rs`).
|
|
174
|
+
* *Hvordan*: Runneren eksekverer de lag, der er defineret i `gauntlet.toml` (f.eks. Typer, Linters, Tests, Invarianter & Mutationer) med fail-closed semantik og timeouts:
|
|
175
|
+
1. **Pre-manifest beregning**: Beregner kildetræets Git-blob OID digests forud for testkørsel.
|
|
176
|
+
2. **Lag-eksekvering**: Kører lagene sekventielt; ved fejl parses output til Actionable Diagnostics (`DiagnosticParser`).
|
|
177
|
+
3. **Post-manifest & Anti-Tamper**: Genberegner manifest efter kørsel; hvis kildekode eller testassertions muteres undervejs, afvises kørslen øjeblikkeligt (`verify_self_mutation`).
|
|
178
|
+
* *Håndhævelse i koden*: Alle obligatoriske diagnostiske lag skal bestå (`exit_code == 0`). Ved succes genereres atomart `verification-report.json` (Schema v2) og `evidence.md` med deterministiske SHA-256 digests over kildetræ (`source_manifest_digest`), konfiguration, opgave og politikker.
|
|
179
|
+
|
|
180
|
+
#### 5. Review mod Kodestandarder
|
|
181
|
+
* **Type**: Hybrid gate (Agent Skill + Udvikleraccept)
|
|
182
|
+
* **Hvad der sker**: Den implementerede løsning auditeres mod arkitekturretningslinjer og regler i `CODING_STANDARDS.md`.
|
|
183
|
+
* **Kontrolpunkt**: Standards Review (`code-review` skill)
|
|
184
|
+
* *Hvem godkender*: Udvikleren assisteret af agentens review-skill.
|
|
185
|
+
* *Hvordan*: Agenten gennemgår diff'en op mod kodestandarderne og fremhæver eventuelle arkitekturbrud, manglende fejlhåndtering eller navngivningsfejl.
|
|
186
|
+
* *Håndhævelse i koden*: Gaten er procesmæssig og beror på agentens review-rapport kombineret med udviklerens godkendelse.
|
|
187
|
+
|
|
188
|
+
#### 6. Drift- og Integritetskontrol (Two-Tier Model)
|
|
189
|
+
* **Type**: Hård software-gate
|
|
190
|
+
* **Hvad der sker**: Verificering af, at kildekoden og arbejdstræet ikke er blevet manipuleret eller er driftet efter testkørslen.
|
|
191
|
+
* **Kontrolpunkt**: Drift Verification (`xgauntlet check-evidence`)
|
|
192
|
+
* *Hvem godkender*: Drift-detektionsmotoren (`crates/xgauntlet-core/src/features/evidence/drift.rs`).
|
|
193
|
+
* *Hvordan*: Værktøjet genberegner det aktuelle kildetræs workspace-manifest og sammenligner det direkte med værdierne i `verification-report.json`.
|
|
194
|
+
* *Håndhævelse i koden*:
|
|
195
|
+
* **Tier 1 (Lokal drift-kontrol)**: Er blot én byte ændret i kildetræ, opgave, config eller politik efter `verify`, afvises tjekket med en specifik `DriftViolation`. Beregningen benytter Git-tree/blob OID-hashes, hvilket gør driftkontrollen fuldstændig immun over for linjeskift-forskelle (LF vs. CRLF) på tværs af styresystemer.
|
|
196
|
+
* **Tier 2 (Attestation i CI)**: Jf. [ADR 0005](docs/adr/0005-two-tier-verification-and-attestation-model.md) adskilles lokal verifikation fra uafviselig CI-attestering. I beskyttede CI-miljøer genereres en kryptografisk in-toto/DSSE-attest (Sigstore/OIDC), som forsegler kildens herkomst forud for release.
|
|
197
|
+
|
|
198
|
+
#### 7. Release Readiness
|
|
199
|
+
* **Type**: Hård software-gate
|
|
200
|
+
* **Hvad der sker**: Koden klargøres til release og merge ved at kontrollere synkronisering mellem versioner, ændringslog og dokumentation.
|
|
201
|
+
* **Kontrolpunkt**: Release Gate (`xgauntlet check-release`)
|
|
202
|
+
* *Hvem godkender*: Release-orkestratoren (`crates/xgauntlet-core/src/features/release/engine.rs`).
|
|
203
|
+
* *Hvordan*: Værktøjet udfører tre specifikke tjek:
|
|
204
|
+
1. **Versionskonsistens**: Versionsnumre skal matche på tværs af projektets manifests (`Cargo.toml`, `package.json`, `pyproject.toml`).
|
|
205
|
+
2. **Changelog-synkronisering**: `CHANGELOG.md` skal indeholde en sektion for den pågældende version.
|
|
206
|
+
3. **ADR-referencer**: Samtlige ADR-dokumenter i `docs/adr/` skal være eksplicit refereret eller linket i enten `README.md` eller `spec.md`.
|
|
207
|
+
* *Håndhævelse i koden*: Returnerer exit-kode 1, hvis der er uoverensstemmelse i versionsnumre, manglende changelog-sektion eller forældreløse ADR-dokumenter.
|
|
208
|
+
* *Praktisk udviklerflag*: Med flaget `--allow-unreleased` tillader værktøjet sektionen `[Unreleased]` i `CHANGELOG.md` under løbende udvikling forud for den endelige versions-tagging.
|
|
209
|
+
|
|
130
210
|
### 👥 De 4 AI-roller & Session Handoff
|
|
131
211
|
|
|
132
212
|
For at undgå uendelige review-loops (*bikeshedding*) og bevare et skarpt kontekstvindue, udleder `xGauntlet` automatisk den næste ingeniør-rolle:
|
package/bin/xgauntlet.js
CHANGED
|
@@ -15,7 +15,7 @@ const __dirname = path.dirname(__filename);
|
|
|
15
15
|
const pkgJsonPath = path.resolve(__dirname, '../package.json');
|
|
16
16
|
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
|
|
17
17
|
const VERSION = pkg.version;
|
|
18
|
-
const REPO = 'rolfmadsen/
|
|
18
|
+
const REPO = 'rolfmadsen/xgauntlet';
|
|
19
19
|
|
|
20
20
|
function getPlatformInfo() {
|
|
21
21
|
const platform = os.platform();
|
|
@@ -166,7 +166,7 @@ async function main() {
|
|
|
166
166
|
console.log(` Platform: ${platform} (${arch})`);
|
|
167
167
|
console.log(` Version: v${VERSION}`);
|
|
168
168
|
console.log(` Engine: NOT_FOUND (${err.message})`);
|
|
169
|
-
console.log(
|
|
169
|
+
console.log(` Notice: Run \`cargo build --release\` in xGauntlet repo or download v${VERSION} release.`);
|
|
170
170
|
process.exit(0);
|
|
171
171
|
}
|
|
172
172
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xgauntlet",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Universal cross-platform verification gauntlet & tamper-proof policy sidecar for AI coding agents",
|
|
5
5
|
"bin": {
|
|
6
6
|
"xgauntlet": "bin/xgauntlet.js",
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
},
|
|
20
20
|
"repository": {
|
|
21
21
|
"type": "git",
|
|
22
|
-
"url": "git+https://github.com/rolfmadsen/
|
|
22
|
+
"url": "git+https://github.com/rolfmadsen/xgauntlet.git",
|
|
23
23
|
"directory": "packages/cli"
|
|
24
24
|
},
|
|
25
25
|
"bugs": {
|
|
26
|
-
"url": "https://github.com/rolfmadsen/
|
|
26
|
+
"url": "https://github.com/rolfmadsen/xgauntlet/issues"
|
|
27
27
|
},
|
|
28
|
-
"homepage": "https://github.com/rolfmadsen/
|
|
28
|
+
"homepage": "https://github.com/rolfmadsen/xgauntlet#readme",
|
|
29
29
|
"keywords": [
|
|
30
30
|
"ai-agent",
|
|
31
31
|
"verification",
|