You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Keep historical backup bindings stable across validation heartbeats #5793
The historical backup observation reached its native repository read, then refused the result because its deployment binding changed. The binding currently hashes entire API responses, including resource versions and regularly updated validation status. These can change while the repository, credentials and object identities remain the same.
Steps to Reproduce
Bind a healthy backup location, repository and their credentials.
Read repository metadata while the backup controller updates its validation status.
Rebind the same deployment and observe the whole-response digest reject it.
Expected Behavior
The observation requires unchanged object identity, repository scope, usable state and credentials. Routine API bookkeeping alone should not invalidate those facts.
Actual Behavior
The protected observation held at deployment-changed and accepted no preservation result.
Acceptance Criteria
Reproduce rejection from bookkeeping changes with a failing test.
Bind the complete validated identity, scope, state and credentials without volatile bookkeeping.
Continue rejecting replaced objects, changed credentials, changed repository scope and unusable states.
Verify a complete native observation after protected deployment; metadata does not establish recoverability or authorize a reset.
Verified on 8 November 2026. All four acceptance criteria now hold, so this issue can close.
Criteria 1–3.fix(storage): bind historical backups across validation heartbeats #5794 merged on 3 November at 03:23Z as cedb56d. It adds a failing-first regression for routine controller updates. The binding now covers each object's identity, repository scope, ready state and credentials, and no longer compares resource versions. It still rejects a replaced object, a missing resource version, a changed credential and a changed scope. Credentials are compared only in memory.
Criterion 4: a complete native observation after the protected merge. Before the fix, dispatch 41547568512, at defc685, stopped at stage=deployment-changed. After the fix, dispatch 41573561049 ran on main at 55c8c37, which includes cedb56d. Both jobs passed, and it produced a complete metadata-only catalogue for both repositories (wedding-app and actual-budget) with no hold.
As the criterion says, this result covers metadata only. It does not prove that any backup can be recovered, and it does not authorize a reset. The incompleteMetadata count that run reported for one repository belongs to the migration work in #5582, not to this binding issue.
Activity
chore: agent-claim #5793 nonce=39d7660a91971f9e641ac3a54a190716
fix(storage): compare bound credentials directly in memory
devantler commentedon Nov 8, 2026
Verified on 8 November 2026. All four acceptance criteria now hold, so this issue can close.
cedb56d. It adds a failing-first regression for routine controller updates. The binding now covers each object's identity, repository scope, ready state and credentials, and no longer compares resource versions. It still rejects a replaced object, a missing resource version, a changed credential and a changed scope. Credentials are compared only in memory.defc685, stopped atstage=deployment-changed. After the fix, dispatch 41573561049 ran onmainat55c8c37, which includescedb56d. Both jobs passed, and it produced a complete metadata-only catalogue for both repositories (wedding-appandactual-budget) with no hold.As the criterion says, this result covers metadata only. It does not prove that any backup can be recovered, and it does not authorize a reset. The
incompleteMetadatacount that run reported for one repository belongs to the migration work in #5582, not to this binding issue.