@pennyfarthing/core 10.3.1 → 10.4.0

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 (46) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
  4. package/packages/core/dist/cli/commands/init.js +3 -0
  5. package/packages/core/dist/cli/commands/init.js.map +1 -1
  6. package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
  7. package/packages/core/dist/cli/commands/update.js +62 -122
  8. package/packages/core/dist/cli/commands/update.js.map +1 -1
  9. package/packages/core/dist/cli/commands/version-sentinel.test.d.ts +18 -0
  10. package/packages/core/dist/cli/commands/version-sentinel.test.d.ts.map +1 -0
  11. package/packages/core/dist/cli/commands/version-sentinel.test.js +120 -0
  12. package/packages/core/dist/cli/commands/version-sentinel.test.js.map +1 -0
  13. package/packages/core/dist/cli/utils/manifest.d.ts +1 -0
  14. package/packages/core/dist/cli/utils/manifest.d.ts.map +1 -1
  15. package/packages/core/dist/cli/utils/manifest.js.map +1 -1
  16. package/packages/core/dist/cli/utils/migrations.d.ts +88 -0
  17. package/packages/core/dist/cli/utils/migrations.d.ts.map +1 -0
  18. package/packages/core/dist/cli/utils/migrations.js +105 -0
  19. package/packages/core/dist/cli/utils/migrations.js.map +1 -0
  20. package/packages/core/dist/cli/utils/migrations.test.d.ts +23 -0
  21. package/packages/core/dist/cli/utils/migrations.test.d.ts.map +1 -0
  22. package/packages/core/dist/cli/utils/migrations.test.js +319 -0
  23. package/packages/core/dist/cli/utils/migrations.test.js.map +1 -0
  24. package/packages/core/dist/cli/utils/version-sentinel.d.ts +32 -0
  25. package/packages/core/dist/cli/utils/version-sentinel.d.ts.map +1 -0
  26. package/packages/core/dist/cli/utils/version-sentinel.js +49 -0
  27. package/packages/core/dist/cli/utils/version-sentinel.js.map +1 -0
  28. package/packages/core/dist/workflow/context-watch.d.ts +81 -0
  29. package/packages/core/dist/workflow/context-watch.d.ts.map +1 -0
  30. package/packages/core/dist/workflow/context-watch.js +236 -0
  31. package/packages/core/dist/workflow/context-watch.js.map +1 -0
  32. package/packages/core/dist/workflow/context-watch.test.d.ts +2 -0
  33. package/packages/core/dist/workflow/context-watch.test.d.ts.map +1 -0
  34. package/packages/core/dist/workflow/context-watch.test.js +747 -0
  35. package/packages/core/dist/workflow/context-watch.test.js.map +1 -0
  36. package/pennyfarthing-dist/agents/dev.md +47 -0
  37. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  38. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  39. package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.pyc +0 -0
  40. package/pennyfarthing_scripts/prime/version_sentinel.py +104 -0
  41. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  42. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  43. package/pennyfarthing_scripts/sprint/archive_epic.py +9 -1
  44. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  45. package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
  46. package/pennyfarthing_scripts/tests/test_version_sentinel.py +126 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-watch.test.js","sourceRoot":"","sources":["../../src/workflow/context-watch.test.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,53 @@ The simplest code that passes the tests IS the right code. Every abstraction you
17
17
  **Shipping beats perfection. Wire it up, make it work, move on.**
18
18
  </minimalist-discipline>
19
19
 
20
+ <critical>
21
+ ## Pre-Edit Topology Check
22
+
23
+ **Before editing ANY file, verify against repos.yaml topology loaded in your prime context.**
24
+
25
+ ### Rules
26
+
27
+ 1. **Check `never_edit` zones.** If the target path matches a `never_edit` glob, STOP. These are symlinks, build output, or dependencies.
28
+ 2. **Check repo ownership.** Match the target path against each repo's `owns` globs to confirm you're editing in the correct repo. Orchestrator files stay in the orchestrator repo; framework files go through `pennyfarthing/`.
29
+ 3. **Trace symlinks.** If a path is in the `symlinks` map, edit the **source** (right side), not the symlink (left side). Edits to symlink targets silently write to the wrong git repo.
30
+
31
+ ### Worked Examples
32
+
33
+ **Mistake 1: Editing a symlinked `.pennyfarthing/` path**
34
+ ```
35
+ BAD: Edit .pennyfarthing/agents/dev.md
36
+ → This is a symlink to pennyfarthing/pennyfarthing-dist/agents/dev.md
37
+ → Your edit lands in the pennyfarthing repo but you think you're in the orchestrator
38
+ FIX: Edit pennyfarthing/pennyfarthing-dist/agents/dev.md directly
39
+ WHY: repos.yaml symlinks: { .pennyfarthing/agents: pennyfarthing/pennyfarthing-dist/agents }
40
+ ```
41
+
42
+ **Mistake 2: Editing inside `node_modules/`**
43
+ ```
44
+ BAD: Edit node_modules/@pennyfarthing/core/pennyfarthing-dist/scripts/core/find-root.sh
45
+ → This gets overwritten on next install
46
+ FIX: Edit pennyfarthing/pennyfarthing-dist/scripts/core/find-root.sh, then rebuild
47
+ WHY: repos.yaml never_edit: [node_modules/**] (both repos)
48
+ ```
49
+
50
+ **Mistake 3: Editing the wrong repo's files**
51
+ ```
52
+ BAD: From pennyfarthing repo, edit sprint/current-sprint.yaml
53
+ → sprint/** is owned by the orchestrator repo
54
+ FIX: Switch to the orchestrator repo root, then edit sprint/current-sprint.yaml
55
+ WHY: repos.yaml orchestrator.owns: [sprint/**], not pennyfarthing.owns
56
+ ```
57
+
58
+ **Mistake 4: Editing build output**
59
+ ```
60
+ BAD: Edit packages/cyclist/dist/index.js
61
+ → Build artifacts are regenerated and your changes are lost
62
+ FIX: Edit packages/cyclist/src/index.ts, then run pnpm build
63
+ WHY: repos.yaml never_edit: [packages/*/dist/**]
64
+ ```
65
+ </critical>
66
+
20
67
  <critical>
21
68
  **HANDOFF REQUIRES MARKER OUTPUT.** After `handoff` subagent returns:
22
69
  Run `handoff-marker.sh {next_agent}` as ABSOLUTE LAST ACTION, output result, EXIT.
@@ -0,0 +1,104 @@
1
+ """Version sentinel detection for auto-update in prime.
2
+
3
+ MSSCI-14698: Reads .pennyfarthing/.installed-version sentinel and compares
4
+ against current package version. On mismatch, signals that auto-update
5
+ is needed.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import json
11
+ from dataclasses import dataclass
12
+ from pathlib import Path
13
+
14
+
15
+ SENTINEL_FILENAME = ".installed-version"
16
+
17
+
18
+ @dataclass
19
+ class VersionCheckResult:
20
+ """Result of version mismatch check."""
21
+
22
+ needs_update: bool
23
+ installed_version: str | None
24
+ package_version: str
25
+
26
+
27
+ def read_sentinel_version(project_root: Path) -> str | None:
28
+ """Read version from .pennyfarthing/.installed-version sentinel.
29
+
30
+ Args:
31
+ project_root: Project root directory
32
+
33
+ Returns:
34
+ Version string, or None if sentinel doesn't exist or is empty
35
+ """
36
+ sentinel_path = project_root / ".pennyfarthing" / SENTINEL_FILENAME
37
+
38
+ if not sentinel_path.exists():
39
+ return None
40
+
41
+ content = sentinel_path.read_text().strip()
42
+ return content or None
43
+
44
+
45
+ def get_package_version(project_root: Path) -> str:
46
+ """Get the current package version from VERSION file or package.json.
47
+
48
+ Checks VERSION file first (plain text), then falls back to package.json.
49
+
50
+ Args:
51
+ project_root: Project root directory
52
+
53
+ Returns:
54
+ Version string
55
+
56
+ Raises:
57
+ FileNotFoundError: If no version source found
58
+ """
59
+ # Try VERSION file first
60
+ version_file = project_root / "VERSION"
61
+ if version_file.exists():
62
+ version = version_file.read_text().strip()
63
+ if version:
64
+ return version
65
+
66
+ # Fall back to package.json
67
+ package_json = project_root / "package.json"
68
+ if package_json.exists():
69
+ data = json.loads(package_json.read_text())
70
+ version = data.get("version", "")
71
+ if version:
72
+ return version
73
+
74
+ raise FileNotFoundError(
75
+ f"No VERSION file or package.json found in {project_root}"
76
+ )
77
+
78
+
79
+ def check_version_mismatch(
80
+ project_root: Path,
81
+ *,
82
+ package_version: str | None = None,
83
+ ) -> VersionCheckResult:
84
+ """Compare sentinel version against package version.
85
+
86
+ Args:
87
+ project_root: Project root directory
88
+ package_version: Override package version (for testing).
89
+ If None, reads from VERSION file.
90
+
91
+ Returns:
92
+ VersionCheckResult with needs_update flag
93
+ """
94
+ if package_version is None:
95
+ package_version = get_package_version(project_root)
96
+
97
+ installed = read_sentinel_version(project_root)
98
+ needs_update = installed != package_version
99
+
100
+ return VersionCheckResult(
101
+ needs_update=needs_update,
102
+ installed_version=installed,
103
+ package_version=package_version,
104
+ )
@@ -65,7 +65,11 @@ def ensure_archive_file(project_root: Path | None = None) -> Path:
65
65
 
66
66
  sprint_name = sprint_info.get("jira_sprint_name", "Unknown Sprint")
67
67
  sprint_id = sprint_info.get("jira_sprint_id", "")
68
+ sprint_number = sprint_info.get("number", "")
68
69
  goal = sprint_info.get("goal", "")
70
+ start_date = sprint_info.get("start_date", "")
71
+ end_date = sprint_info.get("end_date", "")
72
+ status = sprint_info.get("status", "active")
69
73
 
70
74
  template = f"""# Sprint {sprint_name} - Completed Work
71
75
  # Jira Sprint ID: {sprint_id}
@@ -73,9 +77,13 @@ def ensure_archive_file(project_root: Path | None = None) -> Path:
73
77
 
74
78
  sprint:
75
79
  name: "{sprint_name}"
80
+ number: {sprint_number}
76
81
  jira_sprint_id: {sprint_id}
77
82
  jira_sprint_name: "{sprint_name}"
78
83
  goal: {goal}
84
+ start_date: {start_date}
85
+ end_date: {end_date}
86
+ status: {status}
79
87
 
80
88
  completed_epics:
81
89
  # Epic shard files live in sprint/archive/epic-{{ref}}.yaml
@@ -183,7 +191,7 @@ def is_epic_complete(epic: dict[str, Any]) -> tuple[bool, list[str]]:
183
191
  incomplete = []
184
192
  for story in stories:
185
193
  story_status = story.get("status", "backlog")
186
- if story_status not in ("done", "completed", "cancelled"):
194
+ if story_status not in ("done", "completed", "canceled", "cancelled"):
187
195
  incomplete.append(story.get("id", "unknown"))
188
196
 
189
197
  return len(incomplete) == 0, incomplete
@@ -0,0 +1,126 @@
1
+ """Tests for MSSCI-14698: Version sentinel detection in prime.
2
+
3
+ Story 98-1: pf agent start (prime) compares .pennyfarthing/.installed-version
4
+ sentinel against package version. On mismatch, triggers auto-update.
5
+
6
+ Acceptance Criteria tested here:
7
+ - AC3: pf agent start (prime) compares sentinel version against package version
8
+ - AC4: On version mismatch, auto-runs pennyfarthing update --auto
9
+ - AC6: Missing sentinel file treated as version mismatch (triggers update)
10
+
11
+ (AC1, AC2, AC5 tested in TypeScript: packages/core/src/cli/commands/version-sentinel.test.ts)
12
+ """
13
+
14
+ from pathlib import Path
15
+ from unittest.mock import patch, MagicMock
16
+
17
+ import pytest
18
+
19
+ # Module to be implemented
20
+ from pennyfarthing_scripts.prime.version_sentinel import (
21
+ read_sentinel_version,
22
+ get_package_version,
23
+ check_version_mismatch,
24
+ )
25
+
26
+
27
+ class TestReadSentinelVersion:
28
+ """Tests for reading the sentinel file."""
29
+
30
+ def test_reads_version_from_sentinel_file(self, tmp_path: Path) -> None:
31
+ """AC3: Should read version from .pennyfarthing/.installed-version."""
32
+ pf_dir = tmp_path / ".pennyfarthing"
33
+ pf_dir.mkdir()
34
+ sentinel = pf_dir / ".installed-version"
35
+ sentinel.write_text("10.3.1\n")
36
+
37
+ version = read_sentinel_version(tmp_path)
38
+ assert version == "10.3.1"
39
+
40
+ def test_returns_none_when_sentinel_missing(self, tmp_path: Path) -> None:
41
+ """AC6: Missing sentinel file should return None."""
42
+ pf_dir = tmp_path / ".pennyfarthing"
43
+ pf_dir.mkdir()
44
+ # No .installed-version file
45
+
46
+ version = read_sentinel_version(tmp_path)
47
+ assert version is None
48
+
49
+ def test_returns_none_when_pennyfarthing_dir_missing(self, tmp_path: Path) -> None:
50
+ """AC6: Missing .pennyfarthing/ directory should return None."""
51
+ version = read_sentinel_version(tmp_path)
52
+ assert version is None
53
+
54
+ def test_trims_whitespace(self, tmp_path: Path) -> None:
55
+ """Should handle extra whitespace in sentinel file."""
56
+ pf_dir = tmp_path / ".pennyfarthing"
57
+ pf_dir.mkdir()
58
+ sentinel = pf_dir / ".installed-version"
59
+ sentinel.write_text(" 10.3.1 \n")
60
+
61
+ version = read_sentinel_version(tmp_path)
62
+ assert version == "10.3.1"
63
+
64
+ def test_returns_none_for_empty_file(self, tmp_path: Path) -> None:
65
+ """Should return None for empty sentinel file."""
66
+ pf_dir = tmp_path / ".pennyfarthing"
67
+ pf_dir.mkdir()
68
+ sentinel = pf_dir / ".installed-version"
69
+ sentinel.write_text("")
70
+
71
+ version = read_sentinel_version(tmp_path)
72
+ assert version is None
73
+
74
+
75
+ class TestCheckVersionMismatch:
76
+ """Tests for version comparison and auto-update triggering."""
77
+
78
+ def test_no_mismatch_when_versions_match(self, tmp_path: Path) -> None:
79
+ """AC3: No mismatch when sentinel matches package version."""
80
+ pf_dir = tmp_path / ".pennyfarthing"
81
+ pf_dir.mkdir()
82
+ sentinel = pf_dir / ".installed-version"
83
+ sentinel.write_text("10.3.1\n")
84
+
85
+ result = check_version_mismatch(tmp_path, package_version="10.3.1")
86
+ assert result.needs_update is False
87
+
88
+ def test_mismatch_when_versions_differ(self, tmp_path: Path) -> None:
89
+ """AC3/AC4: Mismatch when sentinel differs from package version."""
90
+ pf_dir = tmp_path / ".pennyfarthing"
91
+ pf_dir.mkdir()
92
+ sentinel = pf_dir / ".installed-version"
93
+ sentinel.write_text("10.2.0\n")
94
+
95
+ result = check_version_mismatch(tmp_path, package_version="10.3.1")
96
+ assert result.needs_update is True
97
+ assert result.installed_version == "10.2.0"
98
+ assert result.package_version == "10.3.1"
99
+
100
+ def test_mismatch_when_sentinel_missing(self, tmp_path: Path) -> None:
101
+ """AC6: Missing sentinel file treated as version mismatch."""
102
+ pf_dir = tmp_path / ".pennyfarthing"
103
+ pf_dir.mkdir()
104
+ # No sentinel file
105
+
106
+ result = check_version_mismatch(tmp_path, package_version="10.3.1")
107
+ assert result.needs_update is True
108
+ assert result.installed_version is None
109
+
110
+ def test_mismatch_when_pennyfarthing_dir_missing(self, tmp_path: Path) -> None:
111
+ """AC6: Missing .pennyfarthing/ directory treated as mismatch."""
112
+ result = check_version_mismatch(tmp_path, package_version="10.3.1")
113
+ assert result.needs_update is True
114
+ assert result.installed_version is None
115
+
116
+ def test_result_includes_both_versions(self, tmp_path: Path) -> None:
117
+ """Result should include both installed and package version for reporting."""
118
+ pf_dir = tmp_path / ".pennyfarthing"
119
+ pf_dir.mkdir()
120
+ sentinel = pf_dir / ".installed-version"
121
+ sentinel.write_text("10.2.0\n")
122
+
123
+ result = check_version_mismatch(tmp_path, package_version="10.3.1")
124
+ assert result.installed_version == "10.2.0"
125
+ assert result.package_version == "10.3.1"
126
+ assert result.needs_update is True