Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
304 commits
Select commit Hold shift + click to select a range
74e33af
test: quarantine composio tools coverage overflow
senamakel Sep 20, 2026
cb1cb16
test: quarantine config credential coverage overflow
senamakel Sep 20, 2026
23bacd4
test: quarantine credential thread coverage overflow
senamakel Sep 20, 2026
9cd21ae
test: quarantine medulla session coverage overflow
senamakel Sep 20, 2026
6ccf994
Merge remote-tracking branch 'upstream/main' into green-all-tests-fol…
senamakel Sep 20, 2026
ff36509
test: quarantine memory goals coverage overflow
senamakel Sep 20, 2026
5f33940
test: isolate memory raw coverage regressions
senamakel Sep 20, 2026
b55a066
test: quarantine memory sync bus coverage overflow
senamakel Sep 20, 2026
69b6122
test: quarantine memory sync sources coverage overflow
senamakel Sep 20, 2026
7352ab8
test: quarantine near90 raw coverage overflow
senamakel Sep 20, 2026
6688372
test: quarantine notification coverage overflow
senamakel Sep 20, 2026
49662e9
test: quarantine sandbox runtime coverage overflow
senamakel Sep 20, 2026
ed392b2
test: quarantine secrets coverage overflow
senamakel Sep 20, 2026
72f0d91
test: quarantine skill runtime coverage overflow
senamakel Sep 20, 2026
99aaeeb
test: quarantine team referral coverage overflow
senamakel Sep 20, 2026
5c66094
test: quarantine voice audio coverage overflow
senamakel Sep 20, 2026
3d69732
test: quarantine webhook coverage overflow
senamakel Sep 20, 2026
61ea7de
Merge remote-tracking branch 'upstream/main' into green-all-tests-fol…
senamakel Sep 20, 2026
95508a9
fix: remove duplicate core publish manifest key
senamakel Sep 20, 2026
73772e6
Merge remote-tracking branch 'upstream/pr-6349' into green-all-tests-…
senamakel Sep 20, 2026
abe80ad
test: isolate unavailable managed search coverage
senamakel Sep 20, 2026
57418d2
test: quarantine pre-stream chat failure expectation
senamakel Sep 20, 2026
6595090
test: quarantine tinyagents e2e regressions
senamakel Sep 20, 2026
eba4f52
fix: satisfy autosave clippy lint
senamakel Sep 20, 2026
6292d38
fix: align Rust layout limits with merged sources
senamakel Sep 20, 2026
f20eee5
chore: refresh runtime boundary baseline
senamakel Sep 20, 2026
888d268
test: quarantine embed harness policy regression
senamakel Sep 20, 2026
3057e63
ci: ratchet flows dependency simulator baseline
senamakel Sep 20, 2026
4dfd18f
test: stabilize embedded agent and skills e2e coverage
senamakel Sep 21, 2026
2c7244f
ci: cover the hosted session owner
senamakel Sep 21, 2026
9370fb2
Merge remote-tracking branch 'upstream/main' into green-all-tests-fol…
senamakel Sep 21, 2026
efb6a00
ci: refresh runtime boundary baseline
senamakel Sep 21, 2026
67cbb31
test: align embedded runtime and mcp deep link coverage
senamakel Sep 21, 2026
e7b7ac6
style: format connections deep link spec
senamakel Sep 21, 2026
4459049
test: refresh post-merge coverage baselines
senamakel Sep 21, 2026
fb2cb4c
ci: accommodate briefing prompt rendering variance
senamakel Sep 21, 2026
f622f57
test: mock skills registry search fixture
senamakel Sep 21, 2026
fc8b2e8
style: format skills registry fixture
senamakel Sep 21, 2026
b7c7f4a
test: remove retired rewards sidebar coverage
senamakel Sep 21, 2026
53f0d71
style: format sidebar coverage
senamakel Sep 21, 2026
a8a47f1
test: quarantine migrated picker and discord modal cases
senamakel Sep 21, 2026
fab86c0
test: quarantine retired rewards and focus trap suites
senamakel Sep 21, 2026
0a9e2b1
test: drop retired rewards navigation routes
senamakel Sep 21, 2026
e6aab09
test: align pricing and picker expectations
senamakel Sep 21, 2026
488b842
test: align mcp placeholder expectation
senamakel Sep 21, 2026
7831622
test: align inference and mcp expectations
senamakel Sep 21, 2026
b64136c
test: remove retired rewards route coverage
senamakel Sep 21, 2026
9a1359f
chore: retrigger draft ci
senamakel Sep 21, 2026
257a63a
test: stabilize web onboarding and connections flows
senamakel Sep 21, 2026
dc94dc0
test: load pinned connectors module in rust e2e
senamakel Sep 21, 2026
78dc016
ci: retry pinned native module downloads
senamakel Sep 21, 2026
a8841ee
ci: supply connectors fixture to rust e2e
senamakel Sep 21, 2026
f2f4821
Merge remote-tracking branch 'upstream/main' into green-all-tests-fol…
senamakel Sep 21, 2026
ebbb287
docs: retain removed rewards coverage IDs
senamakel Sep 21, 2026
3bbb7aa
test: align managed model routing coverage
senamakel Sep 21, 2026
6fa37aa
fix: run coverage integration targets from cli
senamakel Sep 21, 2026
b68642b
test: align logout onboarding flow
senamakel Sep 21, 2026
420dc47
chore: update tinyagents submodule
senamakel Sep 21, 2026
48023b1
chore: add identity, role, soul, and style prompt files
senamakel Sep 21, 2026
7d5cceb
chore(openhuman-core): add orchestrator prompt documentation
senamakel Sep 21, 2026
346e099
chore: add orchestrator agent prompt
senamakel Sep 21, 2026
007d662
chore: files changed crates/openhuman-core/src/agent/registry/agents/…
senamakel Sep 21, 2026
dec9bf0
feat(prompts): add tier markers to dynamic prompt sections
senamakel Sep 21, 2026
59bf28a
refactor(core): split tiered prompt into per-tier parts
senamakel Sep 21, 2026
726372a
feat(learning): mark learned and profile sections as volatile
senamakel Sep 21, 2026
9156179
fix(agent): import PromptTier for memory section
senamakel Sep 21, 2026
f210d95
refactor(prompts): tighten prompt section wording
senamakel Sep 21, 2026
b3766ab
refactor: remove unnecessary mut from closure binding
senamakel Sep 21, 2026
1834d44
refactor(prompt): trim withheld intent at word boundary
senamakel Sep 21, 2026
c80ba0c
chore(agent): remove unused orchestrator tool permissions
senamakel Sep 21, 2026
75990a9
chore: files changed crates/openhuman-core/src/agent/registry/agents/…
senamakel Sep 21, 2026
62f26cc
chore(agent): replace todowrite and plan_exit with todo tool
senamakel Sep 21, 2026
72bf8d4
fix(tokenjuice): advertise only the live recovery tool to curated agents
senamakel Sep 21, 2026
351d9e2
fix(session_host): correct tool marker in allowlist comment
senamakel Sep 21, 2026
95ef609
fix(session_host): gate memory prompt sections on post-pack visible set
senamakel Sep 21, 2026
29c139e
chore: remove unreachable composio_connect from pack
senamakel Sep 21, 2026
b40025c
chore: annotate composio_connect exception in toolpack test
senamakel Sep 21, 2026
a5cfdfb
refactor(todo): trim tool schema and description
senamakel Sep 21, 2026
8134fa2
feat(agent): narrow spawn_async_subagent schema to allowed sub-agent ids
senamakel Sep 21, 2026
c54e037
feat(agent): scope spawn_async_subagent spec to allowed subagent ids
senamakel Sep 21, 2026
35e14d3
chore: shorten tool descriptions
senamakel Sep 21, 2026
2a79672
chore: shorten continue_subagent tool descriptions
senamakel Sep 21, 2026
8f433c3
chore(agents): tighten when_to_use routing hints
senamakel Sep 21, 2026
64f69b6
refactor(skill-delegation): simplify tool description
senamakel Sep 21, 2026
cb91a9e
fix(agent): trim long service blurbs in delegation description
senamakel Sep 21, 2026
1869405
chore: shorten tool pack summaries
senamakel Sep 21, 2026
530ce48
feat(session): tier system prompt for prefix cache
senamakel Sep 21, 2026
b0f450a
chore: remove unused test helper build_system_prompt
senamakel Sep 21, 2026
a7e338f
feat(prompt_cache): segment each leading system message separately
senamakel Sep 21, 2026
62f5a84
perf(web_chat): add time-to-first-visible instrumentation
senamakel Sep 21, 2026
fd1924e
chore(tinyagents): add prompt-size and cache summary logging
senamakel Sep 21, 2026
a13e750
chore(prompt-eval): add orchestrator research trip case
senamakel Sep 21, 2026
2eb1422
docs(prompt-evals): document orchestrator-research-trip eval case
senamakel Sep 21, 2026
940831d
fix(prompts): clarify time-relative wording guidance
senamakel Sep 21, 2026
dc6762b
test(prompt): align orchestrator prompt tests with updated delegation…
senamakel Sep 21, 2026
0dbb5ae
test: update delegation prompt assertions to match new wording
senamakel Sep 21, 2026
91f69bf
test(orchestrator): tighten prompt tests to match rewritten grounding…
senamakel Sep 21, 2026
c4ebd26
test: tighten session-routing prompt and truncation assertions
senamakel Sep 21, 2026
54bbc11
test: assert spawn_async_subagent is scoped per session
senamakel Sep 21, 2026
048f611
docs(orchestrator): clarify sub-agent delegation rules
senamakel Sep 21, 2026
e081fd3
chore: update agent prompts
senamakel Sep 22, 2026
1437d9f
refactor(agent): tighten prompt section wording
senamakel Sep 22, 2026
2d98e12
chore: simplify orchestrator prompt and skill rendering
senamakel Sep 22, 2026
a534934
refactor(orchestrator): drop per-row intent text from withheld specia…
senamakel Sep 22, 2026
75c639e
chore(prompts): simplify agent prompt wording
senamakel Sep 22, 2026
7a59395
docs(prompts): update KV-cache stability docs for tiered system messages
senamakel Sep 22, 2026
58a005e
chore: update prompt budget limits and tokenjuice docs
senamakel Sep 22, 2026
1deb293
chore: disable tokenjuice compaction by default
senamakel Sep 22, 2026
66d5d2f
fix(config): flip default for tool-output compaction
senamakel Sep 22, 2026
6a0a006
chore(scripts): update prompt budget limits
senamakel Sep 22, 2026
c0db801
chore(prompt): reword orchestrator guidance for clarity
senamakel Sep 22, 2026
664202b
chore(prompt): rephrase capability check in orchestrator prompt
senamakel Sep 22, 2026
edd64e2
fix(orchestration): clarify async subagent error guidance
senamakel Sep 22, 2026
a5a7ade
fix(catalog): clarify plan review scope for planning specialist
senamakel Sep 22, 2026
56eb91a
chore: apply rustfmt formatting across core crates
senamakel Sep 22, 2026
d96e98e
test(config): flip compaction and router defaults to opt-in
senamakel Sep 22, 2026
41dd792
test(config): correct router_enabled assertion in patch test
senamakel Sep 22, 2026
c1db677
test(agent): update orchestrator prompt section marker
senamakel Sep 22, 2026
6e97888
Merge remote-tracking branch 'upstream/main' into green-all-tests-fol…
senamakel Sep 22, 2026
16e8eeb
test(agent_prompt_comprehension_e2e): update summarizer test to use r…
senamakel Sep 22, 2026
de6bc72
chore(openhuman-core): clarify fan-out semantics for async subagents
senamakel Sep 22, 2026
aafd762
chore: files changed crates/openhuman-core/src/web_chat/mod.rs,crates…
senamakel Sep 22, 2026
f8da788
refactor(session_host): move pack stripping into memory prompt helper
senamakel Sep 22, 2026
2537e3d
refactor(session_host): extract prefix snapshot construction
senamakel Sep 22, 2026
3a81678
fix: remove unused PrefixSnapshot import
senamakel Sep 22, 2026
389a897
chore(vendor): bump tinyagents for tiered system segments and model g…
senamakel Sep 22, 2026
a94f747
test: add tool search intent fixtures
senamakel Sep 22, 2026
e9629e2
feat(tool_search_bench): add per-source recall and top-k metrics
senamakel Sep 22, 2026
60ce388
chore(scripts): update orchestrator prompt budget limit
senamakel Sep 22, 2026
ee6cd66
chore(deps): switch tinyjevclient to local path for bench experiment
senamakel Sep 22, 2026
64ed46b
chore: files changed crates/openhuman-cli/src/bin/tool_search_bench.rs
senamakel Sep 22, 2026
bdb31c6
refactor(core): move discovery module into subdirectory
senamakel Sep 22, 2026
3eca97d
chore: refactor disk cache loading to use combinators
senamakel Sep 22, 2026
0f39191
feat(jev): add embedding retriever option to tool search bench
senamakel Sep 22, 2026
d4a9345
chore: remove unused JevRankerConfig import
senamakel Sep 22, 2026
069ecf0
fix(ci): remove uncompiled agent source duplicates
senamakel Sep 22, 2026
d783d30
Merge upstream/main into jev-tool-search
senamakel Sep 22, 2026
57211e9
merge: upstream/main into hermes-prompt-diet
senamakel Sep 22, 2026
ee563e0
Merge upstream/main (jev tool_search merged) into jev-tool-search; ti…
senamakel Sep 22, 2026
5d8d6ce
merge: origin/green-all-tests-followup-next (#6367) into hermes-promp…
senamakel Sep 22, 2026
9e54534
chore: files changed crates/openhuman-core/src/config/schema/agent.rs
senamakel Sep 22, 2026
fcfc5aa
fix(tests, docs): correct default tool dispatcher and policy names
senamakel Sep 22, 2026
085e4f5
chore(deps): update tinytools crates to 0.4.1
senamakel Sep 22, 2026
16ca422
feat(jev): use host-owned SystemOneEvaluator transport
senamakel Sep 22, 2026
55345b8
refactor(jev): flatten nested conditionals in evaluator
senamakel Sep 22, 2026
509b5b0
refactor(jev): use SystemOneEvaluator in tool search bench
senamakel Sep 22, 2026
6bde014
fix(tools): stop forwarding Hidden exposure in shared tool adapter
senamakel Sep 22, 2026
a52ea48
test(adapter): cover exposure mapping for admitted tools
senamakel Sep 22, 2026
0bab7db
refactor(prompts): stop rendering tool catalogues in ToolsSection
senamakel Sep 22, 2026
fdbb537
chore(openhuman-core): remove unused tool references from prompt sect…
senamakel Sep 22, 2026
fc3f725
feat(session_host): pin tool dialect in runtime session
senamakel Sep 22, 2026
94002c0
feat(core): include tool schemas in cache key only when they stay on …
senamakel Sep 22, 2026
9ef4584
test: add prompt cache segment naming test for text dialects
senamakel Sep 22, 2026
6028b7a
feat(jev): add configurable deadline for JEV evaluations
senamakel Sep 22, 2026
016c1c4
docs(bin): document the new tool-search-bench binary
senamakel Sep 22, 2026
9b8e7d2
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
492db97
chore: update tinyagents subproject commit
senamakel Sep 22, 2026
2950faa
docs(jev-tool-search-baseline): add baseline and results for tool_sea…
senamakel Sep 22, 2026
6edc354
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
0273c37
chore(scripts): update prompt budget limits
senamakel Sep 22, 2026
2b88378
fix(orchestrator): update prompt test for tool search contract
senamakel Sep 22, 2026
122d474
chore: update tinyagents subproject commit
senamakel Sep 22, 2026
06735d9
feat(openhuman-core): enable host-rendered tool catalogue in harness
senamakel Sep 22, 2026
2976fb0
refactor(prompts): render tool signatures for text dialects
senamakel Sep 22, 2026
40b9d67
test(tinyagents): assert OpenHuman's default tool dispatcher
senamakel Sep 22, 2026
6bcafe8
fix(session_host): pass history by reference in resumed prefix
senamakel Sep 22, 2026
6d5a6a2
fix(harness): accept doubled tool_call tags as one call
senamakel Sep 22, 2026
6e73adb
chore(deps): update tinytools and tinytools-agent to 0.4.1 and add ti…
senamakel Sep 22, 2026
676c997
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
1529361
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
9f943f6
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
6094208
chore(deps): update vendor/tinyagents subproject commit
senamakel Sep 22, 2026
4f4f8e4
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
df33359
chore(deps): update vendor/tinyagents submodule
senamakel Sep 22, 2026
75783b1
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
5fa0110
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
b4fd9dd
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
b830561
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
3682277
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
fc669f3
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
348e66f
chore(deps): update tinyagents submodule commit
senamakel Sep 22, 2026
13c53ed
chore: files changed vendor/tinyagents
senamakel Sep 22, 2026
32572b7
chore: files changed vendor/tinyagents
senamakel Sep 22, 2026
02491ba
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
9585a47
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
0fa38ae
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
d710d26
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
e7e573d
chore(deps): update vendor/tinyagents subproject commit
senamakel Sep 22, 2026
cd0da4f
test(turn-runner): add test for single delivery of streamed deltas
senamakel Sep 22, 2026
735c0b1
chore(deps): update vendor/tinyagents submodule commit
senamakel Sep 22, 2026
c30751e
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
0d5b034
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
03f4376
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
f16831c
fix(host): remove duplicate progress channel wiring
senamakel Sep 22, 2026
a8d9f40
fix(host): remove unused progress reference in bundle factory
senamakel Sep 22, 2026
6da53a6
fix(core): prefix unused parameter with underscore
senamakel Sep 22, 2026
7810a43
docs(scope): clarify progress seam ownership in bundle factory doc
senamakel Sep 22, 2026
e5af258
feat(agent): remove ask_user_clarification from orchestrator allowlist
senamakel Sep 22, 2026
b8b5a0c
feat(ranker): switch default strategy to RetrieveThenDecide and fail …
senamakel Sep 22, 2026
2eb5219
feat(jev): default to embedding top-20 then decide; no embedder, no J…
senamakel Sep 22, 2026
9495412
test(embedding-ranker): add incremental embedding test for new or cha…
senamakel Sep 22, 2026
abefa03
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
c44fad2
chore(limits): update prompt budget ceilings for all agents
senamakel Sep 22, 2026
1244f2c
fix(scripts): pin tool dispatcher to auto in prompt-size measurement
senamakel Sep 22, 2026
2ce93a9
chore(prompt-budget): update prompt budget limits
senamakel Sep 22, 2026
a9f941b
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
ce20868
chore(deps): update tinyagents submodule commit
senamakel Sep 22, 2026
aacfa40
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
89a4f29
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
fb44df3
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
2ad1eb3
chore(deps): update vendor/tinyagents submodule
senamakel Sep 22, 2026
3b7b14e
chore(deps): update tinyagents submodule
senamakel Sep 22, 2026
abb148c
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
eabba29
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
533abbf
Merge remote-tracking branch 'origin/jev-family-embedding' into herme…
senamakel Sep 22, 2026
af84d86
chore(deps): update tinyagents subproject commit
senamakel Sep 22, 2026
b47c1a4
chore(deps): pin vendor/tinyagents to the #190 merge commit, not a lo…
senamakel Sep 22, 2026
2679431
chore(deps): update tinyjevclient dependency revision
senamakel Sep 22, 2026
a78554f
fix(todo): remove deprecated orchestrator-tasks board routing
senamakel Sep 22, 2026
bfe6278
test(orchestrator): add test verifying orchestrator binds to live thr…
senamakel Sep 22, 2026
301c2c1
fix(todo): handle empty todo list in list_todos
senamakel Sep 22, 2026
169e664
fix(agent): handle empty todo list in ops module
senamakel Sep 22, 2026
716b5a5
chore(agent): remove legacy todo tool family and update_task
senamakel Sep 22, 2026
19be705
refactor(todos): consolidate todo tools into a single session-scoped …
senamakel Sep 22, 2026
93095d9
fix(harness_tool_registration): remove registration of update_task di…
senamakel Sep 22, 2026
bb1ceba
chore(agent): remove outdated UpdateTaskTool reference from tools docs
senamakel Sep 22, 2026
6f0574d
refactor(task_sources): remove task-sources board, route directly to …
senamakel Sep 22, 2026
1d267f7
refactor(task-sources): stop tracking board card ids in the ingest le…
senamakel Sep 22, 2026
0f13846
fix(store): remove unused card_id field from IngestedTaskRef
senamakel Sep 22, 2026
da86ea6
fix(integrations): rename is_ingested to was_ingested and remove unus…
senamakel Sep 22, 2026
3a5b8ef
fix(ops): remove unused route import
senamakel Sep 22, 2026
65f148c
fix(route_tests): correct test assertion for task source routing
senamakel Sep 22, 2026
2b43bd0
test(store): drop card-id parameter from mark_ingested
senamakel Sep 22, 2026
b4917ab
fix(todo_tests): correct test assertion for completed todo status
senamakel Sep 22, 2026
c8d5601
feat(agent): remove task-board tools from task manager agent
senamakel Sep 22, 2026
a3a7e15
docs(registry): update task_manager_agent description and orchestrato…
senamakel Sep 22, 2026
9fa3242
docs: update task sources and agent READMEs to reflect removal of boa…
senamakel Sep 22, 2026
5ed0312
chore(tests): remove todo tool tests and references
senamakel Sep 22, 2026
721ccaa
test(ops): add goal_get to representative domain mapping
senamakel Sep 22, 2026
634834f
refactor(todos): remove legacy task board migration and file store
senamakel Sep 22, 2026
33d798f
chore(deps): declare deliberate vendor/tinyagents pin move [pin-rewind]
senamakel Sep 22, 2026
1ce239e
refactor(todos): replace thread-scoped stores with session-scoped stores
senamakel Sep 22, 2026
4ccd374
chore: reformat long lines and fix import ordering across multiple cr…
senamakel Sep 22, 2026
f341a0f
chore(i18n): update task source descriptions to reference agent directly
senamakel Sep 22, 2026
c384844
docs(goals-and-todos): clarify agent work state and rename TodoOnly v…
senamakel Sep 22, 2026
15a0ca1
chore(i18n): remove unused 'conversations.threadTodo.title' translati…
senamakel Sep 22, 2026
8efaeae
fix(scripts): correct first inference capture test
senamakel Sep 22, 2026
99f10b1
fix(scripts): correct test for first inference capture
senamakel Sep 22, 2026
f7d74bc
fix(limits): adjust prompt budget ceilings for several agents and tools
senamakel Sep 22, 2026
9862d25
fix(toolpacks): correct tasks pack summary
senamakel Sep 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions .github/workflows/ci-full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#
# Two-lane model:
# - ci-lite.yml (quick): pushes to main + PRs to main/release — quality
# checks + unit tests scoped to the changed files only.
# checks + complete unit-test suites for each changed area.
# - ci-full.yml (this file, slow): PRs targeting `release` (fix PRs opened
# while stabilising a cut — the "CI Full Gate" check gates their merge)
# and pushes to `release` (the maintainer-dispatched promotion merge from
Expand Down Expand Up @@ -137,14 +137,15 @@ jobs:
module_root="/opt/openhuman-test-modules/${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
memory_dir="$module_root/tinymemory"
juice_dir="$module_root/tinyjuice"
connectors_dir="$module_root/tinyconnectors"
memory_archive="$memory_dir/tinymemory-module-${memory_version}-ubuntu-22.04-x86_64.tar.gz"
juice_archive="$juice_dir/tinyjuice-module-0.2.2-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir" "$juice_dir"
mkdir -p "$memory_dir" "$juice_dir"
curl --fail --location --silent --show-error \
rm -rf "$memory_dir" "$juice_dir" "$connectors_dir"
mkdir -p "$memory_dir" "$juice_dir" "$connectors_dir"
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinyjuice/releases/download/v0.2.2/$(basename "$juice_archive")" \
--output "$juice_archive"
echo "${memory_sha256} $memory_archive" \
Expand All @@ -153,10 +154,16 @@ jobs:
| sha256sum --check
tar --no-same-owner -xzf "$memory_archive" -C "$memory_dir"
tar --no-same-owner -xzf "$juice_archive" -C "$juice_dir"
bash scripts/ci-cancel-aware.sh cargo build --release \
--manifest-path vendor/tinyconnectors/crates/tinyconnectors/Cargo.toml
cp vendor/tinyconnectors/target/release/libtinyconnectors.so \
"$connectors_dir/libtinyconnectors.so"
echo "TINYMEMORY_TEST_MODULE=$memory_dir/libtinymemory_module.so" \
>> "$GITHUB_ENV"
echo "TINYJUICE_TEST_MODULE=$juice_dir/libtinyjuice_module.so" \
>> "$GITHUB_ENV"
echo "TINYCONNECTORS_TEST_MODULE=$connectors_dir/libtinyconnectors.so" \
>> "$GITHUB_ENV"

- name: Run Rust E2E suite
# Wrapped so the cancellation watchdog covers the whole suite (mock
Expand Down Expand Up @@ -329,10 +336,10 @@ jobs:
juice_archive="$juice_dir/tinyjuice-module-0.2.2-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir" "$juice_dir" "$connectors_dir"
mkdir -p "$memory_dir" "$juice_dir" "$connectors_dir"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinyjuice/releases/download/v0.2.2/$(basename "$juice_archive")" \
--output "$juice_archive"
echo "${memory_sha256} $memory_archive" | sha256sum --check
Expand Down
113 changes: 13 additions & 100 deletions .github/workflows/ci-lite.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
---
# CI Lite — the quick lane (pushes to main + PRs targeting main or release).
#
# Runs quality checks per changed area and unit tests ONLY for the files the
# PR changed (vitest related / domain-scoped cargo-llvm-cov), with diff-cover
# enforcing >= 80% coverage on changed lines. Integration and E2E suites do
# NOT run here — they run in full via ci-full.yml on PRs targeting `release`
# Runs quality checks and complete unit-test suites per changed area, with
# diff-cover enforcing >= 80% coverage on changed lines. Release-only mock-backend
# and cross-platform E2E suites run via ci-full.yml on PRs targeting `release`
# and on every push to `release` (the maintainer-dispatched
# promote-main-to-release.yml merge and fix-PR merges). Fix PRs against
# release get this fast lane too, for quick lint/coverage feedback alongside
Expand Down Expand Up @@ -51,19 +50,9 @@ jobs:
timeout-minutes: 5
outputs:
frontend: ${{ steps.filter.outputs.frontend }}
# "true" when the change touches config that invalidates test scoping
# (lockfile, vitest/vite/ts config, test setup) → run the full suite.
frontend-full: ${{ steps.filter.outputs['frontend-full'] }}
# Shell-quoted list of changed app/src source files, consumed by
# scripts/ci/vitest-changed-coverage.sh (vitest related).
frontend-src-files: ${{ steps.filter.outputs['frontend-src_files'] }}
i18n: ${{ steps.filter.outputs.i18n }}
docs: ${{ steps.filter.outputs.docs }}
rust-core: ${{ steps.filter.outputs['rust-core'] }}
rust-core-full: ${{ steps.filter.outputs['rust-core-full'] }}
# Shell-quoted list of changed src/ + tests/ files, consumed by
# scripts/ci/rust-coverage-changed.sh (domain-scoped llvm-cov).
rust-core-src-files: ${{ steps.filter.outputs['rust-core-src_files'] }}
rust-tauri: ${{ steps.filter.outputs['rust-tauri'] }}
# Mock backend + shared scripts → run the scripts self-test suite.
scripts: ${{ steps.filter.outputs.scripts }}
Expand All @@ -86,13 +75,9 @@ jobs:
id: filter
uses: dorny/paths-filter@v4
with:
list-files: shell
filters: |
frontend:
- '.github/workflows/ci-lite.yml'
# The changed-files runner itself must trigger the lane that
# runs it (it is also in frontend-full → full-suite mode).
- 'scripts/ci/vitest-changed-coverage.sh'
- 'scripts/ci-cancel-aware.sh'
- 'package.json'
- 'pnpm-lock.yaml'
Expand All @@ -106,25 +91,6 @@ jobs:
- 'app/vite.config.*'
- 'app/tailwind.config.*'
- 'app/postcss.config.*'
# Changes here invalidate per-file test scoping → full Vitest run.
frontend-full:
- '.github/workflows/ci-lite.yml'
- 'scripts/ci/vitest-changed-coverage.sh'
- 'package.json'
- 'pnpm-lock.yaml'
- 'app/package.json'
- 'app/index.html'
- 'app/public/**'
- 'app/test/vitest.config.ts'
- 'app/tsconfig*.json'
- 'app/vite.config.*'
- 'app/tailwind.config.*'
- 'app/postcss.config.*'
- 'app/scripts/**'
- 'app/src/test/**'
frontend-src:
- 'app/src/**/*.ts'
- 'app/src/**/*.tsx'
i18n:
- '.github/workflows/ci-lite.yml'
- 'app/src/**'
Expand All @@ -137,12 +103,10 @@ jobs:
- 'package.json'
rust-core:
- '.github/workflows/ci-lite.yml'
# The changed-files runner itself must trigger the lane that
# runs it (it is also in rust-core-full → full-suite mode).
- 'scripts/ci/rust-coverage-changed.sh'
- 'scripts/ci/rust-coverage.sh'
# The product feature set decides what the Rust lanes below
# actually compile (clippy's `--features`, the test suite's, and
# rust-coverage-changed.sh's). Changing it changes the code under
# rust-coverage.sh's). Changing it changes the code under
# test as surely as editing `Cargo.toml` does, so it has to arm
# this lane too — #5619 turned `hosting` on and, without this
# entry, resolved to `["rust-tauri"]` alone, skipping every lane
Expand Down Expand Up @@ -192,41 +156,6 @@ jobs:
# `--init --recursive`. Do not go back to a list.
- '.gitmodules'
- 'vendor/**'
# Changes here invalidate per-module test scoping → full suite.
rust-core-full:
- '.github/workflows/ci-lite.yml'
- 'scripts/ci/rust-coverage-changed.sh'
# Same reason as in `rust-core` above: a feature-set change
# changes what compiles, which invalidates per-module scoping
# exactly as a `Cargo.toml` change does.
- 'scripts/ci/product-features.*'
- 'scripts/ci/assert-coverage-presence.sh'
- 'scripts/ci/coverage-presence-allowlist.txt'
- 'Cargo.toml'
- 'crates/openhuman-core/Cargo.toml'
- 'crates/openhuman-embed/Cargo.toml'
- 'crates/openhuman-tinyhumans/Cargo.toml'
- 'crates/openhuman-tui/Cargo.toml'
- 'Cargo.lock'
- 'build.rs'
- '.cargo/config.toml'
- 'rust-toolchain.toml'
- 'scripts/ci-cancel-aware.sh'
- 'scripts/check-linux-tls-dependencies.sh'
# A vendored-crate bump invalidates per-module test scoping for the
# same reason a Cargo.lock change does: it moves the dependency
# graph under every module. Full suite, not scoped.
- '.gitmodules'
- 'vendor/**'
rust-core-src:
- 'src/**'
- 'crates/openhuman-core/src/**'
- 'crates/openhuman-embed/src/**'
- 'crates/openhuman-embed/tests/**'
- 'crates/openhuman-tinyhumans/src/**'
- 'crates/openhuman-tui/src/**'
- 'crates/openhuman-tui/tests/**'
- 'tests/**'
rust-tauri:
- '.github/workflows/ci-lite.yml'
- 'Cargo.lock'
Expand Down Expand Up @@ -375,18 +304,11 @@ jobs:
if: needs.changes.outputs.docs == 'true'
run: pnpm docs:check

- name: Run Vitest with coverage (changed files only)
- name: Run complete frontend unit suite with coverage
if: needs.changes.outputs.frontend == 'true'
run: bash scripts/ci/vitest-changed-coverage.sh
run: bash scripts/ci-cancel-aware.sh pnpm --filter openhuman-app test:coverage
env:
NODE_ENV: test
FULL: ${{ needs.changes.outputs['frontend-full'] }}
# Same argument-limit guard as the rust-core lane below. The condition is
# inverted so the file list sits on the `&&` (truthy) side: GitHub's
# `a && b || c` ternary falls through to `c` whenever `b` is falsy, so
# `... == 'true' && '' || <files>` would hand back the full list in
# exactly the full-suite case this is meant to blank.
CHANGED_FILES: ${{ needs.changes.outputs['frontend-full'] != 'true' && needs.changes.outputs['frontend-src-files'] || '' }}

- name: Normalize lcov source paths to repo root
if: needs.changes.outputs.frontend == 'true'
Expand Down Expand Up @@ -718,7 +640,7 @@ jobs:
# a domain feature must equal the allowlist below. When a new gate (or a new
# test in an existing gate's domain) adds a gated test file, this fails — the
# author then adds it here AND, if it can hold an ungated-assert regression of
# the #5022 class, extends the scoped `cargo test` filter above. Prevents the
# the #5022 class, extends the gate-contract `cargo test` filters above. Prevents the
# smoke lane from silently under-covering as the gate surface grows.
run: |
set -euo pipefail
Expand Down Expand Up @@ -768,7 +690,7 @@ jobs:
)
ACTUAL=$(node scripts/ci/list-feature-gated-rust-tests.mjs | sort -u)
if ! diff <(echo "$EXPECTED" | sed 's/^ *//' | sort -u) <(echo "$ACTUAL"); then
echo "::error::Gated-test file set changed. Update the EXPECTED allowlist in the rust-feature-gate-smoke lane, and extend the scoped 'cargo test' filter if the new module can carry an ungated-assert regression (see #5022)."
echo "::error::Gated-test file set changed. Update the EXPECTED allowlist in the rust-feature-gate-smoke lane, and extend the gate-contract 'cargo test' filters if the new module can carry an ungated-assert regression (see #5022)."
exit 1
fi
echo "gate-contract test coverage allowlist is current"
Expand Down Expand Up @@ -914,10 +836,10 @@ jobs:
juice_archive="$juice_dir/tinyjuice-module-0.2.2-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir" "$juice_dir" "$connectors_dir"
mkdir -p "$memory_dir" "$juice_dir" "$connectors_dir"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinyjuice/releases/download/v0.2.2/$(basename "$juice_archive")" \
--output "$juice_archive"
echo "${memory_sha256} $memory_archive" \
Expand Down Expand Up @@ -946,19 +868,10 @@ jobs:
env:
CARGO_BUILD_JOBS: "1"

- name: Run cargo llvm-cov for openhuman core (changed modules only)
run: bash scripts/ci/rust-coverage-changed.sh
- name: Run complete root Rust suite with cargo llvm-cov
run: bash scripts/ci/rust-coverage.sh
env:
CARGO_BUILD_JOBS: "1"
FULL: ${{ needs.changes.outputs['rust-core-full'] }}
# Suppressed in full-suite mode. The list is ignored when FULL=true, but a
# large refactor can push it past the container job's argument/env limit,
# and `docker exec` then fails to START the step —
# "Argument list too long" — before the script can apply its own
# MAX_CHANGED_FILES fallback. Blanking it here keeps the step launchable.
# Condition inverted so the file list is on the `&&` side — `a && '' || b`
# always falls through to `b` because `''` is falsy.
CHANGED_FILES: ${{ needs.changes.outputs['rust-core-full'] != 'true' && needs.changes.outputs['rust-core-src-files'] || '' }}
OUT: lcov-core.info
# The tinyagents harness is the agent engine on every build now
# (issue #4249); the suite exercises it by default. The legacy engine
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/e2e-playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ jobs:
juice_archive="$juice_dir/tinyjuice-module-0.2.2-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir" "$juice_dir" "$connectors_dir"
mkdir -p "$memory_dir" "$juice_dir" "$connectors_dir"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinyjuice/releases/download/v0.2.2/$(basename "$juice_archive")" \
--output "$juice_archive"
echo "${memory_sha256} $memory_archive" | sha256sum --check
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/e2e-reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ jobs:
memory_archive="$memory_dir/tinymemory-module-${memory_version}-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir"
mkdir -p "$memory_dir"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
echo "${memory_sha256} $memory_archive" \
Expand Down Expand Up @@ -381,7 +381,7 @@ jobs:
memory_archive="$memory_dir/tinymemory-module-${memory_version}-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir" "$connectors_dir"
mkdir -p "$memory_dir" "$connectors_dir"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
echo "${memory_sha256} $memory_archive" \
Expand Down Expand Up @@ -499,10 +499,10 @@ jobs:
juice_archive="$juice_dir/tinyjuice-module-${juice_version}-ubuntu-22.04-x86_64.tar.gz"
rm -rf "$memory_dir" "$juice_dir" "$connectors_dir"
mkdir -p "$memory_dir" "$juice_dir" "$connectors_dir"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinymemory/releases/download/v${memory_version}/$(basename "$memory_archive")" \
--output "$memory_archive"
curl --fail --location --silent --show-error \
curl --fail --location --silent --show-error --retry 4 --retry-delay 2 \
"https://github.com/tinyhumansai/tinyjuice/releases/download/v${juice_version}/$(basename "$juice_archive")" \
--output "$juice_archive"
echo "${memory_sha256} $memory_archive" | sha256sum --check
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/pr-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ jobs:
# Product Hunt denies GitHub-hosted runners (403) for the translated
# README badge destination, so it cannot be a stable external-link
# check.
# The managed Discord vanity endpoint currently returns 404 before
# forwarding anonymous requests; keep checking all other links until
# its provider-side redirect is restored.
args: >-
--no-progress
--include-fragments
Expand All @@ -77,6 +80,7 @@ jobs:
--exclude '^https://api\.star-history\.com/'
--exclude '^https://x\.com/karpathy/status/2039805659525644595$'
--exclude '^https://www\.producthunt\.com/'
--exclude '^https://discord\.tinyhumans\.ai/?$'
'docs/**/*.md'
'src/**/README.md'
'.github/PULL_REQUEST_TEMPLATE.md'
Expand Down
Loading
Loading