=== BEGIN ARTIFACT TOPOLOGY.md ===
planning_feedback: |
analyze-display_name applied ARCHITECTURE.md
analyze-short_description applied ARCHITECTURE.md
## story interface-001
summary: Provide the executable standard-input/standard-output interface.
type: foundational
kind: capability
phase: 1
implements: ARCHITECTURE.md
covers: INTERFACE-001
context: sources/cmark.py
stack: common.md, python.md
provides: executable commonmark
consumes:
acceptance: yes
scope: target
instructions: |
Create the executable commonmark at the application root. It must read UTF-8 Markdown
from standard input and write rendered HTML to standard output using only Python 3
standard-library facilities and the parser implementation built by subsequent stories.
Preserve process exit behavior and avoid third-party Markdown implementations.
## story block-001
summary: Parse CommonMark leaf blocks and link reference definitions.
type: service
kind: capability
phase: 2
implements: FEATURE-Block-Leafs.md
covers: BLOCK-001
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: leaf block parsing, link reference definitions
consumes: executable commonmark
depends: interface-001
acceptance: yes
scope: target
instructions: |
Implement block parsing for thematic breaks, ATX headings, setext headings, indented
code blocks, fenced code blocks, HTML blocks, paragraphs, blank lines, and link
reference definitions. Build block structure before inline rendering and preserve
reference definitions for later inline resolution. Run the supplied conformance runner
only against the owned leaf-block sections.
## story block-002
summary: Parse nested block quotes and their contained blocks.
type: service
kind: capability
phase: 2
implements: FEATURE-Block-Quotes.md
covers: BLOCK-002
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: block quote parsing
consumes: executable commonmark, leaf block parsing
depends: interface-001, block-001
acceptance: yes
scope: target
instructions: |
Implement block quote markers, nesting, blank lines, lazy paragraph continuation,
empty quotes, and contained block parsing according to the CommonMark block algorithm.
Run the supplied conformance runner only against the Block quotes section.
## story block-003
summary: Parse lists, list items, nesting, laziness, and tightness.
type: service
kind: capability
phase: 2
implements: FEATURE-Block-Lists.md
covers: BLOCK-003
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: list parsing, list-item parsing, list tightness
consumes: executable commonmark, leaf block parsing, block quote parsing
depends: interface-001, block-001, block-002
acceptance: yes
scope: target
instructions: |
Implement bullet and ordered lists, marker widths, nesting, continuation and lazy
lines, empty items, block content, list interruption, delimiter changes, and tight
versus loose rendering. Run the supplied conformance runner only against the List
items and Lists sections.
## story inline-001
summary: Parse escapes, entities, code spans, line breaks, and literal text.
type: service
kind: capability
phase: 3
implements: FEATURE-Inline-Basics.md
covers: INLINE-001
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: inline escapes, entity references, code spans, hard breaks, soft breaks
consumes: executable commonmark, block structure
depends: interface-001, block-001, block-002, block-003
acceptance: yes
scope: target
instructions: |
Implement inline parsing for backslash escapes, HTML and numeric character references,
code spans, hard line breaks, soft line breaks, replacement of U+0000, and literal
textual content. Run the supplied conformance runner only against the owned inline
sections: Backslash escapes, Entity and numeric character references, Code spans,
Hard line breaks, Soft line breaks, and Textual content.
## story inline-002
summary: Parse emphasis and strong emphasis with the delimiter-run algorithm.
type: service
kind: capability
phase: 3
implements: FEATURE-Inline-Emphasis.md
covers: INLINE-002
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: emphasis parsing, strong-emphasis parsing
consumes: executable commonmark, block structure, inline basics
depends: interface-001, block-001, block-002, block-003, inline-001
acceptance: yes
scope: target
instructions: |
Implement the CommonMark delimiter-run algorithm for emphasis and strong emphasis,
including intraword rules, Unicode punctuation and whitespace behavior, nesting,
precedence, unmatched delimiters, and interaction with tighter inline constructs.
Run the supplied conformance runner only against Emphasis and strong emphasis.
## story inline-003
summary: Parse inline and reference links together with images.
type: service
kind: capability
phase: 3
implements: FEATURE-Inline-Links-Images.md
covers: INLINE-003
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: inline links, reference links, images
consumes: executable commonmark, link reference definitions, inline basics
depends: interface-001, block-001, block-002, block-003, inline-001
acceptance: yes
scope: target
instructions: |
Implement inline, full-reference, collapsed-reference, and shortcut links and images,
including destinations, titles, escaping, nested brackets, reference-label
normalization, duplicate-definition precedence, link restrictions, and image alt text.
Run the supplied conformance runner only against Links and Images.
## story inline-004
summary: Parse autolinks and raw HTML inline constructs.
type: service
kind: capability
phase: 3
implements: FEATURE-Inline-HTML-Autolinks.md
covers: INLINE-004
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py
stack: common.md, python.md
provides: URI autolinks, email autolinks, raw HTML
consumes: executable commonmark, block structure, inline basics
depends: interface-001, block-001, block-002, block-003, inline-001
acceptance: yes
scope: target
instructions: |
Implement URI and email autolinks and raw HTML tags, comments, processing
instructions, declarations, and CDATA. Respect precedence with code spans, links,
and emphasis, and preserve valid raw HTML in the rendered output. Run the supplied
conformance runner only against Autolinks and Raw HTML.
## story verify-001
summary: Run the complete supplied CommonMark conformance suite.
type: service
kind: test harness
phase: 4
implements: FEATURE-Conformance-Verification.md
accepts: st-001
context: sources/spec.txt, sources/spec_tests.py, sources/cmark.py, sources/normalize.py, sources/full_test.sh
context_roles: |
sources/spec.txt: context
sources/spec_tests.py: context
sources/cmark.py: context
sources/normalize.py: context
sources/full_test.sh: context
stack: common.md, python.md
provides: complete CommonMark conformance verification
consumes: executable commonmark, all parser capabilities
depends: interface-001, block-001, block-002, block-003, inline-001, inline-002, inline-003, inline-004
acceptance: yes
scope: target
instructions: |
Stage the supplied conformance assets unchanged and run sh sources/full_test.sh from
the completed application root. This is the sole unfiltered full-suite verification
story. Do not modify or reinterpret the supplied scoring entry point or its assets.
=== END ARTIFACT ===
=== BEGIN ARTIFACT DECISIONS.json ===
[
{
"id": "plan-architecture-boundary",
"type": "choice",
"severity": "low",
"blueprint": "ARCHITECTURE.md",
"story": "interface-001",
"title": "Parser implementation boundary",
"description": "The executable and parser will be implemented as a Python standard-library application with block parsing preceding inline parsing and no runtime third-party dependencies.",
"options": [
{
"value": "stdlib",
"label": "Python standard library"
},
{
"value": "external",
"label": "Third-party parser dependency"
}
],
"system_choice": "stdlib"
}
]
=== END ARTIFACT ===Run artifact