← Files note Workspace|ROGNALIAARCHIVED FILE
skills/note-writer/scripts/validate_article_data.py
1.77 KB · Oct 2, 2026 · 00:33 UTC
#!/usr/bin/env python3
"""Validate note-writer draft files, metadata, registry, and context links."""
from __future__ import annotations
import argparse
import json
from typing import Optional
from writer_common import WriterDataError, load_registry, resolve_workspace, validate_article_data
def _parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description="Validate local article draft history without changing files."
)
parser.add_argument("workspace", help="Absolute path to the selected workspace")
return parser
def main(argv: Optional[list[str]] = None) -> int:
args = _parser().parse_args(argv)
try:
workspace = resolve_workspace(args.workspace)
errors = validate_article_data(workspace)
events = load_registry(workspace) if not errors else []
articles = {event["article_id"] for event in events}
result = {
"status": "pass" if not errors else "error",
"article_count": len(articles),
"revision_count": len(events),
"errors": errors,
"external_actions": [],
}
print(json.dumps(result, ensure_ascii=False, indent=2, sort_keys=True))
return 0 if not errors else 1
except (OSError, UnicodeError, WriterDataError, json.JSONDecodeError) as exc:
print(
json.dumps(
{
"status": "error",
"article_count": 0,
"revision_count": 0,
"errors": [str(exc)],
"external_actions": [],
},
ensure_ascii=False,
indent=2,
sort_keys=True,
)
)
return 1
if __name__ == "__main__":
raise SystemExit(main())
SHA-256: ddd43d16b6b767fa858b4a007181782278c4be14439482ada495e11057632e4b