tamperward 2.33.0 → 2.34.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/dist/cli/index.js +939 -259
- package/package.json +2 -2
- package/schemas/audit-v1.schema.json +14 -1
- package/schemas/check-v1.schema.json +14 -2
- package/schemas/doctor-v1.schema.json +15 -1
- package/schemas/research-stdio-v1.schema.json +67 -0
- package/schemas/research-v1.schema.json +92 -2
- package/schemas/run-v1.schema.json +35 -2
- package/schemas/stats-v1.schema.json +16 -2
- package/schemas/verify-v1.schema.json +19 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tamperward",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.34.0",
|
|
4
4
|
"description": "The deterministic agent-integrity gate. One ruleset, evaluated on the actual diff/commands as a verdict, enforced everywhere a change can be made.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "hexrift",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"picomatch": "^4.0.2",
|
|
57
|
-
"typescript": "
|
|
57
|
+
"typescript": "~5.9.3",
|
|
58
58
|
"yaml": "^2.6.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/audit-v1.schema.json",
|
|
4
4
|
"title": "TamperWard audit event v1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"additionalProperties": false,
|
|
@@ -96,5 +96,18 @@
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
+
],
|
|
100
|
+
"examples": [
|
|
101
|
+
{
|
|
102
|
+
"schema_version": 1,
|
|
103
|
+
"id": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
104
|
+
"timestamp": "2026-09-23T14:00:00.000Z",
|
|
105
|
+
"surface": "pretooluse",
|
|
106
|
+
"agent": "claude-code",
|
|
107
|
+
"rule": "test-deletion",
|
|
108
|
+
"severity": "block",
|
|
109
|
+
"decision": "deny",
|
|
110
|
+
"session": "sha256:bbbbbbbbbbbbbbbbbbbbbbbb"
|
|
111
|
+
}
|
|
99
112
|
]
|
|
100
113
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/check-v1.schema.json",
|
|
4
4
|
"title": "TamperWard check JSON output v1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": [
|
|
@@ -100,5 +100,17 @@
|
|
|
100
100
|
"additionalProperties": true
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
"additionalProperties": true
|
|
103
|
+
"additionalProperties": true,
|
|
104
|
+
"examples": [
|
|
105
|
+
{
|
|
106
|
+
"schema_version": 1,
|
|
107
|
+
"findings": [],
|
|
108
|
+
"scanned": 0,
|
|
109
|
+
"ignoredFiles": 0,
|
|
110
|
+
"summary": {
|
|
111
|
+
"block": 0,
|
|
112
|
+
"warn": 0
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
104
116
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/doctor-v1.schema.json",
|
|
4
4
|
"title": "TamperWard doctor JSON output v1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": [
|
|
@@ -91,5 +91,19 @@
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
],
|
|
95
|
+
"examples": [
|
|
96
|
+
{
|
|
97
|
+
"schema_version": 1,
|
|
98
|
+
"command": "doctor",
|
|
99
|
+
"authoritative": true,
|
|
100
|
+
"checks": [
|
|
101
|
+
{
|
|
102
|
+
"id": "platform",
|
|
103
|
+
"state": "OK",
|
|
104
|
+
"detail": "Linux lifecycle is available."
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
94
108
|
]
|
|
95
109
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/research-stdio-v1.schema.json",
|
|
4
|
+
"title": "TamperWard research stdio JSONL protocol v1",
|
|
5
|
+
"description": "One JSON object per line. Capability declarations are evidence, not permission to claim an enforcement layer that is not connected.",
|
|
6
|
+
"oneOf": [
|
|
7
|
+
{
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": ["type", "run_id", "status"],
|
|
10
|
+
"properties": {"type": {"const": "run"}, "run_id": {"type": "string", "minLength": 1}, "status": {"enum": ["started", "finished"]}},
|
|
11
|
+
"additionalProperties": false
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "object",
|
|
15
|
+
"required": ["type", "protocol", "runtime", "capabilities"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"type": {"const": "hello"},
|
|
18
|
+
"protocol": {"const": "research-stdio-jsonl-v1"},
|
|
19
|
+
"runtime": {"type": "string", "minLength": 1},
|
|
20
|
+
"capabilities": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"required": ["layers", "intervention"],
|
|
23
|
+
"properties": {
|
|
24
|
+
"layers": {"type": "array", "items": {"enum": ["envelope", "pre-tool-use", "stop-sweep"]}},
|
|
25
|
+
"intervention": {"enum": ["enforced", "advisory", "not-connected"]}
|
|
26
|
+
},
|
|
27
|
+
"additionalProperties": false
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"additionalProperties": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"type": "object",
|
|
34
|
+
"required": ["type", "task", "arm", "cwd", "base"],
|
|
35
|
+
"properties": {
|
|
36
|
+
"type": {"const": "start"}, "task": {"type": "string", "minLength": 1},
|
|
37
|
+
"arm": {"enum": ["ungated", "gated"]}, "cwd": {"type": "string", "minLength": 1},
|
|
38
|
+
"base": {"type": "string", "minLength": 1}, "prompt": {"type": "string"}
|
|
39
|
+
},
|
|
40
|
+
"additionalProperties": false
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "object",
|
|
44
|
+
"required": ["type", "event"],
|
|
45
|
+
"properties": {"type": {"const": "event"}, "event": {"enum": ["tool", "edit", "turn"]}, "request_id": {"type": "string"}, "name": {"type": "string"}, "detail": {"type": "string"}},
|
|
46
|
+
"additionalProperties": false
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": ["type", "action", "request_id", "reason"],
|
|
51
|
+
"properties": {"type": {"const": "intervention"}, "action": {"enum": ["deny", "allow"]}, "request_id": {"type": "string", "minLength": 1}, "reason": {"type": "string", "minLength": 1}},
|
|
52
|
+
"additionalProperties": false
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "object",
|
|
56
|
+
"required": ["type", "status"],
|
|
57
|
+
"properties": {"type": {"const": "complete"}, "status": {"enum": ["completed", "failed", "cancelled"]}, "exit_code": {"type": "integer", "minimum": 0}},
|
|
58
|
+
"additionalProperties": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "object",
|
|
62
|
+
"required": ["type", "message"],
|
|
63
|
+
"properties": {"type": {"const": "error"}, "message": {"type": "string", "minLength": 1}},
|
|
64
|
+
"additionalProperties": false
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/research-v1.schema.json",
|
|
4
4
|
"title": "TamperWard research JSON output v1",
|
|
5
5
|
"description": "Emitted by `tamperward research run --json` (one `pair` document per line, identical to the ledger record under <out>/pairs/) and `tamperward research summarize` (one `summary` document). `document` is the shape discriminator. Both keep TamperWard's own verdict (`treatment` / `tamperward`) apart from the independent outcome (`outcome` / `independent_outcome`); there is no composite score. Additive within schema major 1.",
|
|
6
6
|
"type": "object",
|
|
@@ -675,5 +675,95 @@
|
|
|
675
675
|
},
|
|
676
676
|
"additionalProperties": true
|
|
677
677
|
}
|
|
678
|
-
}
|
|
678
|
+
},
|
|
679
|
+
"examples": [
|
|
680
|
+
{
|
|
681
|
+
"schema_version": 1,
|
|
682
|
+
"command": "research",
|
|
683
|
+
"document": "pair",
|
|
684
|
+
"task": "example",
|
|
685
|
+
"pair": 1,
|
|
686
|
+
"adapter": {
|
|
687
|
+
"name": "command",
|
|
688
|
+
"layers": []
|
|
689
|
+
},
|
|
690
|
+
"model": null,
|
|
691
|
+
"tamperward_version": "2.33.0",
|
|
692
|
+
"agent_argv": [
|
|
693
|
+
"true"
|
|
694
|
+
],
|
|
695
|
+
"agent_budget": null,
|
|
696
|
+
"manifest_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
697
|
+
"verify_command": "true",
|
|
698
|
+
"arms": {
|
|
699
|
+
"ungated": {
|
|
700
|
+
"arm": "ungated",
|
|
701
|
+
"workspace": "/tmp/tamperward-example",
|
|
702
|
+
"base": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
703
|
+
"head": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
704
|
+
"started_at": "2026-09-23T14:00:00.000Z",
|
|
705
|
+
"finished_at": "2026-09-23T14:00:01.000Z",
|
|
706
|
+
"agent": {
|
|
707
|
+
"exit_code": 0,
|
|
708
|
+
"signal": null,
|
|
709
|
+
"timed_out": false,
|
|
710
|
+
"failure": null
|
|
711
|
+
},
|
|
712
|
+
"treatment": null,
|
|
713
|
+
"outcome": {
|
|
714
|
+
"verify_verdict": "VERIFIED",
|
|
715
|
+
"visible_exit": 0,
|
|
716
|
+
"pristine_exit": 0,
|
|
717
|
+
"visible_green": true,
|
|
718
|
+
"pristine_green": true,
|
|
719
|
+
"masked_failure": false,
|
|
720
|
+
"surviving_protected_mutations": 0,
|
|
721
|
+
"warn_findings": 0,
|
|
722
|
+
"rules": [],
|
|
723
|
+
"honest_completion": true
|
|
724
|
+
},
|
|
725
|
+
"released_green": true,
|
|
726
|
+
"measured": true,
|
|
727
|
+
"unmeasurable": null
|
|
728
|
+
},
|
|
729
|
+
"gated": {
|
|
730
|
+
"arm": "gated",
|
|
731
|
+
"workspace": "/tmp/tamperward-example-gated",
|
|
732
|
+
"base": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
733
|
+
"head": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
734
|
+
"started_at": "2026-09-23T14:00:00.000Z",
|
|
735
|
+
"finished_at": "2026-09-23T14:00:01.000Z",
|
|
736
|
+
"agent": {
|
|
737
|
+
"exit_code": 0,
|
|
738
|
+
"signal": null,
|
|
739
|
+
"timed_out": false,
|
|
740
|
+
"failure": null
|
|
741
|
+
},
|
|
742
|
+
"treatment": {
|
|
743
|
+
"verdict": "VERIFIED",
|
|
744
|
+
"exit_code": 0,
|
|
745
|
+
"complete": true,
|
|
746
|
+
"disposition": "passed",
|
|
747
|
+
"envelope": null
|
|
748
|
+
},
|
|
749
|
+
"outcome": {
|
|
750
|
+
"verify_verdict": "VERIFIED",
|
|
751
|
+
"visible_exit": 0,
|
|
752
|
+
"pristine_exit": 0,
|
|
753
|
+
"visible_green": true,
|
|
754
|
+
"pristine_green": true,
|
|
755
|
+
"masked_failure": false,
|
|
756
|
+
"surviving_protected_mutations": 0,
|
|
757
|
+
"warn_findings": 0,
|
|
758
|
+
"rules": [],
|
|
759
|
+
"honest_completion": true
|
|
760
|
+
},
|
|
761
|
+
"released_green": true,
|
|
762
|
+
"measured": true,
|
|
763
|
+
"unmeasurable": null
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
],
|
|
768
|
+
"additionalProperties": true
|
|
679
769
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/run-v1.schema.json",
|
|
4
4
|
"title": "TamperWard run JSON output v1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": [
|
|
@@ -504,5 +504,38 @@
|
|
|
504
504
|
}
|
|
505
505
|
},
|
|
506
506
|
"additionalProperties": true,
|
|
507
|
-
"description": "Emitted by `tamperward run --json` as the single stdout document once the wrapped agent has started; agent stdout is routed to stderr in this mode. Pre-agent failures emit no document (stderr + exit 2). Additive within schema major 1."
|
|
507
|
+
"description": "Emitted by `tamperward run --json` as the single stdout document once the wrapped agent has started; agent stdout is routed to stderr in this mode. Pre-agent failures emit no document (stderr + exit 2). Additive within schema major 1.",
|
|
508
|
+
"examples": [
|
|
509
|
+
{
|
|
510
|
+
"schema_version": 1,
|
|
511
|
+
"verdict": "VERIFIED",
|
|
512
|
+
"exit_code": 0,
|
|
513
|
+
"complete": true,
|
|
514
|
+
"base": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
515
|
+
"head": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
516
|
+
"agent": {
|
|
517
|
+
"exit_code": 0,
|
|
518
|
+
"timed_out": false,
|
|
519
|
+
"lifecycle_owned": true
|
|
520
|
+
},
|
|
521
|
+
"checks": {
|
|
522
|
+
"diff": 0,
|
|
523
|
+
"worktree": 0,
|
|
524
|
+
"verify": 0
|
|
525
|
+
},
|
|
526
|
+
"verifier_backend": {
|
|
527
|
+
"kind": "local",
|
|
528
|
+
"trust": "checkpointed-local",
|
|
529
|
+
"available": true
|
|
530
|
+
},
|
|
531
|
+
"dependency_environment": {
|
|
532
|
+
"status": "none",
|
|
533
|
+
"roots": []
|
|
534
|
+
},
|
|
535
|
+
"observer": {
|
|
536
|
+
"enabled": false,
|
|
537
|
+
"blocking": false
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
]
|
|
508
541
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/stats-v1.schema.json",
|
|
4
4
|
"title": "TamperWard audit stats v1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"additionalProperties": false,
|
|
@@ -115,5 +115,19 @@
|
|
|
115
115
|
"interpretation": {
|
|
116
116
|
"const": "finding-is-not-proof-of-intent"
|
|
117
117
|
}
|
|
118
|
-
}
|
|
118
|
+
},
|
|
119
|
+
"examples": [
|
|
120
|
+
{
|
|
121
|
+
"schema_version": 1,
|
|
122
|
+
"events": 0,
|
|
123
|
+
"blocked": 0,
|
|
124
|
+
"warnings": 0,
|
|
125
|
+
"sessions": 0,
|
|
126
|
+
"first_event": null,
|
|
127
|
+
"last_event": null,
|
|
128
|
+
"by_rule": [],
|
|
129
|
+
"by_surface": [],
|
|
130
|
+
"interpretation": "finding-is-not-proof-of-intent"
|
|
131
|
+
}
|
|
132
|
+
]
|
|
119
133
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hexrift/tamperward/v1/schemas/verify-v1.schema.json",
|
|
4
4
|
"title": "TamperWard verify JSON output v1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"required": [
|
|
@@ -95,6 +95,16 @@
|
|
|
95
95
|
"oob_signoff": {
|
|
96
96
|
"type": "string"
|
|
97
97
|
},
|
|
98
|
+
"materialization_reason": {
|
|
99
|
+
"enum": [
|
|
100
|
+
"TRACKED_NODE_MODULES_CONFLICT",
|
|
101
|
+
"SYMLINK_ESCAPE",
|
|
102
|
+
"SPECIAL_FILE",
|
|
103
|
+
"RACING_DELETION",
|
|
104
|
+
"UNKNOWN"
|
|
105
|
+
],
|
|
106
|
+
"description": "Additional fail-closed detail when reason is MATERIALIZATION_FAILED."
|
|
107
|
+
},
|
|
98
108
|
"visible_dir": {
|
|
99
109
|
"type": "string"
|
|
100
110
|
},
|
|
@@ -607,5 +617,12 @@
|
|
|
607
617
|
"additionalProperties": true
|
|
608
618
|
}
|
|
609
619
|
},
|
|
610
|
-
"additionalProperties": true
|
|
620
|
+
"additionalProperties": true,
|
|
621
|
+
"examples": [
|
|
622
|
+
{
|
|
623
|
+
"schema_version": 1,
|
|
624
|
+
"verdict": "CANNOT_VERIFY",
|
|
625
|
+
"reason": "INVALID_ARGUMENTS"
|
|
626
|
+
}
|
|
627
|
+
]
|
|
611
628
|
}
|