<feed xmlns='http://www.w3.org/2005/Atom'>
<title>phorge-elasticsearch-modern.git/src/__tests__/VyOSElasticModernHostTestCase.php, branch development</title>
<subtitle>Phorge full-text search extension for Elasticsearch 7.x / 8.x / OpenSearch via the typeless API (mirror of https://github.com/vyos/phorge-elasticsearch-modern.git)
</subtitle>
<id>https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/atom?h=development</id>
<link rel='self' href='https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/atom?h=development'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/'/>
<updated>2026-05-23T12:48:18+00:00</updated>
<entry>
<title>Engine: revert abstract → plain class for production dispatch</title>
<updated>2026-05-23T12:48:18+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-23T12:48:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/commit/?id=011eec12f9176a6a8b8d8b9133bc00107a7855c0'/>
<id>urn:sha1:011eec12f9176a6a8b8d8b9133bc00107a7855c0</id>
<content type='text'>
A recent fixup cascade declared VyOSElasticModernFulltextStorageEngine
as 'abstract class' to enable test-doubling subclasses
(VyOSElasticModernHostTestEngine, VyOSElasticModernFulltextStorageEngineTestDouble).

That change broke production dispatch: Phorge's PhutilClassMapQuery
selects engines via PhutilSymbolLoader::loadObjects(), which calls
setConcreteOnly(true) and unsets any class where reflection reports
isAbstract(). The engine class would no longer be discoverable by
cluster.search[].type:elasticsearch-modern, and the test-fixture
subclasses live in src/__tests__/ which libphutil excludes from
runtime class-map loading.

Revert to plain 'class' (not 'final', not 'abstract'). Plain
'class' is discoverable by PhutilClassMapQuery; existing test
fixtures keep working without rewrite; operators can subclass if
they need to (harmless).

Also update VyOSElasticModernHostTestCase::testPlaceholderEngineIsAbstract
→ testEngineIsConcreteForDispatch, inverting the assertion to document
the correct invariant and its rationale (setConcreteOnly reference).

All 22 tests pass.

🤖 Generated by [robots](https://vyos.io)
</content>
</entry>
<entry>
<title>H1: keep placeholder engine undiscoverable</title>
<updated>2026-05-22T09:59:41+00:00</updated>
<author>
<name>copilot-swe-agent[bot]</name>
<email>198982749+Copilot@users.noreply.github.com</email>
</author>
<published>2026-05-22T09:59:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/commit/?id=5e97aa48c13f75537915018754339b2336f14c1a'/>
<id>urn:sha1:5e97aa48c13f75537915018754339b2336f14c1a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>H1: Apply code-quality fixes from review</title>
<updated>2026-05-22T07:52:57+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-22T07:52:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/commit/?id=40775baed5c08582b1976d1a1fa054ad0e192826'/>
<id>urn:sha1:40775baed5c08582b1976d1a1fa054ad0e192826</id>
<content type='text'>
- Engine class marked final (matches host class declaration; no
  design intent to subclass).
- testConfigOverrides now also asserts host and port (these were
  the most-likely-to-be-misconfigured fields; previously set but
  unverified).

🤖 Generated by [robots](https://vyos.io)
</content>
</entry>
<entry>
<title>Add VyOSElasticModernHost + placeholder engine stub</title>
<updated>2026-05-22T07:43:48+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-22T07:43:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/phorge-elasticsearch-modern.git/commit/?id=77fdd523554e18abc3a834bbd52527f015bc4aa8'/>
<id>urn:sha1:77fdd523554e18abc3a834bbd52527f015bc4aa8</id>
<content type='text'>
Host class mirrors PhabricatorElasticsearchHost's surface. Engine is
a stub providing only getEngineIdentifier() and getHostType() so the
host's tests can construct an engine instance; real engine
implementation lands in subsequent commits. All six abstract methods
of PhabricatorFulltextStorageEngine are implemented (four as throwing
stubs to be replaced in E7/E8).

.arcconfig gains "src/" in the load list so arc unit can discover the
extension library; test case extends PhutilTestCase (no DB needed for
pure-PHP host property assertions).

🤖 Generated by [robots](https://vyos.io)
</content>
</entry>
</feed>
