owlrunkit 0.19.1 → 0.20.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +107 -3
  3. package/docs/architecture/OWLCODA_RUNKIT_0191_PROFILE_RECONCILE_PATCH_PRODUCT_DECISION_20260813.md +11 -5
  4. package/docs/architecture/OWLCODA_RUNKIT_0192_FORMAL_USABILITY_PRODUCT_DECISION_20260813.md +141 -0
  5. package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
  6. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +74 -9
  7. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  8. package/package.json +1 -1
  9. package/packages/attest/distribution-manifest-v1.json +10 -0
  10. package/packages/attest/src/quick.mjs +42 -4
  11. package/registry-release-policy-v1.json +5 -5
  12. package/sbom.spdx.json +5 -5
  13. package/scripts/runkit-contract/core-contract.mjs +42 -2
  14. package/scripts/runkit-contract/efficiency-metrics.mjs +9 -7
  15. package/scripts/runkit-contract/formal-preflight.mjs +352 -0
  16. package/scripts/runkit-contract/formal-supplemental-evidence.mjs +713 -0
  17. package/scripts/runkit-contract/formal-workflow.mjs +529 -59
  18. package/scripts/runkit-contract/onboarding-doctor.mjs +32 -13
  19. package/scripts/runkit-contract/project-cli-resolver.mjs +33 -3
  20. package/scripts/runkit-contract/project-external-delivery.mjs +16 -9
  21. package/scripts/runkit-contract/quick-attest.mjs +24 -0
  22. package/scripts/runkit-contract/runkit-cli.mjs +445 -52
  23. package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
  24. package/scripts/runkit-contract/schemas/formal-check-v2.schema.json +231 -0
  25. package/scripts/runkit-contract/schemas/formal-envelope-preflight-v1.schema.json +212 -0
  26. package/scripts/runkit-contract/schemas/formal-evidence-summary-v1.schema.json +114 -0
  27. package/scripts/runkit-contract/schemas/formal-supplemental-evidence-v1.schema.json +103 -0
  28. package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
  29. package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
  30. package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
  31. package/scripts/runkit-contract/schemas/team-project-event-v5.schema.json +89 -0
  32. package/scripts/runkit-contract/schemas/team-project-status-v3.schema.json +173 -0
  33. package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
  34. package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
  35. package/scripts/runkit-contract/snapshot.mjs +125 -5
  36. package/scripts/runkit-contract/source-candidate.mjs +271 -69
  37. package/scripts/runkit-contract/sync-release-identity.mjs +39 -4
  38. package/scripts/runkit-contract/team-delivery.mjs +906 -0
  39. package/scripts/runkit-contract/team-project-successor.mjs +7 -4
  40. package/scripts/runkit-contract/team-project.mjs +440 -28
  41. package/scripts/runkit-contract/usage-mode.mjs +9 -3
  42. package/scripts/runkit-contract/verification-envelope.mjs +425 -37
@@ -153,14 +153,49 @@ export function verifyReleaseIdentitySurfacesV1(input) {
153
153
  const matches = [...source.matchAll(pattern)];
154
154
  return matches.length === 1 && matches[0][1] === core.coreManifestSha256;
155
155
  };
156
+ const releasePolicy = input.releasePolicy ?? null;
157
+ const candidateUnpublished = releasePolicy?.status === "release_candidate_unpublished";
158
+ if (candidateUnpublished) {
159
+ requireSurface(
160
+ releasePolicy?.packageName === "owlrunkit"
161
+ && releasePolicy?.candidateVersion === core.coreVersion
162
+ && releasePolicy?.registryRelease === null
163
+ && releasePolicy?.currentPublishedRelease?.packageName === "owlrunkit"
164
+ && /^\d+\.\d+\.\d+$/u.test(
165
+ releasePolicy?.currentPublishedRelease?.version ?? "",
166
+ )
167
+ && releasePolicy.currentPublishedRelease.version !== core.coreVersion,
168
+ "release_policy",
169
+ );
170
+ }
156
171
  const skillExact = (markdown) => {
157
172
  if (typeof markdown !== "string") return false;
158
173
  const hashes = markdown.match(/sha256:[a-f0-9]{64}/gu) ?? [];
159
- return hashes.length === 1
174
+ const identityExact = hashes.length === 1
160
175
  && hashes[0] === core.coreManifestSha256
161
- && markdown.includes(`Bundled release: standalone \`owlrunkit@${core.coreVersion}\``)
162
- && markdown.includes(`Core \`${core.coreVersion}\``)
163
- && !/(?:It is not published|current published release remains)/iu.test(markdown);
176
+ && markdown.includes(`Core \`${core.coreVersion}\``);
177
+ if (!identityExact) return false;
178
+ if (!candidateUnpublished) {
179
+ return markdown.includes(
180
+ `Bundled release: standalone \`owlrunkit@${core.coreVersion}\``,
181
+ ) && !/(?:not published|current published release remains)/iu.test(markdown);
182
+ }
183
+ const prior = releasePolicy.currentPublishedRelease.version;
184
+ return markdown.includes(
185
+ `Bundled candidate: standalone \`owlrunkit@${core.coreVersion}\``,
186
+ )
187
+ && /candidate is not published/iu.test(markdown)
188
+ && new RegExp(
189
+ "current published release remains\\s+`owlrunkit@"
190
+ + escaped(prior)
191
+ + "`",
192
+ "iu",
193
+ ).test(markdown)
194
+ && !markdown.includes(
195
+ `Bundled release: standalone \`owlrunkit@${core.coreVersion}\``,
196
+ )
197
+ && !markdown.includes(`--exact owlrunkit@${core.coreVersion}`)
198
+ && !markdown.includes(`npm install --save-exact owlrunkit@${core.coreVersion}`);
164
199
  };
165
200
 
166
201
  requireSurface(packageExact(input.packageManifest), "package_manifest");