Classify recovery setup failures by their actual cause
This commit is contained in:
@@ -67,7 +67,12 @@ classification without sharing publication prerequisites.
|
||||
ref handling. Reading transport settings requires no current fetch/push URL
|
||||
equality check. Missing settings, including after a remote is renamed or
|
||||
removed, permit observation; actual configuration-read failures retain their
|
||||
causes. Reuse the supported transport keys already implemented.
|
||||
causes. Reuse the supported transport keys already implemented. Mark
|
||||
configuration reads and scoped-URL configuration resolution at the Git
|
||||
boundary so failures map to `transport_configuration` independently of the
|
||||
optional remote name. Positively detected rewrites use `endpoint_changed`;
|
||||
other operational failures use `remote_observation`, with cancellation taking
|
||||
its existing precedence and causes retained throughout.
|
||||
4. Extract classification so the immediate path can supply its already captured
|
||||
endpoint and transport settings. Keep `reconcilePush` as the publication
|
||||
adapter: retain its existing detached, bounded recovery context, phase
|
||||
@@ -122,6 +127,11 @@ current transport settings, repaired settings, removed/renamed remotes, fixed
|
||||
URLs, and configuration-read failure. Preserve the existing lost-acknowledgment,
|
||||
rejected-push, endpoint-change, and cancellation behavior.
|
||||
|
||||
**R16 follow-up completed:** Configuration, rewrite, and operational failures
|
||||
map by their known cause, with facade/CLI coverage for named and unnamed
|
||||
configuration, positive rewrites, and tooling failures. Setup failure and rewrite
|
||||
mismatch tests confirm that no remote tag query occurs.
|
||||
|
||||
## Stage 2: Implement private attempt records
|
||||
|
||||
**Completed:** 2026-11-02
|
||||
@@ -388,6 +398,9 @@ releasekit publication-attempts [--repo DIR] [--record-dir DIR] [--json]
|
||||
commit evidence when that is what conflicts. Explain possible next actions
|
||||
from known causes, without guessing that a generic Git failure is an
|
||||
authentication or connectivity failure.
|
||||
Configuration failures include endpoint/global settings when the remote name
|
||||
is absent. Use the same cause-based recovery kinds from Stage 1 for JSON
|
||||
diagnostics and human guidance.
|
||||
4. Human listing shows path, module identity, full tag, candidate commit, and
|
||||
recording time when available. Show per-record diagnostics alongside usable
|
||||
entries and make incomplete discovery clear. Distinguish an enumeration
|
||||
@@ -507,6 +520,8 @@ contracts and a short consumer recovery workflow.
|
||||
alongside cold registered-tool and temporary-launcher recovery.
|
||||
R15 adds canceled publication and preparation-failure handoff cases using
|
||||
explicit push readiness and fresh later invocations.
|
||||
R16 covers setup failure classifications and human/JSON guidance without
|
||||
querying an invalid or substituted endpoint.
|
||||
2. Establish read-only behavior through resulting refs, worktree/branch state,
|
||||
saved records, and controlled observations of candidate/hosted boundaries.
|
||||
Reuse lower-level classification and codec tests. Tests use local remotes,
|
||||
|
||||
@@ -694,6 +694,12 @@ no-recovery-step behavior for successful publication.
|
||||
|
||||
## R16: Classify endpoint setup failures by their actual cause — P3
|
||||
|
||||
**Completed:** The Git boundary marks configuration-read/resolution failures;
|
||||
observation maps those, positive rewrites, and other operational errors to the
|
||||
existing kinds while preserving causes. Named/unnamed malformed configuration,
|
||||
rewrite, tooling, cancellation, facade, and CLI diagnostic tests passed. Tests
|
||||
also verify no tag query after setup failure; Stage 1/6/8 guidance is updated.
|
||||
|
||||
**Relevant code:** `internal/publish/reconcile.go:116–128` and
|
||||
`internal/git/remote.go`'s endpoint setup. Affects Stages 1 and 6.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user