Skip to content

Accept legacy ACTIONGROUP-prefixed UUIDs - #3

Merged
evanpurkhiser merged 1 commit into
evanpurkhiser:mainfrom
leightonhughes:fix/legacy-actiongroup-ids
Aug 26, 2026
Merged

Accept legacy ACTIONGROUP-prefixed UUIDs#3
evanpurkhiser merged 1 commit into
evanpurkhiser:mainfrom
leightonhughes:fix/legacy-actiongroup-ids

Conversation

@leightonhughes

Copy link
Copy Markdown
Contributor

Summary

Support historical Things identifiers formatted as ACTIONGROUP-<UUID>.

Long-lived Things Cloud histories can contain these identifiers in object keys and task relationships. The current parser accepts plain UUIDs and compact base58 IDs, but rejects the prefixed form. This causes append-log replay to abort with Corrupt log entry, making every CLI command unusable.

This change:

  • parses ACTIONGROUP-<UUID> through the existing legacy UUID canonicalization path;
  • preserves the referenced action-group relationship rather than skipping its containing log entry;
  • includes the append-log byte offset and underlying deserialization error when another incompatible record is encountered; and
  • adds regression coverage for direct ID deserialization and full append-log folding.

Why not skip the entry?

A single append-log line can contain multiple valid objects. Skipping the entire line may discard unrelated tasks or projects alongside the incompatible identifier. This targeted compatibility fix preserves the data instead.

This is related to #1, which reports the same failure on accounts with long Things Cloud histories and specifically mentions historical ACTIONGROUP-* IDs. It follows the maintainer's preference there for fixing unsupported historical formats rather than silently skipping them.

Privacy

The improved diagnostic reports the file and byte offset plus the parser error. It does not print the raw log entry, which may contain private task titles or notes. All regression fixtures use synthetic data.

Test plan

  • Legacy ACTIONGROUP-<UUID> parses to the same canonical ID as its UUID suffix.
  • Serde deserialization accepts the historical identifier.
  • Append-log folding preserves a task's action-group relationship.
  • Corrupt-log errors include the byte offset and underlying parser error.
  • cargo fmt --all -- --check
  • cargo test --all-targets (92 unit tests and all 18 CLI test groups)
  • Verified against a long-lived Things Cloud history that previously failed during its first log entry.

@evanpurkhiser

Copy link
Copy Markdown
Owner

Good stuff!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants