Clarify recovery transport settings and partial discovery
This commit is contained in:
@@ -29,6 +29,8 @@ the [maintainer runbook](../release.md#resolve-failures) describes manual recove
|
|||||||
- `internal/git.Endpoint.QueryTag` verifies the captured endpoint's scoped URL
|
- `internal/git.Endpoint.QueryTag` verifies the captured endpoint's scoped URL
|
||||||
resolution before querying the full tag and peeled ref. Inconsistent exact-ref
|
resolution before querying the full tag and peeled ref. Inconsistent exact-ref
|
||||||
records remain unresolved.
|
records remain unresolved.
|
||||||
|
- The temporary remote carries selected remote-specific transport settings,
|
||||||
|
including proxy, upload-pack, and server options, alongside the captured URL.
|
||||||
- The CLI masks HTTP(S) endpoint userinfo in diagnostics. The runbook still asks
|
- The CLI masks HTTP(S) endpoint userinfo in diagnostics. The runbook still asks
|
||||||
maintainers to copy the displayed endpoint and compare remote object IDs.
|
maintainers to copy the displayed endpoint and compare remote object IDs.
|
||||||
- There is no public operation or CLI command for later reconciliation, and no
|
- There is no public operation or CLI command for later reconciliation, and no
|
||||||
@@ -68,6 +70,9 @@ Reconciliation uses the original captured endpoint and full tag, including neste
|
|||||||
module prefixes. It checks that URL rewriting still permits observation of that
|
module prefixes. It checks that URL rewriting still permits observation of that
|
||||||
endpoint. A changed remote configuration does not substitute a new destination.
|
endpoint. A changed remote configuration does not substitute a new destination.
|
||||||
Authentication remains locally supplied through the supported Git mechanisms.
|
Authentication remains locally supplied through the supported Git mechanisms.
|
||||||
|
The original remote name is optional transport context. Later reconciliation
|
||||||
|
uses its current supported transport settings while keeping the recorded endpoint
|
||||||
|
fixed, allowing operators to repair local configuration before observation.
|
||||||
|
|
||||||
The operation observes remote state without creating, pushing, moving, or
|
The operation observes remote state without creating, pushing, moving, or
|
||||||
deleting tags, changing branches, validating a candidate, or delivering hosted
|
deleting tags, changing branches, validating a candidate, or delivering hosted
|
||||||
@@ -95,6 +100,11 @@ query behavior. Keep immediate failed-push reconciliation bounded and preserve
|
|||||||
its existing error context. Later reconciliation should honor caller cancellation
|
its existing error context. Later reconciliation should honor caller cancellation
|
||||||
and return an unresolved outcome when observation cannot complete. It should not
|
and return an unresolved outcome when observation cannot complete. It should not
|
||||||
invoke the current-remote equality guards that belong to an active publication.
|
invoke the current-remote equality guards that belong to an active publication.
|
||||||
|
Read the supported transport settings using the recorded remote name when
|
||||||
|
available, and apply them to the temporary remote with the recorded endpoint.
|
||||||
|
Keep the endpoint-resolution check. Missing remote settings permit observation
|
||||||
|
with available endpoint/global configuration; configuration-read failures remain
|
||||||
|
unresolved with their causes. Distinguish these cases from a changed destination.
|
||||||
|
|
||||||
### 2. Define public evidence and reconciliation results
|
### 2. Define public evidence and reconciliation results
|
||||||
|
|
||||||
@@ -118,6 +128,9 @@ Return a single facade-owned evidence value from publication that reconciliation
|
|||||||
accepts directly. Provide a supported record-loading helper returning that same
|
accepts directly. Provide a supported record-loading helper returning that same
|
||||||
type so Go consumers can recover without copying fields or implementing JSON
|
type so Go consumers can recover without copying fields or implementing JSON
|
||||||
parsing.
|
parsing.
|
||||||
|
Include the original remote name as optional context in typed evidence and saved
|
||||||
|
records. Recovery uses current connection settings rather than a stored snapshot
|
||||||
|
of transport configuration; the recorded endpoint retains its identity role.
|
||||||
|
|
||||||
Keep facade ownership and internal Git boundaries. Exact type names, field names,
|
Keep facade ownership and internal Git boundaries. Exact type names, field names,
|
||||||
and signatures belong in API design; no new public implementation package is
|
and signatures belong in API design; no new public implementation package is
|
||||||
@@ -170,6 +183,13 @@ and recording time when available, with credentials redacted. Record the time
|
|||||||
as discovery metadata; it does not establish whether a push occurred. Listing
|
as discovery metadata; it does not establish whether a push occurred. Listing
|
||||||
reads saved records without querying remotes or choosing an attempt for recovery.
|
reads saved records without querying remotes or choosing an attempt for recovery.
|
||||||
Include discovery in the recovery guide for interrupted processes and lost output.
|
Include discovery in the recovery guide for interrupted processes and lost output.
|
||||||
|
Return readable attempts alongside per-record diagnostics for unreadable,
|
||||||
|
malformed, or unsupported-format records. Identify the affected paths and retain
|
||||||
|
credential redaction. Expose entries and diagnostics to Go callers and structured
|
||||||
|
output; the CLI shows usable entries and indicates incomplete discovery. Report
|
||||||
|
failure to enumerate the storage location as a discovery failure, not an empty
|
||||||
|
collection. An explicitly selected unreadable or unsupported record produces its
|
||||||
|
own error without selecting a different attempt.
|
||||||
|
|
||||||
Make unresolved diagnostics identify missing evidence, unreadable records,
|
Make unresolved diagnostics identify missing evidence, unreadable records,
|
||||||
endpoint rewriting, and failed remote observation distinctly. Identify the
|
endpoint rewriting, and failed remote observation distinctly. Identify the
|
||||||
@@ -207,6 +227,13 @@ overridden storage locations, partial records, and credential redaction. Verify
|
|||||||
that listing performs no remote observation or automatic attempt selection.
|
that listing performs no remote observation or automatic attempt selection.
|
||||||
Cover the diagnostic distinctions and expected/observed conflict identities
|
Cover the diagnostic distinctions and expected/observed conflict identities
|
||||||
without requiring incidental error wording.
|
without requiring incidental error wording.
|
||||||
|
Cover current remote-specific transport settings, repaired configuration,
|
||||||
|
missing or renamed remotes, and configuration-read failures. Verify that changed
|
||||||
|
fetch or push URLs do not replace the recorded endpoint and that endpoint
|
||||||
|
rewriting still receives the existing check. Exercise discovery containing both
|
||||||
|
readable and damaged or unsupported records, storage-enumeration failure, and
|
||||||
|
explicit selection of an unusable record. Preserve useful partial discovery
|
||||||
|
results and credential-safe diagnostics across the API and CLI.
|
||||||
|
|
||||||
Run the normal offline suite and facade checks when code lands. Update GoDoc,
|
Run the normal offline suite and facade checks when code lands. Update GoDoc,
|
||||||
CLI documentation, the publication guide, and recovery instructions together.
|
CLI documentation, the publication guide, and recovery instructions together.
|
||||||
@@ -232,8 +259,8 @@ this information and the CLI presents it.
|
|||||||
Report the record path and require explicit selection for stored-record
|
Report the record path and require explicit selection for stored-record
|
||||||
reconciliation. Record evidence before the push once the necessary identity
|
reconciliation. Record evidence before the push once the necessary identity
|
||||||
exists. Treat storage failure as a clearly reported loss of the saved handoff,
|
exists. Treat storage failure as a clearly reported loss of the saved handoff,
|
||||||
while preserving the
|
while preserving the actual publication result and existing publication
|
||||||
actual publication result and existing publication prerequisites. An override
|
prerequisites. An override
|
||||||
changes the location, not publication's response to a recording failure.
|
changes the location, not publication's response to a recording failure.
|
||||||
|
|
||||||
Automatic storage removes a routine setup decision and keeps default records
|
Automatic storage removes a routine setup decision and keeps default records
|
||||||
@@ -295,3 +322,29 @@ and failed remote observation, and identify useful next actions when known.
|
|||||||
Conflict output includes expected and observed tag-object IDs. This makes
|
Conflict output includes expected and observed tag-object IDs. This makes
|
||||||
recovery actionable while preserving the existing outcome classifications and
|
recovery actionable while preserving the existing outcome classifications and
|
||||||
explicit corrective-action workflow.
|
explicit corrective-action workflow.
|
||||||
|
|
||||||
|
### 6. Current transport settings with a fixed recorded endpoint
|
||||||
|
|
||||||
|
Record the original remote name as optional transport context. During later
|
||||||
|
reconciliation, read its current supported transport settings and use them with
|
||||||
|
the exact recorded endpoint. The remote's current fetch and push URLs do not
|
||||||
|
replace that endpoint. Retain the existing check that URL rewriting leaves the
|
||||||
|
recorded endpoint unchanged.
|
||||||
|
|
||||||
|
A missing or renamed remote alone does not invalidate the evidence. Observation
|
||||||
|
can use available endpoint/global configuration; operators may restore required
|
||||||
|
settings locally. Configuration-read failures and failed observations remain
|
||||||
|
unresolved with cause information. This separates original publication identity
|
||||||
|
from repairable connection settings without snapshotting transport configuration.
|
||||||
|
|
||||||
|
### 7. Discovery preserves readable attempts
|
||||||
|
|
||||||
|
An unreadable, malformed, or unsupported record produces a diagnostic while
|
||||||
|
other readable attempts remain discoverable. Results expose both entries and
|
||||||
|
per-record diagnostics, identifying affected paths with credential-safe output.
|
||||||
|
The CLI presents usable entries and makes incomplete discovery clear.
|
||||||
|
|
||||||
|
Failure to enumerate storage is a discovery failure rather than an empty result.
|
||||||
|
Explicit reconciliation of an unusable record reports that record's error and
|
||||||
|
retains the caller's selection. Discovery and record errors do not authorize
|
||||||
|
automatic selection or corrective actions.
|
||||||
|
|||||||
Reference in New Issue
Block a user