diff --git a/generate_build_config.py b/generate_build_config.py
index 3fcfe42..09a71fe 100755
--- a/generate_build_config.py
+++ b/generate_build_config.py
@@ -30,7 +30,7 @@ runcmd:
 - {homedir}/launchpad-buildd/mount-chroot $BUILD_ID
 - {homedir}/launchpad-buildd/update-debian-chroot $BUILD_ID
 {ppa_conf}
-- {homedir}/launchpad-buildd/buildlivefs --arch amd64 --project ubuntu-cpc --series xenial --build-id $BUILD_ID
+- {homedir}/launchpad-buildd/buildlivefs --arch amd64 --project ubuntu-cpc --series xenial --build-id $BUILD_ID --datestamp ubuntu-standalone-builder-$(date +%s)
 - {homedir}/launchpad-buildd/umount-chroot $BUILD_ID
 - mkdir {homedir}/images
 - mv $CHROOT_ROOT/build/livecd.ubuntu-cpc.* {homedir}/images

Set a serial in /etc/cloud/build.info in built images
This should make it clear that they are custom-built images.
diff --git a/tests.py b/tests.py
index 5f83236..1b55bfa 100644
--- a/tests.py
+++ b/tests.py
@@ -65,6 +65,13 @@ class TestWriteCloudConfig(object):
         assert '- export BUILD_ID=output' in \
             write_cloud_config_in_memory().splitlines()
 
+    def test_serial_includes_ubuntu_standalone_builder(
+            self, write_cloud_config_in_memory):
+        buildlivefs_line = [
+            line for line in write_cloud_config_in_memory().splitlines()
+            if 'buildlivefs' in line][0]
+        assert '--datestamp ubuntu-standalone-builder' in buildlivefs_line
+
     def test_write_files_not_included_by_default(
             self, write_cloud_config_in_memory):
         cloud_config = yaml.load(write_cloud_config_in_memory())

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-mock pyyaml six
apt-get update apt-get install -y gcc
3.5
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
importlib-metadata==4.8.3
iniconfig==1.1.1
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-mock==3.6.1
PyYAML==6.0.1
six==1.17.0
tomli==1.2.3
typing_extensions==4.1.1
-e git+https://github.com/OddBloke/ubuntu-standalone-builder.git@4930aaa0713dd1ea1a7bb598ffcb75de30b2d381#egg=ubuntu_standalone_builder
zipp==3.6.0

name: ubuntu-standalone-builder
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-mock==3.6.1
      - pyyaml==6.0.1
      - six==1.17.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/ubuntu-standalone-builder

tests.py::TestWriteCloudConfig::test_serial_includes_ubuntu_standalone_builder
tests.py::TestWriteCloudConfig::test_written_output_is_yaml tests.py::TestWriteCloudConfig::test_write_files_not_included_by_default tests.py::TestWriteCloudConfig::test_binary_hook_filter_included tests.py::TestWriteCloudConfig::test_binary_hook_sequence_is_lower_than_030 tests.py::TestWriteCloudConfigWithCustomisationScript::test_write_files_stanza_count_produced_for_customisation_script[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_write_files_stanza_count_produced_for_customisation_script[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_write_files_stanza_count_produced_for_customisation_script[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_owned_by_root[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_owned_by_root[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_owned_by_root[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_executable_by_root[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_executable_by_root[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_executable_by_root[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_placed_in_correct_directory[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_placed_in_correct_directory[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_placed_in_correct_directory[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_an_appropriate_hook[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_an_appropriate_hook[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_an_appropriate_hook[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_marked_as_base64[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_marked_as_base64[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_marked_as_base64[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_included_in_template_as_base64[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_included_in_template_as_base64[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_customisation_script_is_included_in_template_as_base64[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_empty_customisation_script_doesnt_produce_write_files_stanza[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_empty_customisation_script_doesnt_produce_write_files_stanza[customisation_script_tmpdir1] tests.py::TestWriteCloudConfigWithCustomisationScript::test_empty_customisation_script_doesnt_produce_write_files_stanza[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_setup_teardown_sequence_numbers[customisation_script_tmpdir0] tests.py::TestWriteCloudConfigWithCustomisationScript::test_setup_teardown_sequence_numbers[customisation_script_tmpdir2] tests.py::TestWriteCloudConfigWithCustomisationScript::test_setup_teardown_content_matches_template[customisation_script_tmpdir0-setup] tests.py::TestWriteCloudConfigWithCustomisationScript::test_setup_teardown_content_matches_template[customisation_script_tmpdir0-teardown] tests.py::TestWriteCloudConfigWithCustomisationScript::test_setup_teardown_content_matches_template[customisation_script_tmpdir2-setup] tests.py::TestWriteCloudConfigWithCustomisationScript::test_setup_teardown_content_matches_template[customisation_script_tmpdir2-teardown]
tests.py::TestGetPPASnippet::test_unknown_url tests.py::TestGetPPASnippet::test_public_ppa tests.py::TestGetPPASnippet::test_https_not_private_ppa tests.py::TestGetPPASnippet::test_private_ppa_no_key tests.py::TestGetPPASnippet::test_private_ppa_with_key tests.py::TestWriteCloudConfig::test_writes_to_file tests.py::TestWriteCloudConfig::test_written_output_is_cloud_config tests.py::TestWriteCloudConfig::test_default_build_id_is_output tests.py::TestWriteCloudConfig::test_no_ppa_included_by_default tests.py::TestWriteCloudConfig::test_daily_image_used tests.py::TestWriteCloudConfig::test_latest_daily_image_used tests.py::TestWriteCloudConfig::test_ppa_snippet_included tests.py::TestMain::test_main_exits_nonzero_with_too_many_cli_arguments tests.py::TestMain::test_main_passes_arguments_to_write_cloud_config
generate_build_config.py
generate_build_config.py