Any auto-saved changes not updated within 30 days will be lost
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3554205. -->
Reported by: [mayur-sose](https://www.drupal.org/user/3832406)
Related to !442
>>>
<h3 id="overview">Overview</h3>
<p>
Unpublished changes created more than 30 days ago do not appear in the Canvas UI. Newly created changes display correctly, but older unpublished changes (created prior<br>
to 30 days ago) are missing from the interface. This affects all types of unpublished changes including:
</p>
<ul>
<li>Page edits (both draft and published pages)</li>
<li>Homepage configuration changes</li>
</ul>
<p>
<strong>Expected behavior:</strong><br><br>
All unpublished changes, regardless of when they were created, should remain accessible in the Canvas UI until they are explicitly published or discarded.
</p>
<h3>Manual Testing Instructions</h3>
<p> To test on 1.x to verify changes will expire after 30 days: </p>
<ol>
<li>Install the update_test module: <code>./vendor/bin/drush pm:install update_test</code> (allows faking time; if module not found, set<br>
<code>$settings['extension_discovery_scan_tests'] = TRUE;</code> in settings.php)</li>
<li>Set the date to January 30, 2026: <code>drush state:set update_test.mock_date 2026-1-30</code></li>
<li>Create an article to confirm the creation date matches January 30, 2026</li>
<li>In Canvas, create a page called "published page", publish it, then make a change. Create another page called "draft page" but do not publish it</li>
<li>Set "draft page" as the homepage, but do not publish this change</li>
<li>Confirm in "Review X Changes" you see both pages and the homepage change is present</li>
<li>Advance the date to March 1, 2026: <code>drush state:set update_test.mock_date 2026-3-1</code></li>
<li>Reload the page</li>
<li>The navigation and "Review X Changes" may still show the staged changes</li>
<li>Editing a page should not show the changes</li>
<li>Clear the cache: <code>drush cr</code> (note: you may encounter an "access denied" error if the session has expired)</li>
<li>The navigation and "Review X Changes" should no longer show the changes</li>
</ol>
<p>When testing with the merge request, the changes should not expire.</p>
<p>To test the upgrade path before the "Advance the date" step switch to the MR branch and run <code>drush updb</code> </p>
<h3 id="proposed-resolution">Proposed Resolution</h3>
<p> Switch from the expirable tempstore (which automatically expires data after 30 days) to a regular key-value store for storing unpublished changes. This ensures changes<br>
persist indefinitely until explicitly published or discarded. </p>
<p> The AutoSaveManager class now uses key-value store instead of tempstore for data persistence. </p>
<h3 id="user-interface-changes">User Interface Changes</h3>
<p> None. The UI remains the same, but unpublished changes will no longer disappear after 30 days. </p>
<h3 id="data-model-changes">Data Model Changes</h3>
<p> None. The data structure remains the same. </p>
<h3 id="migration-path">Migration Path</h3>
<p> An update hook (<code>canvas_update_10001()</code>) automatically migrates existing unpublished changes from tempstore to key-value store. </p>
issue