|
oc_chat
|
Classes | |
| class | RoadmapParseError |
| class | ParsedPhase |
| class | ParsedTrack |
| class | ParsedItem |
| class | ParsedDependency |
| class | ParsedRenderSection |
| class | ParsedRoadmap |
Functions | |
| ParsedRoadmap | parse_roadmap_file (str|Path path) |
| str | canonical_record_hash (str table, str natural_key, dict[str, object] fields) |
| str | _file_kind (Path path) |
| str|None | _version_id (Path path, str text) |
| str | _era_id (str version_id) |
| dict[str, str] | _header_values (str text) |
| str | _title (str text) |
| str | _fallback_timestamp (str version_id) |
| tuple[ParsedPhase,...] | _parse_phases (str text, str version_id) |
| tuple[ParsedItem,...] | _parse_items (str text, str file_kind, str version_id, tuple[ParsedPhase,...] phases) |
| tuple[ParsedDependency,...] | _parse_dependencies (str text, set[str] item_ids) |
| tuple[ParsedRenderSection,...] | _parse_render_sections (str text, str file_kind) |
| list[list[str]] | _iter_markdown_rows (str text) |
| bool | _is_separator_cell (str cell) |
| str|None | _item_id_from_cells (list[str] cells) |
| str|None | _phase_code_from_cells (list[str] cells) |
| str|None | _cell_after_phase_code (list[str] cells, str code) |
| str | _item_title (list[str] cells, str item_id) |
| str|None | _row_prose (list[str] cells, str item_id, str title) |
| str | _status_from_cells (list[str] cells) |
| str|None | _priority_from_cells (list[str] cells) |
| bool | _looks_status_or_priority (str text) |
| str|None | _phase_for_item (str item_id, set[str] phase_codes) |
| str | _track_kind (str item_id, str file_kind, str|None phase_code) |
| str|None | _parent_phase_code (str code) |
| str|None | _parent_item_id (str item_id) |
| str | _version_target (str version_id) |
| tuple[int, int] | _item_score (ParsedItem item) |
| str | _strip_markdown (str|None value) |
Variables | |
| VERSION_RE = re.compile(r"\b(?:v)?(?P<version>\d+\.\d+)\b") | |
| H1_RE = re.compile(r"^#\s+(?P<title>.+?)\s*$", re.MULTILINE) | |
| HEADER_RE = re.compile(r"^\*\*(?P<name>Version|Created|Last updated):\*\*\s*(?P<value>.+?)\s*$") | |
| PHASE_HEADING_RE | |
| ITEM_ID_RE | |
| PHASE_CODE_RE = re.compile(r"^M\d+(?:\.\d+[a-z]?|[a-z])?$|^M11-GATE$") | |
| FRACTION_RE = re.compile(r"\b\d+\s*/\s*\d+\b") | |
| PLAN_ID_RE = re.compile(r"\b\d{3}-[A-Za-z0-9][A-Za-z0-9_.-]*\b") | |
| tuple | DONE_MARKERS = ("\u2705", "[x]", "done", "complete", "completed", "shipped", "closed") |
| tuple | PROGRESS_MARKERS = ("\U0001f535", "[~]", "in progress", "partial", "started") |
| tuple | BLOCKED_MARKERS = ("\U0001f512", "[!]", "blocked", "gated") |
| tuple | TODO_MARKERS = ("\u2b1c", "[ ]", "todo", "not started") |
| tuple | PRIORITY_MARKERS |
| tuple | DEFAULT_TRACKS |
Markdown parser for ROADMAP registry ingest.
Purpose
-------
Convert the four ROADMAP markdown artifact families into deterministic
records for the registry v0.3 roadmap tables.
Responsibilities
----------------
- Classify roadmap artifact file kinds and versions.
- Extract phases, items, dependencies, tracks, and render-section hints.
- Produce stable semantic hashes for ingest idempotence checks.
Diagnostics
-----------
Domain: OC_CHAT.MAIN
Levels:
L2 - parser lifecycle
L3 - extracted roadmap records
L4 - per-row markdown parsing details
Contracts
---------
- Parsing is read-only and never mutates registry or filesystem state.
- Output records are deterministic for identical markdown bytes.
Dependencies
------------
- oc_chat.registry.canonical (stable JSON hashing)
- oc_diagnostics (structured debug logging via _dbg)
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
| str oc_chat.registry.roadmap.parser.canonical_record_hash | ( | str | table, |
| str | natural_key, | ||
| dict[str, object] | fields ) |
| ParsedRoadmap oc_chat.registry.roadmap.parser.parse_roadmap_file | ( | str | Path | path | ) |
| tuple oc_chat.registry.roadmap.parser.BLOCKED_MARKERS = ("\U0001f512", "[!]", "blocked", "gated") |
| tuple oc_chat.registry.roadmap.parser.DEFAULT_TRACKS |
| tuple oc_chat.registry.roadmap.parser.DONE_MARKERS = ("\u2705", "[x]", "done", "complete", "completed", "shipped", "closed") |
| oc_chat.registry.roadmap.parser.FRACTION_RE = re.compile(r"\b\d+\s*/\s*\d+\b") |
| oc_chat.registry.roadmap.parser.H1_RE = re.compile(r"^#\s+(?P<title>.+?)\s*$", re.MULTILINE) |
| oc_chat.registry.roadmap.parser.HEADER_RE = re.compile(r"^\*\*(?P<name>Version|Created|Last updated):\*\*\s*(?P<value>.+?)\s*$") |
| oc_chat.registry.roadmap.parser.ITEM_ID_RE |
| oc_chat.registry.roadmap.parser.PHASE_CODE_RE = re.compile(r"^M\d+(?:\.\d+[a-z]?|[a-z])?$|^M11-GATE$") |
| oc_chat.registry.roadmap.parser.PHASE_HEADING_RE |
| oc_chat.registry.roadmap.parser.PLAN_ID_RE = re.compile(r"\b\d{3}-[A-Za-z0-9][A-Za-z0-9_.-]*\b") |
| tuple oc_chat.registry.roadmap.parser.PRIORITY_MARKERS |
| tuple oc_chat.registry.roadmap.parser.PROGRESS_MARKERS = ("\U0001f535", "[~]", "in progress", "partial", "started") |
| tuple oc_chat.registry.roadmap.parser.TODO_MARKERS = ("\u2b1c", "[ ]", "todo", "not started") |