Integrate delivered HQ memory, finite physical convoy and RHS WCS dependencies

This commit is contained in:
2026-09-20 02:55:30 +02:00
parent e7b4141f69
commit a2aab17171
230 changed files with 37976 additions and 139 deletions
+13 -1
View File
@@ -128,7 +128,13 @@ class PackedChatArchiveTests(unittest.TestCase):
runtime=self.session/'input/addons';candidate=self.fixture.root/'chat-candidate';candidate.mkdir()
for project in archiver.ADDON_ORDER:
folder=runtime/project;folder.mkdir(exist_ok=True)
(folder/'addon.gproj').write_bytes((runner.ROOT/'addons'/project/'addon.gproj').read_bytes())
# This schema-2 archive represents the frozen vanilla-only closure. Current
# source projects may add external dependencies that this payload does not carry.
name,guid,dependencies=runner.PACKED_PROJECTS[project]
deps=[runner.PACKED_BASE]+[runner.PACKED_PROJECTS[key][1] for key in dependencies]
declaration=f'GameProject {{ ID "{name}" GUID "{guid}" TITLE "Synthetic {project}" Dependencies {{ '
declaration+=' '.join('"'+guid+'"' for guid in deps)+' } }\n'
(folder/'addon.gproj').write_text(declaration)
(folder/'data.pak').write_bytes(('fixture-pak-'+project).encode())
(folder/'resourceDatabase.rdb').write_bytes(('fixture-db-'+project).encode())
shutil.copytree(folder,candidate/project)
@@ -180,6 +186,12 @@ class PackedChatArchiveTests(unittest.TestCase):
path=self.packed['input']/'ai/addon.gproj';path.write_bytes((self.packed['input']/'core/addon.gproj').read_bytes())
data=path.read_bytes();self.meta['artifacts']['ai/addon.gproj']={'bytes':len(data),'sha256':archiver.digest(data)};self.update_metadata()
with self.assertRaises(ValueError):archiver.inspect(self.session)
def test_external_dependency_cannot_expand_frozen_packed_closure(self):
path=self.packed['input']/'ai/addon.gproj'
path.write_text(path.read_text().replace('Dependencies {','Dependencies { "595F2BF2F44836FB"'))
data=path.read_bytes();self.meta['artifacts']['ai/addon.gproj']={'bytes':len(data),'sha256':archiver.digest(data)}
self.update_metadata()
with self.assertRaisesRegex(ValueError,'identity or exact declared dependencies'):archiver.inspect(self.session)
def test_each_companion_loaded_mount_and_database_evidence_required(self):
for fragment in ("under name ERR_Ai", "name=ERR_Intel path=", "guid: '9AAEE9041D79809E'", 'header verified project=chat', 'local participant verified project=chat'):
self.reseal_console(self.content().replace(fragment,'missing'))