harnessed 3.9.21 → 3.9.23

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/cli.mjs CHANGED
@@ -1231,7 +1231,7 @@ var init_auto_install = __esm({
1231
1231
 
1232
1232
  // package.json
1233
1233
  var package_default = {
1234
- version: "3.9.21"};
1234
+ version: "3.9.23"};
1235
1235
 
1236
1236
  // src/manifest/errors.ts
1237
1237
  function instancePathToKeyPath(instancePath) {
@@ -5056,10 +5056,13 @@ async function runMasterOrchestrator(masterName, context, packageRoot, spawnDriv
5056
5056
  reason: passes ? void 0 : `gate ${clause.gate} = false`
5057
5057
  });
5058
5058
  } catch (e) {
5059
+ console.warn(
5060
+ `\u26A0\uFE0F master ${masterName} sub ${clause.sub} gate ${clause.gate} eval failed (${e.message}); proceeding with sub as if gate fired=true (ADR 0029 fail-soft).`
5061
+ );
5059
5062
  gateEvalled.push({
5060
5063
  clause,
5061
- passes: false,
5062
- reason: `gate eval error: ${e.message}`
5064
+ passes: true,
5065
+ reason: `gate eval error (fail-soft fires=true): ${e.message}`
5063
5066
  });
5064
5067
  }
5065
5068
  }
@@ -5479,7 +5482,58 @@ function registerRun(program2) {
5479
5482
  const stage = name.includes("-") ? name.split("-")[0] ?? "" : name;
5480
5483
  const gateContext = {
5481
5484
  task,
5482
- phase: { stage, is_critical_module: true },
5485
+ phase: {
5486
+ stage,
5487
+ // verify-stage gates
5488
+ is_critical_module: true,
5489
+ // verify-paranoid fires
5490
+ is_final_step: true,
5491
+ // verify-simplify fires
5492
+ is_major_release: false,
5493
+ // verify-multispec only for major
5494
+ has_auth_or_secrets: false,
5495
+ has_design_changes: false,
5496
+ has_ui_changes: false,
5497
+ requires_creative_polish: false,
5498
+ // plan-stage gates
5499
+ is_complex_architecture: true,
5500
+ // plan-architecture fires
5501
+ // discuss-stage gates
5502
+ has_cross_phase_data_flow: true,
5503
+ // discuss-phase fires
5504
+ open_decisions: 2,
5505
+ // ≥2 fires phase-gate
5506
+ scope_days: 2,
5507
+ // >1 day fires phase-gate
5508
+ scope_locked_in_history: false,
5509
+ single_task: false,
5510
+ type: "general"
5511
+ },
5512
+ subtask: {
5513
+ // subtask brainstorming gate
5514
+ approaches: 2,
5515
+ // ≥2 fires
5516
+ core_algorithm: true,
5517
+ has_api_contract: true,
5518
+ error_cost: "high",
5519
+ lines: 50,
5520
+ // ≥20 → no skip
5521
+ type: "general",
5522
+ // not crud/standard_lib_call → no skip
5523
+ // tdd gate
5524
+ is_core_business_logic: true,
5525
+ is_algorithm: true,
5526
+ is_data_processing: true,
5527
+ regression_risk: "high",
5528
+ reliability_required: true,
5529
+ // misc
5530
+ communication_needed: false,
5531
+ needs_lib_docs: false,
5532
+ needs_web_search: false,
5533
+ parallel_count: 1,
5534
+ search_type: "general",
5535
+ test_type: "general"
5536
+ },
5483
5537
  ...raw.model ? { modelOverride: raw.model } : {},
5484
5538
  ...raw.maxIterations ? { maxIterations: raw.maxIterations } : {},
5485
5539
  ...raw.staged ? { staged: true } : {},