<pblock label="Plan artifact repair" kind="repair">
# Plan Artifact Repair

Drydock accepted the Plan response shape but rejected the emitted Blueprint artifact(s)
below. Repair only the deterministic defect. Preserve all unrelated content, contracts,
headings, decisions, and acceptance assertions byte-for-byte where possible.
Do not remove or weaken a valid assertion while adding a missing one. Every artifact with
a programmatic surface retains at least two concrete Python acceptance assertions. Every
DECISIONS.json is the sole decision disclosure surface; do not emit Markdown question sections.

Emit exactly one fully paired artifact block for each supplied filename and no other
text or artifact.

Repair pass: 1

Deterministic validation defect:
Plan integrity check failed:
  FEATURE-CLI-ENTRYPOINT.md [cli-utf8]: uses non-ASCII test data ('é' (U+00E9)) without declaring `Encoding:`. Acceptance data is ASCII unless the specification states an encoding requirement; add `Encoding: utf-8` to the criterion when it does, or use ASCII test data

Original FEATURE-CLI-ENTRYPOINT.md body:
<original-artifact name="FEATURE-CLI-ENTRYPOINT.md">
# FEATURE: CLI Entry Point

| Field       | Value |
|-------------|-------|
| Version     | 20260812 V1 |
| Description | Provides the executable standard-input and standard-output CommonMark interface. |
| Depends On  | ARCHITECTURE.md |
| Provides    | parser executable |
| Consumes    | parser core, HTML renderer |

## Questions

- None.

## Workflow

The executable reads UTF-8 Markdown from standard input. It parses block structure before inline structure, renders the resulting document as HTML, and writes only rendered HTML to standard output. A successful invocation exits with status `0`.

The executable is named `cmark` and is invokable from the build directory as `./cmark`. It supports the supplied harness's program invocation contract.

## Programmatic Acceptance

Requires: executable=cmark; scope=test

=== AC cli-stdin-stdout ===
Intent: The executable renders Markdown supplied through standard input and exits successfully.

import subprocess

result = subprocess.run(
    ["./cmark"],
    input="# Hello\n\nworld\n",
    capture_output=True,
    text=True,
    encoding="utf-8",
)
print(result.stdout)
print(result.stderr, file=__import__("sys").stderr)
assert result.returncode == 0
assert result.stdout == "<h1>Hello</h1>\n<p>world</p>\n"
=== END AC cli-stdin-stdout ===

=== AC cli-utf8 ===
Intent: The executable accepts UTF-8 Markdown and emits UTF-8 HTML.

import subprocess

result = subprocess.run(
    ["./cmark"],
    input="café\n",
    capture_output=True,
    text=True,
    encoding="utf-8",
)
assert result.returncode == 0
assert result.stdout == "<p>café</p>\n"
=== END AC cli-utf8 ===

## User Acceptance

- None.

## Guardrails

- Markdown input is read from standard input.
- Rendered HTML is written to standard output.
- The executable does not write diagnostics into standard output during successful parsing.
</original-artifact>
</pblock>

