feat(config): T-1281 — canvas-version, and typer's other rich path
All five gates now live in the check domain. canvas-version produces byte-identical output to the original on the live tree. It is the first real consumer of core/process.run. The git calls pass check=False deliberately: a git failure here is not an error to report but a signal that there is nothing to compare, since a fresh clone with no remote is a legitimate state rather than a broken one. The argv-list and missing-binary guards still apply. Its two skips are kept distinct from its pass. NO_BASE and DIFF_FAILED exit 0, as does CLEAN — but only CLEAN means the gate actually looked at something. Collapsing them would hide a gate that had silently stopped running, which for this check in particular is the exact failure it exists to prevent. Found a second rich path while a NameError was rendering as a full-width box-drawn traceback: typer's pretty-exception handler is a different mechanism from rich_markup_mode, and setting one does nothing about the other. Same log pollution T-1259 thought it had closed, arriving through another door and landing in the worst place — a hook log at the moment something has already gone wrong. pretty_exceptions_enable=False now on the root and on every domain built by cli.domain(). test_canvas_version_check.py moves with the code it guards. It had been loading the extensionless script through a SourceFileLoader and reaching canvas_sources by sys.path insert, both only because tooling/ was not importable. Second instance of that debt evaporating on contact. What it asserts is unchanged, which is the point: diff_has_version_bump was kept pure in the port so its six properties still hold without constructing git history. Also restores an import the check router dropped in T-1267 when it moved to cli.domain() — caught by running the command rather than by reading it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -84,4 +84,11 @@ def domain(name: str, help: str) -> typer.Typer:
|
||||
no_args_is_help=True,
|
||||
add_completion=False,
|
||||
rich_markup_mode=None,
|
||||
# A SECOND rich path, separate from rich_markup_mode and easy to miss:
|
||||
# typer's pretty-exception handler renders unhandled errors as box-art
|
||||
# with syntax highlighting. That is the same log pollution
|
||||
# rich_markup_mode=None prevents for help text, arriving through a
|
||||
# different door — and it lands in the worst place, a hook log at the
|
||||
# moment something has already gone wrong. Plain tracebacks instead.
|
||||
pretty_exceptions_enable=False,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user