@hallucination-studio/harness-engine 1.0.0-beta.17.412ec6e → 1.0.0-beta.18.ab4b55a

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hallucination-studio/harness-engine",
3
- "version": "1.0.0-beta.17.412ec6e",
3
+ "version": "1.0.0-beta.18.ab4b55a",
4
4
  "description": "Install the harness-engine Codex skill for initializing and reconciling advanced repository harness docs.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1516,6 +1516,12 @@ def test_plan_close_moves_sidecar_and_rejects_stale_score(tmp_root):
1516
1516
  completed_check = run_manager("check", "--repo", str(repo))
1517
1517
  if completed_check["status"] != "pass":
1518
1518
  raise AssertionError("completed structured plan should satisfy check")
1519
+ sidecar_before_check = completed_sidecar.read_text()
1520
+ second_completed_check = run_manager("check", "--repo", str(repo))
1521
+ if second_completed_check["status"] != "pass":
1522
+ raise AssertionError("repeated completed-plan check should still pass")
1523
+ if completed_sidecar.read_text() != sidecar_before_check:
1524
+ raise AssertionError("check should not rewrite unchanged completed plan sidecars or bump updated_at")
1519
1525
 
1520
1526
 
1521
1527
  def test_evidence_prune_generated_artifacts(tmp_root):
@@ -172,19 +172,22 @@ def sync_plan_markdown_from_state(plan_path, state):
172
172
  def sync_state_from_markdown(plan_path, state):
173
173
  from .knowledge import extract_defect_items, extract_knowledge_items, parse_defect_item, parse_knowledge_item
174
174
  text = plan_path.read_text()
175
- state["defects"] = []
175
+ defects = []
176
176
  for item in extract_defect_items(text):
177
177
  parsed = parse_defect_item(item)
178
178
  if parsed:
179
- state["defects"].append(parsed)
180
- state["knowledge_items"] = []
179
+ defects.append(parsed)
180
+ knowledge_items = []
181
181
  for item in extract_knowledge_items(text):
182
182
  if item == DEFAULT_KNOWLEDGE_PLACEHOLDER:
183
183
  continue
184
184
  parsed = parse_knowledge_item(item)
185
185
  if parsed:
186
- state["knowledge_items"].append(parsed)
187
- save_plan_state(plan_path, state)
186
+ knowledge_items.append(parsed)
187
+ if state.get("defects") != defects or state.get("knowledge_items") != knowledge_items:
188
+ state["defects"] = defects
189
+ state["knowledge_items"] = knowledge_items
190
+ save_plan_state(plan_path, state)
188
191
  return state
189
192
 
190
193
 
@@ -625,4 +628,3 @@ def close_plan(repo, plan_relative_path, summary, force):
625
628
  update_workstreams_after_plan_close(repo, active_relative_path, completed_relative_path)
626
629
  return destination, open_items
627
630
 
628
-