fixes on validate

This commit is contained in:
Nilton Constantino 2026-05-14 13:18:02 +01:00
parent 28f81a3af9
commit 23a093f9ab
No known key found for this signature in database
2 changed files with 46 additions and 0 deletions

View File

@ -89,6 +89,10 @@ def _record_id(errors: list[str], seen: set[str], identifier: str) -> None:
def _requires_file(discussion: dict, artifact: dict, kind: str) -> bool:
if kind == "lessons":
return True
if discussion.get("status") == "done":
return False
if artifact.get("status") == "done":
return False
if discussion.get("status") == "abandoned":
return artifact.get("status") != "abandoned"
return True

View File

@ -195,6 +195,48 @@ class CliTest(unittest.TestCase):
self.assertEqual(item["lessons"][0]["id"], "LSN-0001")
self.assertFalse((discussion / "workflow" / "agendas" / "AGD-0001-demo.md").exists())
def test_validate_allows_done_discussion_with_historical_workflow_entries(self) -> None:
with TempDir() as root:
main(["--root", str(root), "init"])
discussion = root / "discussion"
lesson = discussion / "lessons" / "DSC-0001-demo"
lesson.mkdir()
lesson_file = lesson / "LSN-0001-demo.md"
lesson_file.write_text("---\nid: LSN-0001\n---\n# Demo\n", encoding="utf-8")
records = [
{"type": "meta", "next_id": {"DSC": 2, "AGD": 2, "DEC": 2, "PLN": 2, "LSN": 2, "CLSN": 1}},
{
"type": "discussion",
"id": "DSC-0001",
"status": "done",
"ticket": "demo",
"title": "Demo",
"created_at": "2026-05-08",
"updated_at": "2026-05-08",
"tags": [],
"agendas": [{"id": "AGD-0001", "file": "AGD-0001-demo.md", "status": "done"}],
"decisions": [{"id": "DEC-0001", "file": "DEC-0001-demo.md", "status": "accepted"}],
"plans": [{"id": "PLN-0001", "file": "PLN-0001-demo.md", "status": "done"}],
"lessons": [
{
"id": "LSN-0001",
"file": "discussion/lessons/DSC-0001-demo/LSN-0001-demo.md",
"status": "done",
}
],
},
]
(discussion / "index.ndjson").write_text(
"\n".join(json.dumps(record, separators=(",", ":")) for record in records) + "\n",
encoding="utf-8",
)
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
self.assertEqual(main(["--root", str(root), "validate"]), 0)
self.assertIn("validation passed", stdout.getvalue())
def test_inspect_context_next_actions_and_backup(self) -> None:
with TempDir() as root:
main(["--root", str(root), "init"])