Skip to content

sync: merge current upstream main while preserving fork-specific behavior - #19

Merged
AmirrezaFarnamTaheri merged 2319 commits into
mainfrom
sync/upstream-2026-10-27
Oct 27, 2026
Merged

AmirrezaFarnamTaheri merged 2319 commits into
mainfrom
sync/upstream-2026-10-27

Conversation

@AmirrezaFarnamTaheri

@AmirrezaFarnamTaheri AmirrezaFarnamTaheri commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Purpose

Integrate the current tinyhumansai/openhuman/main history into this fork without discarding fork-specific functionality. This is a real two-parent upstream merge, not a reset, squash, or “ours” merge of the entire tree.

Verified ancestry

Reference Revision / result
Fork base before integration a27b7b52536b0bac0372c40e8481c09a73ec448d
Upstream main included e53cc0c021c63b1bee85ba567beac40d0fb52ea8
Real upstream merge commit 9d5a0aa4699626bf9c5b3660d685cbdb93988a39 (both parents preserved)
Current integration branch 995439cb0aabe5b982e9a9cda4736838a81628af (current verified head; primary CI and E2E gates green)
GitHub compare against upstream 33 behind / 1,166 ahead against tinyhumansai/main at this update; ancestry is not feature parity.

Conflict resolution and dependency convergence

  • A full-history, full-object checkout removed the partial-clone promisor fetch issue.
  • The Git merge identified 39 conflicting paths: Rust workspace manifests/lockfiles, the channel/web-chat runtime, integration tests, CI ratchet baselines, docs, and the vendor/tinyagents gitlink.
  • The reviewed resolver applied 85 individual conflicting content hunks, accepted three files removed or relocated upstream, and left Git's non-overlapping merges intact. The resolver was removed after the two-parent merge succeeded.
  • vendor/tinyagents is pinned at fc3ca874653539c6db9ddfdf938858c38f01a4de, which merges both TinyAgents histories and in turn pins converged TinyTools 0481ee3742c3f138b4759702b9e395467076ec55. Both dependency branches compare 0 behind their upstream projects.
  • Dependency reconciliation PRs: TinyTools #1 and TinyAgents #2.

Workflow permission boundary

GitHub's default GITHUB_TOKEN rejected the initial merge push because it would update .github/workflows/test-reusable.yml without workflow-write permission. The final merge restored the fork's existing workflow files while retaining the full upstream ancestry; the temporary integration workflow was subsequently deleted via the authorized GitHub API. This choice deliberately retains fork runner, GHCR, and release conventions instead of blindly imposing upstream CI. Workflow differences require a separate documented reconciliation/verification pass; do not mistake 0-behind ancestry for automatic workflow configuration equivalence.

Validation

  • Historical two-parent merge preserved upstream ancestry and fork code.
  • Module bundle success, exact head 995439c, run #40581475886.
  • PR Quality success on exact head, run #40581475676.
  • Exact-head Rust E2E diagnostics fully green, all seven jobs (including agent-harness, storage, MCP, providers and in-process), run #40581475859.
  • Prettier canonical output applied to both boot-check sources; temporary diagnostic runner restored to non-mutating prettier --check ..
  • Dependency floor and simulation calibrated to Linux flows 331 packages / 301 names / 3 native (CI measured on preceding head).
  • Reproduced and corrected previous-head storage/credential, TinyFlows release, E2E duplicate, SaaS/agent policy baseline and test-fixture failures.
  • Exact-head CI Fast (hosted) passed in full, run #40581476031: Rust lint, Rust facade/integration/core coverage, checks, Tauri, storage, Pester, and overall gate success.
  • Diff coverage ≥80%: exact-head CI Fast run #40581476031 measured 84% across 603 changed lines; 92 lines missing coverage.

Outstanding review-readiness gates (not completed)

Resolve any residual CI regressions, review feedback and upstream main drift before marking this PR ready for review. These remain acceptance obligations—not completed submission checks. Skipped or cancelled jobs must not be counted as passes. Keep the PR in draft until these gates are satisfied.

Fork-only versus upstream contributions

Keep fork-only for now: model/provider-fleet account and credential multiplexing and key rotation; Prodex-specific endpoints, project branding, fork deployment/signing and release workflows; customized runner/concurrency topology; protocol-dependent structural/AST tool additions that upstream has not adopted.

Upstream candidate classes: isolated general UX fixes, integration reliability and recovery, accessibility and rendering efficiency, and zero-fork-API extensions. Initial independent upstream PRs were opened directly against upstream main and contain regression tests:

Later candidate batches should cover concurrency-safe thread metadata updates, flow-cycle validation (aligned to TinyFlows semantics), and generic model settings; these require protocol and regression review before an upstream PR.

Do not merge or mark this PR review-ready until upstream drift, workflow compatibility, remaining review scope, and final-head CI acceptance have all been verified.

Broad upstream-port backlog (post-CI gate)

A complete tree-object comparison against upstream 9d5a06c shows 890 changed paths (266 added, 618 modified, 6 deleted) at that snapshot, while GitHub's compare endpoint caps its file list at 300. The latest ancestry comparison is 1,166 ahead / 33 behind; this file inventory is an earlier snapshot, not a current exact-head total. Commit messages were enumerated across the 12-page compare result; a file inventory or commit message is not executable behavior proof.

  1. AST/tool/harness: first upstream the owner-level transport, permission and effect/receipt contracts in TinyTools/TinyAgents; keep vendor-specific implementations out of core until permissions, cancellation, idempotency, workspace/tenant isolation, source/effect provenance and end-to-end tests pass. Adapt proven tool presentation and bounded source read paths separately.
  2. Provider/account fleet: separate provider presets and configuration-schema parity, account vault/profile identity, atomically leased credential routing, rotation/cooldown, and model-specific protocol endpoints. Require live disposable-gateway tests for 401/403/429, partial-stream non-replay, redirect and plaintext credential leakage, concurrency and fallback order; do not reintroduce fork-only Prodex branding or a parallel secret store.
  3. Conversation UX and run hierarchy: port persistent category/project grouping and archive with concurrency-safe label writes as one slice; then adopt the approved left conversation dock and right run-panel design after recipient-scoped messaging, durable queue acknowledgements, safe steering/continuation, budget attribution and cancellation contracts exist. Never render fake progress or falsely mark delivery.
  4. Further opportunities: review the remaining full-tree changed files for broadly useful flows cycle safety, memory onboarding, accessibility, reliability, provider UX, telemetry and CI efficiencies. Each candidate must include upstream-owner fit, licensing/provenance, contract deltas, focused RED/GREEN tests and exact-head CI, not a mass cherry-pick.

Upstream draft PRs presently extracted: #8431, #8433, #8437, #8438, #8439, #8441, #8442, #8445, #8461 (read-only model suitability preview), #8462 (identity-bound announcements), #8464 (notice focus), #8468 (BYOK endpoint safety), #8469 (rename keyboard isolation), and #8471 (project-aware conversation grouping). Maintain draft status until compatibility gates and user-approved scope are complete.

senamakel and others added 30 commits October 25, 2026 11:53
Background work in the subagent trace export, thread purge admission, and
headless agent chat paths now spawns through the dispatch context instead of
tokio directly, so tasks inherit the correct runtime and tenant scope. The
auth error registry resolves its current scope via the tenant-aware context
lookup, and config loading in the CLI call path uses the timeout-aware loader.
The agent teams live e2e spec is added to the chat suite.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Regenerate the ambient-access baseline so it matches the current tree, dropping entries for code that no longer trips the rules and adding newly detected spawn, config, context, and home-dir usages. Line numbers for surviving entries were updated to their current positions.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…deps

Update the lockfile for the tinystoragedrivers crate family to 2.1.1 and pick up newer windows-registry, getrandom, and windows-sys versions along with a downgraded windows-core.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Clone the dispatch handle before moving it into the spawned task so the
journal trace export can borrow its own copy instead of the one captured
by the async block.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the agent runtime boundary baseline to match current line numbers and
symbol locations, and add the newly tracked re-export and moved-symbol entries
to the module boundary manifest. The baselines had drifted from the source
tree, so the checks were reporting stale violations.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…ency

The host boundary audit fixtures now include tinyflows alongside tinyflows-import in the unified and scoped feature graphs, and the scoped assertion checks against the policy so the tracked compatibility dependency is reported as an exception rather than a violation.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The host boundary audit test now expects four violations instead of five for the unified graph, matching the current behaviour of the audit logic.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Exceptions can now be narrowed to a specific parent package, so an
exemption granted for one host no longer silently applies to every host
that depends on the same package. The tinyflows exception is pinned to
openhuman, and policy validation rejects an empty parent value.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a test asserting that a host exception scoped to a parent package does not
permit direct implementation dependencies from other packages, while still
recording the exception for the parent itself.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The storage schema linter rejected the historical collection names that
TinyChannels keeps in its grants so owner-local migrations can copy old rows.
These names are read-only migration inputs rather than v2 collections, so
renaming them would orphan persisted data; the check now exempts them for the
TinyChannels bus crate only, with tests covering the exemption.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Document the channel_remote_* and whatsapp_* collections alongside the
existing channel entries so the schema reference covers the newer
storage tables.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Extend the nextest coverage test to include doctor_e2e in the target list and assert that the generated config emits a default profile override only when that target is present.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The coverage script only removed resource-sensitive binary overrides from the ci profile, so the Tauri suite running under the default profile still failed nextest's binary predicate validation. The regex now matches both ci and default override blocks.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The shared core test lane compiled the openhuman test crate with product
defaults off, which left the test-only persistence fixtures unavailable and
broke the build. Adding the storage-sqlite feature supplies those fixtures so
the lane can compile and run its scoped module tests.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The legacy fixture helper and the tests that depend on it are now only
compiled when the legacy-import feature is enabled, matching the
storage-sqlite gating already used elsewhere. This keeps the test suite
building when the feature is off.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
jsdom does not provide a compatible compression stream stack, so the gzip transport test now stubs Node's Web Streams constructors to exercise the real implementation instead of jsdom's incomplete adapters.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test no longer stubs Node's Web Streams constructors, since the environment now provides a compatible compression stream stack and the polyfills are unnecessary.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The legacy Redux bootstrap e2e test was a skipped placeholder that had been superseded by core-state polling, so it was deleted to stop it from lingering as dead weight in the suite.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The debug tracing subscriber that logged every domain event is no longer registered during infrastructure setup, leaving only the health subscriber and scheduler gate initialisation in place.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The infra subscriber registration previously left a placeholder comment
where the tracing subscriber should have been wired up, so domain events
were never debug-logged. The bus subscription is now created and its
handle intentionally leaked to keep it alive for the process lifetime.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reworded two bullets in the multi-agent orchestration section to name the
delegation graph and agent-teams runtime graph directly instead of linking to
their source files, keeping the prose readable without the inline references.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The agent-teams member runtime bullet no longer repeats the parenthetical
"the agent-teams runtime graph" label, since the surrounding text already
identifies the graph.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The writability checks now assert that a passing probe reports no config
path, since root can write past the mode bits and the finding is no longer
tied to a specific key.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Delete the subagent dispatch host, turn checkpoint, observability cache projection, and agent chat runtime modules that are no longer referenced. The lanes plan script is updated to drop the corresponding lane entries.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The assertion that remote tools were listed now prints the actual tool
results when it fails, making it easier to see what the server returned
instead of only the static message.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The example now configures a temporary storage URL and an explicit module set so TinyMCP has the host storage callback it needs when linked in.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The mcp example now reads the released TinyMCP module path from
OPENHUMAN_TINYMCP_TEST_MODULE and registers it via ModuleOverride::with_path
instead of linking the module in-process, since TinyMCP requires a host
storage callback that only a verified artifact can provide. The dev-profile
CI lane that runs the embed examples now wraps its command with withModules so
the staged module is available.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The specialist routing test now skips skill_setup when the skills feature is
disabled and asserts that the agent is neither registered nor advertised by
spawn_subagent. This keeps the routing expectations accurate for builds that
compile without skills support.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The flows floor is bumped from 331/303/3 to 341/312/3 because the harness
tools now composed by openhuman-core enable fs, net, exec, media and
plan-review on tinyagents-harness-tools, adding ten packages and nine unique
names. The previous measurement is kept as a comment for context.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@AmirrezaFarnamTaheri
AmirrezaFarnamTaheri marked this pull request as ready for review October 27, 2026 22:54
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@AmirrezaFarnamTaheri
AmirrezaFarnamTaheri merged commit 44a1b89 into main Oct 27, 2026
48 of 54 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants