# MANIFEST: commonmark
updated:     2026-08-15T20:28:18+00:00
state:       approved
blocks:      9
planning_feedback: |
  analyze-display_name applied ARCHITECTURE.md
  analyze-short_description applied ARCHITECTURE.md

applied: ARCHITECTURE.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,ARCHITECTURE_compact.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Block-Leafs.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Block-Lists.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Block-Quotes.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Conformance-Verification.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Inline-Basics.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Inline-Emphasis.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Inline-HTML-Autolinks.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,FEATURE-Inline-Links-Images.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,cmark.py=d4f70c531e6f0f7357a425bec12143cbc18a4690,common.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,full_test.sh=d4f70c531e6f0f7357a425bec12143cbc18a4690,normalize.py=d4f70c531e6f0f7357a425bec12143cbc18a4690,python.md=d4f70c531e6f0f7357a425bec12143cbc18a4690,spec.txt=d4f70c531e6f0f7357a425bec12143cbc18a4690,spec_tests.py=d4f70c531e6f0f7357a425bec12143cbc18a4690
applied_specs: |
  ARCHITECTURE.md sha256=7ba2aff46307f65e2850fd6267ab488fd9b951d6b7901dc417540bd4a48e0c33 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-1 applied_at=2026-08-15T20:34:50+00:00 build_sha256=991a357c4a52dc40387eb682f7103586fcf07ff918653663369c927e0a0f1cdc
  ARCHITECTURE_compact.md sha256=f3408e05a97e9dc22ebae2ef8bf928907c13d7a21c08d05eb3a9835f0d748876 commit=- applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=f3408e05a97e9dc22ebae2ef8bf928907c13d7a21c08d05eb3a9835f0d748876
  FEATURE-Block-Leafs.md sha256=e5bc93bbfc292f37d4f342e7df381fa6ba08c69a182ed918e260a88b72aa1aee commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-2 applied_at=2026-08-15T20:57:14+00:00 build_sha256=6653a046f805ec8600292e0f98a0296739dcab60e696d286d94d837c8f519b4a
  FEATURE-Block-Lists.md sha256=203a17e8a51a25be222ed72b2332c2adf7d88475bdd63a458599b7bc5ec5958d commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-4 applied_at=2026-08-15T21:12:20+00:00 build_sha256=c96c7c13d86df7bb134486b9950910d3b99f72e3100e5a9ae2a06370f20808dc
  FEATURE-Block-Quotes.md sha256=422a8a8dd27fc95c1824401ae22ab7da4deaf37e54626424dfb4cf3e1839cbb7 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-3 applied_at=2026-08-15T21:01:25+00:00 build_sha256=eb27d47916437bc02204a345fad8eb3bc3656fc1af3b583bb4484c2f3cc922c5
  FEATURE-Conformance-Verification.md sha256=b2bccd10a6736a0c48d74f2537929893c367fc3484f05968f4cbb0de51b44167 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=56b55b2737757d2a81b4cc8dee3d70e210db8536e196a3ec1c30f191bbfae487
  FEATURE-Inline-Basics.md sha256=f552fc60ed072e6110c9a3d2a4f54dc5b2d321b60c9d4f722efc2e65633643f1 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-5 applied_at=2026-08-15T21:23:45+00:00 build_sha256=b153567b499ceb6738012cad8e317945d749def92457d7bf9b96e17f9cfbb90d
  FEATURE-Inline-Emphasis.md sha256=c92b4f8bcfb861a6195430b731e56ecea7f8f6cc3123029c5db44fb6c9bdf97f commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-6 applied_at=2026-08-15T21:26:31+00:00 build_sha256=fcd4cd316195ccbe89dd04c286ee7572b63c8bf4f06586086551f1223955cf04
  FEATURE-Inline-HTML-Autolinks.md sha256=f6c98a2ca756b9f4f1b05d932b3eab25733183f4c177977afc90b45623d1db56 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-8 applied_at=2026-08-15T21:37:47+00:00 build_sha256=c0d5b0591bca64b9adbb07a96408824953822e79d47d8a8d73a1e69f8cd73a8d
  FEATURE-Inline-Links-Images.md sha256=dc30416a9ca818760a9acb200ab356d1676b7915a768e830836fb135e697521f commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-7 applied_at=2026-08-15T21:33:30+00:00 build_sha256=be094b0ec931d2d87d3a68efb583ea333f8b66c5dadf87b408a8ed5e6bbd0608
  cmark.py sha256=c5fb45e7c64fd7670b2a3c49a151e46f4af9d0ad3004bedb37ecf9cdc34d2f00 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=c5fb45e7c64fd7670b2a3c49a151e46f4af9d0ad3004bedb37ecf9cdc34d2f00
  full_test.sh sha256=5b634a1c78117313283acceda8faad9de02b594e54949439c73697b058941a93 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=5b634a1c78117313283acceda8faad9de02b594e54949439c73697b058941a93
  normalize.py sha256=94a9dd253907e3dab7c02fc11e934f06112dcf0f3804255d09d732c8c7c4b5f4 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=94a9dd253907e3dab7c02fc11e934f06112dcf0f3804255d09d732c8c7c4b5f4
  spec.txt sha256=43fad3e0ac5190a3b0bc6a41f7b1a853201a26ec2e6b74871f5d96239a8c34cf commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=43fad3e0ac5190a3b0bc6a41f7b1a853201a26ec2e6b74871f5d96239a8c34cf
  spec_tests.py sha256=9db1ea4a3ee79c5ec74eebc09c5985eb252427e8d9d19ef45e5cc3f2ae410855 commit=3d3a77de79cbfa430b2ce6b1ca06c8ec05f028b7 applied_by=block-9 applied_at=2026-08-15T21:43:34+00:00 build_sha256=9db1ea4a3ee79c5ec74eebc09c5985eb252427e8d9d19ef45e5cc3f2ae410855
## story 1: Provide the executable standard-input/standard-output interface.
id: interface-001
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-1.md
summary: Provide the executable standard-input/standard-output interface.
type: foundational
kind: capability
phase: 1
block: 1
implements: ARCHITECTURE.md
covers: INTERFACE-001
context: cmark.py
stack: common.md, python.md
stack_mode: builder
size: 7338
provides: executable commonmark
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.
acceptance: yes
state: closed/implemented
scope: target

## story 2: Parse CommonMark leaf blocks and link reference definitions.
id: block-001
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-2.md
summary: Parse CommonMark leaf blocks and link reference definitions.
type: service
kind: capability
phase: 2
block: 2
implements: FEATURE-Block-Leafs.md
covers: BLOCK-001
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 59149
budget: over-target
provides: leaf block parsing, link reference definitions
consumes: executable commonmark
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.
acceptance: yes
depends: interface-001
state: closed/implemented
scope: target

## story 3: Parse nested block quotes and their contained blocks.
id: block-002
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-3.md
summary: Parse nested block quotes and their contained blocks.
type: service
kind: capability
phase: 2
block: 3
implements: FEATURE-Block-Quotes.md
covers: BLOCK-002
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 59055
budget: over-target
provides: block quote parsing
consumes: executable commonmark, leaf block parsing
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.
acceptance: yes
depends: interface-001, block-001
state: closed/implemented
scope: target

## story 4: Parse lists, list items, nesting, laziness, and tightness.
id: block-003
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-4.md
summary: Parse lists, list items, nesting, laziness, and tightness.
type: service
kind: capability
phase: 2
block: 4
implements: FEATURE-Block-Lists.md
covers: BLOCK-003
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 59082
budget: over-target
provides: list parsing, list-item parsing, list tightness
consumes: executable commonmark, leaf block parsing, block quote parsing
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.
acceptance: yes
depends: interface-001, block-001, block-002
state: closed/implemented
scope: target

## story 5: Parse escapes, entities, code spans, line breaks, and literal text.
id: inline-001
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-5.md
summary: Parse escapes, entities, code spans, line breaks, and literal text.
type: service
kind: capability
phase: 3
block: 5
implements: FEATURE-Inline-Basics.md
covers: INLINE-001
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 59180
budget: over-target
provides: inline escapes, entity references, code spans, hard breaks, soft breaks
consumes: executable commonmark, block structure
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.
acceptance: yes
depends: interface-001, block-001, block-002, block-003
state: closed/implemented
scope: target

## story 6: Parse emphasis and strong emphasis with the delimiter-run algorithm.
id: inline-002
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-6.md
summary: Parse emphasis and strong emphasis with the delimiter-run algorithm.
type: service
kind: capability
phase: 3
block: 6
implements: FEATURE-Inline-Emphasis.md
covers: INLINE-002
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 58888
budget: over-target
provides: emphasis parsing, strong-emphasis parsing
consumes: executable commonmark, block structure, inline basics
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.
acceptance: yes
depends: interface-001, block-001, block-002, block-003, inline-001
state: closed/implemented
scope: target

## story 7: Parse inline and reference links together with images.
id: inline-003
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-7.md
summary: Parse inline and reference links together with images.
type: service
kind: capability
phase: 3
block: 7
implements: FEATURE-Inline-Links-Images.md
covers: INLINE-003
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 58962
budget: over-target
provides: inline links, reference links, images
consumes: executable commonmark, link reference definitions, inline basics
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.
acceptance: yes
depends: interface-001, block-001, block-002, block-003, inline-001
state: closed/implemented
scope: target

## story 8: Parse autolinks and raw HTML inline constructs.
id: inline-004
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-8.md
summary: Parse autolinks and raw HTML inline constructs.
type: service
kind: capability
phase: 3
block: 8
implements: FEATURE-Inline-HTML-Autolinks.md
covers: INLINE-004
context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 58928
budget: over-target
provides: URI autolinks, email autolinks, raw HTML
consumes: executable commonmark, block structure, inline basics
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.
acceptance: yes
depends: interface-001, block-001, block-002, block-003, inline-001
state: closed/implemented
scope: target

## story 9: Run the complete supplied CommonMark conformance suite.
id: verify-001
finding: ADVISORY: implemented, not verified — no governed acceptance command covers this story. Declare one in ACCEPTANCE.json to gate it.
evidence: evidence/block-9.md
summary: Run the complete supplied CommonMark conformance suite.
type: service
kind: test harness
phase: 4
block: 9
implements: FEATURE-Conformance-Verification.md
covers: VERIFY-001
accepts: st-001
context: spec.txt, spec_tests.py, cmark.py, normalize.py, full_test.sh, ARCHITECTURE_compact.md
stack: common.md, python.md
stack_mode: consumer
size: 59364
budget: over-target
provides: complete CommonMark conformance verification
consumes: executable commonmark, all parser capabilities
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.
acceptance: yes
depends: interface-001, block-001, block-002, block-003, inline-001, inline-002, inline-003, inline-004
state: closed/implemented
scope: target
