devlyn-cli 4.3.31 → 4.3.33

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 (34) hide show
  1. package/README.md +4 -2
  2. package/bin/devlyn.js +109 -22
  3. package/bin/harness-activation.js +4 -1
  4. package/bin/harness-status.js +15 -8
  5. package/bin/skill-history.json +10 -0
  6. package/config/skills/_shared/bring-in.py +10 -0
  7. package/config/skills/_shared/task-complete.py +787 -87
  8. package/config/skills/_shared/task-completion.md +6 -6
  9. package/config/skills/_shared/warm-build-dirs.py +13 -0
  10. package/config/skills/devlyn-ideate/SKILL.md +3 -2
  11. package/config/skills/devlyn-ideate/references/loop.md +2 -2
  12. package/config/skills/devlyn-ideate/scripts/acceptance.py +11 -0
  13. package/config/skills/devlyn-ideate/scripts/queue.py +685 -10
  14. package/native/claude/.claude-plugin/plugin.json +1 -1
  15. package/native/claude/skills/_shared/bring-in.py +10 -0
  16. package/native/claude/skills/_shared/task-complete.py +787 -87
  17. package/native/claude/skills/_shared/task-completion.md +6 -6
  18. package/native/claude/skills/_shared/warm-build-dirs.py +13 -0
  19. package/native/claude/skills/devlyn-ideate/SKILL.md +3 -2
  20. package/native/claude/skills/devlyn-ideate/references/loop.md +2 -2
  21. package/native/claude/skills/devlyn-ideate/scripts/acceptance.py +11 -0
  22. package/native/claude/skills/devlyn-ideate/scripts/queue.py +685 -10
  23. package/native/codex/.agents/plugins/marketplace.json +1 -1
  24. package/native/codex/plugins/devlyn/.codex-plugin/plugin.json +1 -1
  25. package/native/codex/plugins/devlyn/skills/_shared/bring-in.py +10 -0
  26. package/native/codex/plugins/devlyn/skills/_shared/task-complete.py +787 -87
  27. package/native/codex/plugins/devlyn/skills/_shared/task-completion.md +6 -6
  28. package/native/codex/plugins/devlyn/skills/_shared/warm-build-dirs.py +13 -0
  29. package/native/codex/plugins/devlyn/skills/devlyn-ideate/SKILL.md +3 -2
  30. package/native/codex/plugins/devlyn/skills/devlyn-ideate/references/loop.md +2 -2
  31. package/native/codex/plugins/devlyn/skills/devlyn-ideate/scripts/acceptance.py +11 -0
  32. package/native/codex/plugins/devlyn/skills/devlyn-ideate/scripts/queue.py +685 -10
  33. package/package.json +1 -1
  34. package/release.json +35 -35
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devlyn",
3
- "version": "4.3.31",
3
+ "version": "4.3.33",
4
4
  "description": "Devlyn harness skills",
5
5
  "skills": "./skills/"
6
6
  }
@@ -363,6 +363,8 @@ class BringInTests(unittest.TestCase):
363
363
  self.env = {key: value for key, value in os.environ.items()
364
364
  if not key.startswith("GIT_")}
365
365
  self.env.update(GIT_CONFIG_NOSYSTEM="1", GIT_CONFIG_GLOBAL=str(self.root / "no-global"),
366
+ # A commit's detached automatic maintenance would still write into .git while a test copies it.
367
+ GIT_CONFIG_COUNT="1", GIT_CONFIG_KEY_0="maintenance.auto", GIT_CONFIG_VALUE_0="false",
366
368
  GIT_AUTHOR_NAME="Fixture", GIT_AUTHOR_EMAIL="fixture@example.invalid",
367
369
  GIT_COMMITTER_NAME="Fixture", GIT_COMMITTER_EMAIL="fixture@example.invalid",
368
370
  LC_ALL="C", GIT_EDITOR=":", GIT_MERGE_AUTOEDIT="no")
@@ -415,6 +417,14 @@ class BringInTests(unittest.TestCase):
415
417
  path.write_bytes(("#!/bin/sh\n" + body).encode("utf-8"))
416
418
  path.chmod(0o755)
417
419
 
420
+ def test_fixture_commit_starts_no_automatic_maintenance(self):
421
+ # Its detached child would still write .git/objects/maintenance.lock while copytree or cleanup reads the tree.
422
+ trace = self.root / "trace.json"
423
+ self.env["GIT_TRACE2_EVENT"] = str(trace)
424
+ self.commit("traced", "traced\n")
425
+ children = [line for line in trace.read_text(encoding="utf-8").splitlines() if '"event":"child_start"' in line]
426
+ self.assertEqual(children, [])
427
+
418
428
  def test_fast_forward_and_paths_with_spaces(self):
419
429
  self.cli()
420
430
  self.assertEqual(self.g("rev-parse", "HEAD").strip(), self.target)