MANIFEST: commonmark
updated: 2026-08-12T17:25:19+00:00 state: approved blocks: 16 planning_feedback: | analyze-display_name applied ARCHITECTURE.md analyze-short_description applied ARCHITECTURE.md
applied: ARCHITECTURE.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,ARCHITECTURE_compact.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-BLOCK-LEAF.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-BLOCK-LISTS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-BLOCK-QUOTES.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-CLI-DOCUMENTATION.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-CLI-ENTRYPOINT.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-CLI-ERRORS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-CONFORMANCE-ASSETS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-CONFORMANCE-FULL.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-INLINE-CODE-BREAKS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-INLINE-EMPHASIS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-INLINE-ESCAPES.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-INLINE-HTML.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-INLINE-LINKS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-RENDER-BLOCKS.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-RENDER-INLINE.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,FEATURE-RENDER-NORMALIZATION.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,cmark.py=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,common.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,normalize.py=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,python.md=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,spec.txt=fbe2a3c24923687cda7ed5bbd2ac5533856697d6,spec_tests.py=fbe2a3c24923687cda7ed5bbd2ac5533856697d6 applied_specs: | ARCHITECTURE.md sha256=4401f1eb6d106328681e1aa590de8dce5877d0b58de586bde20e42052098f6e8 commit=- applied_by=block-3 applied_at=2026-08-12T17:33:18+00:00 build_sha256=4695d3d84dbe278f22cf5c27acbb2f9f96d4f02820379bfbfca4b69269583bf7 ARCHITECTURE_compact.md sha256=bcec65f2c03cbb08aa5bf8fbe9f0b50cc38f2d0c2bd92eef5e81c5744f2945e9 commit=- applied_by=block-16 applied_at=2026-08-12T20:44:28+00:00 build_sha256=bcec65f2c03cbb08aa5bf8fbe9f0b50cc38f2d0c2bd92eef5e81c5744f2945e9 FEATURE-BLOCK-LEAF.md sha256=69393c5bf78de24835f6f862515e26d73a93fd0383682f1e8c008736e0695c01 commit=- applied_by=block-4 applied_at=2026-08-12T17:58:23+00:00 build_sha256=c35bed1d4fa912136f4207c709f6cd7132efbd8ab50265e3c1c98871389ccca8 FEATURE-BLOCK-LISTS.md sha256=0fa8812c7d0d818aee243cf4c81abd2be7429bfdede2e091e9f548b70f3cb0b1 commit=- applied_by=block-6 applied_at=2026-08-12T18:18:53+00:00 build_sha256=dcaea140da76ddfb0d67b1a87d3427954b12a9e64c2b30fee74403d748ae9acd FEATURE-BLOCK-QUOTES.md sha256=b6ac7a638c09fc7b5217f114f6baed320fbc6bd9f389750e44db1064d2e33814 commit=- applied_by=block-5 applied_at=2026-08-12T18:07:21+00:00 build_sha256=7effcc700cab858528d798dbc43c6de70334031dccb5afc06cec0578e39ed81c FEATURE-CLI-DOCUMENTATION.md sha256=ed5144a7bf2569dd627a0cb49c479d0ac2a847e00b2ec49d2dff1c7177f46bce commit=- applied_by=block-3 applied_at=2026-08-12T17:33:18+00:00 build_sha256=45f57547cc00809f6b2cdd84da134d432386b87810bb9a989f642413905c935f FEATURE-CLI-ENTRYPOINT.md sha256=cb0c4b83b3cbd14ea453dc0da1f667e20ea9e7992ba34d89de29e37a26375afa commit=- applied_by=block-2 applied_at=2026-08-12T17:31:13+00:00 build_sha256=8f608673703233be7fa94b28e2cab6811781aee457be1a419fdcc743587ac0bb FEATURE-CLI-ERRORS.md sha256=d58cdf3ee85bf27266f8608585d1f76a8b07ce2c3978a97585f7872b82a9c88d commit=- applied_by=block-2 applied_at=2026-08-12T17:31:13+00:00 build_sha256=00226a42bd815366142e43637f03bfb5dad5f1cabedd070ed5790c7fd31e46bb FEATURE-CONFORMANCE-ASSETS.md sha256=6acc5bc2ec09ed238e4dedd1238a2a7e3e18671c0a54389fae4d1d519cc404c6 commit=- applied_by=block-15 applied_at=2026-08-12T20:31:25+00:00 build_sha256=8e45529a0cad28620a71b1641a68d40a51971500afce3bfb8f6c972f1af67bbf FEATURE-CONFORMANCE-FULL.md sha256=d36d0b7c90e1f944aedffc2291b12bf02a2a607e495db34d21cf4b457db4abcb commit=- applied_by=block-16 applied_at=2026-08-12T20:44:28+00:00 build_sha256=232739df66237b0717c2966a80006bdfa895c265dca9b8b68432b4d1bd65ac7a FEATURE-INLINE-CODE-BREAKS.md sha256=a7b092fb449fa302838aa982aad7cecbd1d5249c6ba69f81007e9278788986fd commit=- applied_by=block-8 applied_at=2026-08-12T18:30:38+00:00 build_sha256=95c5d0055dad5e2deb5d40eea7e6015dd074e0f5f10d8868412a19e031232f8b FEATURE-INLINE-EMPHASIS.md sha256=5985e9df3d570261c003d1848b3bd478a0d3273d6be0a53fae636b5cce5c8ec0 commit=- applied_by=block-9 applied_at=2026-08-12T18:40:44+00:00 build_sha256=2fe5d54d63cfd7f05ff7b4e42d3d510f7dba20ac2c0a752ffaa8f3a0ad166bff FEATURE-INLINE-ESCAPES.md sha256=8ec32f9ba38ed7e0e2257c0032028b77cb07a9c949d45f97b611c95c5e74b6b3 commit=- applied_by=block-7 applied_at=2026-08-12T18:25:39+00:00 build_sha256=157c42a3a910d8130ae92cc0ad5c09e345f16a4024a48d5605fd48ecee75f37b FEATURE-INLINE-HTML.md sha256=5cb9080fd1c36517fbe77657958fe238d0b9a99e9555c60d1487e5b94327d050 commit=- applied_by=block-11 applied_at=2026-08-12T19:31:25+00:00 build_sha256=7c12b0b68e7fe96ec49300859118d27db0bbfb0af5383060a6d0b18365ed2657 FEATURE-INLINE-LINKS.md sha256=86acb4d516a957475e0a0374ccfdde6e8790780dd9891dc1044de28b6902c4b6 commit=- applied_by=block-10 applied_at=2026-08-12T19:16:58+00:00 build_sha256=f478a29b8a510f401e621b5ca74d60f656e437b3e27416fdee43330fa6af592a FEATURE-RENDER-BLOCKS.md sha256=f46dd6caf74723ed69dbefe05207fe8fbc1021681ad74916a847bc387d528b16 commit=- applied_by=block-12 applied_at=2026-08-12T19:51:29+00:00 build_sha256=1230d794ef7eee23c1bc7d730f6c4e4fe05ddbb24dcfe672f122cf391537a140 FEATURE-RENDER-INLINE.md sha256=8661afd65ac99a20ac2d1aac8af6abc175a328fa5077e67f27c58b316d888bcd commit=- applied_by=block-13 applied_at=2026-08-12T20:08:56+00:00 build_sha256=77f7a2b822ce8dc8a8d532119f4ddad0b73597122a916f871fee86ead90c60dd FEATURE-RENDER-NORMALIZATION.md sha256=6410e420559625eea23da704a5ad73434e902deefd803657c916687c8aa6bf71 commit=- applied_by=block-14 applied_at=2026-08-12T20:18:17+00:00 build_sha256=472719add837f2b05319b60f1c0b95b3a376be657245adfa542a41a0d3442e8f cmark.py sha256=c5fb45e7c64fd7670b2a3c49a151e46f4af9d0ad3004bedb37ecf9cdc34d2f00 commit=- applied_by=block-16 applied_at=2026-08-12T20:44:28+00:00 build_sha256=c5fb45e7c64fd7670b2a3c49a151e46f4af9d0ad3004bedb37ecf9cdc34d2f00 normalize.py sha256=94a9dd253907e3dab7c02fc11e934f06112dcf0f3804255d09d732c8c7c4b5f4 commit=- applied_by=block-16 applied_at=2026-08-12T20:44:28+00:00 build_sha256=94a9dd253907e3dab7c02fc11e934f06112dcf0f3804255d09d732c8c7c4b5f4 spec.txt sha256=43fad3e0ac5190a3b0bc6a41f7b1a853201a26ec2e6b74871f5d96239a8c34cf commit=- applied_by=block-16 applied_at=2026-08-12T20:44:28+00:00 build_sha256=43fad3e0ac5190a3b0bc6a41f7b1a853201a26ec2e6b74871f5d96239a8c34cf spec_tests.py sha256=9db1ea4a3ee79c5ec74eebc09c5985eb252427e8d9d19ef45e5cc3f2ae410855 commit=- applied_by=block-16 applied_at=2026-08-12T20:44:28+00:00 build_sha256=9db1ea4a3ee79c5ec74eebc09c5985eb252427e8d9d19ef45e5cc3f2ae410855
story 1: Define parser architecture and module boundaries.
id: architecture evidence: evidence/block-1.md summary: Define parser architecture and module boundaries. type: foundational kind: capability phase: 1 block: 1 implements: ARCHITECTURE.md scope: both instructions: | Define the Python module boundaries for a two-phase CommonMark parser, HTML renderer, executable entry point, and POSIX conformance wrapper. Record the approved technology stack and prohibit public Markdown implementations. stack: common.md, python.md stack_mode: builder size: 7037 provides: parser architecture, block parser boundary, inline parser boundary, renderer boundary acceptance: yes state: closed/verified
story 2: Implement the standard-input and standard-output parser entry point.
id: cli-entrypoint evidence: evidence/block-2.md summary: Implement the standard-input and standard-output parser entry point. type: service kind: capability phase: 1 block: 2 implements: FEATURE-CLI-ENTRYPOINT.md covers: CLI-001 context: cmark.py, normalize.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 5722 provides: parser executable consumes: parser core, HTML renderer instructions: Implement the executable that reads UTF-8 Markdown from standard input, parses blocks before inlines, and writes rendered HTML to standard output. Preserve the harness invocation contract. acceptance: yes depends: architecture state: closed/verified scope: target
story 3: Define deterministic parser process errors and exit behavior.
id: cli-errors finding: ADVISORY: acceptance criterion may be mis-authored: cli-errors-stdout-integrity — static analysis doubts these assertions; they were graded normally. Review the authoring in the Blueprint specification. evidence: evidence/block-2.md summary: Define deterministic parser process errors and exit behavior. type: service kind: capability phase: 1 block: 2 implements: FEATURE-CLI-ERRORS.md covers: CLI-002 context: spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 5343 provides: parser error behavior consumes: parser executable instructions: Implement deterministic operational failure handling, nonzero exit behavior, and stdout integrity for invalid process conditions. Keep diagnostics on stderr. acceptance: yes depends: cli-entrypoint state: closed/verified scope: target
story 4: Document parser operation and conformance verification.
id: cli-documentation evidence: evidence/block-3.md summary: Document parser operation and conformance verification. type: service kind: capability phase: 1 block: 3 implements: FEATURE-CLI-DOCUMENTATION.md covers: CLI-003 context: ARCHITECTURE_compact.md stack: common.md stack_mode: consumer size: 2092 instructions: Write a concise README documenting standard-input to standard-output operation and the required sh full_test.sh invocation. acceptance: yes depends: cli-entrypoint state: closed/verified scope: target
story 5: Parse CommonMark leaf blocks.
id: block-leaf evidence: evidence/block-4.md summary: Parse CommonMark leaf blocks. type: service kind: capability phase: 2 block: 4 implements: FEATURE-BLOCK-LEAF.md covers: BLOCK-001 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 57009 budget: over-target provides: leaf block parser consumes: parser executable instructions: Implement thematic breaks, ATX and setext headings, indented and fenced code blocks, HTML blocks, paragraphs, and link reference definitions according to CommonMark 0.31.2. acceptance: yes depends: cli-entrypoint state: closed/verified scope: target
story 6: Parse nested block quotes and lazy continuation.
id: block-quotes summary: Parse nested block quotes and lazy continuation. type: service kind: capability phase: 2 block: 5 implements: FEATURE-BLOCK-QUOTES.md covers: BLOCK-002 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 56877 budget: over-target provides: block quote parser consumes: leaf block parser instructions: Implement block quote markers, nesting, blank lines, lazy paragraph continuation, and all contained block structure. acceptance: yes depends: block-leaf state: blocked/questions evidence: evidence/block-5.md scope: target
story 7: Parse CommonMark list items and list structure.
id: block-lists evidence: evidence/block-6.md summary: Parse CommonMark list items and list structure. type: service kind: capability phase: 2 block: 6 implements: FEATURE-BLOCK-LISTS.md covers: BLOCK-003 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 56945 budget: over-target provides: list parser consumes: leaf block parser, block quote parser instructions: Implement bullet and ordered lists, nesting, lazy continuation, empty items, marker indentation, delimiter changes, and tight versus loose rendering metadata. acceptance: yes depends: block-quotes state: closed/verified scope: target
story 8: Parse escapes and character references.
id: inline-escapes evidence: evidence/block-7.md summary: Parse escapes and character references. type: service kind: capability phase: 3 block: 7 implements: FEATURE-INLINE-ESCAPES.md covers: INLINE-001 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 56814 budget: over-target provides: escape parser, character reference parser consumes: block parser instructions: Implement punctuation escapes, named entities, decimal and hexadecimal references, invalid-code-point replacement, and context restrictions. acceptance: yes depends: block-lists state: closed/verified scope: target
story 9: Parse code spans and line breaks.
id: inline-code-breaks evidence: evidence/block-8.md summary: Parse code spans and line breaks. type: service kind: capability phase: 3 block: 8 implements: FEATURE-INLINE-CODE-BREAKS.md covers: INLINE-002 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 56809 budget: over-target provides: code span parser, hard break parser, soft break parser consumes: block parser instructions: Implement delimiter-length code spans, code-span normalization, hard breaks, soft breaks, and trailing-space behavior. acceptance: yes depends: block-lists state: closed/verified scope: target
story 10: Parse emphasis and strong emphasis using delimiter rules.
id: inline-emphasis evidence: evidence/block-9.md summary: Parse emphasis and strong emphasis using delimiter rules. type: service kind: capability phase: 3 block: 9 implements: FEATURE-INLINE-EMPHASIS.md covers: INLINE-003 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 56836 budget: over-target provides: emphasis parser, strong emphasis parser consumes: block parser, code span parser instructions: Implement delimiter runs, flanking rules, intraword restrictions, nesting, precedence, and the modulo-three constraints for emphasis and strong emphasis. acceptance: yes depends: inline-code-breaks state: closed/verified scope: target
story 11: Parse links and images.
id: inline-links evidence: evidence/block-10.md summary: Parse links and images. type: service kind: capability phase: 3 block: 10 implements: FEATURE-INLINE-LINKS.md covers: INLINE-004 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 57041 budget: over-target provides: link parser, image parser, reference resolver consumes: block parser, inline parser instructions: Implement inline, full-reference, collapsed-reference, and shortcut links; nested image descriptions; balanced destinations; titles; and reference definition precedence. acceptance: yes depends: inline-emphasis state: closed/verified scope: target
story 12: Parse autolinks and raw HTML.
id: inline-html evidence: evidence/block-11.md summary: Parse autolinks and raw HTML. type: service kind: capability phase: 3 block: 11 implements: FEATURE-INLINE-HTML.md covers: INLINE-005 context: spec.txt, spec_tests.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 56902 budget: over-target provides: autolink parser, raw HTML parser consumes: block parser, inline parser instructions: Implement URI and email autolinks plus raw HTML tags, comments, declarations, processing instructions, and CDATA while preserving raw markup. acceptance: yes depends: inline-links state: closed/verified scope: target
story 13: Render parsed block structure as CommonMark HTML.
id: render-blocks evidence: evidence/block-12.md summary: Render parsed block structure as CommonMark HTML. type: service kind: capability phase: 4 block: 12 implements: FEATURE-RENDER-BLOCKS.md covers: RENDER-001 context: spec.txt, spec_tests.py, normalize.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 58606 budget: over-target provides: block HTML renderer consumes: block parser, inline parser instructions: Render headings, paragraphs, thematic breaks, code blocks, block quotes, lists, list tightness, and escaped block content with required CommonMark HTML structure. acceptance: yes depends: inline-html state: closed/verified scope: target
story 14: Render parsed inline structure as CommonMark HTML.
id: render-inline evidence: evidence/block-13.md summary: Render parsed inline structure as CommonMark HTML. type: service kind: capability phase: 4 block: 13 implements: FEATURE-RENDER-INLINE.md covers: RENDER-002 context: spec.txt, spec_tests.py, normalize.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 58642 budget: over-target provides: inline HTML renderer consumes: inline parser instructions: Render text, links, images, code, emphasis, strong emphasis, breaks, entities, and raw HTML with required escaping and preservation rules. acceptance: yes depends: render-blocks state: closed/verified scope: target
story 15: Normalize URL, title, attribute, and special-character output.
id: render-normalization evidence: evidence/block-14.md summary: Normalize URL, title, attribute, and special-character output. type: service kind: integration phase: 4 block: 14 implements: FEATURE-RENDER-NORMALIZATION.md covers: RENDER-003 context: spec.txt, spec_tests.py, normalize.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 58645 budget: over-target provides: normalized URL output, normalized title output, normalized attribute output consumes: block HTML renderer, inline HTML renderer instructions: Ensure URL escaping, title escaping, attribute ordering and escaping, entity handling, and special-character output match the supplied harness expectations. acceptance: yes depends: render-inline state: closed/verified scope: target
story 16: Stage and exercise the supplied conformance harness within bounded story scopes.
id: conformance-assets evidence: evidence/block-15.md summary: Stage and exercise the supplied conformance harness within bounded story scopes. type: service kind: test harness phase: 4 block: 15 implements: FEATURE-CONFORMANCE-ASSETS.md covers: VERIFY-001, VERIFY-002 context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 59085 budget: over-target provides: staged conformance assets, bounded conformance verification consumes: parser executable instructions: Stage only spec.txt, spec_tests.py, cmark.py, and normalize.py at the runtime paths required by the harness. Add bounded selector-based verification for the implementation stories without invoking an unfiltered suite. acceptance: yes depends: render-normalization state: closed/verified scope: both
story 17: Run the complete supplied CommonMark conformance suite.
id: conformance-full evidence: evidence/block-16.md summary: Run the complete supplied CommonMark conformance suite. type: service kind: test harness phase: 5 block: 16 implements: FEATURE-CONFORMANCE-FULL.md covers: VERIFY-003 accepts: st-001 context: spec.txt, spec_tests.py, cmark.py, normalize.py, ARCHITECTURE_compact.md stack: common.md, python.md stack_mode: consumer size: 58814 budget: over-target provides: full_test.sh, complete conformance verification consumes: parser executable, staged conformance assets instructions: Create full_test.sh as a POSIX-compatible wrapper for the complete unfiltered supplied suite. The terminal acceptance runs sh full_test.sh with Suite: full, prints captured output and error, and asserts only exit status zero. It carries Sea Trials: st-001. acceptance: yes depends: cli-entrypoint, cli-errors, cli-documentation, block-leaf, block-quotes, block-lists, inline-escapes, inline-code-breaks, inline-emphasis, inline-links, inline-html, render-blocks, render-inline, render-normalization, conformance-assets state: closed/verified scope: target