@hunter-harness/workflow-harness 0.2.19 → 0.2.21
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/harness/bundles/general/claude-code/.harness-build.json +1 -1
- package/harness/bundles/general/claude-code/CONTEXT.md +20 -0
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-run/checklist.md +6 -0
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-submit/checklist.md +8 -0
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/general/claude-code/scripts/harness_events.py +159 -1
- package/harness/bundles/general/claude-code/scripts/harness_integration.py +34 -0
- package/harness/bundles/general/claude-code/scripts/harness_ledger.py +149 -9
- package/harness/bundles/general/claude-code/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/CONTEXT.md +20 -0
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-run/checklist.md +6 -0
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-submit/checklist.md +8 -0
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/general/codebuddy/scripts/harness_events.py +159 -1
- package/harness/bundles/general/codebuddy/scripts/harness_integration.py +34 -0
- package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +149 -9
- package/harness/bundles/general/codebuddy/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/CONTEXT.md +20 -0
- package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-run/checklist.md +6 -0
- package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-submit/checklist.md +8 -0
- package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/codex/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/general/codex/scripts/harness_events.py +159 -1
- package/harness/bundles/general/codex/scripts/harness_integration.py +34 -0
- package/harness/bundles/general/codex/scripts/harness_ledger.py +149 -9
- package/harness/bundles/general/codex/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/CONTEXT.md +20 -0
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-run/checklist.md +6 -0
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-submit/checklist.md +8 -0
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/cursor/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/general/cursor/scripts/harness_events.py +159 -1
- package/harness/bundles/general/cursor/scripts/harness_integration.py +34 -0
- package/harness/bundles/general/cursor/scripts/harness_ledger.py +149 -9
- package/harness/bundles/general/cursor/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/CONTEXT.md +20 -0
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-submit/checklist.md +8 -0
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/java/claude-code/scripts/harness_events.py +159 -1
- package/harness/bundles/java/claude-code/scripts/harness_integration.py +34 -0
- package/harness/bundles/java/claude-code/scripts/harness_ledger.py +149 -9
- package/harness/bundles/java/claude-code/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/CONTEXT.md +20 -0
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-submit/checklist.md +8 -0
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/java/codebuddy/scripts/harness_events.py +159 -1
- package/harness/bundles/java/codebuddy/scripts/harness_integration.py +34 -0
- package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +149 -9
- package/harness/bundles/java/codebuddy/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/CONTEXT.md +20 -0
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-submit/checklist.md +8 -0
- package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/codex/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/java/codex/scripts/harness_events.py +159 -1
- package/harness/bundles/java/codex/scripts/harness_integration.py +34 -0
- package/harness/bundles/java/codex/scripts/harness_ledger.py +149 -9
- package/harness/bundles/java/codex/scripts/harness_migration_head.py +220 -0
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/CONTEXT.md +20 -0
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-submit/checklist.md +8 -0
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/cursor/protocols/model-routing-protocol.md +22 -0
- package/harness/bundles/java/cursor/scripts/harness_events.py +159 -1
- package/harness/bundles/java/cursor/scripts/harness_integration.py +34 -0
- package/harness/bundles/java/cursor/scripts/harness_ledger.py +149 -9
- package/harness/bundles/java/cursor/scripts/harness_migration_head.py +220 -0
- package/harness/manifests/general/claude-code.json +25 -17
- package/harness/manifests/general/codebuddy.json +25 -17
- package/harness/manifests/general/codex.json +25 -17
- package/harness/manifests/general/cursor.json +25 -17
- package/harness/manifests/java/claude-code.json +26 -18
- package/harness/manifests/java/codebuddy.json +26 -18
- package/harness/manifests/java/codex.json +26 -18
- package/harness/manifests/java/cursor.json +26 -18
- package/hunter-workflow-family.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Migration head single-source consistency check (Wave-2 H-7).
|
|
3
|
+
|
|
4
|
+
Canonical file (default ``.harness/config/migration-head.json``)::
|
|
5
|
+
|
|
6
|
+
{
|
|
7
|
+
"schemaVersion": 1,
|
|
8
|
+
"head": "005_example",
|
|
9
|
+
"sources": [
|
|
10
|
+
{"path": "backend/app/config.py", "pattern": "EXPECTED_ALEMBIC_HEAD\\s*=\\s*[\\\"']([^\\\"']+)[\\\"']"},
|
|
11
|
+
{"path": "integration/manifest.json", "jsonPointer": "/migrationHead"}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Each source must resolve to the same ``head`` value. This harness repo may not
|
|
16
|
+
ship alembic; consumer projects declare the canonical file and run::
|
|
17
|
+
|
|
18
|
+
python harness_migration_head.py check --project . --json
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import argparse
|
|
24
|
+
import json
|
|
25
|
+
import re
|
|
26
|
+
import sys
|
|
27
|
+
from pathlib import Path
|
|
28
|
+
from typing import Any
|
|
29
|
+
|
|
30
|
+
DEFAULT_REL = ".harness/config/migration-head.json"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def emit_json(payload: dict[str, Any], *, as_json: bool) -> None:
|
|
34
|
+
if as_json:
|
|
35
|
+
sys.stdout.write(json.dumps(payload, ensure_ascii=False, indent=2) + "\n")
|
|
36
|
+
else:
|
|
37
|
+
code = payload.get("code") or ("OK" if payload.get("ok") else "FAIL")
|
|
38
|
+
sys.stdout.write(f"{code}\n")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def emit_error(code: str, message: str, *, as_json: bool, extra: dict[str, Any] | None = None) -> int:
|
|
42
|
+
payload: dict[str, Any] = {"ok": False, "code": code, "message": message}
|
|
43
|
+
if extra:
|
|
44
|
+
payload.update(extra)
|
|
45
|
+
stream = sys.stdout if as_json else sys.stderr
|
|
46
|
+
if as_json:
|
|
47
|
+
stream.write(json.dumps(payload, ensure_ascii=False, indent=2) + "\n")
|
|
48
|
+
else:
|
|
49
|
+
stream.write(f"{code}: {message}\n")
|
|
50
|
+
return 1
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _read_json_pointer(data: Any, pointer: str) -> Any:
|
|
54
|
+
if not pointer.startswith("/"):
|
|
55
|
+
raise ValueError(f"jsonPointer must start with /: {pointer}")
|
|
56
|
+
cur = data
|
|
57
|
+
for part in pointer.lstrip("/").split("/"):
|
|
58
|
+
part = part.replace("~1", "/").replace("~0", "~")
|
|
59
|
+
if isinstance(cur, dict) and part in cur:
|
|
60
|
+
cur = cur[part]
|
|
61
|
+
else:
|
|
62
|
+
raise KeyError(pointer)
|
|
63
|
+
return cur
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _extract_source(project: Path, source: dict[str, Any]) -> str:
|
|
67
|
+
rel = str(source.get("path") or "").strip().replace("\\", "/")
|
|
68
|
+
if not rel or rel.startswith("/") or ".." in rel.split("/"):
|
|
69
|
+
raise ValueError(f"invalid source path: {rel}")
|
|
70
|
+
target = (project / rel).resolve()
|
|
71
|
+
try:
|
|
72
|
+
target.relative_to(project.resolve())
|
|
73
|
+
except ValueError as exc:
|
|
74
|
+
raise ValueError(f"source escapes project: {rel}") from exc
|
|
75
|
+
if not target.is_file():
|
|
76
|
+
raise FileNotFoundError(rel)
|
|
77
|
+
text = target.read_text(encoding="utf-8-sig")
|
|
78
|
+
if "jsonPointer" in source and source["jsonPointer"]:
|
|
79
|
+
data = json.loads(text)
|
|
80
|
+
value = _read_json_pointer(data, str(source["jsonPointer"]))
|
|
81
|
+
if value is None or (isinstance(value, str) and not value.strip()):
|
|
82
|
+
raise ValueError(f"empty value at {source['jsonPointer']} in {rel}")
|
|
83
|
+
return str(value).strip()
|
|
84
|
+
pattern = str(source.get("pattern") or "").strip()
|
|
85
|
+
if not pattern:
|
|
86
|
+
raise ValueError(f"source {rel} requires pattern or jsonPointer")
|
|
87
|
+
match = re.search(pattern, text, flags=re.MULTILINE)
|
|
88
|
+
if not match:
|
|
89
|
+
raise ValueError(f"pattern did not match in {rel}")
|
|
90
|
+
return str(match.group(1) if match.lastindex else match.group(0)).strip()
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def check_migration_head(
|
|
94
|
+
project: Path,
|
|
95
|
+
*,
|
|
96
|
+
config_rel: str = DEFAULT_REL,
|
|
97
|
+
) -> dict[str, Any]:
|
|
98
|
+
project = project.resolve()
|
|
99
|
+
config_path = (project / config_rel).resolve()
|
|
100
|
+
try:
|
|
101
|
+
config_path.relative_to(project)
|
|
102
|
+
except ValueError:
|
|
103
|
+
return {
|
|
104
|
+
"ok": False,
|
|
105
|
+
"code": "MIGRATION_HEAD_CONFIG_ESCAPE",
|
|
106
|
+
"message": f"config path escapes project: {config_rel}",
|
|
107
|
+
}
|
|
108
|
+
if not config_path.is_file():
|
|
109
|
+
return {
|
|
110
|
+
"ok": False,
|
|
111
|
+
"code": "MIGRATION_HEAD_MISSING",
|
|
112
|
+
"message": f"canonical migration-head file missing: {config_rel}",
|
|
113
|
+
"configPath": str(config_path),
|
|
114
|
+
}
|
|
115
|
+
try:
|
|
116
|
+
data = json.loads(config_path.read_text(encoding="utf-8-sig"))
|
|
117
|
+
except (OSError, json.JSONDecodeError) as exc:
|
|
118
|
+
return {
|
|
119
|
+
"ok": False,
|
|
120
|
+
"code": "MIGRATION_HEAD_UNREADABLE",
|
|
121
|
+
"message": str(exc),
|
|
122
|
+
"configPath": str(config_path),
|
|
123
|
+
}
|
|
124
|
+
if not isinstance(data, dict) or data.get("schemaVersion") != 1:
|
|
125
|
+
return {
|
|
126
|
+
"ok": False,
|
|
127
|
+
"code": "MIGRATION_HEAD_SCHEMA_INVALID",
|
|
128
|
+
"message": "migration-head.json must be schemaVersion 1 object",
|
|
129
|
+
"configPath": str(config_path),
|
|
130
|
+
}
|
|
131
|
+
head = str(data.get("head") or "").strip()
|
|
132
|
+
sources = data.get("sources")
|
|
133
|
+
if not head:
|
|
134
|
+
return {
|
|
135
|
+
"ok": False,
|
|
136
|
+
"code": "MIGRATION_HEAD_EMPTY",
|
|
137
|
+
"message": "head must be a non-empty string",
|
|
138
|
+
"configPath": str(config_path),
|
|
139
|
+
}
|
|
140
|
+
if not isinstance(sources, list) or not sources:
|
|
141
|
+
return {
|
|
142
|
+
"ok": False,
|
|
143
|
+
"code": "MIGRATION_HEAD_SOURCES_EMPTY",
|
|
144
|
+
"message": "sources must be a non-empty array",
|
|
145
|
+
"configPath": str(config_path),
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
observed: list[dict[str, Any]] = []
|
|
149
|
+
drifts: list[dict[str, Any]] = []
|
|
150
|
+
for index, source in enumerate(sources):
|
|
151
|
+
if not isinstance(source, dict):
|
|
152
|
+
return {
|
|
153
|
+
"ok": False,
|
|
154
|
+
"code": "MIGRATION_HEAD_SOURCE_INVALID",
|
|
155
|
+
"message": f"sources[{index}] must be an object",
|
|
156
|
+
}
|
|
157
|
+
try:
|
|
158
|
+
value = _extract_source(project, source)
|
|
159
|
+
except (OSError, ValueError, KeyError, json.JSONDecodeError) as exc:
|
|
160
|
+
return {
|
|
161
|
+
"ok": False,
|
|
162
|
+
"code": "MIGRATION_HEAD_SOURCE_UNREADABLE",
|
|
163
|
+
"message": str(exc),
|
|
164
|
+
"index": index,
|
|
165
|
+
"path": source.get("path"),
|
|
166
|
+
}
|
|
167
|
+
item = {"path": source.get("path"), "value": value}
|
|
168
|
+
observed.append(item)
|
|
169
|
+
if value != head:
|
|
170
|
+
drifts.append({**item, "expected": head})
|
|
171
|
+
|
|
172
|
+
if drifts:
|
|
173
|
+
return {
|
|
174
|
+
"ok": False,
|
|
175
|
+
"code": "MIGRATION_HEAD_DRIFT",
|
|
176
|
+
"message": "one or more sources disagree with canonical head",
|
|
177
|
+
"head": head,
|
|
178
|
+
"drifts": drifts,
|
|
179
|
+
"observed": observed,
|
|
180
|
+
"configPath": str(config_path),
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
"ok": True,
|
|
184
|
+
"code": "MIGRATION_HEAD_OK",
|
|
185
|
+
"head": head,
|
|
186
|
+
"observed": observed,
|
|
187
|
+
"configPath": str(config_path),
|
|
188
|
+
"sourceCount": len(observed),
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def build_parser() -> argparse.ArgumentParser:
|
|
193
|
+
parser = argparse.ArgumentParser(prog="harness_migration_head.py")
|
|
194
|
+
sub = parser.add_subparsers(dest="command", required=True)
|
|
195
|
+
check = sub.add_parser("check", help="verify sources match canonical head")
|
|
196
|
+
check.add_argument("--project", required=True)
|
|
197
|
+
check.add_argument("--config", default=DEFAULT_REL)
|
|
198
|
+
check.add_argument("--json", action="store_true")
|
|
199
|
+
return parser
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def main(argv: list[str] | None = None) -> int:
|
|
203
|
+
args = build_parser().parse_args(argv)
|
|
204
|
+
as_json = bool(getattr(args, "json", False))
|
|
205
|
+
if args.command == "check":
|
|
206
|
+
result = check_migration_head(Path(args.project), config_rel=str(args.config))
|
|
207
|
+
if not result.get("ok"):
|
|
208
|
+
return emit_error(
|
|
209
|
+
str(result.get("code") or "MIGRATION_HEAD_FAIL"),
|
|
210
|
+
str(result.get("message") or "check failed"),
|
|
211
|
+
as_json=as_json,
|
|
212
|
+
extra={k: v for k, v in result.items() if k not in {"ok", "code", "message"}},
|
|
213
|
+
)
|
|
214
|
+
emit_json(result, as_json=as_json)
|
|
215
|
+
return 0
|
|
216
|
+
return emit_error("UNKNOWN_COMMAND", f"unknown command: {args.command}", as_json=as_json)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
if __name__ == "__main__":
|
|
220
|
+
raise SystemExit(main())
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": ".harness-build.json",
|
|
10
|
-
"sha256": "
|
|
10
|
+
"sha256": "830e24478800623aa6989bbde0b7fd4cf85f1956647556fae2a75b6274ee938d"
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"path": "agents/harness-evaluator.md",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "CONTEXT.md",
|
|
26
|
-
"sha256": "
|
|
26
|
+
"sha256": "4838854cc45e8bd47552fb34e41cadca3121eeaa4597196568f35e25534d5a33"
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "contracts/ci-metrics.schema.json",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"path": "harness-archive/SKILL.md",
|
|
50
|
-
"sha256": "
|
|
50
|
+
"sha256": "3a140ee15487b686c80ab0a92c3d1d3af196d60c1d625aeeb63daf60929668e1"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"path": "harness-archive/templates/render-summary.mjs",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
"path": "harness-codebase-map/SKILL.md",
|
|
70
|
-
"sha256": "
|
|
70
|
+
"sha256": "3f5d3e6edaf5da133f4ec601d15fb4476a250256b62ba6c5e927411eb5eafcc0"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"path": "harness-codebase-map/templates/ARCHITECTURE.md",
|
|
@@ -131,11 +131,11 @@
|
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"path": "harness-knowledge-ingest/SKILL.md",
|
|
134
|
-
"sha256": "
|
|
134
|
+
"sha256": "0cdb9ef728b4771ce1d5aa85dcb562143a5c25ae7504cb78ebeef5a5635c50a8"
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
"path": "harness-knowledge-query/SKILL.md",
|
|
138
|
-
"sha256": "
|
|
138
|
+
"sha256": "06c4bbe28d8752a318e8ca0d80ea74adb9c95b0d70002471345ad851be5333d0"
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
"path": "harness-plan/checklist.md",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
153
|
"path": "harness-plan/SKILL.md",
|
|
154
|
-
"sha256": "
|
|
154
|
+
"sha256": "26a7ae5329dd2aead892e3a7802fe50f67ffa3df4c9c83f3e48e1e25cd3803f4"
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
157
|
"path": "harness-review/checklist.md",
|
|
@@ -167,11 +167,11 @@
|
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
"path": "harness-review/SKILL.md",
|
|
170
|
-
"sha256": "
|
|
170
|
+
"sha256": "ec6ae1bb0922c552f5390840995c294b8cb045860ba1583cd388c37e85a64757"
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
"path": "harness-run/checklist.md",
|
|
174
|
-
"sha256": "
|
|
174
|
+
"sha256": "62063fd4c20a12eb9295fb5bade31e10adb2f5a4fd8600446b2109b959c82961"
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
"path": "harness-run/protocols.md",
|
|
@@ -183,11 +183,11 @@
|
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
"path": "harness-run/SKILL.md",
|
|
186
|
-
"sha256": "
|
|
186
|
+
"sha256": "dd43063183bed8dc0b31c6595abbaa41e7de1409daf803c222fef094180fe025"
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
"path": "harness-submit/checklist.md",
|
|
190
|
-
"sha256": "
|
|
190
|
+
"sha256": "85f157b611b69f1c10ed26c06308ad5e46233b5b31f22ad511df60cbc0c221cb"
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
"path": "harness-submit/reference.md",
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
"path": "harness-submit/SKILL.md",
|
|
198
|
-
"sha256": "
|
|
198
|
+
"sha256": "95b370f04917ce20822c4f60855a8d6ce3d903cd67d874c28cffd2877fcdb1ea"
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
"path": "harness-sync/reference.md",
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
},
|
|
204
204
|
{
|
|
205
205
|
"path": "harness-sync/SKILL.md",
|
|
206
|
-
"sha256": "
|
|
206
|
+
"sha256": "04cab37d003d7f87824fc33281bb6404f7acb1d75a3f72565a9142f974e1f4b5"
|
|
207
207
|
},
|
|
208
208
|
{
|
|
209
209
|
"path": "harness-test/checklist.md",
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
229
|
"path": "harness-test/SKILL.md",
|
|
230
|
-
"sha256": "
|
|
230
|
+
"sha256": "c7624934d596e906841f5afab27762887957ba54e30a590afbc8723fc693e4ef"
|
|
231
231
|
},
|
|
232
232
|
{
|
|
233
233
|
"path": "protocols/archive-report-protocol.md",
|
|
@@ -241,6 +241,10 @@
|
|
|
241
241
|
"path": "protocols/ledger-protocol.md",
|
|
242
242
|
"sha256": "50f9deffcf71de009c56bd2cdd44fb05c7b18faf19ec56b00ff76e8ce897ecf7"
|
|
243
243
|
},
|
|
244
|
+
{
|
|
245
|
+
"path": "protocols/model-routing-protocol.md",
|
|
246
|
+
"sha256": "1ce493d7dcc7a0c32b07b2d0118fdca40d72ca2487a63566f3c997293269f06e"
|
|
247
|
+
},
|
|
244
248
|
{
|
|
245
249
|
"path": "protocols/powershell-protocol.md",
|
|
246
250
|
"sha256": "f723f18eee08125e75f387e655f7e604eb603f636cd6809dd6b5948748f32d04"
|
|
@@ -287,7 +291,7 @@
|
|
|
287
291
|
},
|
|
288
292
|
{
|
|
289
293
|
"path": "scripts/harness_events.py",
|
|
290
|
-
"sha256": "
|
|
294
|
+
"sha256": "94880e69acde59e13afaa338d9ac80a5481e1c84abfbffaf7f5438089655d21a"
|
|
291
295
|
},
|
|
292
296
|
{
|
|
293
297
|
"path": "scripts/harness_gate.py",
|
|
@@ -295,11 +299,15 @@
|
|
|
295
299
|
},
|
|
296
300
|
{
|
|
297
301
|
"path": "scripts/harness_integration.py",
|
|
298
|
-
"sha256": "
|
|
302
|
+
"sha256": "78904ed2a6254be6671a2627863759c68a9576ef41584f423c5cde3faa6d6b25"
|
|
299
303
|
},
|
|
300
304
|
{
|
|
301
305
|
"path": "scripts/harness_ledger.py",
|
|
302
|
-
"sha256": "
|
|
306
|
+
"sha256": "11340d0e84fc3905d2d7383683ac94d2b9ab13655e56a26e460d7e9b0b515f1a"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"path": "scripts/harness_migration_head.py",
|
|
310
|
+
"sha256": "6bce06ce5c077185d6e40e1655c37ef98b2f8e6e39d64b2f3f3c45f12854ed51"
|
|
303
311
|
},
|
|
304
312
|
{
|
|
305
313
|
"path": "scripts/harness_paths.py",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": ".harness-build.json",
|
|
10
|
-
"sha256": "
|
|
10
|
+
"sha256": "d1d84eae49aaaa68798c3ffc72674cda7c16e963a9ccf78be6661ded54b7a7ab"
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"path": "agents/harness-evaluator.md",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "CONTEXT.md",
|
|
26
|
-
"sha256": "
|
|
26
|
+
"sha256": "4838854cc45e8bd47552fb34e41cadca3121eeaa4597196568f35e25534d5a33"
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "contracts/ci-metrics.schema.json",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"path": "harness-archive/SKILL.md",
|
|
50
|
-
"sha256": "
|
|
50
|
+
"sha256": "ff53904b81933921702cc2e8a907c6ef2994563f1f58fa99b4ac856694ae54a5"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"path": "harness-archive/templates/render-summary.mjs",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
"path": "harness-codebase-map/SKILL.md",
|
|
70
|
-
"sha256": "
|
|
70
|
+
"sha256": "9bfce0b627a1a26d94a52f1a292a1740388612f210200313cc1319ef6cee66b2"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"path": "harness-codebase-map/templates/ARCHITECTURE.md",
|
|
@@ -131,11 +131,11 @@
|
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"path": "harness-knowledge-ingest/SKILL.md",
|
|
134
|
-
"sha256": "
|
|
134
|
+
"sha256": "7be15c952b6f43c1878c03b5403a83dddba9fea9a798a5ce026587f83e7fc5f9"
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
"path": "harness-knowledge-query/SKILL.md",
|
|
138
|
-
"sha256": "
|
|
138
|
+
"sha256": "265d6f50688fd6201299cda42ddffcaa1c320c3b724df02954fb8ca3fb249c03"
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
"path": "harness-plan/checklist.md",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
153
|
"path": "harness-plan/SKILL.md",
|
|
154
|
-
"sha256": "
|
|
154
|
+
"sha256": "f0eb0971e5298b5f7e5b925fe4ca8dabcdad57dd0b74b0af94750acea496e584"
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
157
|
"path": "harness-review/checklist.md",
|
|
@@ -167,11 +167,11 @@
|
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
"path": "harness-review/SKILL.md",
|
|
170
|
-
"sha256": "
|
|
170
|
+
"sha256": "69d6e24bedfd051fcaf93166c32caeebf1dbc81ebd7fafb6cc5b955176bb2c06"
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
"path": "harness-run/checklist.md",
|
|
174
|
-
"sha256": "
|
|
174
|
+
"sha256": "62063fd4c20a12eb9295fb5bade31e10adb2f5a4fd8600446b2109b959c82961"
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
"path": "harness-run/protocols.md",
|
|
@@ -183,11 +183,11 @@
|
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
"path": "harness-run/SKILL.md",
|
|
186
|
-
"sha256": "
|
|
186
|
+
"sha256": "62eda138e8e2477e8730ca5361cad5caca1ac814c60a98c641c7d4a99db9cf78"
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
"path": "harness-submit/checklist.md",
|
|
190
|
-
"sha256": "
|
|
190
|
+
"sha256": "85f157b611b69f1c10ed26c06308ad5e46233b5b31f22ad511df60cbc0c221cb"
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
"path": "harness-submit/reference.md",
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
"path": "harness-submit/SKILL.md",
|
|
198
|
-
"sha256": "
|
|
198
|
+
"sha256": "579d59958a9d81b12ca619d6362d15cb64cd1c71ad4781753da572f2afe066b4"
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
"path": "harness-sync/reference.md",
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
},
|
|
204
204
|
{
|
|
205
205
|
"path": "harness-sync/SKILL.md",
|
|
206
|
-
"sha256": "
|
|
206
|
+
"sha256": "9e8587f272aa456a6b4d1eddf0ae9875e5bae52ff3664d9989312edd68735397"
|
|
207
207
|
},
|
|
208
208
|
{
|
|
209
209
|
"path": "harness-test/checklist.md",
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
229
|
"path": "harness-test/SKILL.md",
|
|
230
|
-
"sha256": "
|
|
230
|
+
"sha256": "1c75b9f9dd07f2f4deb49f5c754b7ea1f6d39c2900e42793982d9116f26d6c5c"
|
|
231
231
|
},
|
|
232
232
|
{
|
|
233
233
|
"path": "protocols/archive-report-protocol.md",
|
|
@@ -241,6 +241,10 @@
|
|
|
241
241
|
"path": "protocols/ledger-protocol.md",
|
|
242
242
|
"sha256": "50f9deffcf71de009c56bd2cdd44fb05c7b18faf19ec56b00ff76e8ce897ecf7"
|
|
243
243
|
},
|
|
244
|
+
{
|
|
245
|
+
"path": "protocols/model-routing-protocol.md",
|
|
246
|
+
"sha256": "1ce493d7dcc7a0c32b07b2d0118fdca40d72ca2487a63566f3c997293269f06e"
|
|
247
|
+
},
|
|
244
248
|
{
|
|
245
249
|
"path": "protocols/powershell-protocol.md",
|
|
246
250
|
"sha256": "f723f18eee08125e75f387e655f7e604eb603f636cd6809dd6b5948748f32d04"
|
|
@@ -287,7 +291,7 @@
|
|
|
287
291
|
},
|
|
288
292
|
{
|
|
289
293
|
"path": "scripts/harness_events.py",
|
|
290
|
-
"sha256": "
|
|
294
|
+
"sha256": "94880e69acde59e13afaa338d9ac80a5481e1c84abfbffaf7f5438089655d21a"
|
|
291
295
|
},
|
|
292
296
|
{
|
|
293
297
|
"path": "scripts/harness_gate.py",
|
|
@@ -295,11 +299,15 @@
|
|
|
295
299
|
},
|
|
296
300
|
{
|
|
297
301
|
"path": "scripts/harness_integration.py",
|
|
298
|
-
"sha256": "
|
|
302
|
+
"sha256": "78904ed2a6254be6671a2627863759c68a9576ef41584f423c5cde3faa6d6b25"
|
|
299
303
|
},
|
|
300
304
|
{
|
|
301
305
|
"path": "scripts/harness_ledger.py",
|
|
302
|
-
"sha256": "
|
|
306
|
+
"sha256": "11340d0e84fc3905d2d7383683ac94d2b9ab13655e56a26e460d7e9b0b515f1a"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"path": "scripts/harness_migration_head.py",
|
|
310
|
+
"sha256": "6bce06ce5c077185d6e40e1655c37ef98b2f8e6e39d64b2f3f3c45f12854ed51"
|
|
303
311
|
},
|
|
304
312
|
{
|
|
305
313
|
"path": "scripts/harness_paths.py",
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": ".harness-build.json",
|
|
10
|
-
"sha256": "
|
|
10
|
+
"sha256": "457596a904b9bbedb97f038c4ca94824dd2922214e183d3a24e73c2652a4071e"
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"path": "CONTEXT.md",
|
|
14
|
-
"sha256": "
|
|
14
|
+
"sha256": "4838854cc45e8bd47552fb34e41cadca3121eeaa4597196568f35e25534d5a33"
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"path": "contracts/ci-metrics.schema.json",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "harness-archive/SKILL.md",
|
|
38
|
-
"sha256": "
|
|
38
|
+
"sha256": "6ca2b66071b9eddda73530ce38bd9ad9583c04029ed114214ce61c93e77b19b7"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"path": "harness-archive/templates/render-summary.mjs",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"path": "harness-codebase-map/SKILL.md",
|
|
58
|
-
"sha256": "
|
|
58
|
+
"sha256": "c56f7982d25ea2b2d4fc0c714195a92832f23ab099bd20ce6be4c3dd0627ff52"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"path": "harness-codebase-map/templates/ARCHITECTURE.md",
|
|
@@ -119,11 +119,11 @@
|
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
"path": "harness-knowledge-ingest/SKILL.md",
|
|
122
|
-
"sha256": "
|
|
122
|
+
"sha256": "fac5252cd5d47568ffa558e9fe379734f1a04d013545ad8143cb1bbd5fe10639"
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
"path": "harness-knowledge-query/SKILL.md",
|
|
126
|
-
"sha256": "
|
|
126
|
+
"sha256": "9da852ed90f1f09ebe9a41a1eda180976e9ba2b450b78f0d13da124406694f2e"
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
"path": "harness-plan/checklist.md",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
"path": "harness-plan/SKILL.md",
|
|
142
|
-
"sha256": "
|
|
142
|
+
"sha256": "cf96ef54fc2e1c07f87a7121ecbc6f66d93f7fe045065dfd4adc6499cb9829dc"
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
"path": "harness-review/checklist.md",
|
|
@@ -155,11 +155,11 @@
|
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
157
|
"path": "harness-review/SKILL.md",
|
|
158
|
-
"sha256": "
|
|
158
|
+
"sha256": "68ee4960fdebe8204d0fbfb41ab8262656dc5b3c3e77fe60f4812ec5bd171615"
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
"path": "harness-run/checklist.md",
|
|
162
|
-
"sha256": "
|
|
162
|
+
"sha256": "62063fd4c20a12eb9295fb5bade31e10adb2f5a4fd8600446b2109b959c82961"
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
"path": "harness-run/protocols.md",
|
|
@@ -171,11 +171,11 @@
|
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
"path": "harness-run/SKILL.md",
|
|
174
|
-
"sha256": "
|
|
174
|
+
"sha256": "eaaeb1da20b0949de6889ca128b1d2272676780c4bef1172590fd6c695209a92"
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
"path": "harness-submit/checklist.md",
|
|
178
|
-
"sha256": "
|
|
178
|
+
"sha256": "85f157b611b69f1c10ed26c06308ad5e46233b5b31f22ad511df60cbc0c221cb"
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
"path": "harness-submit/reference.md",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
"path": "harness-submit/SKILL.md",
|
|
186
|
-
"sha256": "
|
|
186
|
+
"sha256": "8be22c0006c3365a98924c1c6e84b203cb917a8a6e915df75387a2831cf20f23"
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
"path": "harness-sync/reference.md",
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
"path": "harness-sync/SKILL.md",
|
|
194
|
-
"sha256": "
|
|
194
|
+
"sha256": "0fe47a7cffacf5f3cad60341006e17d52d685d8a64ed8508fc974755ac280502"
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
"path": "harness-test/checklist.md",
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
217
|
"path": "harness-test/SKILL.md",
|
|
218
|
-
"sha256": "
|
|
218
|
+
"sha256": "cbc93e0f520e42ddd2e75e91b079e0bb3c3ecc0477aedf54440ba946fa7de645"
|
|
219
219
|
},
|
|
220
220
|
{
|
|
221
221
|
"path": "protocols/archive-report-protocol.md",
|
|
@@ -229,6 +229,10 @@
|
|
|
229
229
|
"path": "protocols/ledger-protocol.md",
|
|
230
230
|
"sha256": "50f9deffcf71de009c56bd2cdd44fb05c7b18faf19ec56b00ff76e8ce897ecf7"
|
|
231
231
|
},
|
|
232
|
+
{
|
|
233
|
+
"path": "protocols/model-routing-protocol.md",
|
|
234
|
+
"sha256": "1ce493d7dcc7a0c32b07b2d0118fdca40d72ca2487a63566f3c997293269f06e"
|
|
235
|
+
},
|
|
232
236
|
{
|
|
233
237
|
"path": "protocols/powershell-protocol.md",
|
|
234
238
|
"sha256": "f723f18eee08125e75f387e655f7e604eb603f636cd6809dd6b5948748f32d04"
|
|
@@ -275,7 +279,7 @@
|
|
|
275
279
|
},
|
|
276
280
|
{
|
|
277
281
|
"path": "scripts/harness_events.py",
|
|
278
|
-
"sha256": "
|
|
282
|
+
"sha256": "94880e69acde59e13afaa338d9ac80a5481e1c84abfbffaf7f5438089655d21a"
|
|
279
283
|
},
|
|
280
284
|
{
|
|
281
285
|
"path": "scripts/harness_gate.py",
|
|
@@ -283,11 +287,15 @@
|
|
|
283
287
|
},
|
|
284
288
|
{
|
|
285
289
|
"path": "scripts/harness_integration.py",
|
|
286
|
-
"sha256": "
|
|
290
|
+
"sha256": "78904ed2a6254be6671a2627863759c68a9576ef41584f423c5cde3faa6d6b25"
|
|
287
291
|
},
|
|
288
292
|
{
|
|
289
293
|
"path": "scripts/harness_ledger.py",
|
|
290
|
-
"sha256": "
|
|
294
|
+
"sha256": "11340d0e84fc3905d2d7383683ac94d2b9ab13655e56a26e460d7e9b0b515f1a"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"path": "scripts/harness_migration_head.py",
|
|
298
|
+
"sha256": "6bce06ce5c077185d6e40e1655c37ef98b2f8e6e39d64b2f3f3c45f12854ed51"
|
|
291
299
|
},
|
|
292
300
|
{
|
|
293
301
|
"path": "scripts/harness_paths.py",
|