{
  "checker": {
    "details": {
      "argv": [
        "<host-path>",
        "sync"
      ],
      "blocker": "an expected operation error cannot prove working behavior: {\"returncode\": 1, \"stdout\": \"Updated pyrig.rig.configs.readme.ReadmeConfigFile (README.md)\\nCreated pyrig.rig.configs.package_init.PackageInitConfigFile (src/workspace/__init__.py)\\nUpdated pyrig.rig.configs.package_init.PackageInitConfigFile (src/workspace/__init__.py)\\nUpdated pyrig_plugin.rig.configs.pyproject.PyprojectConfigFile (pyproject.toml)\\nCreated abc.RepositorySettingsConfigFile (.github/settings.json)\\nUpdated abc.RepositorySettingsConfigFile (.github/settings.json)\\nCreated pyrig_codeql.rig.configs.version_control.remote.code_analyzer.CodeAnalyzerConfigFile (.github/codeql.yml)\\nUpdated pyrig_codeql.rig.configs.version_control.remote.code_analyzer.CodeAnalyzerConfigFile (.github/codeql.yml)\\nCreated pyrig.rig.configs.version_control.remote.dependency_bot.DependencyBotConfigFile (.github/dependabot.yml)\\nUpdated pyrig.rig.configs.version_control.remote.dependency_bot.DependencyBotConfigFile (.github/dependabot.yml)\\nCreated pyrig.rig.configs.version_control.remote.issue_templates.feature_request.FeatureRequestConfigFile (.github/ISSUE_TEMPLATE/feature_request.yml)\\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.feature_request.FeatureRequestConfigFile (.github/ISSUE_TEMPLATE/feature_request.yml)\\nCreated pyrig.rig.configs.version_control.remote.issue_templates.config.ConfigConfigFile (.github/ISSUE_TEMPLATE/config.yml)\\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.config.ConfigConfigFile (.github/ISSUE_TEMPLATE/config.yml)\\nCreated pyrig.rig.configs.version_control.remote.issue_templates.bug_report.BugReportConfigFile (.github/ISSUE_TEMPLATE/bug_report.yml)\\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.bug_report.BugReportConfigFile (.github/ISSUE_TEMPLATE/bug_report.yml)\\nCreated pyrig.rig.configs.version_control.remote.workflows.release.ReleaseWorkflowConfigFile (.github/workflows/release.yml)\\nUpdated pyrig.rig.configs.version_control.remote.workflows.release.ReleaseWorkflowConfigFile (.github/workflows/release.yml)\\nCreated pyrig_pypi.rig.configs.version_control.remote.workflows.deploy.DeployWorkflowConfigFile (.github/workflows/deploy.yml)\\nUpdated pyrig_pypi.rig.configs.version_control.remote.workflows.deploy.DeployWorkflowConfigFile (.github/workflows/deploy.yml)\\nCreated abc.HealthCheckWorkflowConfigFile (.github/workflows/health_check.yml)\\nUpdated abc.HealthCheckWorkflowConfigFile (.github/workflows/health_check.yml)\\nCreated pyrig.rig.configs.py_typed.PyTypedConfigFile (src/workspace/py.typed)\\nUpdated pyrig.rig.configs.py_typed.PyTypedConfigFile (src/workspace/py.typed)\\n\", \"stderr\": \"                                               \\u2502\\n\\u2502    55 \\u2502   def run_cached(                                                    \\u2502\\n\\u2502    56 \\u2502   \\u2502   self,                                                          \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 <host-path> \\u2502\\n\\u2502 esses.py:162 in run_subprocess                                               \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502   159 \\u2502   \\u2502   on failure.                                                    \\u2502\\n\\u2502   160 \\u2502   \\\"\\\"\\\"                                                                \\u2502\\n\\u2502   161 \\u2502   try:                                                               \\u2502\\n\\u2502 \\u2771 162 \\u2502   \\u2502   return subprocess.run(  # noqa: S603  # nosec: B603            \\u2502\\n\\u2502   163 \\u2502   \\u2502   \\u2502   args,                                                      \\u2502\\n\\u2502   164 \\u2502   \\u2502   \\u2502   check=check,                                               \\u2502\\n\\u2502   165 \\u2502   \\u2502   \\u2502   capture_output=True,                                       \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 /usr/lib/python3.12/subprocess.py:548 in run                                 \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502    545 \\u2502   \\u2502   kwargs['stdout'] = PIPE                                       \\u2502\\n\\u2502    546 \\u2502   \\u2502   kwargs['stderr'] = PIPE                                       \\u2502\\n\\u2502    547 \\u2502                                                                     \\u2502\\n\\u2502 \\u2771  548 \\u2502   with Popen(*popenargs, **kwargs) as process:                      \\u2502\\n\\u2502    549 \\u2502   \\u2502   try:                                                          \\u2502\\n\\u2502    550 \\u2502   \\u2502   \\u2502   stdout, stderr = process.communicate(input,               \\u2502\\n\\u2502        timeout=timeout)                                                      \\u2502\\n\\u2502    551 \\u2502   \\u2502   except TimeoutExpired as exc:                                 \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 /usr/lib/python3.12/subprocess.py:1026 in __init__                           \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502   1023 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   self.stderr = io.TextIOWrapper(self.stderr,       \\u2502\\n\\u2502   1024 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   encoding=encoding, errors=errors)         \\u2502\\n\\u2502   1025 \\u2502   \\u2502   \\u2502                                                             \\u2502\\n\\u2502 \\u2771 1026 \\u2502   \\u2502   \\u2502   self._execute_child(args, executable, preexec_fn,         \\u2502\\n\\u2502        close_fds,                                                            \\u2502\\n\\u2502   1027 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   pass_fds, cwd, env,                   \\u2502\\n\\u2502   1028 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   startupinfo, creationflags, shell,    \\u2502\\n\\u2502   1029 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   p2cread, p2cwrite,                    \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 /usr/lib/python3.12/subprocess.py:1955 in _execute_child                     \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502   1952 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   if errno_num != 0:                                \\u2502\\n\\u2502   1953 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   err_msg = os.strerror(errno_num)              \\u2502\\n\\u2502   1954 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   if err_filename is not None:                      \\u2502\\n\\u2502 \\u2771 1955 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   raise child_exception_type(errno_num,         \\u2502\\n\\u2502        err_msg, err_filename)                                                \\u2502\\n\\u2502   1956 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   else:                                             \\u2502\\n\\u2502   1957 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   raise child_exception_type(errno_num,         \\u2502\\n\\u2502        err_msg)                                                              \\u2502\\n\\u2502   1958 \\u2502   \\u2502   \\u2502   \\u2502   raise child_exception_type(err_msg)                   \\u2502\\n\\u2570\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u256f\\nFileNotFoundError: [Errno 2] No such file or directory: 'prek'\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 1,
      "stderr": "                                               \u2502\n\u2502    55 \u2502   def run_cached(                                                    \u2502\n\u2502    56 \u2502   \u2502   self,                                                          \u2502\n\u2502                                                                              \u2502\n\u2502 <host-path> \u2502\n\u2502 esses.py:162 in run_subprocess                                               \u2502\n\u2502                                                                              \u2502\n\u2502   159 \u2502   \u2502   on failure.                                                    \u2502\n\u2502   160 \u2502   \"\"\"                                                                \u2502\n\u2502   161 \u2502   try:                                                               \u2502\n\u2502 \u2771 162 \u2502   \u2502   return subprocess.run(  # noqa: S603  # nosec: B603            \u2502\n\u2502   163 \u2502   \u2502   \u2502   args,                                                      \u2502\n[excerpt truncated]",
      "stdout": "Updated pyrig.rig.configs.readme.ReadmeConfigFile (README.md)\nCreated pyrig.rig.configs.package_init.PackageInitConfigFile (src/workspace/__init__.py)\nUpdated pyrig.rig.configs.package_init.PackageInitConfigFile (src/workspace/__init__.py)\nUpdated pyrig_plugin.rig.configs.pyproject.PyprojectConfigFile (pyproject.toml)\nCreated abc.RepositorySettingsConfigFile (.github/settings.json)\nUpdated abc.RepositorySettingsConfigFile (.github/settings.json)\nCreated pyrig_codeql.rig.configs.version_control.remote.code_analyzer.CodeAnalyzerConfigFile (.github/codeql.yml)\nUpdated pyrig_codeql.rig.configs.version_control.remote.code_analyzer.CodeAnalyzerConfigFile (.github/codeql.yml)\nCreated pyrig.rig.configs.version_control.remote.dependency_bot.DependencyBotConfigFile (.github/dependabot.yml)\nUpdated pyrig.rig.configs.version_control.remote.dependency_bot.DependencyBotConfigFile (.github/dependabot.yml)\nCreated pyrig.rig.configs.version_control.remote.issue_templates.feature_request.FeatureRequestConfigFile (.github/ISSUE_TEMPLATE/feature_request.yml)\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.feature_request.FeatureRequestConfigFile (.github/ISSUE_TEMPLATE/feature_request\n[excerpt truncated]",
      "working": false
    },
    "status": "FAIL"
  },
  "deviations": [
    "uv was not present; installed it with the astral.sh install script (prerequisite).",
    "`uv run pyrig sync` failed with CalledProcessError on `prek install` ('Not in a Git repository'); ran `git init` and reran, which succeeded.",
    "prek install git hooks made later `git checkout` run install-dependencies, which uninstalled the project package and re-locked uv.lock; fixed by `prek uninstall`, restoring the pinned tree, and `uv sync --locked`.",
    "Project was renamed to 'workspace' by sync (directory name), and src/pyrig_weekly_health_check became src/workspace; reverted by re-extracting the pinned tree before the final run.",
    "pyrig sync exits 1 whenever it writes files, so probe expects returncode 1 and 'Updated pyrig.rig.configs.readme.ReadmeConfigFile'. A rerun on an already-synced tree prints nothing."
  ],
  "main_blocker": "an expected operation error cannot prove working behavior: {\"returncode\": 1, \"stdout\": \"Updated pyrig.rig.configs.readme.ReadmeConfigFile (README.md)\\nCreated pyrig.rig.configs.package_init.PackageInitConfigFile (src/workspace/__init__.py)\\nUpdated pyrig.rig.configs.package_init.PackageInitConfigFile (src/workspace/__init__.py)\\nUpdated pyrig_plugin.rig.configs.pyproject.PyprojectConfigFile (pyproject.toml)\\nCreated abc.RepositorySettingsConfigFile (.github/settings.json)\\nUpdated abc.RepositorySettingsConfigFile (.github/settings.json)\\nCreated pyrig_codeql.rig.configs.version_control.remote.code_analyzer.CodeAnalyzerConfigFile (.github/codeql.yml)\\nUpdated pyrig_codeql.rig.configs.version_control.remote.code_analyzer.CodeAnalyzerConfigFile (.github/codeql.yml)\\nCreated pyrig.rig.configs.version_control.remote.dependency_bot.DependencyBotConfigFile (.github/dependabot.yml)\\nUpdated pyrig.rig.configs.version_control.remote.dependency_bot.DependencyBotConfigFile (.github/dependabot.yml)\\nCreated pyrig.rig.configs.version_control.remote.issue_templates.feature_request.FeatureRequestConfigFile (.github/ISSUE_TEMPLATE/feature_request.yml)\\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.feature_request.FeatureRequestConfigFile (.github/ISSUE_TEMPLATE/feature_request.yml)\\nCreated pyrig.rig.configs.version_control.remote.issue_templates.config.ConfigConfigFile (.github/ISSUE_TEMPLATE/config.yml)\\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.config.ConfigConfigFile (.github/ISSUE_TEMPLATE/config.yml)\\nCreated pyrig.rig.configs.version_control.remote.issue_templates.bug_report.BugReportConfigFile (.github/ISSUE_TEMPLATE/bug_report.yml)\\nUpdated pyrig.rig.configs.version_control.remote.issue_templates.bug_report.BugReportConfigFile (.github/ISSUE_TEMPLATE/bug_report.yml)\\nCreated pyrig.rig.configs.version_control.remote.workflows.release.ReleaseWorkflowConfigFile (.github/workflows/release.yml)\\nUpdated pyrig.rig.configs.version_control.remote.workflows.release.ReleaseWorkflowConfigFile (.github/workflows/release.yml)\\nCreated pyrig_pypi.rig.configs.version_control.remote.workflows.deploy.DeployWorkflowConfigFile (.github/workflows/deploy.yml)\\nUpdated pyrig_pypi.rig.configs.version_control.remote.workflows.deploy.DeployWorkflowConfigFile (.github/workflows/deploy.yml)\\nCreated abc.HealthCheckWorkflowConfigFile (.github/workflows/health_check.yml)\\nUpdated abc.HealthCheckWorkflowConfigFile (.github/workflows/health_check.yml)\\nCreated pyrig.rig.configs.py_typed.PyTypedConfigFile (src/workspace/py.typed)\\nUpdated pyrig.rig.configs.py_typed.PyTypedConfigFile (src/workspace/py.typed)\\n\", \"stderr\": \"                                               \\u2502\\n\\u2502    55 \\u2502   def run_cached(                                                    \\u2502\\n\\u2502    56 \\u2502   \\u2502   self,                                                          \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 <host-path> \\u2502\\n\\u2502 esses.py:162 in run_subprocess                                               \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502   159 \\u2502   \\u2502   on failure.                                                    \\u2502\\n\\u2502   160 \\u2502   \\\"\\\"\\\"                                                                \\u2502\\n\\u2502   161 \\u2502   try:                                                               \\u2502\\n\\u2502 \\u2771 162 \\u2502   \\u2502   return subprocess.run(  # noqa: S603  # nosec: B603            \\u2502\\n\\u2502   163 \\u2502   \\u2502   \\u2502   args,                                                      \\u2502\\n\\u2502   164 \\u2502   \\u2502   \\u2502   check=check,                                               \\u2502\\n\\u2502   165 \\u2502   \\u2502   \\u2502   capture_output=True,                                       \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 /usr/lib/python3.12/subprocess.py:548 in run                                 \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502    545 \\u2502   \\u2502   kwargs['stdout'] = PIPE                                       \\u2502\\n\\u2502    546 \\u2502   \\u2502   kwargs['stderr'] = PIPE                                       \\u2502\\n\\u2502    547 \\u2502                                                                     \\u2502\\n\\u2502 \\u2771  548 \\u2502   with Popen(*popenargs, **kwargs) as process:                      \\u2502\\n\\u2502    549 \\u2502   \\u2502   try:                                                          \\u2502\\n\\u2502    550 \\u2502   \\u2502   \\u2502   stdout, stderr = process.communicate(input,               \\u2502\\n\\u2502        timeout=timeout)                                                      \\u2502\\n\\u2502    551 \\u2502   \\u2502   except TimeoutExpired as exc:                                 \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 /usr/lib/python3.12/subprocess.py:1026 in __init__                           \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502   1023 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   self.stderr = io.TextIOWrapper(self.stderr,       \\u2502\\n\\u2502   1024 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   encoding=encoding, errors=errors)         \\u2502\\n\\u2502   1025 \\u2502   \\u2502   \\u2502                                                             \\u2502\\n\\u2502 \\u2771 1026 \\u2502   \\u2502   \\u2502   self._execute_child(args, executable, preexec_fn,         \\u2502\\n\\u2502        close_fds,                                                            \\u2502\\n\\u2502   1027 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   pass_fds, cwd, env,                   \\u2502\\n\\u2502   1028 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   startupinfo, creationflags, shell,    \\u2502\\n\\u2502   1029 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   p2cread, p2cwrite,                    \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502 /usr/lib/python3.12/subprocess.py:1955 in _execute_child                     \\u2502\\n\\u2502                                                                              \\u2502\\n\\u2502   1952 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   if errno_num != 0:                                \\u2502\\n\\u2502   1953 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   err_msg = os.strerror(errno_num)              \\u2502\\n\\u2502   1954 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   if err_filename is not None:                      \\u2502\\n\\u2502 \\u2771 1955 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   raise child_exception_type(errno_num,         \\u2502\\n\\u2502        err_msg, err_filename)                                                \\u2502\\n\\u2502   1956 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   else:                                             \\u2502\\n\\u2502   1957 \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   \\u2502   raise child_exception_type(errno_num,         \\u2502\\n\\u2502        err_msg)                                                              \\u2502\\n\\u2502   1958 \\u2502   \\u2502   \\u2502   \\u2502   raise child_exception_type(err_msg)                   \\u2502\\n\\u2570\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u256f\\nFileNotFoundError: [Errno 2] No such file or directory: 'prek'\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
  "operation": "README 'Usage': `uv run pyrig sync` (run as <host-path> sync) regenerating project files and .github/workflows/health_check.yml with the weekly cron '0 1 * * 1'",
  "operation_scope": "Verified from a pristine tree (checked against the pinned upstream tarball): sync exits 1 by design when it writes files, prints 'Updated ...' lines, no traceback, health_check.yml cron is 0 1 * * 1. Not exercised: unit tests and lint (out of scope), any GitHub/remote parts of the sync. Side effect: sync renames the project to 'workspace' (pyproject name, src/workspace) because the checkout directory is named 'workspace'; this is product behavior, not fixed here.",
  "outcome": "blocked",
  "steps": [
    "Read README.md; documented usage is `uv add pyrig-weekly-health-check --dev` then `uv run pyrig sync`",
    "Installed uv 0.13.1 via https://astral.sh/uv/install.sh (prerequisite, not in README)",
    "uv sync (created .venv, 83 packages)",
    "uv run pyrig sync (first run wrote files then failed at prek install: 'Not in a Git repository')",
    "git init in the checkout (prerequisite for pyrig sync's prek install)",
    "uv run pyrig sync again: rc 0 once a git repo existed",
    "Restored pinned source from https://codeload.github.com/Winipedia/pyrig-weekly-health-check/tar.gz/a6718cb140941f312217448c44cc0b4e19c2702f and verified identical to upstream",
    "Ran documented `pyrig sync` from the pristine tree: rc 1, 'Updated' lines, no traceback, weekly cron",
    "Restored pristine tree again so the probe's run has writes; wrote .coldpass/probe.json; checker --validate printed valid"
  ],
  "stuck_step": "<host-path> sync",
  "suggested_fix": "Run the checkout from a directory named pyrig-weekly-health-check (or otherwise name the project consistently) so sync does not rename the project and package; also make sure a git repo exists before sync, and avoid prek hooks mutating the venv on checkout."
}
