@resolveio/server-lib 22.3.187 → 22.3.189

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.
@@ -202,10 +202,13 @@ export interface ResolveIOAICoderNextActionContract {
202
202
  workflowProofCheckpointStatus: string;
203
203
  failureClass: string;
204
204
  evidenceHash: string;
205
+ hotfixCommitRequired: boolean;
206
+ liveHotfixBlockedUntilCommit: boolean;
205
207
  };
206
208
  preconditions: string[];
207
209
  expectedStateTransition: string;
208
210
  successEvidence: string[];
211
+ requiredHotfixCommitProof: string[];
209
212
  stopConditions: string[];
210
213
  forbiddenActions: string[];
211
214
  nextCommands: string[];
@@ -1676,6 +1676,13 @@ function buildResolveIOAICoderNextActionContract(input) {
1676
1676
  var last = history[history.length - 1];
1677
1677
  var command = aicoderNextActionPrimaryCommand(input.action, workflowReadiness);
1678
1678
  var costRisk = aicoderNextActionCostRisk(input.action, command, workflowReadiness);
1679
+ var hotfixCommitRequired = command === 'repair_aicoder_release_gate'
1680
+ || workflowReadiness.releaseBlocked
1681
+ || workflowReadiness.nextGate === 'release';
1682
+ var liveHotfixBlockedUntilCommit = hotfixCommitRequired;
1683
+ var requiredHotfixCommitProof = hotfixCommitRequired
1684
+ ? ['sourceCommitSha', 'githubCommitUrl', 'gitCommitStatus=passed', 'gitPushStatus=passed']
1685
+ : [];
1679
1686
  var requiresHumanApproval = input.action === 'park'
1680
1687
  || input.action === 'budget_stop'
1681
1688
  || input.action === 'ready_to_publish'
@@ -1700,18 +1707,28 @@ function buildResolveIOAICoderNextActionContract(input) {
1700
1707
  && workflowProofCheckpoint.requiredEvidence.length > 0
1701
1708
  && workflowProofCheckpoint.nextAction.length > 0;
1702
1709
  var blockers = Array.from(new Set(__spreadArray(__spreadArray([], __read(workflowReadiness.blockers), false), __read((workflowProofCheckpoint.status === 'waiting_for_new_evidence' ? workflowProofCheckpoint.requiredResetEvidence : [])), false))).slice(0, 12);
1703
- var preconditions = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([
1710
+ var preconditions = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([
1704
1711
  workflowProofCheckpoint.nextAction
1705
- ], __read(workflowProofCheckpoint.requiredEvidence), false), __read((workflowReadiness.journeyContractReady ? [] : ['validated APP_JOURNEY_CONTRACT.md journey_contract JSON'])), false), __read((workflowReadiness.canRunWorkflowQa ? ['workflow QA rows generated from the journey contract'] : [])), false), __read((workflowReadiness.releaseBlocked ? ['release blocker artifact or hotfix-first release evidence'] : [])), false).map(function (entry) { return cleanText(entry, 300); }).filter(Boolean))).slice(0, 12);
1706
- var successEvidence = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(workflowProofCheckpoint.requiredEvidence), false), __read((workflowReadiness.businessProofReady ? ['retained AIQaBusinessAssertion artifact'] : [])), false), __read((workflowReadiness.canPublish ? ['release gate accepts the workflow-proven artifact'] : [])), false), __read((command === 'repair_aicoder_release_gate' ? ['hotfix evidence or explicit one-time force release decision'] : [])), false).map(function (entry) { return cleanText(entry, 300); }).filter(Boolean))).slice(0, 12);
1712
+ ], __read(workflowProofCheckpoint.requiredEvidence), false), __read((workflowReadiness.journeyContractReady ? [] : ['validated APP_JOURNEY_CONTRACT.md journey_contract JSON'])), false), __read((workflowReadiness.canRunWorkflowQa ? ['workflow QA rows generated from the journey contract'] : [])), false), __read((workflowReadiness.releaseBlocked ? ['release blocker artifact or hotfix-first release evidence'] : [])), false), __read((hotfixCommitRequired ? ['sourceCommitSha, githubCommitUrl, passed gitCommitStatus, and passed gitPushStatus before live hotfix apply'] : [])), false).map(function (entry) { return cleanText(entry, 300); }).filter(Boolean))).slice(0, 12);
1713
+ var successEvidence = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(workflowProofCheckpoint.requiredEvidence), false), __read((workflowReadiness.businessProofReady ? ['retained AIQaBusinessAssertion artifact'] : [])), false), __read((workflowReadiness.canPublish ? ['release gate accepts the workflow-proven artifact'] : [])), false), __read((command === 'repair_aicoder_release_gate' ? ['hotfix evidence or explicit one-time force release decision'] : [])), false), __read((hotfixCommitRequired ? ['GitHub commit and push proof for any manager-applied hotfix'] : [])), false).map(function (entry) { return cleanText(entry, 300); }).filter(Boolean))).slice(0, 12);
1707
1714
  var stopConditions = buildResolveIOAICoderNextActionStopConditions(workflowReadiness, command);
1708
- var forbiddenActions = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([
1715
+ if (hotfixCommitRequired) {
1716
+ stopConditions.push('Do not apply a live AICoder backend/static hotfix until sourceCommitSha, githubCommitUrl, passed gitCommitStatus, and passed gitPushStatus are recorded.');
1717
+ }
1718
+ var forbiddenActions = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([
1709
1719
  'accepting route-only proof as app success',
1710
1720
  'accepting scorecard-only or wow-score-only proof as app success'
1711
- ], __read((workflowReadiness.journeyContractReady ? [] : ['building product routes before the journey contract validates'])), false), __read((workflowReadiness.businessProofReady ? [] : ['publishing before north-star workflow business proof passes'])), false), __read((workflowReadiness.releaseBlocked ? ['rerunning full deploy/publish without changed release evidence'] : [])), false), __read((workflowReadiness.sameFailureParked ? ['retrying the same repair loop without new evidence'] : [])), false))).slice(0, 12);
1721
+ ], __read((workflowReadiness.journeyContractReady ? [] : ['building product routes before the journey contract validates'])), false), __read((workflowReadiness.businessProofReady ? [] : ['publishing before north-star workflow business proof passes'])), false), __read((workflowReadiness.releaseBlocked ? ['rerunning full deploy/publish without changed release evidence'] : [])), false), __read((hotfixCommitRequired ? ['applying live hotfix before pushed GitHub commit proof'] : [])), false), __read((workflowReadiness.sameFailureParked ? ['retrying the same repair loop without new evidence'] : [])), false))).slice(0, 12);
1712
1722
  var nextCommands = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([
1713
1723
  command
1714
- ], __read((command === 'repair_aicoder_journey_contract' ? ['validate_aicoder_journey_contract', 'generate_workflow_qa_rows'] : [])), false), __read((command === 'run_aicoder_workflow_qa' ? ['execute_contract_qa_assertions', 'record_aiqa_business_assertion'] : [])), false), __read((command === 'repair_aicoder_release_gate' ? ['collect_release_blocker_evidence', 'prefer_hotfix_before_full_deploy'] : [])), false), __read((command === 'repair_aicoder_compile_gate' ? ['rerun_compile_gate_only', 'record_compile_evidence_hash'] : [])), false), __read((command === 'repair_aicoder_infra_gate' ? ['rerun_preflight_gate_only', 'record_infra_evidence_hash'] : [])), false), [
1724
+ ], __read((command === 'repair_aicoder_journey_contract' ? ['validate_aicoder_journey_contract', 'generate_workflow_qa_rows'] : [])), false), __read((command === 'run_aicoder_workflow_qa' ? ['execute_contract_qa_assertions', 'record_aiqa_business_assertion'] : [])), false), __read((command === 'repair_aicoder_release_gate' ? [
1725
+ 'collect_release_blocker_evidence',
1726
+ 'prefer_hotfix_before_full_deploy',
1727
+ 'prepare_hotfix_patch_without_live_apply',
1728
+ 'commit_and_push_hotfix_to_github',
1729
+ 'record_github_commit_for_hotfix',
1730
+ 'apply_live_hotfix_only_after_github_commit_proof'
1731
+ ] : [])), false), __read((command === 'repair_aicoder_compile_gate' ? ['rerun_compile_gate_only', 'record_compile_evidence_hash'] : [])), false), __read((command === 'repair_aicoder_infra_gate' ? ['rerun_preflight_gate_only', 'record_infra_evidence_hash'] : [])), false), [
1715
1732
  'record_aicoder_next_action_result'
1716
1733
  ], false))).slice(0, 12);
1717
1734
  var contractBasis = {
@@ -1761,11 +1778,14 @@ function buildResolveIOAICoderNextActionContract(input) {
1761
1778
  workflowReadinessStatus: workflowReadiness.status,
1762
1779
  workflowProofCheckpointStatus: workflowProofCheckpoint.status,
1763
1780
  failureClass: contractBasis.failureClass,
1764
- evidenceHash: cleanText((last === null || last === void 0 ? void 0 : last.evidenceHash) || contractBasis.evidenceHash, 160)
1781
+ evidenceHash: cleanText((last === null || last === void 0 ? void 0 : last.evidenceHash) || contractBasis.evidenceHash, 160),
1782
+ hotfixCommitRequired: hotfixCommitRequired,
1783
+ liveHotfixBlockedUntilCommit: liveHotfixBlockedUntilCommit
1765
1784
  },
1766
1785
  preconditions: preconditions,
1767
1786
  expectedStateTransition: aicoderNextActionExpectedTransition(command),
1768
1787
  successEvidence: successEvidence,
1788
+ requiredHotfixCommitProof: requiredHotfixCommitProof,
1769
1789
  stopConditions: stopConditions,
1770
1790
  forbiddenActions: forbiddenActions,
1771
1791
  nextCommands: nextCommands,