feat(api): retrieve project history via loopback GET-by-id - #429
feat(api): retrieve project history via loopback GET-by-id#429seonghobae wants to merge 3 commits into
Conversation
LineageWeave operators can GET /v1/project-histories/{idempotency_key} on
tepp-loopback to recover one stored cutoff-safe projection without replaying
POST. inference_status remains temporal_association_only.
tepp.scientific_acceptance.v1 never appears. Does not infer causality.
Not collection GET. Not collection CLI. Stacked on #424.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| pub(crate) fn validate_project_history_registry_identity(value: &str) -> Result<(), ApiError> { | ||
| if value.chars().any(char::is_control) { | ||
| return Err(ApiError::InvalidWirePayload); | ||
| } | ||
| validate_bounded_text(value, 256)?; |
There was a problem hiding this comment.
🟡 Whitespace tenant identities become unreachable
validate_project_history_registry_identity accepts tenant IDs with boundary whitespace. Header parsing trims it, so collection and retrieval cannot find accepted histories.
| pub(crate) fn validate_project_history_registry_identity(value: &str) -> Result<(), ApiError> { | |
| if value.chars().any(char::is_control) { | |
| return Err(ApiError::InvalidWirePayload); | |
| } | |
| validate_bounded_text(value, 256)?; | |
| pub(crate) fn validate_project_history_registry_identity(value: &str) -> Result<(), ApiError> { | |
| if value.trim() != value || value.chars().any(char::is_control) { | |
| return Err(ApiError::InvalidWirePayload); | |
| } | |
| validate_bounded_text(value, 256)?; |
Was this helpful? React with 👍 or 👎 to provide feedback.
LineageWeave operators can run tepp-project-history-get get against tepp-loopback to recover one stored cutoff-safe projection without replaying POST. inference_status remains temporal_association_only. tepp.scientific_acceptance.v1 never appears. Does not infer causality. Not collection CLI. Not GET-by-id HTTP. Stacked on #429.
Folded into #431
Closed as
superseded_by_fold, not discarded. #431's head contains this PR as its direct ancestor and has been retargeted to this PR's former base, so the project-history GET-by-id implementation/tests and this review history remain intact while queue WIP is reduced. Stored-request vehicle #456 also retains this ancestry.Canonical retrieval landing vehicle: #431 (
feat(api): consolidate project-history retrieval GET and CLI).Do not reopen unless a surviving folded head demonstrably loses unique behavior or evidence.