CI broken: pre-existing build errors in messaging/knowledge + stale .forgejo/deps.txt #69

Closed
opened 2026-04-19 12:10:05 +00:00 by salmaelsoly · 4 comments
Member

Problem

CI currently fails on development (and every feature branch) for two independent reasons that are pre-existing and unrelated to any single feature work. Both were surfaced while reviewing PR #67 but are out of scope for that PR.

1. SDK method mismatches in messaging and knowledge

cargo check --workspace fails because two crates call methods that no longer exist in the current hero_osis_sdk.

hero_archipelagos_messaging

File: archipelagos/messaging/src/services/messaging_service.rs

pub async fn fetch_messages(
    osis_url: &str,
    context_name: &str,
    conversation_sid: &str,
) -> Result<Vec<ChatMessage>, String> {
    let client = create_comm_client(osis_url, context_name)?;
    client
        .conversationservice_list_messages(conversation_sid.to_string())
        .await
        .map_err(|e| format!("Failed to list messages: {:?}", e))
}

CommunicationClient::conversationservice_list_messages does not exist in hero_osis_sdk (branch development). The only close match rustc suggests is conversation_list(&self) -> Result<Vec<String>, ClientError>, which takes no arguments and returns a list of conversation SIDs, not messages. There is no drop-in replacement — likely candidates are a combination of chatmessage_list() + chatmessage_get() with client-side filtering, or a new SDK method.

hero_archipelagos_knowledge

File: archipelagos/intelligence/knowledge/src/services/knowledge_service.rs

  • EmbedderClient::new(osis_url, context_name) at line 19 — the EmbedderClient type is no longer exposed by hero_osis_sdk.
  • client.knowledgeservice_bucket_sync(bucket_id.to_string()) at line 80 — method does not exist.
  • client.knowledgeservice_bucket_search(bucket_id, query, ...) at line 95 — method does not exist.

Nine cargo check errors total in this crate.

Reproduction

cargo check -p hero_archipelagos_messaging
cargo check -p hero_archipelagos_knowledge

Both fail on development at current HEAD.

Impact

  • Any cargo check --workspace / cargo build --workspace fails, which is exactly what the CI step --- cargo check (native) --- runs, so every CI job fails with exitcode '101'.
  • Downstream dependents of these crates (for example archipelagos_server, which depends on hero_archipelagos_messaging) cannot build either, so the server binary cannot be built from a clean checkout.

Likely fix direction

The SDK was refactored; the callers need to be updated to the new surface. This requires someone familiar with the new SDK layout to:

  1. Identify the replacement methods on CommunicationClient for listing messages in a conversation (and update messaging_service.rs accordingly).
  2. Re-introduce or replace EmbedderClient usage in knowledge_service.rs, and update knowledgeservice_bucket_sync / knowledgeservice_bucket_search calls to the current SDK equivalents.

2. Stale cross-repo patch in .forgejo/deps.txt

File: .forgejo/deps.txt

https://forge.ourworld.tf/lhumina_code/hero_osis.git hero_osis_sdk=sdk/rust
https://forge.ourworld.tf/lhumina_code/hero_fossil.git herofossil_webdav_client=webdav-client

The CI workflow .forgejo/workflows/build.yaml reads this file on every non-development branch, clones each referenced repo, and generates a .cargo/config.toml with a [patch."<git_url>"] entry pointing at a local path.

Problems with line 2:

  • The workspace Cargo.toml no longer declares herofossil_webdav_client — the actual workspace dep is hero_foundry_webdav_client sourced from https://forge.ourworld.tf/lhumina_code/hero_foundry.git.
  • The generated patch therefore points at /workspace/hero_fossil/webdav-client, which either does not exist in hero_fossil.git (wrong repo) or references a path that has been moved/removed (the directory listing for hero_fossil.git@development does not include webdav-client).

CI error

--- cargo check (native) ---
error: failed to load source for dependency `herofossil_webdav_client`
Caused by:
  Unable to update /workspace/hero_fossil/webdav-client
Caused by:
  failed to read `/workspace/hero_fossil/webdav-client/Cargo.toml`
Caused by:
  No such file or directory (os error 2)
⚙️ [runner]: exitcode '101': failure

Impact

Every CI run on a feature branch fails at the patch step before any real checks run. Only pushes directly to development skip the patching (the workflow has an early-exit for BRANCH == "development"), which masks the issue for direct pushes but not for PR branches.

Likely fix

Update .forgejo/deps.txt to match the actual workspace dependency, e.g. replace the second line with:

https://forge.ourworld.tf/lhumina_code/hero_foundry.git hero_foundry_webdav_client=<correct-subpath>

The correct subpath inside hero_foundry.git needs to be confirmed — it is not a top-level directory; it is probably under crates/.

Reproduction

# SDK mismatches (both fail on development at current HEAD)
git checkout development
cargo check -p hero_archipelagos_messaging
cargo check -p hero_archipelagos_knowledge

# CI patch failure (push any branch other than development)
# -> build.yaml "Patch cross-repo deps for feature branch" step emits
#    the herofossil_webdav_client error above.

Acceptance criteria

  • cargo check --workspace passes on development.
  • cargo check -p hero_archipelagos_messaging passes.
  • cargo check -p hero_archipelagos_knowledge passes.
  • .forgejo/deps.txt matches the real workspace deps; CI patch step succeeds on a feature branch.
  • Full CI pipeline (build.yaml) succeeds on both development and a feature branch.

References

  • Surfaced during work on #43 / PR #67.
## Problem CI currently fails on `development` (and every feature branch) for two independent reasons that are pre-existing and unrelated to any single feature work. Both were surfaced while reviewing PR #67 but are out of scope for that PR. ## 1. SDK method mismatches in `messaging` and `knowledge` `cargo check --workspace` fails because two crates call methods that no longer exist in the current `hero_osis_sdk`. ### `hero_archipelagos_messaging` File: `archipelagos/messaging/src/services/messaging_service.rs` ```rust pub async fn fetch_messages( osis_url: &str, context_name: &str, conversation_sid: &str, ) -> Result<Vec<ChatMessage>, String> { let client = create_comm_client(osis_url, context_name)?; client .conversationservice_list_messages(conversation_sid.to_string()) .await .map_err(|e| format!("Failed to list messages: {:?}", e)) } ``` `CommunicationClient::conversationservice_list_messages` does not exist in `hero_osis_sdk` (branch `development`). The only close match rustc suggests is `conversation_list(&self) -> Result<Vec<String>, ClientError>`, which takes no arguments and returns a list of conversation SIDs, not messages. There is no drop-in replacement — likely candidates are a combination of `chatmessage_list()` + `chatmessage_get()` with client-side filtering, or a new SDK method. ### `hero_archipelagos_knowledge` File: `archipelagos/intelligence/knowledge/src/services/knowledge_service.rs` - `EmbedderClient::new(osis_url, context_name)` at line 19 — the `EmbedderClient` type is no longer exposed by `hero_osis_sdk`. - `client.knowledgeservice_bucket_sync(bucket_id.to_string())` at line 80 — method does not exist. - `client.knowledgeservice_bucket_search(bucket_id, query, ...)` at line 95 — method does not exist. Nine `cargo check` errors total in this crate. ### Reproduction ```bash cargo check -p hero_archipelagos_messaging cargo check -p hero_archipelagos_knowledge ``` Both fail on `development` at current HEAD. ### Impact - Any `cargo check --workspace` / `cargo build --workspace` fails, which is exactly what the CI step `--- cargo check (native) ---` runs, so every CI job fails with `exitcode '101'`. - Downstream dependents of these crates (for example `archipelagos_server`, which depends on `hero_archipelagos_messaging`) cannot build either, so the server binary cannot be built from a clean checkout. ### Likely fix direction The SDK was refactored; the callers need to be updated to the new surface. This requires someone familiar with the new SDK layout to: 1. Identify the replacement methods on `CommunicationClient` for listing messages in a conversation (and update `messaging_service.rs` accordingly). 2. Re-introduce or replace `EmbedderClient` usage in `knowledge_service.rs`, and update `knowledgeservice_bucket_sync` / `knowledgeservice_bucket_search` calls to the current SDK equivalents. ## 2. Stale cross-repo patch in `.forgejo/deps.txt` File: `.forgejo/deps.txt` ``` https://forge.ourworld.tf/lhumina_code/hero_osis.git hero_osis_sdk=sdk/rust https://forge.ourworld.tf/lhumina_code/hero_fossil.git herofossil_webdav_client=webdav-client ``` The CI workflow `.forgejo/workflows/build.yaml` reads this file on every non-`development` branch, clones each referenced repo, and generates a `.cargo/config.toml` with a `[patch."<git_url>"]` entry pointing at a local path. Problems with line 2: - The workspace `Cargo.toml` no longer declares `herofossil_webdav_client` — the actual workspace dep is `hero_foundry_webdav_client` sourced from `https://forge.ourworld.tf/lhumina_code/hero_foundry.git`. - The generated patch therefore points at `/workspace/hero_fossil/webdav-client`, which either does not exist in `hero_fossil.git` (wrong repo) or references a path that has been moved/removed (the directory listing for `hero_fossil.git@development` does not include `webdav-client`). ### CI error ``` --- cargo check (native) --- error: failed to load source for dependency `herofossil_webdav_client` Caused by: Unable to update /workspace/hero_fossil/webdav-client Caused by: failed to read `/workspace/hero_fossil/webdav-client/Cargo.toml` Caused by: No such file or directory (os error 2) ⚙️ [runner]: exitcode '101': failure ``` ### Impact Every CI run on a feature branch fails at the patch step before any real checks run. Only pushes directly to `development` skip the patching (the workflow has an early-exit for `BRANCH == "development"`), which masks the issue for direct pushes but not for PR branches. ### Likely fix Update `.forgejo/deps.txt` to match the actual workspace dependency, e.g. replace the second line with: ``` https://forge.ourworld.tf/lhumina_code/hero_foundry.git hero_foundry_webdav_client=<correct-subpath> ``` The correct subpath inside `hero_foundry.git` needs to be confirmed — it is not a top-level directory; it is probably under `crates/`. ## Reproduction ```bash # SDK mismatches (both fail on development at current HEAD) git checkout development cargo check -p hero_archipelagos_messaging cargo check -p hero_archipelagos_knowledge # CI patch failure (push any branch other than development) # -> build.yaml "Patch cross-repo deps for feature branch" step emits # the herofossil_webdav_client error above. ``` ## Acceptance criteria - [ ] `cargo check --workspace` passes on `development`. - [ ] `cargo check -p hero_archipelagos_messaging` passes. - [ ] `cargo check -p hero_archipelagos_knowledge` passes. - [ ] `.forgejo/deps.txt` matches the real workspace deps; CI patch step succeeds on a feature branch. - [ ] Full CI pipeline (`build.yaml`) succeeds on both `development` and a feature branch. ## References - Surfaced during work on #43 / PR #67.
salmaelsoly removed their assignment 2026-04-20 10:55:18 +00:00
Author
Member

Implementation Spec for Issue #69

Objective

Unbreak workspace CI by (1) correcting the cross-repo patch paths in .forgejo/deps.txt, (2) removing the stale hero_osis_sdk::embedder usage from the knowledge crate by stubbing the methods that are actually called and deleting those that are not, and (3) refreshing Cargo.lock so messaging resolves against the current hero_osis_sdk which already provides conversationservice_list_messages.

Root-Cause Summary

  1. hero_osis_sdk path moved. sdk/rust/ was removed upstream; the SDK now lives at crates/hero_osis_sdk/. .forgejo/deps.txt still points the feature-branch patcher at sdk/rust, so the patch step fails on every non-development branch.
  2. hero_fossil -> hero_foundry rename. Workspace Cargo.toml declares hero_foundry_webdav_client from hero_foundry.git (branch development), crate path crates/hero_foundry_webdav_client. The stale hero_fossil ... webdav-client entry in .forgejo/deps.txt points at a repo/path that no longer exists.
  3. Messaging compiles once Cargo.lock is refreshed. archipelagos/messaging/src/services/messaging_service.rs calls client.conversationservice_list_messages(...). That method now exists on CommunicationClient in the current hero_osis_sdk; no source changes required.
  4. Knowledge is genuinely broken. The embedder module was removed from hero_osis_sdk (no replacement client exists — hero_embedder_sdk exposes lower-level namespace/embed/index APIs, not buckets). Of the six methods in archipelagos/intelligence/knowledge/src/services/knowledge_service.rs, only three (fetch_buckets, sync_bucket, delete_bucket) are actually called from island.rs. The other three (fetch_bucket, create_bucket, search_bucket) are unused and will be removed. This mirrors the pattern already in place in archipelagos/intelligence/intelligence/src/services/knowledge_service.rs.

Requirements

  • cargo check --workspace passes.
  • cargo check -p hero_archipelagos_messaging passes with no source changes.
  • cargo check -p hero_archipelagos_knowledge passes.
  • .forgejo/deps.txt lists only crates that exist in the workspace, with correct repo + subpath.
  • Full CI pipeline (build.yaml) succeeds on development and on a feature branch.

Files to Modify/Create

  • .forgejo/deps.txt -- fix hero_osis_sdk subpath and replace the stale hero_fossil entry with hero_foundry_webdav_client.
  • archipelagos/intelligence/knowledge/src/services/embedder_types.rs (NEW) -- local type stubs (KnowledgeBucket, SyncResult) replacing the removed hero_osis_sdk::embedder types.
  • archipelagos/intelligence/knowledge/src/services/mod.rs -- register the new embedder_types module and re-export its types.
  • archipelagos/intelligence/knowledge/src/services/knowledge_service.rs -- keep only the three methods used by island.rs (fetch_buckets, sync_bucket, delete_bucket), stub each to return an "unavailable" error; delete fetch_bucket, create_bucket, search_bucket.
  • archipelagos/intelligence/knowledge/src/island.rs -- replace use hero_osis_sdk::embedder::KnowledgeBucket; with use crate::services::KnowledgeBucket;.
  • Cargo.lock -- refresh via cargo update -p hero_osis_sdk so messaging resolves the updated SDK.

Implementation Plan

Step 1: Fix .forgejo/deps.txt (no deps)
Files: .forgejo/deps.txt
Replace the two patch lines with:

https://forge.ourworld.tf/lhumina_code/hero_osis.git hero_osis_sdk=crates/hero_osis_sdk
https://forge.ourworld.tf/lhumina_code/hero_foundry.git hero_foundry_webdav_client=crates/hero_foundry_webdav_client

Step 2: Create embedder_types.rs (no deps)
Files: archipelagos/intelligence/knowledge/src/services/embedder_types.rs (NEW)
Define KnowledgeBucket { id, name, quality: u8, item_count: u32 } and SyncResult { synced: bool }. Both derive Clone, Debug, Default, PartialEq, Serialize, Deserialize. All fields in KnowledgeBucket are read by island.rs template code.

Step 3: Register the new module (depends on Step 2)
Files: archipelagos/intelligence/knowledge/src/services/mod.rs
Add pub mod embedder_types; and pub use embedder_types::*;.

Step 4: Rewrite knowledge_service.rs (depends on Steps 2, 3)
Files: archipelagos/intelligence/knowledge/src/services/knowledge_service.rs

  • Drop all hero_osis_sdk imports and EmbedderClient usage.
  • Keep only these three methods (identical signatures to current):
    • fetch_buckets(osis_url, context_name) -> Result<Vec<KnowledgeBucket>, String>
    • sync_bucket(osis_url, context_name, bucket_id) -> Result<SyncResult, String>
    • delete_bucket(osis_url, context_name, bucket_id) -> Result<bool, String>
  • Each body returns Err("Knowledge service unavailable: embedder SDK not yet integrated".to_string()).
  • Delete fetch_bucket, create_bucket, search_bucket (no callers in the repo).

Step 5: Fix the import in island.rs (depends on Steps 2-4)
Files: archipelagos/intelligence/knowledge/src/island.rs
Change use hero_osis_sdk::embedder::KnowledgeBucket; to use crate::services::KnowledgeBucket;.

Step 6: Refresh Cargo.lock (depends on Steps 1-5)
Run cargo update -p hero_osis_sdk.

Step 7: Workspace verification (depends on Steps 1-6)
Run cargo check --workspace, cargo fmt --all -- --check, then project tests.

Parallelism

Steps 1 and 2 run independently. Steps 3, 4, 5 run independently once Step 2 is done. Step 6 is serial after all source changes. Step 7 is last.

Acceptance Criteria

  • .forgejo/deps.txt lists exactly two lines, both pointing at real paths on the development branches of their repos.
  • archipelagos/intelligence/knowledge/src/services/embedder_types.rs exists and defines KnowledgeBucket and SyncResult.
  • No file under archipelagos/intelligence/knowledge/ imports hero_osis_sdk::embedder or EmbedderClient.
  • knowledge_service.rs contains only the three stub methods (fetch_buckets, sync_bucket, delete_bucket).
  • cargo check -p hero_archipelagos_knowledge passes.
  • cargo check -p hero_archipelagos_messaging passes without source changes.
  • cargo check --workspace passes.
  • cargo fmt --all -- --check passes.

Notes

  • The hero_osis_sdk dep stays commented out in archipelagos/intelligence/knowledge/Cargo.toml as a breadcrumb; re-enabling it would only reintroduce the compile error because the embedder feature is gone.
  • fetch_bucket, create_bucket, search_bucket are deleted (not stubbed) because nothing in the repo calls them.
  • Pattern mirrors archipelagos/intelligence/intelligence/src/services/knowledge_service.rs, which adopted the same stub+local-types approach.
  • Restoring a real embedder client in hero_osis_sdk is out of scope -- follow-up ticket.
## Implementation Spec for Issue #69 ### Objective Unbreak workspace CI by (1) correcting the cross-repo patch paths in `.forgejo/deps.txt`, (2) removing the stale `hero_osis_sdk::embedder` usage from the `knowledge` crate by stubbing the methods that are actually called and deleting those that are not, and (3) refreshing `Cargo.lock` so `messaging` resolves against the current `hero_osis_sdk` which already provides `conversationservice_list_messages`. ### Root-Cause Summary 1. **hero_osis_sdk path moved.** `sdk/rust/` was removed upstream; the SDK now lives at `crates/hero_osis_sdk/`. `.forgejo/deps.txt` still points the feature-branch patcher at `sdk/rust`, so the patch step fails on every non-`development` branch. 2. **hero_fossil -> hero_foundry rename.** Workspace `Cargo.toml` declares `hero_foundry_webdav_client` from `hero_foundry.git` (branch `development`), crate path `crates/hero_foundry_webdav_client`. The stale `hero_fossil ... webdav-client` entry in `.forgejo/deps.txt` points at a repo/path that no longer exists. 3. **Messaging compiles once `Cargo.lock` is refreshed.** `archipelagos/messaging/src/services/messaging_service.rs` calls `client.conversationservice_list_messages(...)`. That method now exists on `CommunicationClient` in the current `hero_osis_sdk`; no source changes required. 4. **Knowledge is genuinely broken.** The `embedder` module was removed from `hero_osis_sdk` (no replacement client exists — `hero_embedder_sdk` exposes lower-level `namespace`/`embed`/`index` APIs, not buckets). Of the six methods in `archipelagos/intelligence/knowledge/src/services/knowledge_service.rs`, only three (`fetch_buckets`, `sync_bucket`, `delete_bucket`) are actually called from `island.rs`. The other three (`fetch_bucket`, `create_bucket`, `search_bucket`) are unused and will be removed. This mirrors the pattern already in place in `archipelagos/intelligence/intelligence/src/services/knowledge_service.rs`. ### Requirements - `cargo check --workspace` passes. - `cargo check -p hero_archipelagos_messaging` passes with no source changes. - `cargo check -p hero_archipelagos_knowledge` passes. - `.forgejo/deps.txt` lists only crates that exist in the workspace, with correct repo + subpath. - Full CI pipeline (`build.yaml`) succeeds on `development` and on a feature branch. ### Files to Modify/Create - `.forgejo/deps.txt` -- fix `hero_osis_sdk` subpath and replace the stale `hero_fossil` entry with `hero_foundry_webdav_client`. - `archipelagos/intelligence/knowledge/src/services/embedder_types.rs` (NEW) -- local type stubs (`KnowledgeBucket`, `SyncResult`) replacing the removed `hero_osis_sdk::embedder` types. - `archipelagos/intelligence/knowledge/src/services/mod.rs` -- register the new `embedder_types` module and re-export its types. - `archipelagos/intelligence/knowledge/src/services/knowledge_service.rs` -- keep only the three methods used by `island.rs` (`fetch_buckets`, `sync_bucket`, `delete_bucket`), stub each to return an "unavailable" error; delete `fetch_bucket`, `create_bucket`, `search_bucket`. - `archipelagos/intelligence/knowledge/src/island.rs` -- replace `use hero_osis_sdk::embedder::KnowledgeBucket;` with `use crate::services::KnowledgeBucket;`. - `Cargo.lock` -- refresh via `cargo update -p hero_osis_sdk` so messaging resolves the updated SDK. ### Implementation Plan **Step 1: Fix `.forgejo/deps.txt`** (no deps) Files: `.forgejo/deps.txt` Replace the two patch lines with: ``` https://forge.ourworld.tf/lhumina_code/hero_osis.git hero_osis_sdk=crates/hero_osis_sdk https://forge.ourworld.tf/lhumina_code/hero_foundry.git hero_foundry_webdav_client=crates/hero_foundry_webdav_client ``` **Step 2: Create `embedder_types.rs`** (no deps) Files: `archipelagos/intelligence/knowledge/src/services/embedder_types.rs` (NEW) Define `KnowledgeBucket { id, name, quality: u8, item_count: u32 }` and `SyncResult { synced: bool }`. Both derive `Clone, Debug, Default, PartialEq, Serialize, Deserialize`. All fields in `KnowledgeBucket` are read by `island.rs` template code. **Step 3: Register the new module** (depends on Step 2) Files: `archipelagos/intelligence/knowledge/src/services/mod.rs` Add `pub mod embedder_types;` and `pub use embedder_types::*;`. **Step 4: Rewrite `knowledge_service.rs`** (depends on Steps 2, 3) Files: `archipelagos/intelligence/knowledge/src/services/knowledge_service.rs` - Drop all `hero_osis_sdk` imports and `EmbedderClient` usage. - Keep only these three methods (identical signatures to current): - `fetch_buckets(osis_url, context_name) -> Result<Vec<KnowledgeBucket>, String>` - `sync_bucket(osis_url, context_name, bucket_id) -> Result<SyncResult, String>` - `delete_bucket(osis_url, context_name, bucket_id) -> Result<bool, String>` - Each body returns `Err("Knowledge service unavailable: embedder SDK not yet integrated".to_string())`. - Delete `fetch_bucket`, `create_bucket`, `search_bucket` (no callers in the repo). **Step 5: Fix the import in `island.rs`** (depends on Steps 2-4) Files: `archipelagos/intelligence/knowledge/src/island.rs` Change `use hero_osis_sdk::embedder::KnowledgeBucket;` to `use crate::services::KnowledgeBucket;`. **Step 6: Refresh `Cargo.lock`** (depends on Steps 1-5) Run `cargo update -p hero_osis_sdk`. **Step 7: Workspace verification** (depends on Steps 1-6) Run `cargo check --workspace`, `cargo fmt --all -- --check`, then project tests. ### Parallelism Steps 1 and 2 run independently. Steps 3, 4, 5 run independently once Step 2 is done. Step 6 is serial after all source changes. Step 7 is last. ### Acceptance Criteria - [x] `.forgejo/deps.txt` lists exactly two lines, both pointing at real paths on the `development` branches of their repos. - [x] `archipelagos/intelligence/knowledge/src/services/embedder_types.rs` exists and defines `KnowledgeBucket` and `SyncResult`. - [x] No file under `archipelagos/intelligence/knowledge/` imports `hero_osis_sdk::embedder` or `EmbedderClient`. - [x] `knowledge_service.rs` contains only the three stub methods (`fetch_buckets`, `sync_bucket`, `delete_bucket`). - [x] `cargo check -p hero_archipelagos_knowledge` passes. - [x] `cargo check -p hero_archipelagos_messaging` passes without source changes. - [x] `cargo check --workspace` passes. - [x] `cargo fmt --all -- --check` passes. ### Notes - The `hero_osis_sdk` dep stays commented out in `archipelagos/intelligence/knowledge/Cargo.toml` as a breadcrumb; re-enabling it would only reintroduce the compile error because the `embedder` feature is gone. - `fetch_bucket`, `create_bucket`, `search_bucket` are deleted (not stubbed) because nothing in the repo calls them. - Pattern mirrors `archipelagos/intelligence/intelligence/src/services/knowledge_service.rs`, which adopted the same stub+local-types approach. - Restoring a real embedder client in `hero_osis_sdk` is out of scope -- follow-up ticket.
Author
Member

Test Results

The acceptance criteria were verified via the exact commands listed in the spec:

Check Result
cargo check -p hero_archipelagos_knowledge pass
cargo check -p hero_archipelagos_messaging pass (no source changes — Cargo.lock refresh pulled in the new conversationservice_list_messages on CommunicationClient)
cargo check --workspace pass
cargo fmt --all -- --check pass

One pre-existing compile blocker surfaced while verifying workspace check and was fixed in the same branch:

  • examples/os_components/src/island_content.rsIslandContext gained two new fields (window_id, initial_url_segment) that the constructor here did not initialize. Added both as String::new(). This was blocking cargo check --workspace on development prior to this work.

One pre-existing cargo fmt deviation in archipelagos/messaging/src/archipelago.rs (import ordering) was auto-fixed by running cargo fmt --all.

## Test Results The acceptance criteria were verified via the exact commands listed in the spec: | Check | Result | | --- | --- | | `cargo check -p hero_archipelagos_knowledge` | pass | | `cargo check -p hero_archipelagos_messaging` | pass (no source changes — `Cargo.lock` refresh pulled in the new `conversationservice_list_messages` on `CommunicationClient`) | | `cargo check --workspace` | pass | | `cargo fmt --all -- --check` | pass | One pre-existing compile blocker surfaced while verifying workspace check and was fixed in the same branch: - `examples/os_components/src/island_content.rs` — `IslandContext` gained two new fields (`window_id`, `initial_url_segment`) that the constructor here did not initialize. Added both as `String::new()`. This was blocking `cargo check --workspace` on `development` prior to this work. One pre-existing `cargo fmt` deviation in `archipelagos/messaging/src/archipelago.rs` (import ordering) was auto-fixed by running `cargo fmt --all`.
Author
Member

Implementation Summary

All spec steps implemented on branch development_ci_fix_knowledge_deps.

Files Changed

  • .forgejo/deps.txt — fix hero_osis_sdk subpath to crates/hero_osis_sdk; replace stale hero_fossil/webdav-client entry with hero_foundry_webdav_client=crates/hero_foundry_webdav_client.
  • archipelagos/intelligence/knowledge/src/services/embedder_types.rs (new) — local type stubs KnowledgeBucket and SyncResult replacing the removed hero_osis_sdk::embedder types.
  • archipelagos/intelligence/knowledge/src/services/mod.rs — register embedder_types module and re-export its types.
  • archipelagos/intelligence/knowledge/src/services/knowledge_service.rs — keep only fetch_buckets, sync_bucket, delete_bucket as stubs returning "Knowledge service unavailable: embedder SDK not yet integrated"; drop unused fetch_bucket, create_bucket, search_bucket; drop all hero_osis_sdk imports.
  • archipelagos/intelligence/knowledge/src/island.rs — replace hero_osis_sdk::embedder::KnowledgeBucket import with crate::services::KnowledgeBucket.
  • examples/os_components/src/island_content.rs — add missing window_id and initial_url_segment fields to IslandContext initializer (pre-existing blocker surfaced while verifying cargo check --workspace).
  • archipelagos/messaging/src/archipelago.rs — cargo fmt import reordering (pre-existing deviation).
  • Cargo.lock refreshed via cargo update -p hero_osis_sdk so messaging resolves the current SDK which already provides conversationservice_list_messages.

Verification

Acceptance Criterion Status
cargo check -p hero_archipelagos_knowledge passes pass
cargo check -p hero_archipelagos_messaging passes (no source changes) pass
cargo check --workspace passes pass
cargo fmt --all -- --check passes pass
.forgejo/deps.txt lists only crates that exist in the workspace with correct repo + subpath pass

Notes

  • hero_osis_sdk dep stays commented out in archipelagos/intelligence/knowledge/Cargo.toml as a breadcrumb; re-enabling it would only reintroduce the compile error because the embedder feature is gone upstream.
  • Restoring a real embedder client in hero_osis_sdk is out of scope for this PR — follow-up ticket.
  • Full CI pipeline (build.yaml) validation on the feature branch will run once the PR is opened.
## Implementation Summary All spec steps implemented on branch `development_ci_fix_knowledge_deps`. ### Files Changed - `.forgejo/deps.txt` — fix `hero_osis_sdk` subpath to `crates/hero_osis_sdk`; replace stale `hero_fossil/webdav-client` entry with `hero_foundry_webdav_client=crates/hero_foundry_webdav_client`. - `archipelagos/intelligence/knowledge/src/services/embedder_types.rs` (new) — local type stubs `KnowledgeBucket` and `SyncResult` replacing the removed `hero_osis_sdk::embedder` types. - `archipelagos/intelligence/knowledge/src/services/mod.rs` — register `embedder_types` module and re-export its types. - `archipelagos/intelligence/knowledge/src/services/knowledge_service.rs` — keep only `fetch_buckets`, `sync_bucket`, `delete_bucket` as stubs returning `"Knowledge service unavailable: embedder SDK not yet integrated"`; drop unused `fetch_bucket`, `create_bucket`, `search_bucket`; drop all `hero_osis_sdk` imports. - `archipelagos/intelligence/knowledge/src/island.rs` — replace `hero_osis_sdk::embedder::KnowledgeBucket` import with `crate::services::KnowledgeBucket`. - `examples/os_components/src/island_content.rs` — add missing `window_id` and `initial_url_segment` fields to `IslandContext` initializer (pre-existing blocker surfaced while verifying `cargo check --workspace`). - `archipelagos/messaging/src/archipelago.rs` — cargo fmt import reordering (pre-existing deviation). - `Cargo.lock` refreshed via `cargo update -p hero_osis_sdk` so messaging resolves the current SDK which already provides `conversationservice_list_messages`. ### Verification | Acceptance Criterion | Status | | --- | --- | | `cargo check -p hero_archipelagos_knowledge` passes | pass | | `cargo check -p hero_archipelagos_messaging` passes (no source changes) | pass | | `cargo check --workspace` passes | pass | | `cargo fmt --all -- --check` passes | pass | | `.forgejo/deps.txt` lists only crates that exist in the workspace with correct repo + subpath | pass | ### Notes - `hero_osis_sdk` dep stays commented out in `archipelagos/intelligence/knowledge/Cargo.toml` as a breadcrumb; re-enabling it would only reintroduce the compile error because the `embedder` feature is gone upstream. - Restoring a real embedder client in `hero_osis_sdk` is out of scope for this PR — follow-up ticket. - Full CI pipeline (`build.yaml`) validation on the feature branch will run once the PR is opened.
Author
Member

Pull request opened: #85

This PR implements the changes discussed in this issue.

Pull request opened: https://forge.ourworld.tf/lhumina_code/hero_archipelagos/pulls/85 This PR implements the changes discussed in this issue.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_archipelagos#69
No description provided.