❯ I plan to repeat this on some other repositories. Do you have any lessons you'd like me to pass on to Claude for the next session, to help proceed more directly toward the solution we adopted?
Key technical facts (things that would have saved the most time if known upfront):
- HTTPS on port 8443, not HTTP on 8080 — @existdb/gulp-exist v5 defaults to secure: true; node-exist's compat shim converts that to protocol, overriding any HTTP setting from env vars. Don't fight it — use HTTPS and map port 8443 in CI, matching roaster's approach. Set rejectUnauthorized: false in the test runner for the self-signed cert.
- expath-pkg.xml path — Use semver.xqm, not content/semver.xqm. eXist-db's EXPath resolver prepends content/ automatically; doubling it breaks eXist-db 5.0.0 (6.x is forgiving). eXist-db-specific metadata (
<author>,<website>,<status>, etc.) belongs only in repo.xml, not expath-pkg.xml. - XQSuite test runner — Use inspect:module-functions(xs:anyURI("xmldb:exist:///db/apps/...")). The xmldb:exist:/// URI scheme is required; bare /db/... paths return an empty sequence. Submit XQuery via the REST API using the XML query document format (Content-Type: application/xml,
<query xmlns="http://exist.sourceforge.net/NS/exist">wrapper). - @existdb/gulp-replace-tmpl — Requires { unprefixed: true } option for @key@-style placeholders.
- Reference repositories — Use https://github.com/eeditiones/roaster (/Users/joe/workspace/roaster) as the primary model for gulpfile, CI, and package structure. Use https://github.com/line-o/xbow (/Users/joe/workspace/xbow) as the reference for XQSuite test patterns.
Process notes:
- Remember to migrate the
<changelog>from xar-assembly.xml into repo.xml - Structure the PR as two commits: one chore: for file restructuring, one feat!: for the new build system