xoonya 1.27.0 → 2.1.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/FINAL_CONTRACT.md +6 -6
- package/PUBLISH_PLAN.md +12 -0
- package/README.md +69 -0
- package/RELEASE_CHECKLIST.md +10 -0
- package/RELEASE_NOTES.md +19 -0
- package/SERVICE_CONTRACT.md +16 -0
- package/bin/xoonya-release.js +169 -0
- package/bin/xoonya-review.js +70 -0
- package/index.js +11 -1
- package/lib/announcement_pack.js +61 -0
- package/lib/ecosystem_entry.js +64 -0
- package/lib/launch_narrative.js +53 -0
- package/lib/outreach_proof.js +71 -0
- package/lib/publish_plan.js +51 -0
- package/lib/release_candidate.js +50 -0
- package/lib/release_center.js +113 -0
- package/lib/release_history.js +72 -0
- package/lib/release_manifest.js +114 -0
- package/lib/release_pack.js +391 -0
- package/package.json +16 -2
- package/proof_sdk.js +200 -7
- package/server.js +222 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildOutreachProofPack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-outreach-proof",
|
|
10
|
+
proven_live_today: [
|
|
11
|
+
"carried runtime handoff review with economic and settlement carry",
|
|
12
|
+
"proof-side review path aligned with real runtime and settlement evidence",
|
|
13
|
+
"handoff and governance surfaces exposed for operator inspection",
|
|
14
|
+
"portable proof-bundle contract packaged for public release posture"
|
|
15
|
+
],
|
|
16
|
+
live_rails: [
|
|
17
|
+
{
|
|
18
|
+
rail_ref: "carried_handoff_review",
|
|
19
|
+
status: "proven_live",
|
|
20
|
+
trust_signal: "runtime output can be reviewed as proof-side intake rather than opaque logs"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
rail_ref: "proof_center_followthrough",
|
|
24
|
+
status: "launch_ready",
|
|
25
|
+
trust_signal: "default proof loops, governance surfaces, and result-package followthrough are publicly exposed"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
rail_ref: "economic_and_settlement_carry",
|
|
29
|
+
status: "proven_live",
|
|
30
|
+
trust_signal: "settlement and economic refs survive into proof-side review summaries"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
credible_public_proof_path: {
|
|
34
|
+
path_ref: "scenario.carried_handoff.review",
|
|
35
|
+
why_credible: "smallest public run that matches the already-demonstrated runtime-to-proof carry and review posture",
|
|
36
|
+
cli: "xoonya-review --file ./handoff.json --summary"
|
|
37
|
+
},
|
|
38
|
+
trust_today_vs_later: {
|
|
39
|
+
trust_today: [
|
|
40
|
+
"proof-side review for carried handoff bundles",
|
|
41
|
+
"handoff and governance inspection surfaces",
|
|
42
|
+
"portable proof-bundle contract",
|
|
43
|
+
"runtime-to-proof continuation posture"
|
|
44
|
+
],
|
|
45
|
+
later_depth: [
|
|
46
|
+
"broader third-party runtime adoption after release",
|
|
47
|
+
"expanded proof ecosystem integrations after public package launch",
|
|
48
|
+
"continued release-line expansion after public proof-spine adoption"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function summarizeOutreachProofPack() {
|
|
55
|
+
const pack = buildOutreachProofPack();
|
|
56
|
+
return {
|
|
57
|
+
ok: true,
|
|
58
|
+
product: pack.product,
|
|
59
|
+
category: pack.category,
|
|
60
|
+
proven_count: pack.proven_live_today.length,
|
|
61
|
+
live_rail_count: pack.live_rails.length,
|
|
62
|
+
trust_today_count: pack.trust_today_vs_later.trust_today.length,
|
|
63
|
+
later_depth_count: pack.trust_today_vs_later.later_depth.length,
|
|
64
|
+
first_path_ref: pack.credible_public_proof_path.path_ref
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
module.exports = {
|
|
69
|
+
buildOutreachProofPack,
|
|
70
|
+
summarizeOutreachProofPack
|
|
71
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildPublishPlan() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-publish-plan",
|
|
10
|
+
version: packageJson.version,
|
|
11
|
+
commands: {
|
|
12
|
+
verify_release_candidate: "npm run verify:release-candidate",
|
|
13
|
+
pack_dry_run: "npm pack --dry-run --json",
|
|
14
|
+
publish: "npm publish --access public",
|
|
15
|
+
release_cli_check: "xoonya-release --candidate --summary"
|
|
16
|
+
},
|
|
17
|
+
live_checks: [
|
|
18
|
+
"/v1/release-candidate/summary",
|
|
19
|
+
"/v1/release-center/summary",
|
|
20
|
+
"/v1/announcement-pack/summary",
|
|
21
|
+
"/v1/outreach-proof/summary"
|
|
22
|
+
],
|
|
23
|
+
publish_sequence: [
|
|
24
|
+
"run the release-candidate verification",
|
|
25
|
+
"confirm the dry-run package contents",
|
|
26
|
+
"publish the npm package at public access",
|
|
27
|
+
"redeploy the live service surfaces",
|
|
28
|
+
"verify the release-candidate and release-center summaries live",
|
|
29
|
+
"run the first public proof-side review path"
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function summarizePublishPlan() {
|
|
35
|
+
const plan = buildPublishPlan();
|
|
36
|
+
return {
|
|
37
|
+
ok: true,
|
|
38
|
+
product: plan.product,
|
|
39
|
+
category: plan.category,
|
|
40
|
+
version: plan.version,
|
|
41
|
+
command_count: Object.keys(plan.commands).length,
|
|
42
|
+
live_check_count: plan.live_checks.length,
|
|
43
|
+
publish_step_count: plan.publish_sequence.length,
|
|
44
|
+
publish_command: plan.commands.publish
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
module.exports = {
|
|
49
|
+
buildPublishPlan,
|
|
50
|
+
summarizePublishPlan
|
|
51
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildReleaseCandidatePack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-release-candidate",
|
|
10
|
+
version: packageJson.version,
|
|
11
|
+
package_posture: {
|
|
12
|
+
publish_access: packageJson.publishConfig && packageJson.publishConfig.access ? packageJson.publishConfig.access : null,
|
|
13
|
+
engine: packageJson.engines && packageJson.engines.node ? packageJson.engines.node : null,
|
|
14
|
+
bin_count: Object.keys(packageJson.bin || {}).length,
|
|
15
|
+
published_file_count: Array.isArray(packageJson.files) ? packageJson.files.length : 0
|
|
16
|
+
},
|
|
17
|
+
rehearsal: {
|
|
18
|
+
clean_install_command: "npm install xoonya",
|
|
19
|
+
dry_run_pack_command: "npm pack --dry-run --json",
|
|
20
|
+
release_check_command: "npm run verify:release-candidate",
|
|
21
|
+
first_release_view: "xoonya-release --candidate --summary"
|
|
22
|
+
},
|
|
23
|
+
checklist: [
|
|
24
|
+
"run npm run verify:release-candidate",
|
|
25
|
+
"confirm npm pack --dry-run includes public docs and bin entrypoints",
|
|
26
|
+
"confirm release-center and announcement-pack summaries are live after deploy",
|
|
27
|
+
"confirm the first public proof-side review path still succeeds",
|
|
28
|
+
"only then proceed to npm publish"
|
|
29
|
+
]
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function summarizeReleaseCandidatePack() {
|
|
34
|
+
const pack = buildReleaseCandidatePack();
|
|
35
|
+
return {
|
|
36
|
+
ok: true,
|
|
37
|
+
product: pack.product,
|
|
38
|
+
category: pack.category,
|
|
39
|
+
version: pack.version,
|
|
40
|
+
publish_access: pack.package_posture.publish_access,
|
|
41
|
+
bin_count: pack.package_posture.bin_count,
|
|
42
|
+
published_file_count: pack.package_posture.published_file_count,
|
|
43
|
+
checklist_count: pack.checklist.length
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = {
|
|
48
|
+
buildReleaseCandidatePack,
|
|
49
|
+
summarizeReleaseCandidatePack
|
|
50
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
summarizeReleasePack,
|
|
5
|
+
summarizeComparisonPack,
|
|
6
|
+
summarizeAdoptionPack,
|
|
7
|
+
summarizeScenarioPack,
|
|
8
|
+
summarizeLaunchPack
|
|
9
|
+
} = require("./release_pack");
|
|
10
|
+
const {
|
|
11
|
+
summarizeReleaseManifest,
|
|
12
|
+
summarizeLaunchNotes
|
|
13
|
+
} = require("./release_manifest");
|
|
14
|
+
const {
|
|
15
|
+
summarizeReleaseHistory
|
|
16
|
+
} = require("./release_history");
|
|
17
|
+
const {
|
|
18
|
+
summarizePublishPlan
|
|
19
|
+
} = require("./publish_plan");
|
|
20
|
+
const {
|
|
21
|
+
summarizeEcosystemEntryPack
|
|
22
|
+
} = require("./ecosystem_entry");
|
|
23
|
+
const {
|
|
24
|
+
summarizeLaunchNarrativePack
|
|
25
|
+
} = require("./launch_narrative");
|
|
26
|
+
const {
|
|
27
|
+
summarizeOutreachProofPack
|
|
28
|
+
} = require("./outreach_proof");
|
|
29
|
+
const {
|
|
30
|
+
summarizeAnnouncementPack
|
|
31
|
+
} = require("./announcement_pack");
|
|
32
|
+
const {
|
|
33
|
+
summarizeReleaseCandidatePack
|
|
34
|
+
} = require("./release_candidate");
|
|
35
|
+
|
|
36
|
+
function buildReleaseCenter() {
|
|
37
|
+
return {
|
|
38
|
+
ok: true,
|
|
39
|
+
product: "xoonya",
|
|
40
|
+
category: "proof-release-center",
|
|
41
|
+
center: {
|
|
42
|
+
release_summary: summarizeReleasePack(),
|
|
43
|
+
comparison_summary: summarizeComparisonPack(),
|
|
44
|
+
adoption_summary: summarizeAdoptionPack(),
|
|
45
|
+
scenario_summary: summarizeScenarioPack(),
|
|
46
|
+
launch_summary: summarizeLaunchPack(),
|
|
47
|
+
manifest_summary: summarizeReleaseManifest(),
|
|
48
|
+
notes_summary: summarizeLaunchNotes(),
|
|
49
|
+
history_summary: summarizeReleaseHistory(),
|
|
50
|
+
publish_plan_summary: summarizePublishPlan(),
|
|
51
|
+
ecosystem_entry_summary: summarizeEcosystemEntryPack(),
|
|
52
|
+
launch_narrative_summary: summarizeLaunchNarrativePack(),
|
|
53
|
+
outreach_proof_summary: summarizeOutreachProofPack(),
|
|
54
|
+
announcement_summary: summarizeAnnouncementPack(),
|
|
55
|
+
release_candidate_summary: summarizeReleaseCandidatePack()
|
|
56
|
+
},
|
|
57
|
+
quickstart: {
|
|
58
|
+
first_http_entrypoint: "/v1/release-pack/launch/summary",
|
|
59
|
+
first_cli_entrypoint: "xoonya-release --center --summary",
|
|
60
|
+
first_run_cli: "xoonya-review --file ./handoff.json --summary",
|
|
61
|
+
first_docs: [
|
|
62
|
+
"START_HERE.md",
|
|
63
|
+
"FINAL_CONTRACT.md",
|
|
64
|
+
"SERVICE_CONTRACT.md",
|
|
65
|
+
"RELEASE_NOTES.md"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
release_surfaces: {
|
|
69
|
+
release_pack_summary: "/v1/release-pack/summary",
|
|
70
|
+
launch_summary: "/v1/release-pack/launch/summary",
|
|
71
|
+
comparison_summary: "/v1/release-pack/comparison/summary",
|
|
72
|
+
adoption_summary: "/v1/release-pack/adoption/summary",
|
|
73
|
+
scenario_summary: "/v1/release-pack/scenarios/summary",
|
|
74
|
+
manifest_summary: "/v1/release-manifest/summary",
|
|
75
|
+
notes_summary: "/v1/release-notes/summary",
|
|
76
|
+
history_summary: "/v1/release-history/summary",
|
|
77
|
+
publish_plan_summary: "/v1/publish-plan/summary",
|
|
78
|
+
ecosystem_entry_summary: "/v1/ecosystem-entry/summary",
|
|
79
|
+
launch_narrative_summary: "/v1/launch-narrative/summary",
|
|
80
|
+
outreach_proof_summary: "/v1/outreach-proof/summary",
|
|
81
|
+
announcement_summary: "/v1/announcement-pack/summary",
|
|
82
|
+
release_candidate_summary: "/v1/release-candidate/summary"
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function summarizeReleaseCenter() {
|
|
88
|
+
const center = buildReleaseCenter();
|
|
89
|
+
return {
|
|
90
|
+
ok: true,
|
|
91
|
+
product: center.product,
|
|
92
|
+
category: center.category,
|
|
93
|
+
integration_count: center.center.release_summary.integration_count,
|
|
94
|
+
comparison_count: center.center.comparison_summary.comparison_count,
|
|
95
|
+
target_count: center.center.adoption_summary.target_count,
|
|
96
|
+
scenario_count: center.center.scenario_summary.scenario_count,
|
|
97
|
+
verification_surface_count: center.center.manifest_summary.verification_surface_count,
|
|
98
|
+
operator_check_count: center.center.notes_summary.operator_check_count,
|
|
99
|
+
release_count: center.center.history_summary.release_count,
|
|
100
|
+
publish_step_count: center.center.publish_plan_summary.publish_step_count,
|
|
101
|
+
audience_count: center.center.ecosystem_entry_summary.audience_count,
|
|
102
|
+
success_signal_count: center.center.launch_narrative_summary.success_signal_count,
|
|
103
|
+
proven_count: center.center.outreach_proof_summary.proven_count,
|
|
104
|
+
rc_check_count: center.center.announcement_summary.rc_check_count,
|
|
105
|
+
candidate_checklist_count: center.center.release_candidate_summary.checklist_count,
|
|
106
|
+
proof_bundle_version: center.center.release_summary.proof_bundle_version
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
module.exports = {
|
|
111
|
+
buildReleaseCenter,
|
|
112
|
+
summarizeReleaseCenter
|
|
113
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildReleaseHistory() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-release-history",
|
|
10
|
+
current_version: packageJson.version,
|
|
11
|
+
release_track: "public_release",
|
|
12
|
+
history: [
|
|
13
|
+
{
|
|
14
|
+
version: "2.1.0",
|
|
15
|
+
channel: "public_release",
|
|
16
|
+
maturity_posture: "launch_ready",
|
|
17
|
+
headline: "public proof-spine release-candidate with release-center, announcement, and candidate rehearsal surfaces",
|
|
18
|
+
milestone_refs: [
|
|
19
|
+
"proof_bundle_contract",
|
|
20
|
+
"bridge_and_governance_surfaces",
|
|
21
|
+
"review_cli",
|
|
22
|
+
"release_pack_surfaces",
|
|
23
|
+
"release_center_surfaces",
|
|
24
|
+
"announcement_pack_surfaces",
|
|
25
|
+
"release_candidate_surfaces"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
version: "2.0.0",
|
|
30
|
+
channel: "public_release",
|
|
31
|
+
maturity_posture: "launch_ready",
|
|
32
|
+
headline: "public proof-spine release with direct review, proof launch packaging, and release center surfaces",
|
|
33
|
+
milestone_refs: [
|
|
34
|
+
"proof_bundle_contract",
|
|
35
|
+
"bridge_and_governance_surfaces",
|
|
36
|
+
"review_cli",
|
|
37
|
+
"release_pack_surfaces",
|
|
38
|
+
"release_center_surfaces"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
version: "1.x",
|
|
43
|
+
channel: "pre_public_foundation",
|
|
44
|
+
maturity_posture: "foundation_building",
|
|
45
|
+
headline: "pre-public proof contract, verification, and integration groundwork",
|
|
46
|
+
milestone_refs: [
|
|
47
|
+
"canonical_event_contract",
|
|
48
|
+
"verification_helpers",
|
|
49
|
+
"proof_registry_foundations"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function summarizeReleaseHistory() {
|
|
57
|
+
const history = buildReleaseHistory();
|
|
58
|
+
return {
|
|
59
|
+
ok: true,
|
|
60
|
+
product: history.product,
|
|
61
|
+
category: history.category,
|
|
62
|
+
current_version: history.current_version,
|
|
63
|
+
release_count: history.history.length,
|
|
64
|
+
latest_channel: history.history[0].channel,
|
|
65
|
+
latest_maturity_posture: history.history[0].maturity_posture
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
module.exports = {
|
|
70
|
+
buildReleaseHistory,
|
|
71
|
+
summarizeReleaseHistory
|
|
72
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildReleaseManifest() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
version: packageJson.version,
|
|
10
|
+
release_track: "public_release",
|
|
11
|
+
package: {
|
|
12
|
+
name: packageJson.name,
|
|
13
|
+
version: packageJson.version,
|
|
14
|
+
description: packageJson.description,
|
|
15
|
+
license: packageJson.license,
|
|
16
|
+
homepage: packageJson.homepage,
|
|
17
|
+
repository: packageJson.repository && packageJson.repository.url ? packageJson.repository.url : null
|
|
18
|
+
},
|
|
19
|
+
install: {
|
|
20
|
+
install_command: "npm install xoonya",
|
|
21
|
+
engine: packageJson.engines && packageJson.engines.node ? packageJson.engines.node : null,
|
|
22
|
+
start_command: "npm start",
|
|
23
|
+
verify_command: "npm run verify:all"
|
|
24
|
+
},
|
|
25
|
+
package_entrypoints: {
|
|
26
|
+
main: packageJson.main,
|
|
27
|
+
bin: packageJson.bin || {}
|
|
28
|
+
},
|
|
29
|
+
published_files: Array.isArray(packageJson.files) ? packageJson.files.slice() : [],
|
|
30
|
+
verification_surfaces: [
|
|
31
|
+
"verify:package",
|
|
32
|
+
"verify:integrations",
|
|
33
|
+
"verify:tooling",
|
|
34
|
+
"verify:vectors",
|
|
35
|
+
"verify:examples",
|
|
36
|
+
"verify:service"
|
|
37
|
+
],
|
|
38
|
+
public_contract_docs: [
|
|
39
|
+
"README.md",
|
|
40
|
+
"START_HERE.md",
|
|
41
|
+
"RELEASE_CHECKLIST.md",
|
|
42
|
+
"FINAL_CONTRACT.md",
|
|
43
|
+
"SERVICE_CONTRACT.md",
|
|
44
|
+
"CROSS_RUNTIME_POSTURE.md",
|
|
45
|
+
"COMPATIBILITY_NOTE.md"
|
|
46
|
+
]
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function summarizeReleaseManifest() {
|
|
51
|
+
const manifest = buildReleaseManifest();
|
|
52
|
+
return {
|
|
53
|
+
ok: true,
|
|
54
|
+
product: manifest.product,
|
|
55
|
+
version: manifest.version,
|
|
56
|
+
release_track: manifest.release_track,
|
|
57
|
+
published_file_count: manifest.published_files.length,
|
|
58
|
+
verification_surface_count: manifest.verification_surfaces.length,
|
|
59
|
+
doc_count: manifest.public_contract_docs.length,
|
|
60
|
+
bin_count: Object.keys(manifest.package_entrypoints.bin || {}).length
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function buildLaunchNotes() {
|
|
65
|
+
return {
|
|
66
|
+
ok: true,
|
|
67
|
+
product: packageJson.name,
|
|
68
|
+
version: packageJson.version,
|
|
69
|
+
release_notes: {
|
|
70
|
+
release_theme: "proof-side machine contract with release-candidate rehearsal, reviewable handoff, and launch-ready proof posture",
|
|
71
|
+
headline_capabilities: [
|
|
72
|
+
"one-line proof-side review cli",
|
|
73
|
+
"release, comparison, adoption, scenario, and launch packs",
|
|
74
|
+
"announcement, release-center, and release-candidate surfaces",
|
|
75
|
+
"canonical event, receipt, and proof bundle model",
|
|
76
|
+
"bridge and governance surfaces for operator trust",
|
|
77
|
+
"stable runtime-to-proof followthrough"
|
|
78
|
+
],
|
|
79
|
+
strongest_public_claims: [
|
|
80
|
+
"deterministic proof contract independent of runtime churn",
|
|
81
|
+
"reviewable handoff before proof-native continuation",
|
|
82
|
+
"portable proof bundles instead of opaque machine logs",
|
|
83
|
+
"bridge and governance posture for real operator review"
|
|
84
|
+
],
|
|
85
|
+
operator_checks_before_launch: [
|
|
86
|
+
"verify all package checks pass",
|
|
87
|
+
"verify release-candidate rehearsal passes",
|
|
88
|
+
"verify release-pack launch summary is reachable",
|
|
89
|
+
"verify proof-center summary is healthy",
|
|
90
|
+
"verify bridge summary is healthy",
|
|
91
|
+
"verify first-run scenarios remain accurate"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function summarizeLaunchNotes() {
|
|
98
|
+
const notes = buildLaunchNotes();
|
|
99
|
+
return {
|
|
100
|
+
ok: true,
|
|
101
|
+
product: notes.product,
|
|
102
|
+
version: notes.version,
|
|
103
|
+
headline_capability_count: notes.release_notes.headline_capabilities.length,
|
|
104
|
+
claim_count: notes.release_notes.strongest_public_claims.length,
|
|
105
|
+
operator_check_count: notes.release_notes.operator_checks_before_launch.length
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
module.exports = {
|
|
110
|
+
buildReleaseManifest,
|
|
111
|
+
summarizeReleaseManifest,
|
|
112
|
+
buildLaunchNotes,
|
|
113
|
+
summarizeLaunchNotes
|
|
114
|
+
};
|