fixes on validate
This commit is contained in:
parent
28f81a3af9
commit
23a093f9ab
@ -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
|
||||
|
||||
@ -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"])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user