I3321 — In a foreign repository, the wired pre-push hook of the claude-code projection refuses what finish would refuse, through the installed release
Add to install-check's first-run stage a step in which the refusal is reached through the pre-push hook (finish --check) that the claude-code projection wires in the foreign fixture repository, so the refusal is shown to arrive on the path an agent's session takes, not only through commands the stage calls itself.
BLOCKED wave 2 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3127, milestone:a-stranger-adopts-it-unaided are done. The status is derived from that, not declared.
Objective
Add to install-check's first-run stage a step in which the refusal is reached through the pre-push hook (finish --check) that the claude-code projection wires in the foreign fixture repository, so the refusal is shown to arrive on the path an agent's session takes, not only through commands the stage calls itself.
Why
Split from I3127 by the verification of 2026-10-18 (one worker, one issue, one pull request). The critique of a-stranger-adopts-it-unaided found that a scripted worker calling check and finish itself proves nothing about whether the projected hooks bring the refusal to an agent in the stranger's repository; the owner-accepted beta contract asks for at least one supported AI coding workflow. Sources: chatgpt-majordomus:c241#2, chatgpt-majordomus:c256#5, chatgpt-majordomus:c269#5, chatgpt-majordomus:c069#2, chatgpt-majordomus:c126#8.
Current state
init wires the skeleton's hooks and prints hook advice (lib/init.sh); no case pushes from a foreign repository through an installed release and observes the hook refuse.
Desired state
The stage pushes an unfinished change in the foreign fixture, the wired pre-push hook refuses it with the doctrine finish names, and the receipt records the step and says that a live agent session is not exercised.
Scope
- scripts/ci/install-check
- docs/ADOPTION.md
Out of scope
- A live agent session; outside runs carry it
- Providers other than claude-code
- Changing which hooks init wires
Dependencies
Acceptance criteria
- A stage reaches the refusal through the wired pre-push hook (finish --check) of the claude-code projection in the foreign repository, and the receipt states that a live agent session is not exercised
- The refusal printed by the hook names the same doctrine finish names for the same tree
- The regression case numbered by `scripts/case-numbers next` and announced on the board at start fails when the hook is not wired
Validation
- bash test/run.sh 1024_an_installed_release_serves_a_foreign_repository
- majordomus plan validate
Evidence required
- case_pre_push_refusal_in_a_foreign_repository
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3321.yaml. Read it back with majordomus plan show I3321.