@lssm/lib.infra-ops-spec 2.0.1

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 (64) hide show
  1. package/README.md +61 -0
  2. package/dist/fixtures-deployment.d.ts +249 -0
  3. package/dist/fixtures-deployment.js +2 -0
  4. package/dist/fixtures-incident.d.ts +219 -0
  5. package/dist/fixtures-incident.js +2 -0
  6. package/dist/fixtures.d.ts +2 -0
  7. package/dist/fixtures.js +2 -0
  8. package/dist/index.d.ts +8 -0
  9. package/dist/index.js +2 -0
  10. package/dist/infra-ops-spec.test.d.ts +1 -0
  11. package/dist/intent-architecture.d.ts +104 -0
  12. package/dist/intent-architecture.js +2 -0
  13. package/dist/intent-canonical.d.ts +4 -0
  14. package/dist/intent-canonical.js +2 -0
  15. package/dist/intent-comparison.d.ts +8 -0
  16. package/dist/intent-comparison.js +2 -0
  17. package/dist/intent-core.d.ts +98 -0
  18. package/dist/intent-core.js +2 -0
  19. package/dist/intent-decisions.d.ts +72 -0
  20. package/dist/intent-decisions.js +2 -0
  21. package/dist/intent-fixtures-decision.d.ts +4 -0
  22. package/dist/intent-fixtures-decision.js +2 -0
  23. package/dist/intent-fixtures.d.ts +3 -0
  24. package/dist/intent-fixtures.js +2 -0
  25. package/dist/intent-plans.d.ts +64 -0
  26. package/dist/intent-plans.js +2 -0
  27. package/dist/intent-types.d.ts +284 -0
  28. package/dist/intent-types.js +2 -0
  29. package/dist/intent-validation-bindings.d.ts +3 -0
  30. package/dist/intent-validation-bindings.js +2 -0
  31. package/dist/intent-validation-refs.d.ts +7 -0
  32. package/dist/intent-validation-refs.js +2 -0
  33. package/dist/intent-validation-rules.d.ts +3 -0
  34. package/dist/intent-validation-rules.js +2 -0
  35. package/dist/intent-validation-shared.d.ts +9 -0
  36. package/dist/intent-validation-shared.js +2 -0
  37. package/dist/intent-validation.d.ts +10 -0
  38. package/dist/intent-validation.js +2 -0
  39. package/dist/intent.test.d.ts +1 -0
  40. package/dist/node/fixtures-deployment.js +1 -0
  41. package/dist/node/fixtures-incident.js +1 -0
  42. package/dist/node/fixtures.js +1 -0
  43. package/dist/node/index.js +1 -0
  44. package/dist/node/intent-architecture.js +1 -0
  45. package/dist/node/intent-canonical.js +1 -0
  46. package/dist/node/intent-comparison.js +1 -0
  47. package/dist/node/intent-core.js +1 -0
  48. package/dist/node/intent-decisions.js +1 -0
  49. package/dist/node/intent-fixtures-decision.js +1 -0
  50. package/dist/node/intent-fixtures.js +1 -0
  51. package/dist/node/intent-plans.js +1 -0
  52. package/dist/node/intent-types.js +1 -0
  53. package/dist/node/intent-validation-bindings.js +1 -0
  54. package/dist/node/intent-validation-refs.js +1 -0
  55. package/dist/node/intent-validation-rules.js +1 -0
  56. package/dist/node/intent-validation-shared.js +1 -0
  57. package/dist/node/intent-validation.js +1 -0
  58. package/dist/node/types.js +1 -0
  59. package/dist/node/validation.js +1 -0
  60. package/dist/types.d.ts +748 -0
  61. package/dist/types.js +2 -0
  62. package/dist/validation.d.ts +13 -0
  63. package/dist/validation.js +2 -0
  64. package/package.json +421 -0
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var b={id:"owner_platform_ops",kind:"companyos_owner"},Ve={id:"policy_gate_production_release",kind:"companyos_policy_gate"},zt={id:"infra_ops_deployment_release_loop",version:"1.0.0",environments:[{id:"env_production",name:"Production",tier:"production",ownerRef:b}],runtimeTargets:[{id:"runtime_web_edge",type:"web",capabilityRefs:[{id:"capability_static_web_runtime",kind:"integration_capability"}]}],services:[{id:"service_customer_portal",name:"Customer portal",runtimeTargetId:"runtime_web_edge",ownerRef:b}],pipelines:[{id:"pipeline_customer_portal_release",jobScheduleRef:{id:"job_release_pipeline",kind:"job_schedule"},capabilityRefs:[{id:"capability_release_artifact",kind:"integration_capability"}],ownerRef:b}],migrationWindows:[{id:"migration_customer_portal_content",serviceId:"service_customer_portal",windowRef:"window:2026-05-09T20:00:00Z/PT1H",rollbackRef:{id:"rollback_customer_portal",kind:"progressive_delivery_rollback"},ownerRef:b,evidenceReceiptIds:["evidence_migration_plan"]}],deployments:[{id:"deployment_customer_portal_v2",environmentId:"env_production",serviceId:"service_customer_portal",pipelineId:"pipeline_customer_portal_release",rolloutRef:{id:"rollout_customer_portal_canary",kind:"progressive_delivery_rollout"},rollbackRef:{id:"rollback_customer_portal",kind:"progressive_delivery_rollback"},approvalRequirementId:"approval_customer_portal_release",healthCheckIds:["health_customer_portal","ready_customer_portal","live_customer_portal"],sloIds:["slo_customer_portal_availability"],evidenceReceiptIds:["evidence_release_plan","evidence_release_approval","evidence_rollout_started","evidence_health_passed"],highRisk:!0}],releases:[{id:"release_customer_portal_v2",deploymentId:"deployment_customer_portal_v2",version:"2.0.0",orchestrationRef:{id:"orchestration_release_customer_portal",kind:"orchestration_workflow"}}],rollbacks:[{id:"rollback_customer_portal_v2",deploymentId:"deployment_customer_portal_v2",rollbackRef:{id:"rollback_customer_portal",kind:"progressive_delivery_rollback"},priorEvidenceReceiptId:"evidence_rollout_started"}],healthChecks:[{id:"health_customer_portal",serviceId:"service_customer_portal",kind:"health",metricRef:{id:"metric_http_200",kind:"observability_metric"}},{id:"ready_customer_portal",serviceId:"service_customer_portal",kind:"readiness",metricRef:{id:"metric_ready",kind:"observability_metric"}},{id:"live_customer_portal",serviceId:"service_customer_portal",kind:"liveness",metricRef:{id:"metric_live",kind:"observability_metric"}}],slos:[{id:"slo_customer_portal_availability",serviceId:"service_customer_portal",objective:"monthly availability",threshold:"99.9%",metricRefs:[{id:"metric_http_200",kind:"observability_metric"}],ownerRef:b}],monitors:[{id:"monitor_customer_portal",serviceId:"service_customer_portal",metricRefs:[{id:"metric_http_200",kind:"observability_metric"}],traceRefs:[{id:"trace_checkout",kind:"observability_trace"}],logRefs:[{id:"log_edge_errors",kind:"observability_log"}]}],alerts:[],onCall:[],escalations:[],incidents:[],postmortems:[],capacityPlans:[{id:"capacity_customer_portal_peak",serviceId:"service_customer_portal",expectedLoad:"1000 rpm",thresholds:["cpu < 70%","p95 < 250ms"],ownerRef:b,evidenceReceiptIds:["evidence_capacity_review"]}],costBudgets:[{id:"cost_customer_portal_monthly",serviceId:"service_customer_portal",budgetRef:{id:"budget_customer_portal",kind:"cost_budget"},usageRef:{id:"usage_customer_portal",kind:"metering_usage"},thresholds:["warn at 80%","block at 120%"],ownerRef:b}],secretRefs:[{id:"secret_customer_portal_runtime",purpose:"runtime configuration",ref:"secretref:customer-portal-runtime",ownerRef:b}],operationalRisks:[{id:"risk_customer_portal_release",serviceId:"service_customer_portal",level:"high",mitigationRef:"rollback_customer_portal_v2",ownerRef:b}],approvalRequirements:[{id:"approval_customer_portal_release",policyGateRef:Ve,ownerRef:b,requiredFor:["deployment_customer_portal_v2"]}],evidenceReceipts:[{id:"evidence_migration_plan",sourceRef:"migration_customer_portal_content",action:"plan_migration",actorRef:b,targetRef:"service_customer_portal",outcome:"planned",observedAt:"2026-05-09T10:00:00Z"},{id:"evidence_release_plan",sourceRef:"release_customer_portal_v2",action:"plan_release",actorRef:b,targetRef:"deployment_customer_portal_v2",outcome:"planned",observedAt:"2026-05-09T10:05:00Z"},{id:"evidence_release_approval",sourceRef:"approval_customer_portal_release",action:"approve_release",actorRef:b,targetRef:"deployment_customer_portal_v2",outcome:"approved",observedAt:"2026-05-09T10:10:00Z"},{id:"evidence_rollout_started",sourceRef:"rollout_customer_portal_canary",action:"record_rollout",actorRef:b,targetRef:"deployment_customer_portal_v2",outcome:"succeeded",observedAt:"2026-05-09T10:15:00Z"},{id:"evidence_health_passed",sourceRef:"health_customer_portal",action:"verify_health",actorRef:b,targetRef:"deployment_customer_portal_v2",outcome:"succeeded",observedAt:"2026-05-09T10:20:00Z"},{id:"evidence_capacity_review",sourceRef:"capacity_customer_portal_peak",action:"review_capacity",actorRef:b,targetRef:"service_customer_portal",outcome:"succeeded",observedAt:"2026-05-09T10:25:00Z"}]};var R={id:"owner_reliability_ops",kind:"companyos_owner"},$t={id:"infra_ops_incident_loop",version:"1.0.0",environments:[{id:"env_production",name:"Production",tier:"production",ownerRef:R}],runtimeTargets:[{id:"runtime_api_worker",type:"api",capabilityRefs:[{id:"capability_api_runtime",kind:"integration_capability"}]}],services:[{id:"service_billing_api",name:"Billing API",runtimeTargetId:"runtime_api_worker",ownerRef:R}],pipelines:[],migrationWindows:[],deployments:[],releases:[],rollbacks:[],healthChecks:[{id:"health_billing_api",serviceId:"service_billing_api",kind:"health",metricRef:{id:"metric_billing_http_200",kind:"observability_metric"}}],slos:[{id:"slo_billing_latency",serviceId:"service_billing_api",objective:"p95 latency",threshold:"< 300ms",metricRefs:[{id:"metric_billing_latency",kind:"observability_metric"}],ownerRef:R}],monitors:[{id:"monitor_billing_latency",serviceId:"service_billing_api",metricRefs:[{id:"metric_billing_latency",kind:"observability_metric"}],traceRefs:[{id:"trace_billing_api",kind:"observability_trace"}],logRefs:[{id:"log_billing_errors",kind:"observability_log"}]}],alerts:[{id:"alert_billing_latency",serviceId:"service_billing_api",severity:"high",monitorId:"monitor_billing_latency",sloId:"slo_billing_latency"}],onCall:[{id:"oncall_billing_api",serviceId:"service_billing_api",ownerRef:R,scheduleRef:{id:"job_oncall_rotation",kind:"job_schedule"}}],escalations:[{id:"escalation_billing_latency",incidentId:"incident_billing_latency",onCallId:"oncall_billing_api",ownerRef:R}],incidents:[{id:"incident_billing_latency",alertId:"alert_billing_latency",environmentId:"env_production",serviceId:"service_billing_api",severity:"high",escalationId:"escalation_billing_latency",mitigationOwnerRef:R,postmortemId:"postmortem_billing_latency",evidenceReceiptIds:["evidence_alert_triggered","evidence_incident_triaged","evidence_mitigation_applied"]}],postmortems:[{id:"postmortem_billing_latency",incidentId:"incident_billing_latency",ownerRef:R,evidenceReceiptIds:["evidence_postmortem_written"],followUpRefs:["work_followup_billing_cache_guardrail"]}],capacityPlans:[{id:"capacity_billing_api_peak",serviceId:"service_billing_api",expectedLoad:"500 rpm",thresholds:["p95 < 300ms"],ownerRef:R,evidenceReceiptIds:["evidence_capacity_review"]}],costBudgets:[{id:"cost_billing_api_monthly",serviceId:"service_billing_api",budgetRef:{id:"budget_billing_api",kind:"cost_budget"},usageRef:{id:"usage_billing_api",kind:"metering_usage"},thresholds:["warn at 80%","block at 120%"],ownerRef:R}],secretRefs:[{id:"secret_billing_runtime",purpose:"runtime configuration",ref:"secretref:billing-runtime",ownerRef:R}],operationalRisks:[{id:"risk_billing_latency",serviceId:"service_billing_api",level:"high",mitigationRef:"work_followup_billing_cache_guardrail",ownerRef:R}],approvalRequirements:[],evidenceReceipts:[{id:"evidence_alert_triggered",sourceRef:"alert_billing_latency",action:"record_alert",actorRef:R,targetRef:"incident_billing_latency",outcome:"failed",observedAt:"2026-05-09T11:00:00Z"},{id:"evidence_incident_triaged",sourceRef:"incident_billing_latency",action:"triage_incident",actorRef:R,targetRef:"service_billing_api",outcome:"planned",observedAt:"2026-05-09T11:05:00Z"},{id:"evidence_mitigation_applied",sourceRef:"incident_billing_latency",action:"apply_mitigation",actorRef:R,targetRef:"service_billing_api",outcome:"mitigated",observedAt:"2026-05-09T11:20:00Z"},{id:"evidence_postmortem_written",sourceRef:"postmortem_billing_latency",action:"write_postmortem",actorRef:R,targetRef:"incident_billing_latency",outcome:"succeeded",observedAt:"2026-05-09T12:00:00Z"},{id:"evidence_capacity_review",sourceRef:"capacity_billing_api_peak",action:"review_capacity",actorRef:R,targetRef:"service_billing_api",outcome:"succeeded",observedAt:"2026-05-09T12:10:00Z"}]};import{createHash as je}from"crypto";function ze(e){return JSON.stringify(z(e))}function Bt(e){let i=ze(e);return`sha256:${je("sha256").update(i).digest("hex")}`}function z(e){if(e===null||typeof e==="string"||typeof e==="boolean")return e;if(typeof e==="number"){if(!Number.isFinite(e))throw TypeError("Cannot canonicalize number");return e}if(Array.isArray(e))return e.map(z);if(typeof e==="object")return Object.fromEntries(Object.entries(e).filter(([,i])=>i!==void 0).sort(([i],[n])=>i.localeCompare(n)).map(([i,n])=>[i,z(n)]));throw TypeError(`Cannot canonicalize ${typeof e}`)}var B=["cost","complexity","migrationRisk"],G=["reliability","performance","scalability","portability"];function L(e){let i=[...e].sort((o,c)=>o.id.localeCompare(c.id)),n=i.filter((o)=>o.hardViolationIds.length),r=i.filter((o)=>!o.hardViolationIds.length),s=r.filter((o)=>!r.some((c)=>c.id!==o.id&&Ee(c,o)));return{eligibleCandidateIds:r.map(({id:o})=>o),rejectedCandidateIds:n.map(({id:o})=>o),paretoCandidateIds:s.map(({id:o})=>o)}}function Ee(e,i){let n=B.every((c)=>e.scores[c]<=i.scores[c]),r=G.every((c)=>e.scores[c]>=i.scores[c]),s=B.some((c)=>e.scores[c]<i.scores[c]),o=G.some((c)=>e.scores[c]>i.scores[c]);return n&&r&&(s||o)}var O=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"].map((e)=>`binding-${e}`),H=`sha256:${"a".repeat(64)}`,F={candidates:[{id:"candidate-a",architectureId:"architecture-primary",bindingIds:O,satisfiedRequirementIds:["req-availability","req-portability"],hardViolationIds:[],scores:{cost:50,reliability:90,performance:85,scalability:90,portability:80,complexity:40,migrationRisk:30},assumptions:["Qualified capacity remains available."]},{id:"candidate-b",architectureId:"architecture-primary",bindingIds:O,satisfiedRequirementIds:["req-availability"],hardViolationIds:[],scores:{cost:60,reliability:80,performance:75,scalability:80,portability:70,complexity:50,migrationRisk:40},assumptions:["Manual scaling is acceptable."]},{id:"candidate-invalid",architectureId:"architecture-primary",bindingIds:O,satisfiedRequirementIds:["req-portability"],hardViolationIds:["req-availability"],scores:{cost:10,reliability:100,performance:100,scalability:100,portability:100,complexity:10,migrationRisk:10},assumptions:["Hard requirement is knowingly unmet."]}],comparisons:[{id:"comparison-primary",candidateIds:["candidate-a","candidate-b","candidate-invalid"],rejectedCandidateIds:["candidate-invalid"],paretoCandidateIds:["candidate-a"],selectedCandidateId:"candidate-a",rationale:"Candidate A dominates B after hard-violation rejection."}],adrs:[{id:"adr-primary",title:"Adopt portable regional service",status:"accepted",comparisonId:"comparison-primary",selectedCandidateId:"candidate-a",requirementIds:["req-availability","req-portability"],consequenceStatements:["Operate two regional failure domains."],decidedAt:"2026-08-03T00:00:00Z"}],infrastructurePlans:[{id:"plan-primary",adrId:"adr-primary",architectureId:"architecture-primary",candidateId:"candidate-a",steps:[{id:"step-bind",sequence:1,action:"Realize approved logical bindings.",bindingIds:O,prerequisiteStepIds:[],evidenceRefs:["evidence-plan-review"]}],rollbackPlanRef:"rollback:plan-primary",approvalRequirementIds:["approval-architecture-owner"]}],evolutionPlans:[],handoffPackets:[{id:"handoff-primary",infrastructurePlanId:"plan-primary",recipientRef:"workflow:infra-implementation",contractDigest:H,artifactRefs:["artifact:plan-primary"],requiredEvidenceRefs:["evidence:implementation-receipt"],issuedAt:"2026-08-03T01:00:00Z",expiresAt:"2026-08-10T01:00:00Z",containsCredentials:!1}],handoffReceipts:[{id:"receipt-primary",packetId:"handoff-primary",recipientRef:"workflow:infra-implementation",status:"accepted",receivedDigest:H,evidenceRefs:["evidence:receipt-primary"],receivedAt:"2026-08-03T01:05:00Z"}],unsatisfiableReports:[]};var V=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"],E=V.map((e)=>`cap-${e}`),$e=V.map((e)=>`binding-${e}`),Ut={id:"intent-customer-api-v2",version:"2.0.0",goals:[{id:"goal-resilience",statement:"Keep the customer API available through regional faults.",priority:"critical",requirementIds:["req-availability","req-portability"]}],requirements:[{id:"req-availability",goalId:"goal-resilience",category:"availability",description:"Monthly service availability",criticality:"hard",measure:"availability_percent",target:99.95,unit:"percent"},{id:"req-portability",goalId:"goal-resilience",category:"portability",description:"Retain replaceable infrastructure boundaries",criticality:"soft"}],workloadEnvelopes:[{id:"workload-primary",concurrentUsers:2000,requestsPerSecond:800,burstMultiplier:3,latencyP95Ms:250,availabilityPercent:99.95,dataVolumeGb:500,monthlyDataGrowthPercent:8,storageGb:750,monthlyEgressGb:2000,backgroundJobsPerHour:5000,rpoMinutes:5,rtoMinutes:30,regions:["eu-west","eu-central"],forecastMonths:24,annualTrafficGrowthPercent:40}],restrictions:[{id:"restriction-residency",requirementId:"req-availability",scopeIds:["architecture-primary"],kind:"residency",rule:"Customer data remains in approved EU regions.",severity:"hard",rationale:"Regulatory boundary"},{id:"restriction-cache",scopeIds:["architecture-primary"],kind:"technology",rule:"Cache may be temporarily omitted in preview.",severity:"soft",rationale:"Preview cost control"}],providerPolicies:[{id:"policy-neutral",allowedProviderClasses:["qualified-cloud"],deniedProviderClasses:["unqualified-cloud"],residencyRegions:["eu-west","eu-central"],portabilityMinimum:70,managedServicePosture:"prefer_managed",requiredCapabilities:["encryption-at-rest"],deniedCapabilities:["public-database"],nonWaivableRestrictionIds:["restriction-residency"]}],capabilities:V.map((e,i)=>({id:E[i],kind:e,purpose:`Provide ${e.replace("_"," ")} capability.`,requirementIds:["req-availability"],dependsOnCapabilityIds:i===0?[]:["cap-compute"]})),architectures:[{id:"architecture-primary",name:"Portable regional service",workloadEnvelopeId:"workload-primary",capabilityIds:E,restrictionIds:["restriction-residency","restriction-cache"]}],bindings:V.map((e,i)=>({id:$e[i],architectureId:"architecture-primary",capabilityId:E[i],environmentId:"production-eu",targetClass:`managed-${e}`,providerClass:"qualified-cloud",region:"eu-west",evidenceRefs:[`evidence-${e}`]})),evolutionTriggers:[{id:"trigger-load",metric:"requests_per_second",operator:"gte",threshold:700,observationWindowMinutes:15,action:"replan"}],evolutionPolicies:[{id:"evolution-primary",architectureId:"architecture-primary",triggerIds:["trigger-load"],minimumReviewIntervalDays:30,allowedChangeKinds:["scale","rebind"],approvalRequirementIds:["approval-architecture-owner"]}],waivers:[{id:"waiver-preview",restrictionId:"restriction-cache",scope:{architectureIds:["architecture-primary"],environmentIds:["preview","development"]},reason:"Validate traffic assumptions before provisioning cache.",issuedAt:"2026-08-01T00:00:00Z",expiresAt:"2026-09-01T00:00:00Z",approvedByRef:"owner:platform"},{id:"waiver-development",restrictionId:"restriction-cache",scope:{architectureIds:["architecture-primary"],environmentIds:["development"]},reason:"Tightened child waiver for development only.",issuedAt:"2026-08-02T00:00:00Z",expiresAt:"2026-08-15T00:00:00Z",approvedByRef:"owner:platform",inheritedFromWaiverId:"waiver-preview"}],...F};import{z as I}from"zod";import{z as l}from"zod";var d=l.string().min(1),Te=l.enum(["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"]),U=l.object({id:d,kind:Te,purpose:d,requirementIds:l.array(d),dependsOnCapabilityIds:l.array(d)}).strict(),N=l.object({id:d,name:d,workloadEnvelopeId:d,capabilityIds:l.array(d).min(1),restrictionIds:l.array(d)}).strict(),J=l.object({id:d,architectureId:d,capabilityId:d,environmentId:d,targetClass:d,providerClass:d.optional(),region:d,evidenceRefs:l.array(d)}).strict(),K=l.object({id:d,metric:d,operator:l.enum(["gt","gte","lt","lte","eq"]),threshold:l.number().finite(),observationWindowMinutes:l.number().int().positive(),action:l.enum(["review","replan","migrate"])}).strict(),Q=l.object({id:d,architectureId:d,triggerIds:l.array(d).min(1),minimumReviewIntervalDays:l.number().int().nonnegative(),allowedChangeKinds:l.array(l.enum(["scale","rebind","replace","retire"])).min(1),approvalRequirementIds:l.array(d)}).strict(),X=l.object({id:d,restrictionId:d,scope:l.object({architectureIds:l.array(d).min(1),environmentIds:l.array(d).min(1)}).strict(),reason:d,issuedAt:l.string().datetime({offset:!0}),expiresAt:l.string().datetime({offset:!0}),approvedByRef:d,inheritedFromWaiverId:d.optional()}).strict();import{z as p}from"zod";var g=p.string().min(1),P=p.number().finite().nonnegative(),Y=p.number().finite().positive(),T=p.number().finite().min(0).max(100),ee=p.object({id:g,goalId:g,category:p.enum(["availability","capacity","cost","data","latency","operability","portability","recovery","security"]),description:g,criticality:p.enum(["hard","soft"]),measure:g.optional(),target:p.number().finite().optional(),unit:g.optional()}).strict(),te=p.object({id:g,statement:g,priority:p.enum(["low","medium","high","critical"]),requirementIds:p.array(g).min(1)}).strict(),ie=p.object({id:g,concurrentUsers:P,requestsPerSecond:P,burstMultiplier:Y,latencyP95Ms:Y,availabilityPercent:T,dataVolumeGb:P,monthlyDataGrowthPercent:T,storageGb:P,monthlyEgressGb:P,backgroundJobsPerHour:P,rpoMinutes:P,rtoMinutes:P,regions:p.array(g).min(1),forecastMonths:p.number().int().positive(),annualTrafficGrowthPercent:T}).strict(),re=p.object({id:g,requirementId:g.optional(),scopeIds:p.array(g).min(1),kind:p.enum(["capability","compliance","cost","network","operability","residency","technology"]),rule:g,severity:p.enum(["hard","soft"]),rationale:g}).strict(),ne=p.object({id:g,allowedProviderClasses:p.array(g),deniedProviderClasses:p.array(g),residencyRegions:p.array(g).min(1),portabilityMinimum:p.number().int().min(0).max(100),managedServicePosture:p.enum(["prefer_managed","allow_managed","self_managed_only"]),requiredCapabilities:p.array(g),deniedCapabilities:p.array(g),nonWaivableRestrictionIds:p.array(g)}).strict();import{z as u}from"zod";var f=u.string().min(1),q=u.number().finite().min(0).max(100),De=u.object({cost:q,reliability:q,performance:q,scalability:q,portability:q,complexity:q,migrationRisk:q}).strict(),ae=u.object({id:f,architectureId:f,bindingIds:u.array(f).min(1),satisfiedRequirementIds:u.array(f),hardViolationIds:u.array(f),scores:De,assumptions:u.array(f)}).strict(),oe=u.object({id:f,candidateIds:u.array(f).min(1),rejectedCandidateIds:u.array(f),paretoCandidateIds:u.array(f),selectedCandidateId:f.optional(),rationale:f}).strict(),se=u.object({id:f,title:f,status:u.enum(["proposed","accepted","superseded","rejected"]),comparisonId:f,selectedCandidateId:f,requirementIds:u.array(f).min(1),consequenceStatements:u.array(f).min(1),supersedesAdrId:f.optional(),decidedAt:u.string().datetime({offset:!0})}).strict(),ce=u.object({id:f,requirementIds:u.array(f).min(1),candidateViolationIds:u.array(u.object({candidateId:f,violationIds:u.array(f).min(1)}).strict()).min(1),conflictExplanation:f,resolutionOptions:u.array(f).min(1),generatedAt:u.string().datetime({offset:!0})}).strict();import{z as y}from"zod";var m=y.string().min(1),Me=y.object({id:m,sequence:y.number().int().positive(),action:m,bindingIds:y.array(m),prerequisiteStepIds:y.array(m),evidenceRefs:y.array(m)}).strict(),de=y.object({id:m,adrId:m,architectureId:m,candidateId:m,steps:y.array(Me).min(1),rollbackPlanRef:m,approvalRequirementIds:y.array(m)}).strict(),le=y.object({id:m,evolutionPolicyId:m,triggerId:m,fromAdrId:m,toAdrId:m,infrastructurePlanId:m,migrationRisk:y.enum(["low","medium","high","critical"]),continuityRequirementIds:y.array(m).min(1)}).strict(),pe=y.object({id:m,infrastructurePlanId:m,recipientRef:m,contractDigest:y.string().regex(/^sha256:[a-f0-9]{64}$/),artifactRefs:y.array(m).min(1),requiredEvidenceRefs:y.array(m),issuedAt:y.string().datetime({offset:!0}),expiresAt:y.string().datetime({offset:!0}),containsCredentials:y.literal(!1)}).strict(),me=y.object({id:m,packetId:m,recipientRef:m,status:y.enum(["accepted","rejected","expired"]),receivedDigest:y.string().regex(/^sha256:[a-f0-9]{64}$/),evidenceRefs:y.array(m),receivedAt:y.string().datetime({offset:!0})}).strict();var fe=I.object({id:I.string().min(1),version:I.literal("2.0.0"),goals:I.array(te).min(1),requirements:I.array(ee).min(1),workloadEnvelopes:I.array(ie).min(1),restrictions:I.array(re),providerPolicies:I.array(ne).min(1),capabilities:I.array(U).min(1),architectures:I.array(N).min(1),bindings:I.array(J),evolutionTriggers:I.array(K),evolutionPolicies:I.array(Q),waivers:I.array(X),candidates:I.array(ae).min(1),comparisons:I.array(oe),adrs:I.array(se),infrastructurePlans:I.array(de),evolutionPlans:I.array(le),handoffPackets:I.array(pe),handoffReceipts:I.array(me),unsatisfiableReports:I.array(ce)}).strict();function S(e){return new Set(e.map(({id:i})=>i))}function x(e,i,n,r,s){for(let o of i)v(e,o,n,r,s)}function v(e,i,n,r,s){if(!e.has(i))s.push({code:"missing_reference",message:`${n} references missing ${r} ${i}.`})}function ue(e,i){for(let[n,r]of Object.entries(e)){if(!Array.isArray(r))continue;let s=new Set;for(let o of r){if(!We(o))continue;if(s.has(o.id))i.push(h("duplicate_id",`${n} contains duplicate id ${o.id}.`));s.add(o.id)}}}function h(e,i){return{code:e,message:i}}function We(e){return typeof e==="object"&&e!==null&&"id"in e&&typeof e.id==="string"}function ye(e){let i=[],n=S(e.goals),r=S(e.requirements),s=S(e.workloadEnvelopes),o=S(e.restrictions),c=S(e.capabilities),_=S(e.architectures),ke=S(e.bindings),W=S(e.evolutionTriggers),Ce=S(e.evolutionPolicies),A=S(e.candidates),Pe=S(e.comparisons),j=S(e.adrs),Z=S(e.infrastructurePlans),qe=S(e.handoffPackets),Ae=new Set([...r,...o]);for(let a of e.requirements)v(n,a.goalId,a.id,"goal",i);for(let a of e.restrictions)if(a.requirementId)v(r,a.requirementId,a.id,"requirement",i);for(let a of e.goals)x(r,a.requirementIds,a.id,"requirement",i);for(let a of e.capabilities)x(r,a.requirementIds,a.id,"requirement",i),x(c,a.dependsOnCapabilityIds,a.id,"capability",i);for(let a of e.architectures)v(s,a.workloadEnvelopeId,a.id,"workload envelope",i),x(c,a.capabilityIds,a.id,"capability",i),x(o,a.restrictionIds,a.id,"restriction",i);for(let a of e.bindings)v(_,a.architectureId,a.id,"architecture",i),v(c,a.capabilityId,a.id,"capability",i);for(let a of e.evolutionPolicies)v(_,a.architectureId,a.id,"architecture",i),x(W,a.triggerIds,a.id,"trigger",i);for(let a of e.waivers)v(o,a.restrictionId,a.id,"restriction",i),x(_,a.scope.architectureIds,a.id,"architecture",i);for(let a of e.candidates)v(_,a.architectureId,a.id,"architecture",i),x(ke,a.bindingIds,a.id,"binding",i),x(r,a.satisfiedRequirementIds,a.id,"requirement",i),x(Ae,a.hardViolationIds,a.id,"hard violation target",i);for(let a of e.comparisons)x(A,a.candidateIds,a.id,"candidate",i);for(let a of e.adrs)v(Pe,a.comparisonId,a.id,"comparison",i),v(A,a.selectedCandidateId,a.id,"candidate",i),x(r,a.requirementIds,a.id,"requirement",i);for(let a of e.infrastructurePlans)v(j,a.adrId,a.id,"ADR",i),v(_,a.architectureId,a.id,"architecture",i),v(A,a.candidateId,a.id,"candidate",i);for(let a of e.evolutionPlans)v(Ce,a.evolutionPolicyId,a.id,"evolution policy",i),v(Z,a.infrastructurePlanId,a.id,"infrastructure plan",i),v(W,a.triggerId,a.id,"trigger",i),v(j,a.fromAdrId,a.id,"ADR",i),v(j,a.toAdrId,a.id,"ADR",i);for(let a of e.handoffPackets)v(Z,a.infrastructurePlanId,a.id,"infrastructure plan",i);for(let a of e.handoffReceipts)v(qe,a.packetId,a.id,"handoff packet",i);for(let a of e.unsatisfiableReports)x(r,a.requirementIds,a.id,"requirement",i),x(A,a.candidateViolationIds.map(({candidateId:Oe})=>Oe),a.id,"candidate",i);return i}function ge(e,i){for(let n of e.bindings)for(let r of e.providerPolicies){if(n.providerClass&&(r.deniedProviderClasses.includes(n.providerClass)||r.allowedProviderClasses.length>0&&!r.allowedProviderClasses.includes(n.providerClass)))i.push(h("provider_denied",`${n.id} uses provider class denied by ${r.id}.`));if(!r.residencyRegions.includes(n.region))i.push(h("residency_denied",`${n.id} uses region outside ${r.id}.`))}}function _e(e){let i=[];return Ze(e,i),ge(e,i),Be(e,i),Ge(e,i),Le(e,i),He(e,i),ue(e,i),i}function Ze(e,i){for(let n of e.providerPolicies){Ie(n.allowedProviderClasses,n.deniedProviderClasses,n.id,"provider class",i),Ie(n.requiredCapabilities,n.deniedCapabilities,n.id,"capability",i);let r=new Set(e.restrictions.map(({id:s})=>s));for(let s of n.nonWaivableRestrictionIds)if(!r.has(s))i.push(h("missing_reference",`${n.id} references missing restriction ${s}.`))}}function Be(e,i){let n=new Map(e.waivers.map((s)=>[s.id,s])),r=new Set(e.providerPolicies.flatMap(({nonWaivableRestrictionIds:s})=>s));for(let s of e.waivers){if(r.has(s.restrictionId))i.push(h("non_waivable",`${s.id} targets non-waivable restriction ${s.restrictionId}.`));if(Date.parse(s.expiresAt)<=Date.parse(s.issuedAt))i.push(h("invalid_expiry",`${s.id} must expire after issuance.`));if(!s.inheritedFromWaiverId)continue;let o=n.get(s.inheritedFromWaiverId);if(!o){i.push(h("missing_reference",`${s.id} references missing parent waiver.`));continue}if(o.restrictionId!==s.restrictionId)i.push(h("waiver_broadened",`${s.id} must inherit the same restriction.`));if(Date.parse(s.expiresAt)>Date.parse(o.expiresAt))i.push(h("waiver_broadened",`${s.id} may not outlive parent ${o.id}.`));if(!ve(s.scope.architectureIds,o.scope.architectureIds)||!ve(s.scope.environmentIds,o.scope.environmentIds))i.push(h("waiver_broadened",`${s.id} may only tighten parent ${o.id} scope.`))}}function Ge(e,i){let n=new Map(e.candidates.map((r)=>[r.id,r]));for(let r of e.comparisons){let s=r.candidateIds.flatMap((c)=>{let _=n.get(c);return _?[_]:[]}),o=L(s);if(!he(o.rejectedCandidateIds,r.rejectedCandidateIds))i.push(h("comparison_mismatch",`${r.id} hard-violation rejection is not deterministic.`));if(!he(o.paretoCandidateIds,r.paretoCandidateIds))i.push(h("comparison_mismatch",`${r.id} Pareto frontier is not deterministic.`));if(r.selectedCandidateId&&!o.paretoCandidateIds.includes(r.selectedCandidateId))i.push(h("invalid_selection",`${r.id} must select from its Pareto frontier.`))}}function Le(e,i){let n=new Set(e.unsatisfiableReports.flatMap(({candidateViolationIds:o})=>o.map(({candidateId:c})=>c))),r=new Set(e.comparisons.flatMap(({candidateIds:o})=>o)),s=e.candidates.filter(({id:o})=>r.has(o)).every(({hardViolationIds:o})=>o.length>0);if(r.size>0&&s){for(let o of r)if(!n.has(o))i.push(h("unsatisfiable_report_required",`Hard-invalid candidate ${o} requires an unsatisfiable report.`))}}function He(e,i){let n=new Map(e.handoffPackets.map((r)=>[r.id,r]));for(let r of e.handoffPackets)if(Date.parse(r.expiresAt)<=Date.parse(r.issuedAt))i.push(h("invalid_expiry",`${r.id} must expire after issuance.`));for(let r of e.handoffReceipts){let s=n.get(r.packetId);if(s&&r.receivedDigest!==s.contractDigest)i.push(h("digest_mismatch",`${r.id} does not acknowledge packet digest.`))}}function Ie(e,i,n,r,s){for(let o of e)if(i.includes(o))s.push(h("policy_conflict",`${n} both allows/requires and denies ${r} ${o}.`))}function ve(e,i){return e.every((n)=>i.includes(n))}function he(e,i){return e.length===i.length&&e.every((n,r)=>n===i[r])}var Fe=/(?:api[_-]?key|client[_-]?secret|private[_-]?key|password|bearer\s+|sk-[a-z0-9]|ghp_[a-z0-9])/i,Ue=/(?:aws_access_key|service_account_json|azure_client_secret|provider[_-]?config|kubeconfig)/i;class be extends Error{issues;constructor(e){super("Infrastructure intent V2 is invalid");this.issues=e;this.name="InfrastructureIntentValidationError"}}function Ne(e){let i=fe.safeParse(e);if(!i.success)return i.error.issues.map((s)=>({code:"schema_invalid",message:s.message,path:s.path.join(".")}));let n=[...ye(i.data),..._e(i.data)],r=JSON.stringify(i.data);if(Fe.test(r))n.push({code:"secret_material",message:"Infrastructure intent must not contain credentials or secret values."});if(Ue.test(r))n.push({code:"provider_config",message:"Infrastructure intent must not contain provider configuration material."});return n}function wi(e){let i=Ne(e);if(i.length>0)throw new be(i)}import{z as t}from"zod";var C=t.object({id:t.string().min(1),kind:t.string().min(1),version:t.string().min(1).optional()}),Je=C.extend({kind:t.literal("progressive_delivery_rollout")}),D=C.extend({kind:t.literal("progressive_delivery_rollback")}),M=C.extend({kind:t.literal("observability_metric")}),Ke=C.extend({kind:t.literal("observability_trace")}),Qe=C.extend({kind:t.literal("observability_log")}),Re=C.extend({kind:t.literal("job_schedule")}),Se=C.extend({kind:t.literal("integration_capability")}),Xe=C.extend({kind:t.literal("companyos_policy_gate")}),w=C.extend({kind:t.literal("companyos_owner")}),Ye=C.extend({kind:t.literal("orchestration_workflow")}),et=C.extend({kind:t.literal("cost_budget")}),tt=C.extend({kind:t.literal("metering_usage")}),it=t.object({id:t.string().min(1),name:t.string().min(1),tier:t.enum(["development","preview","staging","production"]),ownerRef:w}),rt=t.object({id:t.string().min(1),type:t.enum(["web","api","worker","job","database","edge","custom"]),capabilityRefs:t.array(Se).default([])}),nt=t.object({id:t.string().min(1),name:t.string().min(1),runtimeTargetId:t.string().min(1),ownerRef:w}),at=t.object({id:t.string().min(1),serviceId:t.string().min(1),kind:t.enum(["health","readiness","liveness"]),metricRef:M}),ot=t.object({id:t.string().min(1),serviceId:t.string().min(1),objective:t.string().min(1),threshold:t.string().min(1),metricRefs:t.array(M).min(1),ownerRef:w}),st=t.object({id:t.string().min(1),serviceId:t.string().min(1),metricRefs:t.array(M).min(1),traceRefs:t.array(Ke).default([]),logRefs:t.array(Qe).default([])}),ct=t.object({id:t.string().min(1),sourceRef:t.string().min(1),action:t.string().min(1),actorRef:w,targetRef:t.string().min(1),outcome:t.enum(["planned","approved","succeeded","failed","mitigated"]),observedAt:t.string().min(1)}),dt=t.object({id:t.string().min(1),policyGateRef:Xe,ownerRef:w,requiredFor:t.array(t.string().min(1)).min(1)}),lt=t.object({id:t.string().min(1),jobScheduleRef:Re,capabilityRefs:t.array(Se).default([]),ownerRef:w}),pt=t.object({id:t.string().min(1),serviceId:t.string().min(1),windowRef:t.string().min(1),rollbackRef:D,ownerRef:w,evidenceReceiptIds:t.array(t.string().min(1)).min(1)}),mt=t.object({id:t.string().min(1),environmentId:t.string().min(1),serviceId:t.string().min(1),pipelineId:t.string().min(1),rolloutRef:Je,rollbackRef:D,approvalRequirementId:t.string().min(1),healthCheckIds:t.array(t.string().min(1)).min(1),sloIds:t.array(t.string().min(1)).min(1),evidenceReceiptIds:t.array(t.string().min(1)).min(1),highRisk:t.boolean().default(!1)}),ft=t.object({id:t.string().min(1),deploymentId:t.string().min(1),rollbackRef:D,priorEvidenceReceiptId:t.string().min(1)}),ut=t.object({id:t.string().min(1),deploymentId:t.string().min(1),version:t.string().min(1),orchestrationRef:Ye}),yt=t.object({id:t.string().min(1),serviceId:t.string().min(1),severity:t.enum(["low","medium","high","critical"]),monitorId:t.string().min(1),sloId:t.string().min(1)}),gt=t.object({id:t.string().min(1),serviceId:t.string().min(1),ownerRef:w,scheduleRef:Re}),It=t.object({id:t.string().min(1),incidentId:t.string().min(1),onCallId:t.string().min(1),ownerRef:w}),vt=t.object({id:t.string().min(1),incidentId:t.string().min(1),ownerRef:w,evidenceReceiptIds:t.array(t.string().min(1)).min(1),followUpRefs:t.array(t.string().min(1)).min(1)}),ht=t.object({id:t.string().min(1),alertId:t.string().min(1),environmentId:t.string().min(1),serviceId:t.string().min(1),severity:t.enum(["low","medium","high","critical"]),escalationId:t.string().min(1),mitigationOwnerRef:w,postmortemId:t.string().min(1),evidenceReceiptIds:t.array(t.string().min(1)).min(1)}),_t=t.object({id:t.string().min(1),serviceId:t.string().min(1),expectedLoad:t.string().min(1),thresholds:t.array(t.string().min(1)).min(1),ownerRef:w,evidenceReceiptIds:t.array(t.string().min(1)).min(1)}),bt=t.object({id:t.string().min(1),serviceId:t.string().min(1),budgetRef:et,usageRef:tt,thresholds:t.array(t.string().min(1)).min(1),ownerRef:w}),Rt=t.object({id:t.string().min(1),purpose:t.string().min(1),ref:t.string().min(1),ownerRef:w}),St=t.object({id:t.string().min(1),serviceId:t.string().min(1),level:t.enum(["low","medium","high","critical"]),mitigationRef:t.string().min(1),ownerRef:w}),xe=t.object({id:t.string().min(1),version:t.string().min(1),environments:t.array(it).min(1),runtimeTargets:t.array(rt).min(1),services:t.array(nt).min(1),pipelines:t.array(lt).default([]),migrationWindows:t.array(pt).default([]),deployments:t.array(mt).default([]),releases:t.array(ut).default([]),rollbacks:t.array(ft).default([]),healthChecks:t.array(at).default([]),slos:t.array(ot).default([]),monitors:t.array(st).default([]),alerts:t.array(yt).default([]),onCall:t.array(gt).default([]),escalations:t.array(It).default([]),incidents:t.array(ht).default([]),postmortems:t.array(vt).default([]),capacityPlans:t.array(_t).default([]),costBudgets:t.array(bt).default([]),secretRefs:t.array(Rt).default([]),operationalRisks:t.array(St).default([]),approvalRequirements:t.array(dt).default([]),evidenceReceipts:t.array(ct).default([])});class we extends Error{issues;constructor(e,i){super(e);this.issues=i;this.name="InfraOpsValidationError"}}var xt=/(api[_-]?key|secret[_-]?access|private[_-]?key|token=|password=|bearer\s+[a-z0-9]|sk-[a-z0-9])/i,wt=/(aws_access_key|gcp_service_account|azure_client_secret|vercel_token|cloudflare_api_token|kubeconfig|providerConfig|provider_config)/i;function kt(e){let i=xe.safeParse(e);if(!i.success)return i.error.issues.map((o)=>({level:"error",message:o.message,context:{path:o.path.join(".")}}));let n=[],r=new Set(e.evidenceReceipts.map((o)=>o.id)),s=new Set(e.deployments.map((o)=>o.id));return Ct(e,n),Pt(e,r,n),qt(e,s,r,n),At(e,r,n),Ot(e,r,n),Vt(e,r,n),jt(e,n),n}function Ai(e){let i=kt(e);if(i.filter((r)=>r.level==="error").length>0)throw new we(`Infra-ops spec ${e.id} is invalid`,i)}function Ct(e,i){let n=JSON.stringify(e);if(xt.test(n))i.push({level:"error",message:"Infra-ops specs must not contain secret values or credentials."});if(wt.test(n))i.push({level:"error",message:"Infra-ops specs must not contain provider config material."});for(let r of e.secretRefs)if(!r.ref.startsWith("secretref:"))i.push({level:"error",message:`Secret ref ${r.id} must use a redacted secretref: identifier.`})}function Pt(e,i,n){let r=new Set(e.approvalRequirements.map((c)=>c.id)),s=new Set(e.healthChecks.map((c)=>c.id)),o=new Set(e.slos.map((c)=>c.id));for(let c of e.deployments){if(!r.has(c.approvalRequirementId))n.push(k(`Deployment ${c.id} requires approval.`));if(!c.healthCheckIds.some((_)=>s.has(_)))n.push(k(`Deployment ${c.id} requires health checks.`));if(!c.sloIds.some((_)=>o.has(_)))n.push(k(`Deployment ${c.id} requires SLO refs.`));if(c.highRisk&&!e.releases.some((_)=>_.deploymentId===c.id))n.push(k(`Deployment ${c.id} requires orchestration context.`));for(let _ of c.evidenceReceiptIds)if(!i.has(_))n.push(k(`Deployment ${c.id} references missing evidence.`))}}function qt(e,i,n,r){for(let s of e.rollbacks){if(!i.has(s.deploymentId))r.push(k(`Rollback ${s.id} references missing deployment.`));if(!n.has(s.priorEvidenceReceiptId))r.push(k(`Rollback ${s.id} requires prior deployment evidence.`))}}function At(e,i,n){for(let r of e.migrationWindows)for(let s of r.evidenceReceiptIds)if(!i.has(s))n.push(k(`Migration window ${r.id} references missing evidence.`))}function Ot(e,i,n){let r=new Set(e.escalations.map((o)=>o.id)),s=new Set(e.postmortems.map((o)=>o.id));for(let o of e.incidents){if(!r.has(o.escalationId))n.push(k(`Incident ${o.id} requires escalation.`));if(!s.has(o.postmortemId))n.push(k(`Incident ${o.id} requires postmortem evidence.`));for(let c of o.evidenceReceiptIds)if(!i.has(c))n.push(k(`Incident ${o.id} references missing evidence.`))}}function Vt(e,i,n){for(let r of e.costBudgets)if(r.thresholds.length===0)n.push(k(`Cost budget ${r.id} requires thresholds.`));for(let r of e.capacityPlans){if(r.thresholds.length===0||r.expectedLoad.length===0)n.push(k(`Capacity plan ${r.id} requires load thresholds.`));for(let s of r.evidenceReceiptIds)if(!i.has(s))n.push(k(`Capacity plan ${r.id} references missing evidence.`))}}function jt(e,i){for(let n of e.evidenceReceipts)if(!n.sourceRef||!n.action||!n.targetRef)i.push(k(`Evidence receipt ${n.id} is incomplete.`))}function k(e){return{level:"error",message:e}}export{ae as ArchitectureCandidateSchema,oe as ArchitectureComparisonSchema,se as ArchitectureDecisionRecordSchema,le as ArchitectureEvolutionPlanSchema,De as ArchitectureScoreSchema,w as CompanyOsOwnerRefSchema,Xe as CompanyOsPolicyGateRefSchema,X as ConstraintWaiverSchema,et as CostBudgetRefSchema,Q as EvolutionPolicySchema,K as EvolutionTriggerSchema,yt as InfraAlertSpecSchema,dt as InfraApprovalRequirementSpecSchema,_t as InfraCapacityPlanSpecSchema,bt as InfraCostBudgetSpecSchema,mt as InfraDeploymentSpecSchema,it as InfraEnvironmentRefSchema,It as InfraEscalationSpecSchema,ct as InfraEvidenceReceiptSpecSchema,at as InfraHealthCheckSpecSchema,ht as InfraIncidentSpecSchema,pt as InfraMigrationWindowSpecSchema,st as InfraMonitorSpecSchema,gt as InfraOnCallSpecSchema,St as InfraOperationalRiskSpecSchema,xe as InfraOpsSpecSchema,we as InfraOpsValidationError,lt as InfraPipelineSpecSchema,vt as InfraPostmortemSpecSchema,ut as InfraReleaseSpecSchema,ft as InfraRollbackSpecSchema,rt as InfraRuntimeTargetRefSchema,Rt as InfraSecretRefSpecSchema,nt as InfraServiceRefSchema,ot as InfraSloSpecSchema,Te as InfrastructureCapabilityKindSchema,pe as InfrastructureHandoffPacketSchema,me as InfrastructureHandoffReceiptSchema,fe as InfrastructureIntentV2Schema,be as InfrastructureIntentValidationError,de as InfrastructurePlanSchema,Se as IntegrationCapabilityRefSchema,Re as JobScheduleRefSchema,N as LogicalArchitectureSchema,U as LogicalCapabilitySchema,tt as MeteringUsageRefSchema,Qe as ObservabilityLogRefSchema,M as ObservabilityMetricRefSchema,Ke as ObservabilityTraceRefSchema,J as OperationalBindingSchema,te as OperationalGoalSchema,ee as OperationalRequirementSchema,Ye as OrchestrationWorkflowRefSchema,re as PlatformRestrictionSchema,D as ProgressiveDeliveryRollbackRefSchema,Je as ProgressiveDeliveryRolloutRefSchema,ne as ProviderPolicySchema,ce as UnsatisfiableRequirementReportSchema,ie as WorkloadEnvelopeSchema,Ai as assertInfraOpsSpecValid,wi as assertInfrastructureIntentV2Valid,ze as canonicalizeInfrastructureIntent,L as compareArchitectureCandidates,zt as deploymentReleaseLoopFixture,Bt as digestInfrastructureIntent,$t as incidentLoopFixture,Ut as infrastructureIntentV2Fixture,kt as validateInfraOpsSpec,Ne as validateInfrastructureIntentV2};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,104 @@
1
+ import { z } from 'zod';
2
+ export declare const InfrastructureCapabilityKindSchema: z.ZodEnum<{
3
+ cache: "cache";
4
+ ci: "ci";
5
+ compute: "compute";
6
+ database: "database";
7
+ email: "email";
8
+ network: "network";
9
+ object_storage: "object_storage";
10
+ observability: "observability";
11
+ queue: "queue";
12
+ secrets: "secrets";
13
+ }>;
14
+ export type InfrastructureCapabilityKind = z.infer<typeof InfrastructureCapabilityKindSchema>;
15
+ /** A logical capability independent of a concrete provider product. */
16
+ export declare const LogicalCapabilitySchema: z.ZodObject<{
17
+ id: z.ZodString;
18
+ kind: z.ZodEnum<{
19
+ cache: "cache";
20
+ ci: "ci";
21
+ compute: "compute";
22
+ database: "database";
23
+ email: "email";
24
+ network: "network";
25
+ object_storage: "object_storage";
26
+ observability: "observability";
27
+ queue: "queue";
28
+ secrets: "secrets";
29
+ }>;
30
+ purpose: z.ZodString;
31
+ requirementIds: z.ZodArray<z.ZodString>;
32
+ dependsOnCapabilityIds: z.ZodArray<z.ZodString>;
33
+ }, z.core.$strict>;
34
+ export type LogicalCapability = z.infer<typeof LogicalCapabilitySchema>;
35
+ /** Provider-neutral architecture composed solely from logical capabilities. */
36
+ export declare const LogicalArchitectureSchema: z.ZodObject<{
37
+ id: z.ZodString;
38
+ name: z.ZodString;
39
+ workloadEnvelopeId: z.ZodString;
40
+ capabilityIds: z.ZodArray<z.ZodString>;
41
+ restrictionIds: z.ZodArray<z.ZodString>;
42
+ }, z.core.$strict>;
43
+ export type LogicalArchitecture = z.infer<typeof LogicalArchitectureSchema>;
44
+ /** Declarative binding from a logical capability to an approved target class. */
45
+ export declare const OperationalBindingSchema: z.ZodObject<{
46
+ id: z.ZodString;
47
+ architectureId: z.ZodString;
48
+ capabilityId: z.ZodString;
49
+ environmentId: z.ZodString;
50
+ targetClass: z.ZodString;
51
+ providerClass: z.ZodOptional<z.ZodString>;
52
+ region: z.ZodString;
53
+ evidenceRefs: z.ZodArray<z.ZodString>;
54
+ }, z.core.$strict>;
55
+ export type OperationalBinding = z.infer<typeof OperationalBindingSchema>;
56
+ export declare const EvolutionTriggerSchema: z.ZodObject<{
57
+ id: z.ZodString;
58
+ metric: z.ZodString;
59
+ operator: z.ZodEnum<{
60
+ eq: "eq";
61
+ gt: "gt";
62
+ gte: "gte";
63
+ lt: "lt";
64
+ lte: "lte";
65
+ }>;
66
+ threshold: z.ZodNumber;
67
+ observationWindowMinutes: z.ZodNumber;
68
+ action: z.ZodEnum<{
69
+ migrate: "migrate";
70
+ replan: "replan";
71
+ review: "review";
72
+ }>;
73
+ }, z.core.$strict>;
74
+ export type EvolutionTrigger = z.infer<typeof EvolutionTriggerSchema>;
75
+ /** Controls when and how an approved architecture may evolve. */
76
+ export declare const EvolutionPolicySchema: z.ZodObject<{
77
+ id: z.ZodString;
78
+ architectureId: z.ZodString;
79
+ triggerIds: z.ZodArray<z.ZodString>;
80
+ minimumReviewIntervalDays: z.ZodNumber;
81
+ allowedChangeKinds: z.ZodArray<z.ZodEnum<{
82
+ rebind: "rebind";
83
+ replace: "replace";
84
+ retire: "retire";
85
+ scale: "scale";
86
+ }>>;
87
+ approvalRequirementIds: z.ZodArray<z.ZodString>;
88
+ }, z.core.$strict>;
89
+ export type EvolutionPolicy = z.infer<typeof EvolutionPolicySchema>;
90
+ /** Time-bounded exception whose child scopes and lifetime may only tighten. */
91
+ export declare const ConstraintWaiverSchema: z.ZodObject<{
92
+ id: z.ZodString;
93
+ restrictionId: z.ZodString;
94
+ scope: z.ZodObject<{
95
+ architectureIds: z.ZodArray<z.ZodString>;
96
+ environmentIds: z.ZodArray<z.ZodString>;
97
+ }, z.core.$strict>;
98
+ reason: z.ZodString;
99
+ issuedAt: z.ZodString;
100
+ expiresAt: z.ZodString;
101
+ approvedByRef: z.ZodString;
102
+ inheritedFromWaiverId: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strict>;
104
+ export type ConstraintWaiver = z.infer<typeof ConstraintWaiverSchema>;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{z as t}from"zod";var e=t.string().min(1),i=t.enum(["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"]),a=t.object({id:e,kind:i,purpose:e,requirementIds:t.array(e),dependsOnCapabilityIds:t.array(e)}).strict(),o=t.object({id:e,name:e,workloadEnvelopeId:e,capabilityIds:t.array(e).min(1),restrictionIds:t.array(e)}).strict(),n=t.object({id:e,architectureId:e,capabilityId:e,environmentId:e,targetClass:e,providerClass:e.optional(),region:e,evidenceRefs:t.array(e)}).strict(),c=t.object({id:e,metric:e,operator:t.enum(["gt","gte","lt","lte","eq"]),threshold:t.number().finite(),observationWindowMinutes:t.number().int().positive(),action:t.enum(["review","replan","migrate"])}).strict(),s=t.object({id:e,architectureId:e,triggerIds:t.array(e).min(1),minimumReviewIntervalDays:t.number().int().nonnegative(),allowedChangeKinds:t.array(t.enum(["scale","rebind","replace","retire"])).min(1),approvalRequirementIds:t.array(e)}).strict(),p=t.object({id:e,restrictionId:e,scope:t.object({architectureIds:t.array(e).min(1),environmentIds:t.array(e).min(1)}).strict(),reason:e,issuedAt:t.string().datetime({offset:!0}),expiresAt:t.string().datetime({offset:!0}),approvedByRef:e,inheritedFromWaiverId:e.optional()}).strict();export{p as ConstraintWaiverSchema,s as EvolutionPolicySchema,c as EvolutionTriggerSchema,i as InfrastructureCapabilityKindSchema,o as LogicalArchitectureSchema,a as LogicalCapabilitySchema,n as OperationalBindingSchema};
@@ -0,0 +1,4 @@
1
+ /** Stable JSON representation used to bind handoffs and review evidence. */
2
+ export declare function canonicalizeInfrastructureIntent(value: unknown): string;
3
+ /** SHA-256 digest of the stable JSON representation. */
4
+ export declare function digestInfrastructureIntent(value: unknown): string;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{createHash as o}from"crypto";function i(n){return JSON.stringify(e(n))}function c(n){let r=i(n);return`sha256:${o("sha256").update(r).digest("hex")}`}function e(n){if(n===null||typeof n==="string"||typeof n==="boolean")return n;if(typeof n==="number"){if(!Number.isFinite(n))throw TypeError("Cannot canonicalize number");return n}if(Array.isArray(n))return n.map(e);if(typeof n==="object")return Object.fromEntries(Object.entries(n).filter(([,r])=>r!==void 0).sort(([r],[t])=>r.localeCompare(t)).map(([r,t])=>[r,e(t)]));throw TypeError(`Cannot canonicalize ${typeof n}`)}export{i as canonicalizeInfrastructureIntent,c as digestInfrastructureIntent};
@@ -0,0 +1,8 @@
1
+ import type { ArchitectureCandidate } from './intent-decisions.js';
2
+ export interface CandidateComparisonResult {
3
+ eligibleCandidateIds: string[];
4
+ rejectedCandidateIds: string[];
5
+ paretoCandidateIds: string[];
6
+ }
7
+ /** Reject hard violations, then compute a stable multi-objective Pareto frontier. */
8
+ export declare function compareArchitectureCandidates(candidates: readonly ArchitectureCandidate[]): CandidateComparisonResult;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var n=["cost","complexity","migrationRisk"],c=["reliability","performance","scalability","portability"];function l(o){let r=[...o].sort((e,t)=>e.id.localeCompare(t.id)),s=r.filter((e)=>e.hardViolationIds.length),i=r.filter((e)=>!e.hardViolationIds.length),a=i.filter((e)=>!i.some((t)=>t.id!==e.id&&d(t,e)));return{eligibleCandidateIds:i.map(({id:e})=>e),rejectedCandidateIds:s.map(({id:e})=>e),paretoCandidateIds:a.map(({id:e})=>e)}}function d(o,r){let s=n.every((t)=>o.scores[t]<=r.scores[t]),i=c.every((t)=>o.scores[t]>=r.scores[t]),a=n.some((t)=>o.scores[t]<r.scores[t]),e=c.some((t)=>o.scores[t]>r.scores[t]);return s&&i&&(a||e)}export{l as compareArchitectureCandidates};
@@ -0,0 +1,98 @@
1
+ import { z } from 'zod';
2
+ /** A measurable or qualitative constraint needed to achieve an operational goal. */
3
+ export declare const OperationalRequirementSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ goalId: z.ZodString;
6
+ category: z.ZodEnum<{
7
+ availability: "availability";
8
+ capacity: "capacity";
9
+ cost: "cost";
10
+ data: "data";
11
+ latency: "latency";
12
+ operability: "operability";
13
+ portability: "portability";
14
+ recovery: "recovery";
15
+ security: "security";
16
+ }>;
17
+ description: z.ZodString;
18
+ criticality: z.ZodEnum<{
19
+ hard: "hard";
20
+ soft: "soft";
21
+ }>;
22
+ measure: z.ZodOptional<z.ZodString>;
23
+ target: z.ZodOptional<z.ZodNumber>;
24
+ unit: z.ZodOptional<z.ZodString>;
25
+ }, z.core.$strict>;
26
+ export type OperationalRequirement = z.infer<typeof OperationalRequirementSchema>;
27
+ /** Business-facing outcome whose requirements drive infrastructure decisions. */
28
+ export declare const OperationalGoalSchema: z.ZodObject<{
29
+ id: z.ZodString;
30
+ statement: z.ZodString;
31
+ priority: z.ZodEnum<{
32
+ critical: "critical";
33
+ high: "high";
34
+ low: "low";
35
+ medium: "medium";
36
+ }>;
37
+ requirementIds: z.ZodArray<z.ZodString>;
38
+ }, z.core.$strict>;
39
+ export type OperationalGoal = z.infer<typeof OperationalGoalSchema>;
40
+ /** Provider-neutral workload and recovery bounds used for architecture sizing. */
41
+ export declare const WorkloadEnvelopeSchema: z.ZodObject<{
42
+ id: z.ZodString;
43
+ concurrentUsers: z.ZodNumber;
44
+ requestsPerSecond: z.ZodNumber;
45
+ burstMultiplier: z.ZodNumber;
46
+ latencyP95Ms: z.ZodNumber;
47
+ availabilityPercent: z.ZodNumber;
48
+ dataVolumeGb: z.ZodNumber;
49
+ monthlyDataGrowthPercent: z.ZodNumber;
50
+ storageGb: z.ZodNumber;
51
+ monthlyEgressGb: z.ZodNumber;
52
+ backgroundJobsPerHour: z.ZodNumber;
53
+ rpoMinutes: z.ZodNumber;
54
+ rtoMinutes: z.ZodNumber;
55
+ regions: z.ZodArray<z.ZodString>;
56
+ forecastMonths: z.ZodNumber;
57
+ annualTrafficGrowthPercent: z.ZodNumber;
58
+ }, z.core.$strict>;
59
+ export type WorkloadEnvelope = z.infer<typeof WorkloadEnvelopeSchema>;
60
+ /** A hard or soft restriction imposed by product, policy, or operations. */
61
+ export declare const PlatformRestrictionSchema: z.ZodObject<{
62
+ id: z.ZodString;
63
+ requirementId: z.ZodOptional<z.ZodString>;
64
+ scopeIds: z.ZodArray<z.ZodString>;
65
+ kind: z.ZodEnum<{
66
+ capability: "capability";
67
+ compliance: "compliance";
68
+ cost: "cost";
69
+ network: "network";
70
+ operability: "operability";
71
+ residency: "residency";
72
+ technology: "technology";
73
+ }>;
74
+ rule: z.ZodString;
75
+ severity: z.ZodEnum<{
76
+ hard: "hard";
77
+ soft: "soft";
78
+ }>;
79
+ rationale: z.ZodString;
80
+ }, z.core.$strict>;
81
+ export type PlatformRestriction = z.infer<typeof PlatformRestrictionSchema>;
82
+ /** Organization policy for admissible providers without provider configuration. */
83
+ export declare const ProviderPolicySchema: z.ZodObject<{
84
+ id: z.ZodString;
85
+ allowedProviderClasses: z.ZodArray<z.ZodString>;
86
+ deniedProviderClasses: z.ZodArray<z.ZodString>;
87
+ residencyRegions: z.ZodArray<z.ZodString>;
88
+ portabilityMinimum: z.ZodNumber;
89
+ managedServicePosture: z.ZodEnum<{
90
+ allow_managed: "allow_managed";
91
+ prefer_managed: "prefer_managed";
92
+ self_managed_only: "self_managed_only";
93
+ }>;
94
+ requiredCapabilities: z.ZodArray<z.ZodString>;
95
+ deniedCapabilities: z.ZodArray<z.ZodString>;
96
+ nonWaivableRestrictionIds: z.ZodArray<z.ZodString>;
97
+ }, z.core.$strict>;
98
+ export type ProviderPolicy = z.infer<typeof ProviderPolicySchema>;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{z as e}from"zod";var t=e.string().min(1),r=e.number().finite().nonnegative(),a=e.number().finite().positive(),i=e.number().finite().min(0).max(100),n=e.object({id:t,goalId:t,category:e.enum(["availability","capacity","cost","data","latency","operability","portability","recovery","security"]),description:t,criticality:e.enum(["hard","soft"]),measure:t.optional(),target:e.number().finite().optional(),unit:t.optional()}).strict(),c=e.object({id:t,statement:t,priority:e.enum(["low","medium","high","critical"]),requirementIds:e.array(t).min(1)}).strict(),s=e.object({id:t,concurrentUsers:r,requestsPerSecond:r,burstMultiplier:a,latencyP95Ms:a,availabilityPercent:i,dataVolumeGb:r,monthlyDataGrowthPercent:i,storageGb:r,monthlyEgressGb:r,backgroundJobsPerHour:r,rpoMinutes:r,rtoMinutes:r,regions:e.array(t).min(1),forecastMonths:e.number().int().positive(),annualTrafficGrowthPercent:i}).strict(),l=e.object({id:t,requirementId:t.optional(),scopeIds:e.array(t).min(1),kind:e.enum(["capability","compliance","cost","network","operability","residency","technology"]),rule:t,severity:e.enum(["hard","soft"]),rationale:t}).strict(),m=e.object({id:t,allowedProviderClasses:e.array(t),deniedProviderClasses:e.array(t),residencyRegions:e.array(t).min(1),portabilityMinimum:e.number().int().min(0).max(100),managedServicePosture:e.enum(["prefer_managed","allow_managed","self_managed_only"]),requiredCapabilities:e.array(t),deniedCapabilities:e.array(t),nonWaivableRestrictionIds:e.array(t)}).strict();export{c as OperationalGoalSchema,n as OperationalRequirementSchema,l as PlatformRestrictionSchema,m as ProviderPolicySchema,s as WorkloadEnvelopeSchema};
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ /** Comparable quality dimensions. Cost, complexity, and migration risk are minimized. */
3
+ export declare const ArchitectureScoreSchema: z.ZodObject<{
4
+ cost: z.ZodNumber;
5
+ reliability: z.ZodNumber;
6
+ performance: z.ZodNumber;
7
+ scalability: z.ZodNumber;
8
+ portability: z.ZodNumber;
9
+ complexity: z.ZodNumber;
10
+ migrationRisk: z.ZodNumber;
11
+ }, z.core.$strict>;
12
+ export type ArchitectureScore = z.infer<typeof ArchitectureScoreSchema>;
13
+ /** One evaluated realization of a logical architecture. */
14
+ export declare const ArchitectureCandidateSchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ architectureId: z.ZodString;
17
+ bindingIds: z.ZodArray<z.ZodString>;
18
+ satisfiedRequirementIds: z.ZodArray<z.ZodString>;
19
+ hardViolationIds: z.ZodArray<z.ZodString>;
20
+ scores: z.ZodObject<{
21
+ cost: z.ZodNumber;
22
+ reliability: z.ZodNumber;
23
+ performance: z.ZodNumber;
24
+ scalability: z.ZodNumber;
25
+ portability: z.ZodNumber;
26
+ complexity: z.ZodNumber;
27
+ migrationRisk: z.ZodNumber;
28
+ }, z.core.$strict>;
29
+ assumptions: z.ZodArray<z.ZodString>;
30
+ }, z.core.$strict>;
31
+ export type ArchitectureCandidate = z.infer<typeof ArchitectureCandidateSchema>;
32
+ /** Deterministic result: hard-invalid candidates are excluded before Pareto ranking. */
33
+ export declare const ArchitectureComparisonSchema: z.ZodObject<{
34
+ id: z.ZodString;
35
+ candidateIds: z.ZodArray<z.ZodString>;
36
+ rejectedCandidateIds: z.ZodArray<z.ZodString>;
37
+ paretoCandidateIds: z.ZodArray<z.ZodString>;
38
+ selectedCandidateId: z.ZodOptional<z.ZodString>;
39
+ rationale: z.ZodString;
40
+ }, z.core.$strict>;
41
+ export type ArchitectureComparison = z.infer<typeof ArchitectureComparisonSchema>;
42
+ /** Architecture decision record bound to comparison evidence. */
43
+ export declare const ArchitectureDecisionRecordSchema: z.ZodObject<{
44
+ id: z.ZodString;
45
+ title: z.ZodString;
46
+ status: z.ZodEnum<{
47
+ accepted: "accepted";
48
+ proposed: "proposed";
49
+ rejected: "rejected";
50
+ superseded: "superseded";
51
+ }>;
52
+ comparisonId: z.ZodString;
53
+ selectedCandidateId: z.ZodString;
54
+ requirementIds: z.ZodArray<z.ZodString>;
55
+ consequenceStatements: z.ZodArray<z.ZodString>;
56
+ supersedesAdrId: z.ZodOptional<z.ZodString>;
57
+ decidedAt: z.ZodString;
58
+ }, z.core.$strict>;
59
+ export type ArchitectureDecisionRecord = z.infer<typeof ArchitectureDecisionRecordSchema>;
60
+ /** Explains why no candidate can satisfy all hard requirements. */
61
+ export declare const UnsatisfiableRequirementReportSchema: z.ZodObject<{
62
+ id: z.ZodString;
63
+ requirementIds: z.ZodArray<z.ZodString>;
64
+ candidateViolationIds: z.ZodArray<z.ZodObject<{
65
+ candidateId: z.ZodString;
66
+ violationIds: z.ZodArray<z.ZodString>;
67
+ }, z.core.$strict>>;
68
+ conflictExplanation: z.ZodString;
69
+ resolutionOptions: z.ZodArray<z.ZodString>;
70
+ generatedAt: z.ZodString;
71
+ }, z.core.$strict>;
72
+ export type UnsatisfiableRequirementReport = z.infer<typeof UnsatisfiableRequirementReportSchema>;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{z as t}from"zod";var e=t.string().min(1),r=t.number().finite().min(0).max(100),i=t.object({cost:r,reliability:r,performance:r,scalability:r,portability:r,complexity:r,migrationRisk:r}).strict(),c=t.object({id:e,architectureId:e,bindingIds:t.array(e).min(1),satisfiedRequirementIds:t.array(e),hardViolationIds:t.array(e),scores:i,assumptions:t.array(e)}).strict(),o=t.object({id:e,candidateIds:t.array(e).min(1),rejectedCandidateIds:t.array(e),paretoCandidateIds:t.array(e),selectedCandidateId:e.optional(),rationale:e}).strict(),n=t.object({id:e,title:e,status:t.enum(["proposed","accepted","superseded","rejected"]),comparisonId:e,selectedCandidateId:e,requirementIds:t.array(e).min(1),consequenceStatements:t.array(e).min(1),supersedesAdrId:e.optional(),decidedAt:t.string().datetime({offset:!0})}).strict(),s=t.object({id:e,requirementIds:t.array(e).min(1),candidateViolationIds:t.array(t.object({candidateId:e,violationIds:t.array(e).min(1)}).strict()).min(1),conflictExplanation:e,resolutionOptions:t.array(e).min(1),generatedAt:t.string().datetime({offset:!0})}).strict();export{c as ArchitectureCandidateSchema,o as ArchitectureComparisonSchema,n as ArchitectureDecisionRecordSchema,i as ArchitectureScoreSchema,s as UnsatisfiableRequirementReportSchema};
@@ -0,0 +1,4 @@
1
+ import type { InfrastructureIntentV2 } from './intent-types.js';
2
+ type DecisionFixture = Pick<InfrastructureIntentV2, 'candidates' | 'comparisons' | 'adrs' | 'infrastructurePlans' | 'evolutionPlans' | 'handoffPackets' | 'handoffReceipts' | 'unsatisfiableReports'>;
3
+ export declare const infrastructureIntentV2DecisionFixture: DecisionFixture;
4
+ export {};
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var e=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"].map((a)=>`binding-${a}`),i=`sha256:${"a".repeat(64)}`,t={candidates:[{id:"candidate-a",architectureId:"architecture-primary",bindingIds:e,satisfiedRequirementIds:["req-availability","req-portability"],hardViolationIds:[],scores:{cost:50,reliability:90,performance:85,scalability:90,portability:80,complexity:40,migrationRisk:30},assumptions:["Qualified capacity remains available."]},{id:"candidate-b",architectureId:"architecture-primary",bindingIds:e,satisfiedRequirementIds:["req-availability"],hardViolationIds:[],scores:{cost:60,reliability:80,performance:75,scalability:80,portability:70,complexity:50,migrationRisk:40},assumptions:["Manual scaling is acceptable."]},{id:"candidate-invalid",architectureId:"architecture-primary",bindingIds:e,satisfiedRequirementIds:["req-portability"],hardViolationIds:["req-availability"],scores:{cost:10,reliability:100,performance:100,scalability:100,portability:100,complexity:10,migrationRisk:10},assumptions:["Hard requirement is knowingly unmet."]}],comparisons:[{id:"comparison-primary",candidateIds:["candidate-a","candidate-b","candidate-invalid"],rejectedCandidateIds:["candidate-invalid"],paretoCandidateIds:["candidate-a"],selectedCandidateId:"candidate-a",rationale:"Candidate A dominates B after hard-violation rejection."}],adrs:[{id:"adr-primary",title:"Adopt portable regional service",status:"accepted",comparisonId:"comparison-primary",selectedCandidateId:"candidate-a",requirementIds:["req-availability","req-portability"],consequenceStatements:["Operate two regional failure domains."],decidedAt:"2026-08-03T00:00:00Z"}],infrastructurePlans:[{id:"plan-primary",adrId:"adr-primary",architectureId:"architecture-primary",candidateId:"candidate-a",steps:[{id:"step-bind",sequence:1,action:"Realize approved logical bindings.",bindingIds:e,prerequisiteStepIds:[],evidenceRefs:["evidence-plan-review"]}],rollbackPlanRef:"rollback:plan-primary",approvalRequirementIds:["approval-architecture-owner"]}],evolutionPlans:[],handoffPackets:[{id:"handoff-primary",infrastructurePlanId:"plan-primary",recipientRef:"workflow:infra-implementation",contractDigest:i,artifactRefs:["artifact:plan-primary"],requiredEvidenceRefs:["evidence:implementation-receipt"],issuedAt:"2026-08-03T01:00:00Z",expiresAt:"2026-08-10T01:00:00Z",containsCredentials:!1}],handoffReceipts:[{id:"receipt-primary",packetId:"handoff-primary",recipientRef:"workflow:infra-implementation",status:"accepted",receivedDigest:i,evidenceRefs:["evidence:receipt-primary"],receivedAt:"2026-08-03T01:05:00Z"}],unsatisfiableReports:[]};export{t as infrastructureIntentV2DecisionFixture};
@@ -0,0 +1,3 @@
1
+ import type { InfrastructureIntentV2 } from './intent-types.js';
2
+ /** Canonical provider-neutral V2 intent fixture covering every capability family. */
3
+ export declare const infrastructureIntentV2Fixture: InfrastructureIntentV2;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var r=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"].map((e)=>`binding-${e}`),n=`sha256:${"a".repeat(64)}`,s={candidates:[{id:"candidate-a",architectureId:"architecture-primary",bindingIds:r,satisfiedRequirementIds:["req-availability","req-portability"],hardViolationIds:[],scores:{cost:50,reliability:90,performance:85,scalability:90,portability:80,complexity:40,migrationRisk:30},assumptions:["Qualified capacity remains available."]},{id:"candidate-b",architectureId:"architecture-primary",bindingIds:r,satisfiedRequirementIds:["req-availability"],hardViolationIds:[],scores:{cost:60,reliability:80,performance:75,scalability:80,portability:70,complexity:50,migrationRisk:40},assumptions:["Manual scaling is acceptable."]},{id:"candidate-invalid",architectureId:"architecture-primary",bindingIds:r,satisfiedRequirementIds:["req-portability"],hardViolationIds:["req-availability"],scores:{cost:10,reliability:100,performance:100,scalability:100,portability:100,complexity:10,migrationRisk:10},assumptions:["Hard requirement is knowingly unmet."]}],comparisons:[{id:"comparison-primary",candidateIds:["candidate-a","candidate-b","candidate-invalid"],rejectedCandidateIds:["candidate-invalid"],paretoCandidateIds:["candidate-a"],selectedCandidateId:"candidate-a",rationale:"Candidate A dominates B after hard-violation rejection."}],adrs:[{id:"adr-primary",title:"Adopt portable regional service",status:"accepted",comparisonId:"comparison-primary",selectedCandidateId:"candidate-a",requirementIds:["req-availability","req-portability"],consequenceStatements:["Operate two regional failure domains."],decidedAt:"2026-08-03T00:00:00Z"}],infrastructurePlans:[{id:"plan-primary",adrId:"adr-primary",architectureId:"architecture-primary",candidateId:"candidate-a",steps:[{id:"step-bind",sequence:1,action:"Realize approved logical bindings.",bindingIds:r,prerequisiteStepIds:[],evidenceRefs:["evidence-plan-review"]}],rollbackPlanRef:"rollback:plan-primary",approvalRequirementIds:["approval-architecture-owner"]}],evolutionPlans:[],handoffPackets:[{id:"handoff-primary",infrastructurePlanId:"plan-primary",recipientRef:"workflow:infra-implementation",contractDigest:n,artifactRefs:["artifact:plan-primary"],requiredEvidenceRefs:["evidence:implementation-receipt"],issuedAt:"2026-08-03T01:00:00Z",expiresAt:"2026-08-10T01:00:00Z",containsCredentials:!1}],handoffReceipts:[{id:"receipt-primary",packetId:"handoff-primary",recipientRef:"workflow:infra-implementation",status:"accepted",receivedDigest:n,evidenceRefs:["evidence:receipt-primary"],receivedAt:"2026-08-03T01:05:00Z"}],unsatisfiableReports:[]};var a=["compute","database","cache","queue","object_storage","email","network","secrets","ci","observability"],t=a.map((e)=>`cap-${e}`),o=a.map((e)=>`binding-${e}`),l={id:"intent-customer-api-v2",version:"2.0.0",goals:[{id:"goal-resilience",statement:"Keep the customer API available through regional faults.",priority:"critical",requirementIds:["req-availability","req-portability"]}],requirements:[{id:"req-availability",goalId:"goal-resilience",category:"availability",description:"Monthly service availability",criticality:"hard",measure:"availability_percent",target:99.95,unit:"percent"},{id:"req-portability",goalId:"goal-resilience",category:"portability",description:"Retain replaceable infrastructure boundaries",criticality:"soft"}],workloadEnvelopes:[{id:"workload-primary",concurrentUsers:2000,requestsPerSecond:800,burstMultiplier:3,latencyP95Ms:250,availabilityPercent:99.95,dataVolumeGb:500,monthlyDataGrowthPercent:8,storageGb:750,monthlyEgressGb:2000,backgroundJobsPerHour:5000,rpoMinutes:5,rtoMinutes:30,regions:["eu-west","eu-central"],forecastMonths:24,annualTrafficGrowthPercent:40}],restrictions:[{id:"restriction-residency",requirementId:"req-availability",scopeIds:["architecture-primary"],kind:"residency",rule:"Customer data remains in approved EU regions.",severity:"hard",rationale:"Regulatory boundary"},{id:"restriction-cache",scopeIds:["architecture-primary"],kind:"technology",rule:"Cache may be temporarily omitted in preview.",severity:"soft",rationale:"Preview cost control"}],providerPolicies:[{id:"policy-neutral",allowedProviderClasses:["qualified-cloud"],deniedProviderClasses:["unqualified-cloud"],residencyRegions:["eu-west","eu-central"],portabilityMinimum:70,managedServicePosture:"prefer_managed",requiredCapabilities:["encryption-at-rest"],deniedCapabilities:["public-database"],nonWaivableRestrictionIds:["restriction-residency"]}],capabilities:a.map((e,i)=>({id:t[i],kind:e,purpose:`Provide ${e.replace("_"," ")} capability.`,requirementIds:["req-availability"],dependsOnCapabilityIds:i===0?[]:["cap-compute"]})),architectures:[{id:"architecture-primary",name:"Portable regional service",workloadEnvelopeId:"workload-primary",capabilityIds:t,restrictionIds:["restriction-residency","restriction-cache"]}],bindings:a.map((e,i)=>({id:o[i],architectureId:"architecture-primary",capabilityId:t[i],environmentId:"production-eu",targetClass:`managed-${e}`,providerClass:"qualified-cloud",region:"eu-west",evidenceRefs:[`evidence-${e}`]})),evolutionTriggers:[{id:"trigger-load",metric:"requests_per_second",operator:"gte",threshold:700,observationWindowMinutes:15,action:"replan"}],evolutionPolicies:[{id:"evolution-primary",architectureId:"architecture-primary",triggerIds:["trigger-load"],minimumReviewIntervalDays:30,allowedChangeKinds:["scale","rebind"],approvalRequirementIds:["approval-architecture-owner"]}],waivers:[{id:"waiver-preview",restrictionId:"restriction-cache",scope:{architectureIds:["architecture-primary"],environmentIds:["preview","development"]},reason:"Validate traffic assumptions before provisioning cache.",issuedAt:"2026-08-01T00:00:00Z",expiresAt:"2026-09-01T00:00:00Z",approvedByRef:"owner:platform"},{id:"waiver-development",restrictionId:"restriction-cache",scope:{architectureIds:["architecture-primary"],environmentIds:["development"]},reason:"Tightened child waiver for development only.",issuedAt:"2026-08-02T00:00:00Z",expiresAt:"2026-08-15T00:00:00Z",approvedByRef:"owner:platform",inheritedFromWaiverId:"waiver-preview"}],...s};export{l as infrastructureIntentV2Fixture};
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ /** Executable-neutral plan for realizing an accepted infrastructure decision. */
3
+ export declare const InfrastructurePlanSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ adrId: z.ZodString;
6
+ architectureId: z.ZodString;
7
+ candidateId: z.ZodString;
8
+ steps: z.ZodArray<z.ZodObject<{
9
+ id: z.ZodString;
10
+ sequence: z.ZodNumber;
11
+ action: z.ZodString;
12
+ bindingIds: z.ZodArray<z.ZodString>;
13
+ prerequisiteStepIds: z.ZodArray<z.ZodString>;
14
+ evidenceRefs: z.ZodArray<z.ZodString>;
15
+ }, z.core.$strict>>;
16
+ rollbackPlanRef: z.ZodString;
17
+ approvalRequirementIds: z.ZodArray<z.ZodString>;
18
+ }, z.core.$strict>;
19
+ export type InfrastructurePlan = z.infer<typeof InfrastructurePlanSchema>;
20
+ /** Planned transition between accepted architecture decisions. */
21
+ export declare const ArchitectureEvolutionPlanSchema: z.ZodObject<{
22
+ id: z.ZodString;
23
+ evolutionPolicyId: z.ZodString;
24
+ triggerId: z.ZodString;
25
+ fromAdrId: z.ZodString;
26
+ toAdrId: z.ZodString;
27
+ infrastructurePlanId: z.ZodString;
28
+ migrationRisk: z.ZodEnum<{
29
+ critical: "critical";
30
+ high: "high";
31
+ low: "low";
32
+ medium: "medium";
33
+ }>;
34
+ continuityRequirementIds: z.ZodArray<z.ZodString>;
35
+ }, z.core.$strict>;
36
+ export type ArchitectureEvolutionPlan = z.infer<typeof ArchitectureEvolutionPlanSchema>;
37
+ /** Redacted handoff from planning into an authorized implementation system. */
38
+ export declare const InfrastructureHandoffPacketSchema: z.ZodObject<{
39
+ id: z.ZodString;
40
+ infrastructurePlanId: z.ZodString;
41
+ recipientRef: z.ZodString;
42
+ contractDigest: z.ZodString;
43
+ artifactRefs: z.ZodArray<z.ZodString>;
44
+ requiredEvidenceRefs: z.ZodArray<z.ZodString>;
45
+ issuedAt: z.ZodString;
46
+ expiresAt: z.ZodString;
47
+ containsCredentials: z.ZodLiteral<false>;
48
+ }, z.core.$strict>;
49
+ export type InfrastructureHandoffPacket = z.infer<typeof InfrastructureHandoffPacketSchema>;
50
+ /** Receipt acknowledging a handoff without claiming provider-side execution. */
51
+ export declare const InfrastructureHandoffReceiptSchema: z.ZodObject<{
52
+ id: z.ZodString;
53
+ packetId: z.ZodString;
54
+ recipientRef: z.ZodString;
55
+ status: z.ZodEnum<{
56
+ accepted: "accepted";
57
+ expired: "expired";
58
+ rejected: "rejected";
59
+ }>;
60
+ receivedDigest: z.ZodString;
61
+ evidenceRefs: z.ZodArray<z.ZodString>;
62
+ receivedAt: z.ZodString;
63
+ }, z.core.$strict>;
64
+ export type InfrastructureHandoffReceipt = z.infer<typeof InfrastructureHandoffReceiptSchema>;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{z as t}from"zod";var e=t.string().min(1),r=t.object({id:e,sequence:t.number().int().positive(),action:e,bindingIds:t.array(e),prerequisiteStepIds:t.array(e),evidenceRefs:t.array(e)}).strict(),i=t.object({id:e,adrId:e,architectureId:e,candidateId:e,steps:t.array(r).min(1),rollbackPlanRef:e,approvalRequirementIds:t.array(e)}).strict(),c=t.object({id:e,evolutionPolicyId:e,triggerId:e,fromAdrId:e,toAdrId:e,infrastructurePlanId:e,migrationRisk:t.enum(["low","medium","high","critical"]),continuityRequirementIds:t.array(e).min(1)}).strict(),n=t.object({id:e,infrastructurePlanId:e,recipientRef:e,contractDigest:t.string().regex(/^sha256:[a-f0-9]{64}$/),artifactRefs:t.array(e).min(1),requiredEvidenceRefs:t.array(e),issuedAt:t.string().datetime({offset:!0}),expiresAt:t.string().datetime({offset:!0}),containsCredentials:t.literal(!1)}).strict(),s=t.object({id:e,packetId:e,recipientRef:e,status:t.enum(["accepted","rejected","expired"]),receivedDigest:t.string().regex(/^sha256:[a-f0-9]{64}$/),evidenceRefs:t.array(e),receivedAt:t.string().datetime({offset:!0})}).strict();export{c as ArchitectureEvolutionPlanSchema,n as InfrastructureHandoffPacketSchema,s as InfrastructureHandoffReceiptSchema,i as InfrastructurePlanSchema};