harness-everything 0.20.3 → 0.20.4
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.github/workflows/release.yml +8 -0
- package/.releaserc.json +6 -0
- package/CHANGELOG.md +6 -0
- package/RELEASING.md +4 -3
- package/ci/mechanism-2ap-sbom.test.js +16 -0
- package/opencode-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
- package/plugins/harness-everything/plugin.json +1 -1
- package/sbom.cdx.json +7 -7
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"name": "harness-everything",
|
|
11
11
|
"source": "./",
|
|
12
12
|
"description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
|
|
13
|
-
"version": "0.20.
|
|
13
|
+
"version": "0.20.4",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Miya Daniel"
|
|
16
16
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harness-everything",
|
|
3
3
|
"description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
|
|
4
|
-
"version": "0.20.
|
|
4
|
+
"version": "0.20.4",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Miya Daniel"
|
|
7
7
|
},
|
|
@@ -68,3 +68,11 @@ jobs:
|
|
|
68
68
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
69
69
|
NPM_CONFIG_PROVENANCE: "true"
|
|
70
70
|
run: npx --no-install semantic-release
|
|
71
|
+
|
|
72
|
+
- name: Upload release SBOM artifact
|
|
73
|
+
if: ${{ hashFiles('sbom.cdx.json') != '' }}
|
|
74
|
+
uses: actions/upload-artifact@v4
|
|
75
|
+
with:
|
|
76
|
+
name: release-sbom
|
|
77
|
+
path: sbom.cdx.json
|
|
78
|
+
if-no-files-found: error
|
package/.releaserc.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.20.4](https://github.com/dyphn1/Harness-everything/compare/v0.20.3...v0.20.4) (2026-09-22)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **release:** publish sbom release artifacts ([83eeb96](https://github.com/dyphn1/Harness-everything/commit/83eeb96c1746ccbffcdcba478ba6b54c522887a0)), closes [#222](https://github.com/dyphn1/Harness-everything/issues/222)
|
|
10
|
+
|
|
5
11
|
## [0.20.3](https://github.com/dyphn1/Harness-everything/compare/v0.20.2...v0.20.3) (2026-09-22)
|
|
6
12
|
|
|
7
13
|
### Bug Fixes
|
package/RELEASING.md
CHANGED
|
@@ -40,9 +40,9 @@ A push to `main` runs the full reusable CI gate and then semantic-release. A man
|
|
|
40
40
|
6. Run `scripts/sync-release-version.js` to synchronize package, Claude, OpenAI/Codex, OpenCode, lockfile, and changed canonical skill version fields.
|
|
41
41
|
7. Regenerate and verify plugin packages, then generate and validate the release-only `sbom.cdx.json` CycloneDX 1.7 file.
|
|
42
42
|
8. Update `CHANGELOG.md` and create `chore(release): X.Y.Z [skip ci]`.
|
|
43
|
-
9. Create tag `vX.Y.Z`, publish npm with provenance (including the generated SBOM),
|
|
43
|
+
9. Create tag `vX.Y.Z`, publish npm with provenance (including the generated SBOM), create the GitHub Release with the SBOM attached, and retain the same file as an Actions artifact.
|
|
44
44
|
|
|
45
|
-
The SBOM is generated from the release `package.json`/`package-lock.json` as CycloneDX 1.7, the current 1.x format, to satisfy consumers and regulatory baselines requiring CycloneDX 1.6 or later. It is intentionally not committed to Git.
|
|
45
|
+
The SBOM is generated from the release `package.json`/`package-lock.json` as CycloneDX 1.7, the current 1.x format, to satisfy consumers and regulatory baselines requiring CycloneDX 1.6 or later. It is intentionally not committed to Git. The release publishes `sbom.cdx.json` in the npm tarball and as a GitHub Release asset, while the workflow also retains it as an Actions artifact.
|
|
46
46
|
|
|
47
47
|
Release concurrency is serialized so two updates to `main` cannot publish competing versions.
|
|
48
48
|
|
|
@@ -90,7 +90,8 @@ The release workflow runs the reusable CI gate before semantic-release. After pu
|
|
|
90
90
|
```text
|
|
91
91
|
gh run list --workflow release.yml --limit 5
|
|
92
92
|
gh run view <run-id> --json conclusion,headSha,jobs
|
|
93
|
-
gh release view v<version> --json tagName,publishedAt,url
|
|
93
|
+
gh release view v<version> --json tagName,publishedAt,url,assets
|
|
94
|
+
gh run view <run-id> --json conclusion,headSha,jobs,artifacts
|
|
94
95
|
npm view harness-everything version dist-tags --json
|
|
95
96
|
```
|
|
96
97
|
|
|
@@ -24,6 +24,22 @@ assert.ok(execPlugin, 'semantic-release exec plugin is required for SBOM generat
|
|
|
24
24
|
assert.match(execPlugin[1].prepareCmd, /generate-sbom\.js --output sbom\.cdx\.json --version \$\{nextRelease\.version\}/);
|
|
25
25
|
assert.match(execPlugin[1].prepareCmd, /generate-sbom\.js --validate sbom\.cdx\.json --version \$\{nextRelease\.version\}/);
|
|
26
26
|
|
|
27
|
+
const githubPlugin = releaseConfig.plugins.find(plugin => Array.isArray(plugin) && plugin[0] === '@semantic-release/github');
|
|
28
|
+
assert.ok(githubPlugin, 'semantic-release github plugin is required for release publication');
|
|
29
|
+
assert.ok(Array.isArray(githubPlugin[1].assets), 'GitHub Release assets must be configured');
|
|
30
|
+
assert.ok(
|
|
31
|
+
githubPlugin[1].assets.some(asset => asset && typeof asset === 'object' && asset.path === 'sbom.cdx.json'),
|
|
32
|
+
'GitHub Release must publish the generated SBOM as an asset'
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
const releaseWorkflow = fs.readFileSync(path.join(ROOT, '.github/workflows/release.yml'), 'utf8');
|
|
36
|
+
assert.match(releaseWorkflow, /uses:\s+actions\/upload-artifact@v4/,
|
|
37
|
+
'release workflow must retain the generated SBOM as an Actions artifact');
|
|
38
|
+
assert.match(releaseWorkflow, /if:\s+\$\{\{\s*hashFiles\('sbom\.cdx\.json'\)\s*!=\s*''\s*\}\}/,
|
|
39
|
+
'release workflow must skip artifact upload when semantic-release has no release');
|
|
40
|
+
assert.match(releaseWorkflow, /path:\s+sbom\.cdx\.json/,
|
|
41
|
+
'release workflow artifact must point at the generated SBOM');
|
|
42
|
+
|
|
27
43
|
const bom = buildBom(ROOT, {
|
|
28
44
|
version: packageJson.version,
|
|
29
45
|
timestamp: '2026-09-21T00:00:00.000Z',
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "harness-everything",
|
|
4
|
-
"version": "0.20.
|
|
4
|
+
"version": "0.20.4",
|
|
5
5
|
"description": "Invariant-first engineering harness for routing, verification, and failure recovery while preserving agent autonomy.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Miya Daniel",
|
package/sbom.cdx.json
CHANGED
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
"$schema": "https://cyclonedx.org/schema/bom-1.7.schema.json",
|
|
3
3
|
"bomFormat": "CycloneDX",
|
|
4
4
|
"specVersion": "1.7",
|
|
5
|
-
"serialNumber": "urn:uuid:
|
|
5
|
+
"serialNumber": "urn:uuid:478ab7f0-6aaf-55ae-9e1a-9e950ea30f9d",
|
|
6
6
|
"version": 1,
|
|
7
7
|
"metadata": {
|
|
8
|
-
"timestamp": "2026-09-
|
|
8
|
+
"timestamp": "2026-09-22T02:13:44.851Z",
|
|
9
9
|
"tools": [
|
|
10
10
|
{
|
|
11
11
|
"vendor": "Harness Everything",
|
|
12
12
|
"name": "generate-sbom.js",
|
|
13
|
-
"version": "0.20.
|
|
13
|
+
"version": "0.20.4"
|
|
14
14
|
}
|
|
15
15
|
],
|
|
16
16
|
"component": {
|
|
17
17
|
"type": "application",
|
|
18
|
-
"bom-ref": "pkg:npm/harness-everything@0.20.
|
|
18
|
+
"bom-ref": "pkg:npm/harness-everything@0.20.4",
|
|
19
19
|
"name": "harness-everything",
|
|
20
|
-
"version": "0.20.
|
|
21
|
-
"purl": "pkg:npm/harness-everything@0.20.
|
|
20
|
+
"version": "0.20.4",
|
|
21
|
+
"purl": "pkg:npm/harness-everything@0.20.4"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"components": [
|
|
@@ -1999,7 +1999,7 @@
|
|
|
1999
1999
|
]
|
|
2000
2000
|
},
|
|
2001
2001
|
{
|
|
2002
|
-
"ref": "pkg:npm/harness-everything@0.20.
|
|
2002
|
+
"ref": "pkg:npm/harness-everything@0.20.4",
|
|
2003
2003
|
"dependsOn": [
|
|
2004
2004
|
"pkg:npm/%40commitlint/cli@19.8.1",
|
|
2005
2005
|
"pkg:npm/%40commitlint/config-conventional@19.8.1",
|