xoonya 2.0.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 +59 -2
- package/RELEASE_CHECKLIST.md +10 -0
- package/RELEASE_NOTES.md +19 -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 +43 -2
- package/server.js +200 -0
|
@@ -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
|
+
};
|