=== FEATURE-CONFORMANCE-ASSETS.md === # FEATURE: Conformance Assets | Field | Value | |-------------|-------| | Version | 20260812 V1 | | Description | Stages the supplied CommonMark conformance assets and supports bounded verification. | | Depends On | FEATURE-RENDER-NORMALIZATION.md | | Provides | staged conformance assets, bounded conformance verification | | Consumes | parser executable | ## Questions - None. ## Workflow The build stages only `spec.txt`, `spec_tests.py`, `cmark.py`, and `normalize.py` at the runtime paths required by the supplied harness. `INSTRUCTIONS.md` remains planning context and is not staged. Bounded verification invokes `spec_tests.py` with explicit section selectors. It never invokes an unfiltered suite. The harness uses the parser executable through its standard-input and standard-output contract. ## Staged Assets | Source | Runtime destination | |---|---| | `sources/spec.txt` | `spec.txt` | | `sources/spec_tests.py` | `spec_tests.py` | | `sources/cmark.py` | `cmark.py` | | `sources/normalize.py` | `normalize.py` | ## Programmatic Acceptance Requires: executable=python3; scope=test === AC conformance-assets-leaf-scope === Intent: The staged conformance harness executes a selected leaf-block scope successfully. Suite: scoped import subprocess import sys result = subprocess.run( [ sys.executable, "spec_tests.py", "--spec", "spec.txt", "--program", "./program", "--pattern", "^(Thematic breaks|ATX headings|Setext headings|Indented code blocks|Fenced code blocks|HTML blocks|Link reference definitions|Paragraphs|Blank lines)$", ], capture_output=True, text=True, ) print(result.stdout) print(result.stderr, file=sys.stderr) assert result.returncode == 0 === END AC conformance-assets-leaf-scope === === AC conformance-assets-inline-scope === Intent: The staged conformance harness executes a selected inline scope successfully. Suite: scoped import subprocess import sys result = subprocess.run( [ sys.executable, "spec_tests.py", "--spec", "spec.txt", "--program", "./program", "--pattern", "^(Code spans|Emphasis and strong emphasis|Links|Images|Autolinks|Raw HTML|Hard line breaks|Soft line breaks)$", ], capture_output=True, text=True, ) print(result.stdout) print(result.stderr, file=sys.stderr) assert result.returncode == 0 === END AC conformance-assets-inline-scope === ## User Acceptance - None. ## Guardrails - Only the four required conformance assets are staged. - Bounded checks use explicit example-bearing section selectors. - The complete unfiltered suite is reserved for the terminal verification story. === END FEATURE-CONFORMANCE-ASSETS.md === === FEATURE-CONFORMANCE-FULL.md === # FEATURE: Complete Conformance Verification | Field | Value | |-------------|-------| | Version | 20260812 V1 | | Description | Runs the complete supplied CommonMark conformance suite through a POSIX wrapper. | | Depends On | FEATURE-CONFORMANCE-ASSETS.md, FEATURE-RENDER-NORMALIZATION.md | | Provides | full_test.sh, complete conformance verification | | Consumes | parser executable, staged conformance assets | ## Questions - None. ## Workflow `full_test.sh` is a repository-local POSIX shell wrapper. It invokes the staged `spec_tests.py` harness with `spec.txt`, `cmark.py`, and `normalize.py` available at their required runtime paths. It runs the complete suite without a section selector or test-number filter. The wrapper preserves the harness exit status. A zero exit status means the complete suite passed. A nonzero exit status means verification failed. ## Programmatic Acceptance Requires: executable=sh; scope=test === AC complete-conformance-suite === Intent: The complete supplied CommonMark conformance suite passes through the required wrapper. Suite: full Sea Trials: st-001 import subprocess result = subprocess.run( ["sh", "full_test.sh"], capture_output=True, text=True, ) print(result.stdout) print(result.stderr, file=__import__("sys").stderr) assert result.returncode == 0 === END AC complete-conformance-suite === ## User Acceptance - None. ## Guardrails - `full_test.sh` runs the supplied suite without filtering. - The suite runner's exit status is the sole acceptance verdict. - The wrapper does not parse or hardcode the suite tally. === END FEATURE-CONFORMANCE-FULL.md ===