owlrunkit 0.18.4 → 0.19.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 (49) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +102 -4
  3. package/docs/architecture/OWLCODA_RUNKIT_0190_CONSOLIDATED_DAILY_USE_PRODUCT_DECISION_20260812.md +97 -0
  4. package/docs/architecture/OWLCODA_RUN_KIT_CONTRACT_V0_2.md +57 -0
  5. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +28 -4
  6. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  7. package/integrations/codex/skills/owlcoda-runkit/references/contract-v0.2.md +57 -0
  8. package/package.json +1 -1
  9. package/packages/attest/README.md +9 -5
  10. package/packages/attest/consumer-surface-v2.json +263 -0
  11. package/packages/attest/distribution-manifest-v1.json +9 -1
  12. package/packages/attest/schemas/quick-verification-receipt-v3.schema.json +244 -0
  13. package/packages/attest/schemas/workspace-snapshot-v2.schema.json +114 -0
  14. package/packages/attest/src/dependency-environment.mjs +128 -0
  15. package/packages/attest/src/index.mjs +1 -0
  16. package/packages/attest/src/quick-receipt-contract.mjs +202 -9
  17. package/packages/attest/src/quick.mjs +40 -4
  18. package/packages/attest/src/workspace-snapshot.mjs +133 -6
  19. package/registry-release-policy-v1.json +5 -5
  20. package/sbom.spdx.json +5 -5
  21. package/scripts/runkit-contract/core-contract.mjs +21 -1
  22. package/scripts/runkit-contract/efficiency-metrics.mjs +559 -0
  23. package/scripts/runkit-contract/evidence-store.mjs +130 -0
  24. package/scripts/runkit-contract/onboarding-bootstrap.mjs +685 -0
  25. package/scripts/runkit-contract/onboarding-doctor.mjs +2 -1
  26. package/scripts/runkit-contract/outcome-presentation.mjs +171 -0
  27. package/scripts/runkit-contract/profile-onboarding.mjs +22 -2
  28. package/scripts/runkit-contract/project-cli-resolver.mjs +23 -5
  29. package/scripts/runkit-contract/quick-evidence-reuse.mjs +590 -0
  30. package/scripts/runkit-contract/quick-isolation.mjs +314 -0
  31. package/scripts/runkit-contract/quick-metrics.mjs +51 -3
  32. package/scripts/runkit-contract/quick-receipt.mjs +31 -1
  33. package/scripts/runkit-contract/quick-verify.mjs +216 -25
  34. package/scripts/runkit-contract/quick-workspace-snapshot.mjs +1 -0
  35. package/scripts/runkit-contract/runkit-bootstrap.mjs +1 -0
  36. package/scripts/runkit-contract/runkit-cli.mjs +330 -18
  37. package/scripts/runkit-contract/runtime-transition.mjs +478 -0
  38. package/scripts/runkit-contract/schemas/efficiency-event-v1.schema.json +56 -0
  39. package/scripts/runkit-contract/schemas/efficiency-metrics-v1.schema.json +220 -0
  40. package/scripts/runkit-contract/schemas/external-runtime-report-v1.schema.json +125 -0
  41. package/scripts/runkit-contract/schemas/onboarding-bootstrap-plan-v1.schema.json +168 -0
  42. package/scripts/runkit-contract/schemas/onboarding-bootstrap-receipt-v1.schema.json +130 -0
  43. package/scripts/runkit-contract/schemas/outcome-summary-v1.schema.json +83 -0
  44. package/scripts/runkit-contract/schemas/quick-evidence-reuse-plan-v1.schema.json +59 -0
  45. package/scripts/runkit-contract/schemas/quick-evidence-reuse-receipt-v1.schema.json +79 -0
  46. package/scripts/runkit-contract/schemas/runtime-transition-receipt-v1.schema.json +185 -0
  47. package/scripts/runkit-contract/schemas/team-project-event-v4.schema.json +142 -0
  48. package/scripts/runkit-contract/team-project.mjs +704 -16
  49. package/scripts/runkit-contract/verification-envelope.mjs +15 -18
@@ -13,6 +13,7 @@ import {
13
13
  import os from "node:os";
14
14
  import path from "node:path";
15
15
 
16
+ import { persistEvidenceBytes } from "./evidence-store.mjs";
16
17
  import {
17
18
  assertAllowedKeys,
18
19
  isRecord,
@@ -564,22 +565,18 @@ function executeMacPhase({ root, cwd, envelope, phase, name, backend }) {
564
565
  });
565
566
  }
566
567
 
567
- function writeObject(artifactRoot, label, bytes) {
568
- const hash = sha256(bytes);
569
- const objectRoot = path.join(artifactRoot, "objects");
570
- mkdirSync(objectRoot, { recursive: true });
571
- const objectPath = path.join(objectRoot, hash);
572
- if (!existsSync(objectPath)) {
573
- writeJsonExclusiveAtomically(`${objectPath}.metadata.json`, {
574
- schemaVersion: "OwlCodaRunKitEvidenceObjectMetadataV1",
575
- sha256: hash,
576
- bytes: bytes.length,
577
- labels: [label],
578
- });
579
- const temporaryJson = { encoding: "base64", data: bytes.toString("base64") };
580
- writeJsonExclusiveAtomically(objectPath, temporaryJson);
581
- }
582
- return { label, path: objectPath, sha256: hash, bytes: bytes.length };
568
+ function writeObject(workspaceRoot, label, bytes) {
569
+ const stored = persistEvidenceBytes({
570
+ workspaceRoot,
571
+ bytes,
572
+ encoding: "base64_json",
573
+ });
574
+ return {
575
+ label,
576
+ path: stored.absolutePath,
577
+ sha256: stored.digest,
578
+ bytes: stored.sizeBytes,
579
+ };
583
580
  }
584
581
 
585
582
  function cleanScratch(root, patterns) {
@@ -710,8 +707,8 @@ export async function runVerificationEnvelopeV1({
710
707
  const scratchCleanup = cleanScratch(root, validated.envelope.paths.disposableScratch);
711
708
  const evidenceObjects = [];
712
709
  const phases = rawPhases.map((phase) => {
713
- const stdout = writeObject(outputRoot, `${phase.name}:stdout`, phase.stdout);
714
- const stderr = writeObject(outputRoot, `${phase.name}:stderr`, phase.stderr);
710
+ const stdout = writeObject(root, `${phase.name}:stdout`, phase.stdout);
711
+ const stderr = writeObject(root, `${phase.name}:stderr`, phase.stderr);
715
712
  evidenceObjects.push(stdout, stderr);
716
713
  return {
717
714
  name: phase.name,