scar-cli 0.6.0__tar.gz → 0.6.1__tar.gz

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 (84) hide show
  1. {scar_cli-0.6.0 → scar_cli-0.6.1}/.github/workflows/release.yml +4 -1
  2. scar_cli-0.6.1/.release-please-manifest.json +3 -0
  3. {scar_cli-0.6.0 → scar_cli-0.6.1}/CHANGELOG.md +7 -0
  4. {scar_cli-0.6.0 → scar_cli-0.6.1}/PKG-INFO +1 -1
  5. scar_cli-0.6.1/plugin/plugin.json +41 -0
  6. {scar_cli-0.6.0 → scar_cli-0.6.1}/pyproject.toml +1 -1
  7. scar_cli-0.6.1/release-please-config.json +15 -0
  8. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_plugin.py +14 -0
  9. {scar_cli-0.6.0 → scar_cli-0.6.1}/uv.lock +1 -1
  10. scar_cli-0.6.0/plugin/plugin.json +0 -29
  11. {scar_cli-0.6.0 → scar_cli-0.6.1}/.claude-plugin/marketplace.json +0 -0
  12. {scar_cli-0.6.0 → scar_cli-0.6.1}/.github/workflows/ci.yml +0 -0
  13. {scar_cli-0.6.0 → scar_cli-0.6.1}/.github/workflows/pr-validation.yml +0 -0
  14. {scar_cli-0.6.0 → scar_cli-0.6.1}/.gitignore +0 -0
  15. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0001-git-grep-ere-pitfalls.landmine.md +0 -0
  16. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0002-agent-direct-hook-install.deadend.md +0 -0
  17. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0003-installer-binds-to-active-venv-scar.landmine.md +0 -0
  18. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0004-promote-roundtrip-drops-expires-evidence.landmine.md +0 -0
  19. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0005-history-rewrite-orphans-commit-evidence.landmine.md +0 -0
  20. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0006-yaml-pattern-anchor-over-escaping.landmine.md +0 -0
  21. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/README.md +0 -0
  22. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/candidates/fp-log.txt +0 -0
  23. {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/template.md +0 -0
  24. {scar_cli-0.6.0 → scar_cli-0.6.1}/AGENTS.md +0 -0
  25. {scar_cli-0.6.0 → scar_cli-0.6.1}/CONTRIBUTING.md +0 -0
  26. {scar_cli-0.6.0 → scar_cli-0.6.1}/IDEA.md +0 -0
  27. {scar_cli-0.6.0 → scar_cli-0.6.1}/LICENSE +0 -0
  28. {scar_cli-0.6.0 → scar_cli-0.6.1}/README.md +0 -0
  29. {scar_cli-0.6.0 → scar_cli-0.6.1}/ROADMAP.md +0 -0
  30. {scar_cli-0.6.0 → scar_cli-0.6.1}/SCAR-FORMAT.md +0 -0
  31. {scar_cli-0.6.0 → scar_cli-0.6.1}/SPEC.md +0 -0
  32. {scar_cli-0.6.0 → scar_cli-0.6.1}/STRESS-TEST.md +0 -0
  33. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/PROTOCOL.md +0 -0
  34. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/RESULTS.md +0 -0
  35. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/long_replay.py +0 -0
  36. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/replay.py +0 -0
  37. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/auto-authorship/FINDINGS.md +0 -0
  38. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/auto-authorship/PROTOCOL.md +0 -0
  39. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/.gitignore +0 -0
  40. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/PROTOCOL.md +0 -0
  41. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/RESULTS.md +0 -0
  42. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/.scars/0001-vendor-retry-window.fence.md +0 -0
  43. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/.scars/0002-evicting-session-store.deadend.md +0 -0
  44. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/.scars/0003-export-column-order.landmine.md +0 -0
  45. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/README.md +0 -0
  46. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/payments/retry.py +0 -0
  47. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/reports/export.py +0 -0
  48. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/services/sessions.py +0 -0
  49. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/grade.py +0 -0
  50. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/harvest/PROTOCOL.md +0 -0
  51. {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/harvest/harvest.py +0 -0
  52. {scar_cli-0.6.0 → scar_cli-0.6.1}/hook/scar-hooks.py +0 -0
  53. {scar_cli-0.6.0 → scar_cli-0.6.1}/plugin/skills/scar-authoring/SKILL.md +0 -0
  54. {scar_cli-0.6.0 → scar_cli-0.6.1}/plugin/skills/scar-authoring/assets/template.md +0 -0
  55. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/__init__.py +0 -0
  56. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/agent.py +0 -0
  57. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/cli.py +0 -0
  58. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/evidence.py +0 -0
  59. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/harvest.py +0 -0
  60. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/hooks.py +0 -0
  61. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/installer.py +0 -0
  62. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/lint.py +0 -0
  63. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/match.py +0 -0
  64. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/mcp.py +0 -0
  65. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/model.py +0 -0
  66. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/orphan.py +0 -0
  67. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/render.py +0 -0
  68. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/skills/scar-authoring/SKILL.md +0 -0
  69. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/skills/scar-authoring/assets/template.md +0 -0
  70. {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/store.py +0 -0
  71. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_cli.py +0 -0
  72. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_docs.py +0 -0
  73. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_evidence.py +0 -0
  74. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_harvest.py +0 -0
  75. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_hooks.py +0 -0
  76. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_installer.py +0 -0
  77. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_lifecycle.py +0 -0
  78. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_lint.py +0 -0
  79. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_match.py +0 -0
  80. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_mcp.py +0 -0
  81. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_model.py +0 -0
  82. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_orphan.py +0 -0
  83. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_skill.py +0 -0
  84. {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_store.py +0 -0
@@ -19,7 +19,10 @@ jobs:
19
19
  - id: rp
20
20
  uses: googleapis/release-please-action@v4
21
21
  with:
22
- release-type: python
22
+ # config-file + manifest replace the inline release-type so extra-files
23
+ # can keep plugin/plugin.json's version in lock-step with pyproject (#62).
24
+ config-file: release-please-config.json
25
+ manifest-file: .release-please-manifest.json
23
26
 
24
27
  publish:
25
28
  needs: release-please
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.6.1"
3
+ }
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.1](https://github.com/Daily-Nerd/Scar/compare/v0.6.0...v0.6.1) (2026-06-26)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **plugin:** sync plugin.json + uv.lock to 0.6.0 + drift guard ([#63](https://github.com/Daily-Nerd/Scar/issues/63)) ([fe21ed6](https://github.com/Daily-Nerd/Scar/commit/fe21ed6046ea4cabc8abd2ca681e85d02991be6a))
9
+
3
10
  ## [0.6.0](https://github.com/Daily-Nerd/Scar/compare/v0.5.0...v0.6.0) (2026-06-26)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scar-cli
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: SCAR — version control for negative knowledge (deadends, fences, landmines)
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "scar",
3
+ "version": "0.6.1",
4
+ "description": "SCAR — version control for negative knowledge (deadends, fences, landmines)",
5
+ "hooks": {
6
+ "PreToolUse": [
7
+ {
8
+ "matcher": "Edit|Write|MultiEdit|NotebookEdit",
9
+ "hooks": [
10
+ {
11
+ "type": "command",
12
+ "command": "scar hook precheck",
13
+ "timeout": 10
14
+ }
15
+ ]
16
+ }
17
+ ],
18
+ "SessionStart": [
19
+ {
20
+ "hooks": [
21
+ {
22
+ "type": "command",
23
+ "command": "scar hook session-notice",
24
+ "timeout": 10
25
+ }
26
+ ]
27
+ }
28
+ ],
29
+ "Stop": [
30
+ {
31
+ "hooks": [
32
+ {
33
+ "type": "command",
34
+ "command": "scar hook stop-drafter",
35
+ "timeout": 15
36
+ }
37
+ ]
38
+ }
39
+ ]
40
+ }
41
+ }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "scar-cli"
3
- version = "0.6.0"
3
+ version = "0.6.1"
4
4
  description = "SCAR — version control for negative knowledge (deadends, fences, landmines)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "packages": {
4
+ ".": {
5
+ "release-type": "python",
6
+ "extra-files": [
7
+ {
8
+ "type": "json",
9
+ "path": "plugin/plugin.json",
10
+ "jsonpath": "$.version"
11
+ }
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -1,11 +1,25 @@
1
1
  """Claude Code plugin manifest validity + skill mirror drift guard."""
2
2
 
3
3
  import json
4
+ import re
4
5
  from pathlib import Path
5
6
 
6
7
  ROOT = Path(__file__).parent.parent
7
8
 
8
9
 
10
+ def test_plugin_version_matches_pyproject():
11
+ # plugin.json carries its own version; release-please bumps only pyproject,
12
+ # so the two silently drift unless guarded. Regex (not tomllib) keeps this
13
+ # stdlib-only and Python 3.10-safe.
14
+ pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8")
15
+ match = re.search(r'(?m)^version\s*=\s*"([^"]+)"', pyproject)
16
+ assert match, "version not found in pyproject.toml"
17
+ py_version = match.group(1)
18
+ plugin = json.loads((ROOT / "plugin" / "plugin.json").read_text(encoding="utf-8"))
19
+ assert plugin["version"] == py_version, (
20
+ f"plugin.json version {plugin['version']!r} != pyproject {py_version!r}")
21
+
22
+
9
23
  def test_plugin_manifest_is_valid_and_declares_three_hook_events():
10
24
  manifest = json.loads((ROOT / "plugin" / "plugin.json").read_text())
11
25
  assert manifest["name"] == "scar"
@@ -79,7 +79,7 @@ wheels = [
79
79
 
80
80
  [[package]]
81
81
  name = "scar-cli"
82
- version = "0.5.0"
82
+ version = "0.6.0"
83
83
  source = { editable = "." }
84
84
 
85
85
  [package.dev-dependencies]
@@ -1,29 +0,0 @@
1
- {
2
- "name": "scar",
3
- "version": "0.5.0",
4
- "description": "SCAR — version control for negative knowledge (deadends, fences, landmines)",
5
- "hooks": {
6
- "PreToolUse": [
7
- {
8
- "matcher": "Edit|Write|MultiEdit|NotebookEdit",
9
- "hooks": [
10
- { "type": "command", "command": "scar hook precheck", "timeout": 10 }
11
- ]
12
- }
13
- ],
14
- "SessionStart": [
15
- {
16
- "hooks": [
17
- { "type": "command", "command": "scar hook session-notice", "timeout": 10 }
18
- ]
19
- }
20
- ],
21
- "Stop": [
22
- {
23
- "hooks": [
24
- { "type": "command", "command": "scar hook stop-drafter", "timeout": 15 }
25
- ]
26
- }
27
- ]
28
- }
29
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes