lee-spec-kit 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7724,6 +7724,14 @@ async function resolveLocalIntegrationContext(config, feature) {
7724
7724
  const squashCommitMatchesSource = completionStrategy === "local-squash" && state?.strategy === "local-squash" && !!featureTip && state.featureTip === featureTip && !!integratedCommit && !!baseTip && integratedCommit === baseTip && !!featureTree && integratedTree === featureTree && state.integratedTree === featureTree;
7725
7725
  const squashEvidencePresent = !!featureTip && evidenceTip === featureTip;
7726
7726
  const squashIntegrationComplete = squashCommitMatchesSource && squashEvidencePresent;
7727
+ const recordedStrategy = state?.strategy || "local-ff";
7728
+ const recordedIntegratedCommit = state?.integratedCommit || state?.mergedBaseTip || null;
7729
+ const baseContainsRecordedIntegration = !!recordedIntegratedCommit && isAncestor(
7730
+ projectRoot,
7731
+ recordedIntegratedCommit,
7732
+ `refs/heads/${baseBranch}`
7733
+ );
7734
+ const cleanedIntegrationStillValid = state?.status === "cleaned" && recordedStrategy === completionStrategy && state.featureTip === featureTip && baseContainsRecordedIntegration && (completionStrategy === "local-squash" ? state.integratedCommit === recordedIntegratedCommit && state.integratedTree === featureTree && squashEvidencePresent : state.mergedBaseTip === featureTip && baseContainsFeature);
7727
7735
  return {
7728
7736
  projectRoot,
7729
7737
  featureWorktree: effectiveFeatureWorktree,
@@ -7738,6 +7746,7 @@ async function resolveLocalIntegrationContext(config, feature) {
7738
7746
  completionStrategy,
7739
7747
  baseContainsFeature,
7740
7748
  integrationComplete: completionStrategy === "local-squash" ? squashIntegrationComplete : !!featureTip && baseTip === featureTip,
7749
+ cleanedIntegrationStillValid,
7741
7750
  evidenceRef,
7742
7751
  squashCommitMatchesSource,
7743
7752
  squashEvidencePresent,
@@ -9231,6 +9240,19 @@ Task commit boundary warning: ${describeTaskCommitGateFailure(committedTaskGate)
9231
9240
  const localState = await resolveLocalIntegrationContext(config, feature);
9232
9241
  const localVerifyCommand = `npx lee-spec-kit local verify ${buildFeatureArgs(feature)} --json`;
9233
9242
  const localMergeBaseCommand = `npx lee-spec-kit local merge ${buildFeatureArgs(feature)} --json`;
9243
+ if (localState.cleanedIntegrationStillValid) {
9244
+ return {
9245
+ status: "ok",
9246
+ reasonCode: "WORKFLOW_STAGE_RESOLVED",
9247
+ docsDir: config.docsDir,
9248
+ featureRef: buildFeatureRef(feature),
9249
+ stage: "done",
9250
+ nextAction: null,
9251
+ approvalRequired: false,
9252
+ implementationAllowed: false,
9253
+ blockedReasonCode: null
9254
+ };
9255
+ }
9234
9256
  if (!localState.integrationComplete) {
9235
9257
  const featureVerified = !!localState.state && ["feature_verified", "merged", "verified", "cleaned"].includes(
9236
9258
  localState.state.status