<freeStyleProject _class='hudson.model.FreeStyleProject'><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/</displayUrl></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description>thoughtframe-core — build the runtime WAR (:thoughtframe:createWar). Step 1: get the checkout+build green; publish/deploy added later.</description><displayName>thoughtframe-core</displayName><fullDisplayName>thoughtframe-core</fullDisplayName><fullName>thoughtframe-core</fullName><name>thoughtframe-core</name><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/</url><buildable>true</buildable><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>11</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11</displayName><duration>305139</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #11</fullDisplayName><id>11</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11</number><queueId>13</queueId><result>FAILURE</result><timestamp>1792094759474</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/11/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#10</displayName><duration>8675</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #10</fullDisplayName><id>10</id><inProgress>false</inProgress><keepLog>false</keepLog><number>10</number><queueId>12</queueId><result>FAILURE</result><timestamp>1792094398325</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/10/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>9</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#9</displayName><duration>8318</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #9</fullDisplayName><id>9</id><inProgress>false</inProgress><keepLog>false</keepLog><number>9</number><queueId>10</queueId><result>FAILURE</result><timestamp>1792094016303</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/9/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>8</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#8</displayName><duration>8607</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #8</fullDisplayName><id>8</id><inProgress>false</inProgress><keepLog>false</keepLog><number>8</number><queueId>9</queueId><result>FAILURE</result><timestamp>1792093214347</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/8/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#7</displayName><duration>8316</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #7</fullDisplayName><id>7</id><inProgress>false</inProgress><keepLog>false</keepLog><number>7</number><queueId>8</queueId><result>FAILURE</result><timestamp>1792093042139</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/7/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>6</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#6</displayName><duration>9291</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #6</fullDisplayName><id>6</id><inProgress>false</inProgress><keepLog>false</keepLog><number>6</number><queueId>7</queueId><result>FAILURE</result><timestamp>1792092519294</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/6/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docker/runtime/entrypoint.sh</affectedPath><commitId>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</commitId><timestamp>1792092423000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>runtime: ThoughtFrame-clean entrypoint

- drop the SensorTech quick-upgrade zip block (ThoughtFrame never writes that zip)
- drop the forced jdk.incubator.vector module (SensorTech DSP); keep
  --enable-native-access=ALL-UNNAMED (silences real JNA/Jetty warnings, JDK-25 future-proof)
- supervisor now traps TERM/INT and forwards to Jetty (clean 'docker stop') and exits on a
  clean Jetty exit instead of always looping
</comment><date>2026-10-15 16:27:03 -0300</date><id>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</id><msg>runtime: ThoughtFrame-clean entrypoint</msg><path><editType>edit</editType><file>docker/runtime/entrypoint.sh</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>5</buildNumber><marked><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#5</displayName><duration>36742</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #5</fullDisplayName><id>5</id><inProgress>false</inProgress><keepLog>false</keepLog><number>5</number><queueId>6</queueId><result>SUCCESS</result><timestamp>1792091691670</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/5/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>dam/webapp/WEB-INF/base/entermedia/.gitkeep</affectedPath><commitId>68330a2b9aa063a179f07f7633025694d4137e6a</commitId><timestamp>1792090400000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>dam: keep base/entermedia (empty scaffold) in git

/WEB-INF/base/entermedia is a fallbackdirectory target but the dir was empty, so
git never tracked it and the setupLinks symlink dangled on any non-laptop checkout
(createWar: 'Couldn't follow symbolic link .../base/entermedia'). Add a .gitkeep so
the directory exists off-host.
</comment><date>2026-10-15 15:53:20 -0300</date><id>68330a2b9aa063a179f07f7633025694d4137e6a</id><msg>dam: keep base/entermedia (empty scaffold) in git</msg><path><editType>add</editType><file>dam/webapp/WEB-INF/base/entermedia/.gitkeep</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><commitId>d9dd5d650879985d6bdeac3510f14bf0be5d671c</commitId><timestamp>1792090601000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: createWar copies platform bases directly (no symlink dependency)

Mirror the :damsel createWar: copy WEB-INF/base/{entermedia,emfrontend2,system,
manager,mediadb} from :dam and WEB-INF/base/openedit from :cms directly, instead of
following the setupLinks symlinks (host-specific absolute targets that dangle on a
fresh checkout / CI). Keeps setupLinks for the local run. WAR now assembles on any host.
</comment><date>2026-10-15 15:56:41 -0300</date><id>d9dd5d650879985d6bdeac3510f14bf0be5d671c</id><msg>thoughtframe: createWar copies platform bases directly (no symlink dependency)</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><commitId>7c0f76385bb313f4906cf01cfd96ea5b982e759f</commitId><timestamp>1792090739000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())

The War task was routing the classpath dirs into WEB-INF/classes (579 files) where they
shadow the jar and are never refreshed by the runtime's overlay upgrade. Mirror the
:damsel createWar: classpath = files(), so only WEB-INF/lib carries product code.
</comment><date>2026-10-15 15:58:59 -0300</date><id>7c0f76385bb313f4906cf01cfd96ea5b982e759f</id><msg>thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><affectedPath>settings.gradle</affectedPath><commitId>5af4670b53bdb049f997c63603327b4ca3142f35</commitId><timestamp>1792091673000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>build: JDK 25 toolchain + foojay auto-provisioning

:thoughtframe now declares a 25 toolchain and settings.gradle enables the foojay
resolver, so Gradle provisions JDK 25 itself instead of depending on the host JDK
being 25. Mirrors :damsel. Build is JDK-agnostic on any agent.
</comment><date>2026-10-15 16:14:33 -0300</date><id>5af4670b53bdb049f997c63603327b4ca3142f35</id><msg>build: JDK 25 toolchain + foojay auto-provisioning</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path><path><editType>edit</editType><file>settings.gradle</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>4</buildNumber><marked><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#4</displayName><duration>13972</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #4</fullDisplayName><id>4</id><inProgress>false</inProgress><keepLog>false</keepLog><number>4</number><queueId>5</queueId><result>FAILURE</result><timestamp>1792091672696</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/4/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>3</buildNumber><marked><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3</displayName><duration>49544</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #3</fullDisplayName><id>3</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3</number><queueId>4</queueId><result>FAILURE</result><timestamp>1792090300620</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/3/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>2</buildNumber><marked><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><branch><SHA1>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2</displayName><duration>23743</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #2</fullDisplayName><id>2</id><inProgress>false</inProgress><keepLog>false</keepLog><number>2</number><queueId>2</queueId><result>FAILURE</result><timestamp>1792087667506</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/2/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/webapp/WEB-INF/base/mediadb</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/base/manager</affectedPath><affectedPath>thoughtframe/build.gradle</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/.gitignore</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/base/system</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/base/emshare</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/base/entermedia</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/base/openedit</affectedPath><affectedPath>thoughtframe/webapp/WEB-INF/base/emfrontend</affectedPath><commitId>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</commitId><timestamp>1792087355000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: untrack the setupLinks-generated symlinks

base/{emfrontend,emshare,entermedia,manager,mediadb,openedit,system} were committed
as symlinks with absolute /home/ian/... targets, so a checkout on any other host
(e.g. Jenkins) had a dead emfrontend link and createWar failed with 'Couldn't follow
symbolic link'. Untrack + gitignore them (setupLinks recreates them per host), and
have setupLinks delete stale emfrontend/emshare strays.
</comment><date>2026-10-15 15:02:35 -0300</date><id>6b5002ef899ec9888b3fa08a3cd798af98b3ef5c</id><msg>thoughtframe: untrack the setupLinks-generated symlinks</msg><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/emfrontend</file></path><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/manager</file></path><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/mediadb</file></path><path><editType>edit</editType><file>thoughtframe/webapp/WEB-INF/.gitignore</file></path><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/entermedia</file></path><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/emshare</file></path><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/system</file></path><path><editType>delete</editType><file>thoughtframe/webapp/WEB-INF/base/openedit</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>1</buildNumber><marked><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><branch><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><branch><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><branch><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#1</displayName><duration>99986</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #1</fullDisplayName><id>1</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1</number><queueId>1</queueId><result>FAILURE</result><timestamp>1792087192720</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/1/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><color>red</color><firstBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>1</buildNumber><marked><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><branch><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><branch><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><branch><SHA1>38de0decd20863e3c9eebf442a4281936e7bb0c9</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#1</displayName><duration>99986</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #1</fullDisplayName><id>1</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1</number><queueId>1</queueId><result>FAILURE</result><timestamp>1792087192720</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/1/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></firstBuild><healthReport><description>Build stability: All recent builds failed.</description><iconClassName>icon-health-00to19</iconClassName><iconUrl>health-00to19.png</iconUrl><score>0</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>11</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11</displayName><duration>305139</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #11</fullDisplayName><id>11</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11</number><queueId>13</queueId><result>FAILURE</result><timestamp>1792094759474</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/11/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></lastBuild><lastCompletedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>11</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11</displayName><duration>305139</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #11</fullDisplayName><id>11</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11</number><queueId>13</queueId><result>FAILURE</result><timestamp>1792094759474</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/11/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></lastCompletedBuild><lastFailedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>11</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11</displayName><duration>305139</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #11</fullDisplayName><id>11</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11</number><queueId>13</queueId><result>FAILURE</result><timestamp>1792094759474</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/11/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></lastFailedBuild><lastStableBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>5</buildNumber><marked><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#5</displayName><duration>36742</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #5</fullDisplayName><id>5</id><inProgress>false</inProgress><keepLog>false</keepLog><number>5</number><queueId>6</queueId><result>SUCCESS</result><timestamp>1792091691670</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/5/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>dam/webapp/WEB-INF/base/entermedia/.gitkeep</affectedPath><commitId>68330a2b9aa063a179f07f7633025694d4137e6a</commitId><timestamp>1792090400000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>dam: keep base/entermedia (empty scaffold) in git

/WEB-INF/base/entermedia is a fallbackdirectory target but the dir was empty, so
git never tracked it and the setupLinks symlink dangled on any non-laptop checkout
(createWar: 'Couldn't follow symbolic link .../base/entermedia'). Add a .gitkeep so
the directory exists off-host.
</comment><date>2026-10-15 15:53:20 -0300</date><id>68330a2b9aa063a179f07f7633025694d4137e6a</id><msg>dam: keep base/entermedia (empty scaffold) in git</msg><path><editType>add</editType><file>dam/webapp/WEB-INF/base/entermedia/.gitkeep</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><commitId>d9dd5d650879985d6bdeac3510f14bf0be5d671c</commitId><timestamp>1792090601000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: createWar copies platform bases directly (no symlink dependency)

Mirror the :damsel createWar: copy WEB-INF/base/{entermedia,emfrontend2,system,
manager,mediadb} from :dam and WEB-INF/base/openedit from :cms directly, instead of
following the setupLinks symlinks (host-specific absolute targets that dangle on a
fresh checkout / CI). Keeps setupLinks for the local run. WAR now assembles on any host.
</comment><date>2026-10-15 15:56:41 -0300</date><id>d9dd5d650879985d6bdeac3510f14bf0be5d671c</id><msg>thoughtframe: createWar copies platform bases directly (no symlink dependency)</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><commitId>7c0f76385bb313f4906cf01cfd96ea5b982e759f</commitId><timestamp>1792090739000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())

The War task was routing the classpath dirs into WEB-INF/classes (579 files) where they
shadow the jar and are never refreshed by the runtime's overlay upgrade. Mirror the
:damsel createWar: classpath = files(), so only WEB-INF/lib carries product code.
</comment><date>2026-10-15 15:58:59 -0300</date><id>7c0f76385bb313f4906cf01cfd96ea5b982e759f</id><msg>thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><affectedPath>settings.gradle</affectedPath><commitId>5af4670b53bdb049f997c63603327b4ca3142f35</commitId><timestamp>1792091673000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>build: JDK 25 toolchain + foojay auto-provisioning

:thoughtframe now declares a 25 toolchain and settings.gradle enables the foojay
resolver, so Gradle provisions JDK 25 itself instead of depending on the host JDK
being 25. Mirrors :damsel. Build is JDK-agnostic on any agent.
</comment><date>2026-10-15 16:14:33 -0300</date><id>5af4670b53bdb049f997c63603327b4ca3142f35</id><msg>build: JDK 25 toolchain + foojay auto-provisioning</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path><path><editType>edit</editType><file>settings.gradle</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></lastStableBuild><lastSuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>5</buildNumber><marked><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><branch><SHA1>5af4670b53bdb049f997c63603327b4ca3142f35</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#5</displayName><duration>36742</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #5</fullDisplayName><id>5</id><inProgress>false</inProgress><keepLog>false</keepLog><number>5</number><queueId>6</queueId><result>SUCCESS</result><timestamp>1792091691670</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/5/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>dam/webapp/WEB-INF/base/entermedia/.gitkeep</affectedPath><commitId>68330a2b9aa063a179f07f7633025694d4137e6a</commitId><timestamp>1792090400000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>dam: keep base/entermedia (empty scaffold) in git

/WEB-INF/base/entermedia is a fallbackdirectory target but the dir was empty, so
git never tracked it and the setupLinks symlink dangled on any non-laptop checkout
(createWar: 'Couldn't follow symbolic link .../base/entermedia'). Add a .gitkeep so
the directory exists off-host.
</comment><date>2026-10-15 15:53:20 -0300</date><id>68330a2b9aa063a179f07f7633025694d4137e6a</id><msg>dam: keep base/entermedia (empty scaffold) in git</msg><path><editType>add</editType><file>dam/webapp/WEB-INF/base/entermedia/.gitkeep</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><commitId>d9dd5d650879985d6bdeac3510f14bf0be5d671c</commitId><timestamp>1792090601000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: createWar copies platform bases directly (no symlink dependency)

Mirror the :damsel createWar: copy WEB-INF/base/{entermedia,emfrontend2,system,
manager,mediadb} from :dam and WEB-INF/base/openedit from :cms directly, instead of
following the setupLinks symlinks (host-specific absolute targets that dangle on a
fresh checkout / CI). Keeps setupLinks for the local run. WAR now assembles on any host.
</comment><date>2026-10-15 15:56:41 -0300</date><id>d9dd5d650879985d6bdeac3510f14bf0be5d671c</id><msg>thoughtframe: createWar copies platform bases directly (no symlink dependency)</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><commitId>7c0f76385bb313f4906cf01cfd96ea5b982e759f</commitId><timestamp>1792090739000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())

The War task was routing the classpath dirs into WEB-INF/classes (579 files) where they
shadow the jar and are never refreshed by the runtime's overlay upgrade. Mirror the
:damsel createWar: classpath = files(), so only WEB-INF/lib carries product code.
</comment><date>2026-10-15 15:58:59 -0300</date><id>7c0f76385bb313f4906cf01cfd96ea5b982e759f</id><msg>thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>thoughtframe/build.gradle</affectedPath><affectedPath>settings.gradle</affectedPath><commitId>5af4670b53bdb049f997c63603327b4ca3142f35</commitId><timestamp>1792091673000</timestamp><author><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></author><authorEmail>ian@oneliveweb.com</authorEmail><comment>build: JDK 25 toolchain + foojay auto-provisioning

:thoughtframe now declares a 25 toolchain and settings.gradle enables the foojay
resolver, so Gradle provisions JDK 25 itself instead of depending on the host JDK
being 25. Mirrors :damsel. Build is JDK-agnostic on any agent.
</comment><date>2026-10-15 16:14:33 -0300</date><id>5af4670b53bdb049f997c63603327b4ca3142f35</id><msg>build: JDK 25 toolchain + foojay auto-provisioning</msg><path><editType>edit</editType><file>thoughtframe/build.gradle</file></path><path><editType>edit</editType><file>settings.gradle</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Ian</shortDescription><userId>admin</userId><userName>Ian</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>11</buildNumber><marked><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><branch><SHA1>93cd5feba1b534f391bbb5ee105614bd4c3c73ce</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11</displayName><duration>305139</duration><estimatedDuration>116852</estimatedDuration><fullDisplayName>thoughtframe-core #11</fullDisplayName><id>11</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11</number><queueId>13</queueId><result>FAILURE</result><timestamp>1792094759474</timestamp><url>http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/11/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>http://dev.ijsolutions.ca/jenkins/user/ian</absoluteUrl><fullName>ian</fullName></culprit></lastUnsuccessfulBuild><nextBuildNumber>12</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'><type>hudson.plugins.git.GitSCM</type><branche></branche><mergeOptions><fastForwardMode>--ff</fastForwardMode><mergeStrategy>default</mergeStrategy></mergeOptions><userRemoteConfig></userRemoteConfig></scm></freeStyleProject>