{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Started by user Ian",
          "userId" : "admin",
          "userName" : "Ian"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 5,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "5af4670b53bdb049f997c63603327b4ca3142f35",
            "branch" : [
              {
                "SHA1" : "5af4670b53bdb049f997c63603327b4ca3142f35",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "5af4670b53bdb049f997c63603327b4ca3142f35",
            "branch" : [
              {
                "SHA1" : "5af4670b53bdb049f997c63603327b4ca3142f35",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "5af4670b53bdb049f997c63603327b4ca3142f35",
        "branch" : [
          {
            "SHA1" : "5af4670b53bdb049f997c63603327b4ca3142f35",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://thoughtframe.ai/thoughtframe/classes/AZhhg2hJgniNmOZnUs4e/code/repo/thoughtframe-core/thoughtframe-core"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#5",
  "duration" : 36742,
  "estimatedDuration" : 116852,
  "executor" : null,
  "fullDisplayName" : "thoughtframe-core #5",
  "id" : "5",
  "inProgress" : false,
  "keepLog" : false,
  "number" : 5,
  "queueId" : 6,
  "result" : "SUCCESS",
  "timestamp" : 1792091691670,
  "url" : "http://dev.ijsolutions.ca/jenkins/view/all/job/thoughtframe-core/5/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "dam/webapp/WEB-INF/base/entermedia/.gitkeep"
        ],
        "commitId" : "68330a2b9aa063a179f07f7633025694d4137e6a",
        "timestamp" : 1792090400000,
        "author" : {
          "absoluteUrl" : "http://dev.ijsolutions.ca/jenkins/user/ian",
          "fullName" : "ian"
        },
        "authorEmail" : "ian@oneliveweb.com",
        "comment" : "dam: keep base/entermedia (empty scaffold) in git\u000a\u000a/WEB-INF/base/entermedia is a fallbackdirectory target but the dir was empty, so\u000agit never tracked it and the setupLinks symlink dangled on any non-laptop checkout\u000a(createWar: 'Couldn't follow symbolic link .../base/entermedia'). Add a .gitkeep so\u000athe directory exists off-host.\u000a",
        "date" : "2026-10-15 15:53:20 -0300",
        "id" : "68330a2b9aa063a179f07f7633025694d4137e6a",
        "msg" : "dam: keep base/entermedia (empty scaffold) in git",
        "paths" : [
          {
            "editType" : "add",
            "file" : "dam/webapp/WEB-INF/base/entermedia/.gitkeep"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "thoughtframe/build.gradle"
        ],
        "commitId" : "d9dd5d650879985d6bdeac3510f14bf0be5d671c",
        "timestamp" : 1792090601000,
        "author" : {
          "absoluteUrl" : "http://dev.ijsolutions.ca/jenkins/user/ian",
          "fullName" : "ian"
        },
        "authorEmail" : "ian@oneliveweb.com",
        "comment" : "thoughtframe: createWar copies platform bases directly (no symlink dependency)\u000a\u000aMirror the :damsel createWar: copy WEB-INF/base/{entermedia,emfrontend2,system,\u000amanager,mediadb} from :dam and WEB-INF/base/openedit from :cms directly, instead of\u000afollowing the setupLinks symlinks (host-specific absolute targets that dangle on a\u000afresh checkout / CI). Keeps setupLinks for the local run. WAR now assembles on any host.\u000a",
        "date" : "2026-10-15 15:56:41 -0300",
        "id" : "d9dd5d650879985d6bdeac3510f14bf0be5d671c",
        "msg" : "thoughtframe: createWar copies platform bases directly (no symlink dependency)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "thoughtframe/build.gradle"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "thoughtframe/build.gradle"
        ],
        "commitId" : "7c0f76385bb313f4906cf01cfd96ea5b982e759f",
        "timestamp" : 1792090739000,
        "author" : {
          "absoluteUrl" : "http://dev.ijsolutions.ca/jenkins/user/ian",
          "fullName" : "ian"
        },
        "authorEmail" : "ian@oneliveweb.com",
        "comment" : "thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())\u000a\u000aThe War task was routing the classpath dirs into WEB-INF/classes (579 files) where they\u000ashadow the jar and are never refreshed by the runtime's overlay upgrade. Mirror the\u000a:damsel createWar: classpath = files(), so only WEB-INF/lib carries product code.\u000a",
        "date" : "2026-10-15 15:58:59 -0300",
        "id" : "7c0f76385bb313f4906cf01cfd96ea5b982e759f",
        "msg" : "thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "thoughtframe/build.gradle"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "thoughtframe/build.gradle",
          "settings.gradle"
        ],
        "commitId" : "5af4670b53bdb049f997c63603327b4ca3142f35",
        "timestamp" : 1792091673000,
        "author" : {
          "absoluteUrl" : "http://dev.ijsolutions.ca/jenkins/user/ian",
          "fullName" : "ian"
        },
        "authorEmail" : "ian@oneliveweb.com",
        "comment" : "build: JDK 25 toolchain + foojay auto-provisioning\u000a\u000a:thoughtframe now declares a 25 toolchain and settings.gradle enables the foojay\u000aresolver, so Gradle provisions JDK 25 itself instead of depending on the host JDK\u000abeing 25. Mirrors :damsel. Build is JDK-agnostic on any agent.\u000a",
        "date" : "2026-10-15 16:14:33 -0300",
        "id" : "5af4670b53bdb049f997c63603327b4ca3142f35",
        "msg" : "build: JDK 25 toolchain + foojay auto-provisioning",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "thoughtframe/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "http://dev.ijsolutions.ca/jenkins/user/ian",
      "fullName" : "ian"
    }
  ]
}