From 5a6bbfe58e95d6dcc4a29fd3c30e669fa561be31 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yuniel=20Acosta=20P=C3=A9rez?=
<33158051+yacosta738@users.noreply.github.com>
Date: Fri, 20 Mar 2026 10:36:56 +0100
Subject: [PATCH 1/6] fix(marketing): remove /en prefix from docs links to fix
404 errors
---
.../web/apps/marketing/src/pages/index.astro | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/clients/web/apps/marketing/src/pages/index.astro b/clients/web/apps/marketing/src/pages/index.astro
index b5665a1d5..26624af2f 100644
--- a/clients/web/apps/marketing/src/pages/index.astro
+++ b/clients/web/apps/marketing/src/pages/index.astro
@@ -61,7 +61,7 @@ const installMethods = [
"Paste one command, install Corvus, and get to a working binary in the fastest possible path.",
command: "curl -fsSL https://profiletailors.com/install | bash",
ctaLabel: "Open install guide",
- ctaHref: `${docsBaseUrl}/en/guides/getting-started/`,
+ ctaHref: `${docsBaseUrl}/guides/getting-started/`,
},
{
title: "Node package managers",
@@ -74,7 +74,7 @@ const installMethods = [
"bun add -g @dallay/corvus",
],
ctaLabel: "Read CLI docs",
- ctaHref: `${docsBaseUrl}/en/guides/cli-reference/`,
+ ctaHref: `${docsBaseUrl}/guides/cli-reference/`,
},
{
title: "Build locally",
@@ -83,7 +83,7 @@ const installMethods = [
command:
"git clone https://github.com/dallay/corvus.git\ncd corvus\ncargo build --release\ncargo install --path . --force",
ctaLabel: "Read architecture docs",
- ctaHref: `${docsBaseUrl}/en/guides/architecture/`,
+ ctaHref: `${docsBaseUrl}/guides/architecture/`,
},
];
@@ -97,17 +97,17 @@ const quickLinks = [
{
title: "Getting started",
body: "Pick an install path, run the first command, and get Corvus responding without digging through repo internals.",
- href: `${docsBaseUrl}/en/guides/getting-started/`,
+ href: `${docsBaseUrl}/guides/getting-started/`,
},
{
title: "CLI reference",
body: "Jump straight to real commands for agent, daemon, gateway, doctor, channels, and services.",
- href: `${docsBaseUrl}/en/guides/cli-reference/`,
+ href: `${docsBaseUrl}/guides/cli-reference/`,
},
{
title: "Architecture",
body: "See how providers, memory, tools, channels, and security fit together before you roll it out wider.",
- href: `${docsBaseUrl}/en/guides/architecture/`,
+ href: `${docsBaseUrl}/guides/architecture/`,
},
];
@@ -138,7 +138,7 @@ const faqGroups = [
"It is designed to behave like infrastructure, not a fragile demo stack.",
],
ctaLabel: "Read the architecture",
- ctaHref: `${docsBaseUrl}/en/guides/architecture/`,
+ ctaHref: `${docsBaseUrl}/guides/architecture/`,
},
{
question: "Who is it for?",
@@ -148,7 +148,7 @@ const faqGroups = [
"It helps teams avoid heavyweight stacks and unnecessary lock-in.",
],
ctaLabel: "See the quick start",
- ctaHref: `${docsBaseUrl}/en/guides/getting-started/`,
+ ctaHref: `${docsBaseUrl}/guides/getting-started/`,
},
],
},
@@ -163,7 +163,7 @@ const faqGroups = [
"Secrets can be encrypted locally and public access is never assumed.",
],
ctaLabel: "Review security controls",
- ctaHref: `${docsBaseUrl}/en/guides/architecture/`,
+ ctaHref: `${docsBaseUrl}/guides/architecture/`,
},
{
question: "Where can it run?",
@@ -173,7 +173,7 @@ const faqGroups = [
"Its small binary size and fast startup make it viable beyond heavyweight cloud-only setups.",
],
ctaLabel: "Explore runtime options",
- ctaHref: `${docsBaseUrl}/en/guides/getting-started/`,
+ ctaHref: `${docsBaseUrl}/guides/getting-started/`,
},
],
},
@@ -244,7 +244,7 @@ const hero = {
curl -fsSL https://profiletailors.com/install | bash
- npm
From 56e466ba721bfbdd658b57abb2afb33e9890d304 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yuniel=20Acosta=20P=C3=A9rez?=
<33158051+yacosta738@users.noreply.github.com>
Date: Fri, 20 Mar 2026 13:47:10 +0100
Subject: [PATCH 2/6] fix(ci): remove LockMode.STRICT to avoid failures with
unlocked configurations
---
.../cerebro/mcp-schema/mem_suggest_topic_key.json | 2 +-
.../es/guides/cerebro/mcp-schema/mem_update.json | 12 ++++++------
.../com.profiletailors.check.dependencies.gradle.kts | 7 +------
.../com.profiletailors.check.locking.gradle.kts | 7 +------
4 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_suggest_topic_key.json b/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_suggest_topic_key.json
index 5ad69025c..1db468bfc 100644
--- a/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_suggest_topic_key.json
+++ b/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_suggest_topic_key.json
@@ -41,4 +41,4 @@
},
"required": ["input", "output"],
"additionalProperties": false
-}
\ No newline at end of file
+}
diff --git a/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_update.json b/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_update.json
index 8e1bc838c..b126cb357 100644
--- a/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_update.json
+++ b/clients/web/apps/docs/src/content/docs/es/guides/cerebro/mcp-schema/mem_update.json
@@ -13,12 +13,12 @@
},
"observation": {
"anyOf": [
- { "type": "object" },
- { "type": "array" },
- { "type": "string" },
- { "type": "number" },
- { "type": "boolean" },
- { "type": "null" }
+ { "type": "object" },
+ { "type": "array" },
+ { "type": "string" },
+ { "type": "number" },
+ { "type": "boolean" },
+ { "type": "null" }
],
"description": "Nueva carga útil de la observación (reemplaza el contenido existente)."
},
diff --git a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
index 59092723a..6333ab9c0 100644
--- a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
+++ b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
@@ -64,12 +64,7 @@ listOf("artifactsReportMain" to "help", "fixDependencies" to "toolbox").forEach
val isCI = EnvAccess.isCi(providers)
// https://docs.gradle.org/nightly/userguide/dependency_locking.html
-dependencyLocking {
- ignoredDependencies.add("com.example:*")
- if (isCI) {
- lockMode = LockMode.STRICT
- }
-}
+dependencyLocking { ignoredDependencies.add("com.example:*") }
configurations {
configureEach {
diff --git a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts
index a0fabd975..a081576b5 100644
--- a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts
+++ b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts
@@ -51,12 +51,7 @@ fun findGradleWrapper(startDir: File): File? {
.firstOrNull { it.isFile }
}
-dependencyLocking {
- ignoredDependencies.add("com.example:*")
- if (isCi) {
- lockMode = LockMode.STRICT
- }
-}
+dependencyLocking { ignoredDependencies.add("com.example:*") }
buildscript.configurations.configureEach {
if (shouldUseDependencyLocking()) {
From e6fc21384d0488672c7474f30af3f7070138334f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yuniel=20Acosta=20P=C3=A9rez?=
<33158051+yacosta738@users.noreply.github.com>
Date: Fri, 20 Mar 2026 14:54:52 +0100
Subject: [PATCH 3/6] refactor(ci): clean up build logic and refactor lock
checks
---
...ofiletailors.check.dependencies.gradle.kts | 3 ---
...om.profiletailors.check.locking.gradle.kts | 20 +++++--------------
2 files changed, 5 insertions(+), 18 deletions(-)
diff --git a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
index 6333ab9c0..349dd17c0 100644
--- a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
+++ b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
@@ -3,7 +3,6 @@
import com.autonomousapps.DependencyAnalysisExtension
import com.autonomousapps.DependencyAnalysisSubExtension
import com.profiletailors.plugin.GradleExtTool
-import com.profiletailors.plugin.environment.EnvAccess
import com.profiletailors.plugin.injected
import com.profiletailors.plugin.resetTaskGroup
import java.io.ByteArrayOutputStream
@@ -61,8 +60,6 @@ listOf("artifactsReportMain" to "help", "fixDependencies" to "toolbox").forEach
resetTaskGroup(it.first, it.second)
}
-val isCI = EnvAccess.isCi(providers)
-
// https://docs.gradle.org/nightly/userguide/dependency_locking.html
dependencyLocking { ignoredDependencies.add("com.example:*") }
diff --git a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts
index a081576b5..97b43549a 100644
--- a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts
+++ b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.locking.gradle.kts
@@ -4,8 +4,6 @@ import java.io.File
import java.nio.charset.StandardCharsets
import java.util.concurrent.TimeUnit
-val isCi = providers.environmentVariable("CI").orNull?.isNotBlank() == true
-
val excludedLockingConfigurationPrefixes = listOf("spotless", "detachedConfiguration")
val excludedLockingConfigurations =
@@ -24,22 +22,14 @@ val buildLogicOnlyExcludedLockingConfigurations =
)
fun Configuration.shouldUseDependencyLocking(): Boolean {
- if (!isCanBeResolved) {
- return false
- }
-
- if (name in excludedLockingConfigurations) {
- return false
- }
-
- if (
+ val isBuildLogicExcluded =
project.rootProject.name == "corvus-build-logic" &&
name in buildLogicOnlyExcludedLockingConfigurations
- ) {
- return false
- }
- return excludedLockingConfigurationPrefixes.none { prefix -> name.startsWith(prefix) }
+ return isCanBeResolved &&
+ name !in excludedLockingConfigurations &&
+ !isBuildLogicExcluded &&
+ excludedLockingConfigurationPrefixes.none { prefix -> name.startsWith(prefix) }
}
fun findGradleWrapper(startDir: File): File? {
From 1c3f2e99613ca56f1561f34cecb3dc326e2d8954 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yuniel=20Acosta=20P=C3=A9rez?=
<33158051+yacosta738@users.noreply.github.com>
Date: Fri, 20 Mar 2026 15:59:14 +0100
Subject: [PATCH 4/6] fix(ci): restore build-logic lock enforcement
---
gradle/build-logic/gradle.lockfile | 1 +
.../com.profiletailors.check.dependencies.gradle.kts | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/gradle/build-logic/gradle.lockfile b/gradle/build-logic/gradle.lockfile
index fd44f5bff..262521d0a 100644
--- a/gradle/build-logic/gradle.lockfile
+++ b/gradle/build-logic/gradle.lockfile
@@ -128,6 +128,7 @@ org.jspecify:jspecify:1.0.0=compileClasspath,testCompileClasspath
org.junit.jupiter:junit-jupiter-api:5.10.1=testCompileClasspath
org.junit.jupiter:junit-jupiter-params:5.10.1=testCompileClasspath
org.junit.platform:junit-platform-commons:1.10.1=testCompileClasspath
+org.junit:junit-bom:5.10.1=testCompileClasspath
org.openapi.generator:org.openapi.generator.gradle.plugin:7.19.0=compileClasspath,testCompileClasspath
org.openapitools:openapi-generator-gradle-plugin:7.19.0=compileClasspath,testCompileClasspath
org.openrewrite.rewrite:org.openrewrite.rewrite.gradle.plugin:7.28.0=compileClasspath,testCompileClasspath
diff --git a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
index ef2da7452..59092723a 100644
--- a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
+++ b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
@@ -3,6 +3,7 @@
import com.autonomousapps.DependencyAnalysisExtension
import com.autonomousapps.DependencyAnalysisSubExtension
import com.profiletailors.plugin.GradleExtTool
+import com.profiletailors.plugin.environment.EnvAccess
import com.profiletailors.plugin.injected
import com.profiletailors.plugin.resetTaskGroup
import java.io.ByteArrayOutputStream
@@ -60,10 +61,14 @@ listOf("artifactsReportMain" to "help", "fixDependencies" to "toolbox").forEach
resetTaskGroup(it.first, it.second)
}
+val isCI = EnvAccess.isCi(providers)
+
// https://docs.gradle.org/nightly/userguide/dependency_locking.html
dependencyLocking {
- lockMode.set(LockMode.STRICT)
ignoredDependencies.add("com.example:*")
+ if (isCI) {
+ lockMode = LockMode.STRICT
+ }
}
configurations {
From 46dfba2e793ad88238f0f0bb20b57ee9af3736c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yuniel=20Acosta=20P=C3=A9rez?=
<33158051+yacosta738@users.noreply.github.com>
Date: Fri, 20 Mar 2026 17:29:50 +0100
Subject: [PATCH 5/6] fix(ci): stabilize build-logic test execution
---
gradle/build-logic/build.gradle.kts | 1 +
.../kotlin/com.profiletailors.check.dependencies.gradle.kts | 3 ++-
.../kotlin/com/profiletailors/fixtures/GradleProject.kt | 6 ++++++
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/gradle/build-logic/build.gradle.kts b/gradle/build-logic/build.gradle.kts
index 0e3497d6b..8f0983d3f 100644
--- a/gradle/build-logic/build.gradle.kts
+++ b/gradle/build-logic/build.gradle.kts
@@ -237,6 +237,7 @@ tasks.withType().configureEach {
dependencies {
testImplementation("org.jetbrains.kotlin:kotlin-test")
+ testImplementation(platform("org.junit:junit-bom:${libs.versions.junit.jupiter.get()}"))
testImplementation(catalogLibs.findLibrary("junit-jupiter-api").get())
testImplementation(catalogLibs.findLibrary("junit-jupiter-params").get())
testRuntimeOnly(catalogLibs.findLibrary("junit-jupiter-engine").get())
diff --git a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
index 59092723a..560b886b3 100644
--- a/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
+++ b/gradle/build-logic/src/main/kotlin/com.profiletailors.check.dependencies.gradle.kts
@@ -62,11 +62,12 @@ listOf("artifactsReportMain" to "help", "fixDependencies" to "toolbox").forEach
}
val isCI = EnvAccess.isCi(providers)
+val isBuildLogicProject = rootProject.name == "corvus-build-logic"
// https://docs.gradle.org/nightly/userguide/dependency_locking.html
dependencyLocking {
ignoredDependencies.add("com.example:*")
- if (isCI) {
+ if (isCI && !isBuildLogicProject) {
lockMode = LockMode.STRICT
}
}
diff --git a/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt b/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt
index b21bb02f5..f45e0ba37 100644
--- a/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt
+++ b/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt
@@ -3,6 +3,7 @@ package com.profiletailors.fixtures
import java.io.File
import java.lang.management.ManagementFactory
import java.nio.file.Files
+import java.util.TreeMap
import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
@@ -51,6 +52,11 @@ class GradleProject {
.withGradleVersion("9.2.0")
.withPluginClasspath()
.withProjectDir(projectDir)
+ .withEnvironment(
+ TreeMap(System.getenv()).apply {
+ remove("CI")
+ }
+ )
.withArguments(args + listOf("-s", "--warning-mode=all"))
.withDebug(
ManagementFactory.getRuntimeMXBean().inputArguments.toString().contains("-agentlib:jdwp")
From c5768e490c6cd9692440cce2c9a8fb96bce0e97b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yuniel=20Acosta=20P=C3=A9rez?=
<33158051+yacosta738@users.noreply.github.com>
Date: Fri, 20 Mar 2026 17:30:56 +0100
Subject: [PATCH 6/6] fix(ci): stabilize build-logic test execution
---
.../kotlin/com/profiletailors/fixtures/GradleProject.kt | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt b/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt
index f45e0ba37..abe193c23 100644
--- a/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt
+++ b/gradle/build-logic/src/test/kotlin/com/profiletailors/fixtures/GradleProject.kt
@@ -52,11 +52,7 @@ class GradleProject {
.withGradleVersion("9.2.0")
.withPluginClasspath()
.withProjectDir(projectDir)
- .withEnvironment(
- TreeMap(System.getenv()).apply {
- remove("CI")
- }
- )
+ .withEnvironment(TreeMap(System.getenv()).apply { remove("CI") })
.withArguments(args + listOf("-s", "--warning-mode=all"))
.withDebug(
ManagementFactory.getRuntimeMXBean().inputArguments.toString().contains("-agentlib:jdwp")