Summary
vendor/tinycortex has been pinned at 8401346 since 2026-08-18T11:04:10Z (fd0aff8, "Re-point the tinycortex gitlink at the merged commit") and has not moved since, while main here has advanced to d9a8a6e (2026-08-24) and tinycortex main has advanced to b7cf121 (2026-08-20).
That pin is 2 hours 22 minutes older than tinycortex#144, and #144 is the commit the Composio/Notion pipeline needed. Two days later the pipelines were ported into this repo from that pin, so the port copied the pre-fix code and reintroduced a bug that had already been fixed upstream.
The specific regression matters less than the mechanism: nothing bumps this pin, and nothing notices when a port is taken from a stale one. The same class of regression can recur on the next port.
The timeline
| When (UTC) |
What |
| 2026-08-18 10:56:14 |
tinycortex 8401346 — "Re-export the TinyMemory contract instead of duplicating it" (tinycortex#149) |
| 2026-08-18 11:04:10 |
this repo pins vendor/tinycortex → 8401346 (fd0aff8) |
| 2026-08-18 13:26:48 |
tinycortex#144 merges — "fix(memory/sync): send fetch_type in Notion NOTION_FETCH_DATA args" (15396fe) |
| 2026-08-18 20:41:34 |
29f7c30 — "Move the Composio sync pipelines off the engine (#18 §B1)" ports notion.rs into this repo from the 10:56 pin, 7h15m after the fix existed upstream |
| 2026-08-20 20:44 |
d73a939 restructures into a Cargo workspace; the file moves to crates/tinymemory-core/… carrying the same defect |
| 2026-08-24 |
pin still 8401346; tinycortex main is b7cf121 |
Evidence
Current pin:
$ git submodule status
27a3f39dc6d7db676efe58d0f7b89752a8ab4746 vendor/tinyagents (27a3f39)
6ca0b0b6739a49396e36be21d450f07cf85b9de2 vendor/tinybus (6ca0b0b)
8401346b574cacb1dc0cf6b36bc608ff5ef9f6f5 vendor/tinycortex (8401346)
The two copies of the same file, at the same line number, differ by exactly the field #144 added:
crates/tinymemory-core/src/sync/pipelines/composio/providers/notion.rs:74 (this repo, v1.2.0 / 5993f06):
let mut args = serde_json::json!({"page_size": self.page_size, "filter": {"value": "page", "property": "object"}, "sort": {"direction": "descending", "timestamp": "last_edited_time"}});
src/memory/sync/composio/providers/notion.rs:74 (tinycortex at b7cf121):
let mut args = serde_json::json!({"fetch_type": "pages", "page_size": self.page_size, "filter": {"value": "page", "property": "object"}, "sort": {"direction": "descending", "timestamp": "last_edited_time"}});
grep -c fetch_type over both ported copies in this repo — crates/tinymemory-sync/src/notion.rs and crates/tinymemory-core/src/sync/pipelines/composio/providers/notion.rs — returns 0.
Composio rejects NOTION_FETCH_DATA without fetch_type with Invalid request data provided, which is the error reported downstream in tinyhumansai/openhuman#5633 (51 identical failures in one pre-prod session, every tick of all three sync layers).
Impact
- Any consumer running this repo's Composio/Notion pipeline gets a hard failure on every sync tick. Notion never reaches memory.
- Because the pin predates the fix,
vendor/tinycortex cannot be used as the reference to diff against — reading the vendored copy confirms the old behaviour, which is how this survived review.
- Six days of tinycortex changes (#144 through #156) are absent from anything ported or built against this pin.
What I could not determine
UNDETERMINED — which of the two Notion implementations executes in the OpenHuman desktop build. OpenHuman pins vendor/tinycortex at b7cf121 directly (which has the fix) and vendor/tinymemory at v1.2.0 (which does not), and the core has no Notion code of its own — grep -rn notion src/ in openhuman returns only tool-description strings. So the selector lives in one of the two vendored crates. That changes the severity of the downstream symptom, not the existence of the stale pin. Resolving it means tracing which pipeline registry the composio:notion pipeline id is resolved against at runtime.
Suggested direction
- Bump
vendor/tinycortex to current main and re-diff every file that 29f7c30 ported. notion.rs is the one confirmed divergence; it is not safe to assume it is the only one, because the port took the whole pipeline tree from one stale snapshot.
- Add
fetch_type to both copies in this repo regardless, so they stop depending on which pin is current.
- The durable part: a port from a vendored submodule should record the source SHA and be checkable against it. Right now a port and a pin bump are unrelated events, and a port taken from a two-hour-stale pin looks identical in review to one taken from
main.
Related
Summary
vendor/tinycortexhas been pinned at8401346since 2026-08-18T11:04:10Z (fd0aff8, "Re-point the tinycortex gitlink at the merged commit") and has not moved since, whilemainhere has advanced tod9a8a6e(2026-08-24) and tinycortexmainhas advanced tob7cf121(2026-08-20).That pin is 2 hours 22 minutes older than tinycortex#144, and #144 is the commit the Composio/Notion pipeline needed. Two days later the pipelines were ported into this repo from that pin, so the port copied the pre-fix code and reintroduced a bug that had already been fixed upstream.
The specific regression matters less than the mechanism: nothing bumps this pin, and nothing notices when a port is taken from a stale one. The same class of regression can recur on the next port.
The timeline
8401346— "Re-export the TinyMemory contract instead of duplicating it" (tinycortex#149)vendor/tinycortex→8401346(fd0aff8)15396fe)29f7c30— "Move the Composio sync pipelines off the engine (#18 §B1)" portsnotion.rsinto this repo from the 10:56 pin, 7h15m after the fix existed upstreamd73a939restructures into a Cargo workspace; the file moves tocrates/tinymemory-core/…carrying the same defect8401346; tinycortexmainisb7cf121Evidence
Current pin:
The two copies of the same file, at the same line number, differ by exactly the field #144 added:
crates/tinymemory-core/src/sync/pipelines/composio/providers/notion.rs:74(this repo, v1.2.0 /5993f06):src/memory/sync/composio/providers/notion.rs:74(tinycortex atb7cf121):grep -c fetch_typeover both ported copies in this repo —crates/tinymemory-sync/src/notion.rsandcrates/tinymemory-core/src/sync/pipelines/composio/providers/notion.rs— returns 0.Composio rejects
NOTION_FETCH_DATAwithoutfetch_typewithInvalid request data provided, which is the error reported downstream in tinyhumansai/openhuman#5633 (51 identical failures in one pre-prod session, every tick of all three sync layers).Impact
vendor/tinycortexcannot be used as the reference to diff against — reading the vendored copy confirms the old behaviour, which is how this survived review.What I could not determine
UNDETERMINED — which of the two Notion implementations executes in the OpenHuman desktop build. OpenHuman pins
vendor/tinycortexatb7cf121directly (which has the fix) andvendor/tinymemoryat v1.2.0 (which does not), and the core has no Notion code of its own —grep -rn notion src/in openhuman returns only tool-description strings. So the selector lives in one of the two vendored crates. That changes the severity of the downstream symptom, not the existence of the stale pin. Resolving it means tracing which pipeline registry thecomposio:notionpipeline id is resolved against at runtime.Suggested direction
vendor/tinycortexto currentmainand re-diff every file that29f7c30ported.notion.rsis the one confirmed divergence; it is not safe to assume it is the only one, because the port took the whole pipeline tree from one stale snapshot.fetch_typeto both copies in this repo regardless, so they stop depending on which pin is current.main.Related