=== 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 ===Run artifact