Conversation
PR #1298 merged and #1115 closed: the backend-roster divergence is resolved on main. Re-validated the published caro 1.4.0 binary and confirmed the P0 is still live in the shipped artifact (advertises static/claude, --backend rejects them) — now purely a release-cadence gap. No code PR: the fix already exists on main and re-touching the un-feature-gated roster would regress #1298. Re-homed the wiring-half follow-up to #1081 (#1115 closed) via a status-update comment; refreshed matrix rows, dates, and priority queue. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Classified 13 newly-seen open PRs (40 total, 27 already tracked). Filed caro-jac.75-82: 4 path:auto, 3 path:scoped, 1 path:deep. Refuse-list: #1314 #1308 (.github/workflows/**) — comments posted; #1061 #1043 #1004 already carried prior refuse comments. Release-readiness: 4 [Unreleased] items on v1.4.0 — surfaced to Hermes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
42 open user-authored PRs, all classified with exactly one path:* label. 37 already carry a gh-<N>-rebase bead; the remaining 5 are path:refuse-list (all blocked by the .github/workflows/** Tier 1 glob) and are not beadable by contract. Idempotency guard held — zero duplicate filing. Release gate met (4 unreleased items, current v1.4.0); surfaced via digest rather than a guessed epic comment. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Classified 43 open user-authored PRs. 42 already carried path labels from prior cycles and re-verified as correct; #1333 newly classified path:auto (docs-only .claude/memory/qa-*.md, mergeable, no policy glob match). Filed caro-jac.85 (gh-1333-rebase). Idempotency guard held — zero duplicates across the 42 existing refs. Release gate met (4 unreleased vs shipped 1.4.0); surfaced in the Hermes digest rather than a guessed epic comment. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ation Non-English landing pages (/he/, /es/, …) rendered a separate page file, src/pages/[lang]/index.astro, whose composition forked from the English root (src/pages/index.astro) and drifted ~6 months behind. It still used the pre-LP layout (Story, Comparison, CaroGame, legacy Hero/Features) while the English root moved to the LP* landing system (LPHero, LPPersonas, LPMoments, LPTestimonials, LPFeatures, LPWaitlist, LPDownload, plus the Remotion demo video). Hebrew readers therefore saw an old variation of the site, not a translated current one. Rewrite [lang]/index.astro to mirror the root composition exactly, threading lang= through the locale-aware components (LPNavigation, LPHero, LPFeatures, LPWaitlist, LPDownload, LPFooter). LPPersonas, LPMoments, LPTestimonials, and InteractiveTerminal are not yet locale-aware and render English until their strings are extracted into landing.json; the per-key t() fallback in i18n/config.ts already degrades every other key gracefully to English. Hebrew landing.json is at full parity (183/183 keys), so translated sections render immediately. Also add an RTL code-block isolation rule to Layout.astro: under dir="rtl" the Unicode bidi algorithm reorders punctuation in shell commands (e.g. `rm -rf /tmp`), corrupting the one thing this product must display accurately. Force code/pre/kbd/samp to direction: ltr with unicode-bidi: isolate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Too many files changed for review. ( Bypass the limit by tagging |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
5 Skipped Deployments
|
|
Props for pushing this forward! 👏 |
There was a problem hiding this comment.
💡 Codex Review
https://github.com/wildcard/caro/blob/7b93035297bcbbdaea09af899f3f3ad2979b644a/.beads/embeddeddolt/beads/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv#L1
Remove the embedded local database from this commit
This local Dolt storage blob is 60,685,291 bytes, and the added .beads database, backup, lock, and corruption artifacts total roughly 87 MiB. If this commit is merged, every clone and fetch must permanently download that unrelated runtime state even if it is deleted later, substantially bloating repository history; exclude these generated .beads artifacts and retain only the intended website changes.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
14 issues found across 160 files
Not reviewed (too large): .beads/issues.jsonl (~290 lines) - if these are generated or fixture files, add them to ignored paths to exclude them from future reviews.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="website/src/pages/[lang]/index.astro">
<violation number="1" location="website/src/pages/[lang]/index.astro:48">
P2: Localized pages render duplicate `demo` IDs and two demo section headings, so fragment navigation and DOM-based lookups are ambiguous. Let `InteractiveTerminal` own this section instead of wrapping it in another `#demo` section.</violation>
<violation number="2" location="website/src/pages/[lang]/index.astro:50">
P2: The demo section heading and subtitle are hardcoded in English on a page that renders for all non-English locales (/he/, /es/, /fr/, etc.). Visitors to the Hebrew page will see 'Try It Yourself' and the English subtitle sandwiched between locale-aware components above (LPNavigation, LPHero) and below (LPFeatures, LPWaitlist, etc.) that render in Hebrew. Unlike InteractiveTerminal, LPPersonas, LPMoments, and LPTestimonials — which are separate components explicitly documented as intentionally English — these strings are directly in the page template with no i18n extraction. Extract these strings into `landing.json` under a `demo` key and use `t(lang, 'landing.demo.title')` / `t(lang, 'landing.demo.subtitle')` to match the locale threading pattern used elsewhere in this file.</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-06-30-0210.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-06-30-0210.md:17">
P3: Table cell under `path:deep` says 5 but lists 7 PRs (1212, 1088, 1042, 993, 838, 808, 805). The parenthetical note on line 24 acknowledges the correction (deep=7) but does not update the table, leaving a stale count that propagates to the total row calculation.</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-07-07-0211.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-07-07-0211.md:15">
P3: path:deep count says 5 but lists 6 PRs (1212, 1088, 993, 838, 808, 805). Update count to 6 to match the listed items.</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-06-28-0212.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-06-28-0212.md:9">
P2: path:deep row count says 6 but lists 7 PRs (805, 808, 838, 993, 1042, 1088, 1212). PRs 805/808 are already counted via scoped's (+ 805/808 deep) parenthetical, so this double-inclusion inflates both the deep count and the total — the header says 36 but rows sum to 37. Either drop 805/808 from the deep list (making it 5) and adjust the count, or keep all 7 and change count to 7 (then scoped's count and the total header need corresponding adjustments).</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-06-24-0210.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-06-24-0210.md:5">
P3: Header says "36 open non-draft user-authored PRs" but the four row counts add up to 37. Fix the header or adjust the row counts for internal consistency.</violation>
<violation number="2" location=".hermes/messages/processed/pr-dispatch-2026-06-24-0210.md:10">
P2: The classification table has count vs listed-PR mismatches: auto says 9 but lists 11 PRs; deep says 6 but lists 7. When these reports are used for downstream decisions (dispatch cap, release readiness), an off-by-two error in the auto count could cause the dispatch cap calculation to differ from the manual tally. Recommend verifying each PR list against its count.</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-06-12-0210.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-06-12-0210.md:14">
P2: Process doc milestone recommendation is stale: the file reports the crate is at v1.4.0 GA, but suggests v1.3.0 as the active milestone. Since v1.3.0 already shipped (tags: v1.2.0→v1.3.0→v1.3.1→v1.3.2→v1.4.0), the forward-looking suggestion should reference a post-v1.4.0 milestone (v1.5.0 or v2.0.0).</violation>
</file>
<file name=".hermes/messages/pr-dispatch-2026-07-17-0210.md">
<violation number="1" location=".hermes/messages/pr-dispatch-2026-07-17-0210.md:3">
P2: PR count mismatch: document claims 43 open PRs but the standing distribution sums to only 41 (16+12+8+5). Two PRs are missing from the path distribution. This could cause downstream automation to miss those PRs in dispatch decisions.</violation>
<violation number="2" location=".hermes/messages/pr-dispatch-2026-07-17-0210.md:29">
P2: Bead count inconsistency: the document states '42 previously-classified PRs already had beads' but also states 5 refuse-list PRs 'correctly carry no bead'. If those 5 refuse-list PRs are among the 42, only 37 had beads, not 42. If refuse-list PRs are excluded from the 42, then the distribution total (41) would need to account for 42+5+1=48 PRs, not 43. The counts are mutually inconsistent.</violation>
</file>
<file name=".claude/memory/integrator-log.md">
<violation number="1" location=".claude/memory/integrator-log.md:16">
P3: The `Discovered` section references a `**Needs user input** below` section that doesn't exist in this entry. Future readers — nightly integrator agents or human reviewers — will see the dangling reference and have no corresponding content to find. Either add the intended `**Needs user input**` heading with the escalation detail, or remove `+ **Needs user input** below` from the Discovered bullet since the escalation was already filed via #1081.</violation>
</file>
<file name=".beads/embeddeddolt/beads/.dolt/repo_state.json">
<violation number="1" location=".beads/embeddeddolt/beads/.dolt/repo_state.json:7">
P2: The backup `url` in repo_state.json is hardcoded to an absolute path tied to one developer's home directory (`/Users/kobik-private/workspace/...`). Anyone else who clones this repo will have a broken Dolt backup remote configured. Consider making this path relative (e.g. `file://./.beads/backup`) or excluding the file from version control if the configuration is machine-specific.</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-07-08-0210.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-07-08-0210.md:10">
P3: The auto PR count says 11 but lists 12 PRs (including #886, noted as CONFLICTING). The annotation explains #886's special status but does not update the count, so the table still reports an inaccurate number. Consider either excluding #886 from the auto list if it's no longer auto-actionable, or adjusting the count to 12 to match the listed entries.</violation>
</file>
<file name=".hermes/messages/processed/pr-dispatch-2026-06-01-0210.md">
<violation number="1" location=".hermes/messages/processed/pr-dispatch-2026-06-01-0210.md:1">
P3: The report header says 2026-05-31 but the filename indicates a 2026-06-01 dispatch cycle. This misalignment between the display date and the cycle identifier makes it harder to correlate reports by date at a glance. Consider fixing the header date to match the filename pattern used by all sibling reports.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| <section id="demo" class="demo-section"> | ||
| <div class="demo-container"> | ||
| <h2 class="demo-title">Try It Yourself</h2> | ||
| <p class="demo-subtitle"> | ||
| Experience the difference. Start in vanilla mode, then install Caro to unlock natural language commands. | ||
| </p> | ||
| <InteractiveTerminal /> | ||
| </div> | ||
| </section> |
There was a problem hiding this comment.
P2: Localized pages render duplicate demo IDs and two demo section headings, so fragment navigation and DOM-based lookups are ambiguous. Let InteractiveTerminal own this section instead of wrapping it in another #demo section.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/src/pages/[lang]/index.astro, line 48:
<comment>Localized pages render duplicate `demo` IDs and two demo section headings, so fragment navigation and DOM-based lookups are ambiguous. Let `InteractiveTerminal` own this section instead of wrapping it in another `#demo` section.</comment>
<file context>
@@ -1,43 +1,108 @@
+ videoUrl="/caro-demo.mp4"
+ posterUrl="/caro-demo-poster.png"
+ />
+ <section id="demo" class="demo-section">
+ <div class="demo-container">
+ <h2 class="demo-title">Try It Yourself</h2>
</file context>
| <section id="demo" class="demo-section"> | |
| <div class="demo-container"> | |
| <h2 class="demo-title">Try It Yourself</h2> | |
| <p class="demo-subtitle"> | |
| Experience the difference. Start in vanilla mode, then install Caro to unlock natural language commands. | |
| </p> | |
| <InteractiveTerminal /> | |
| </div> | |
| </section> | |
| <InteractiveTerminal /> |
| |---|---|---| | ||
| | path:auto | 11 | 886, 1166, 1167, 1171, 1173, 1175, 1178, 1194, 1196, 1224, 1261 | | ||
| | path:scoped | 16 | 1071, 1124, 1153, 1155, 1156, 1157, 1158, 1159, 1184, 1187, 1199, 1228, 1244, 1245 (+ 805/808 deep) | | ||
| | path:deep | 6 | 805, 808, 838, 993, 1042, 1088, 1212 | |
There was a problem hiding this comment.
P2: path:deep row count says 6 but lists 7 PRs (805, 808, 838, 993, 1042, 1088, 1212). PRs 805/808 are already counted via scoped's (+ 805/808 deep) parenthetical, so this double-inclusion inflates both the deep count and the total — the header says 36 but rows sum to 37. Either drop 805/808 from the deep list (making it 5) and adjust the count, or keep all 7 and change count to 7 (then scoped's count and the total header need corresponding adjustments).
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/processed/pr-dispatch-2026-06-28-0212.md, line 9:
<comment>path:deep row count says 6 but lists 7 PRs (805, 808, 838, 993, 1042, 1088, 1212). PRs 805/808 are already counted via scoped's (+ 805/808 deep) parenthetical, so this double-inclusion inflates both the deep count and the total — the header says 36 but rows sum to 37. Either drop 805/808 from the deep list (making it 5) and adjust the count, or keep all 7 and change count to 7 (then scoped's count and the total header need corresponding adjustments).</comment>
<file context>
@@ -0,0 +1,39 @@
+|---|---|---|
+| path:auto | 11 | 886, 1166, 1167, 1171, 1173, 1175, 1178, 1194, 1196, 1224, 1261 |
+| path:scoped | 16 | 1071, 1124, 1153, 1155, 1156, 1157, 1158, 1159, 1184, 1187, 1199, 1228, 1244, 1245 (+ 805/808 deep) |
+| path:deep | 6 | 805, 808, 838, 993, 1042, 1088, 1212 |
+| path:refuse-list | 4 | 1004, 1043, 1061, 1246 |
+
</file context>
| | path:deep | 6 | 805, 808, 838, 993, 1042, 1088, 1212 | | |
| | path:deep | 5 | 838, 993, 1042, 1088, 1212 | |
|
|
||
| ## Coordination alerts (to Hermes) | ||
| - **Routine-scope staleness (P3 process observation):** This dispatcher is | ||
| pinned to the v1.2.0 milestone, but v1.2.0 shipped 2026-03-26 and the crate |
There was a problem hiding this comment.
P2: Process doc milestone recommendation is stale: the file reports the crate is at v1.4.0 GA, but suggests v1.3.0 as the active milestone. Since v1.3.0 already shipped (tags: v1.2.0→v1.3.0→v1.3.1→v1.3.2→v1.4.0), the forward-looking suggestion should reference a post-v1.4.0 milestone (v1.5.0 or v2.0.0).
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/processed/pr-dispatch-2026-06-12-0210.md, line 14:
<comment>Process doc milestone recommendation is stale: the file reports the crate is at v1.4.0 GA, but suggests v1.3.0 as the active milestone. Since v1.3.0 already shipped (tags: v1.2.0→v1.3.0→v1.3.1→v1.3.2→v1.4.0), the forward-looking suggestion should reference a post-v1.4.0 milestone (v1.5.0 or v2.0.0).</comment>
<file context>
@@ -0,0 +1,32 @@
+
+## Coordination alerts (to Hermes)
+- **Routine-scope staleness (P3 process observation):** This dispatcher is
+ pinned to the v1.2.0 milestone, but v1.2.0 shipped 2026-03-26 and the crate
+ is now at **1.4.0 GA** (tags v1.2.0 → v1.3.0 → v1.3.1 → v1.3.2 → v1.4.0). The
+ v1.2.0 milestone still carries 30 open issues, but those are legacy-bucket
</file context>
| ## Newly filed beads | ||
| - caro-jac.85 — gh-1333-rebase — pr-dispatch, loop:rebase, path:auto, dispatched-by:merge-integrate | ||
|
|
||
| ## Coordination alerts (to Hermes) |
There was a problem hiding this comment.
P2: Bead count inconsistency: the document states '42 previously-classified PRs already had beads' but also states 5 refuse-list PRs 'correctly carry no bead'. If those 5 refuse-list PRs are among the 42, only 37 had beads, not 42. If refuse-list PRs are excluded from the 42, then the distribution total (41) would need to account for 42+5+1=48 PRs, not 43. The counts are mutually inconsistent.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/pr-dispatch-2026-07-17-0210.md, line 29:
<comment>Bead count inconsistency: the document states '42 previously-classified PRs already had beads' but also states 5 refuse-list PRs 'correctly carry no bead'. If those 5 refuse-list PRs are among the 42, only 37 had beads, not 42. If refuse-list PRs are excluded from the 42, then the distribution total (41) would need to account for 42+5+1=48 PRs, not 43. The counts are mutually inconsistent.</comment>
<file context>
@@ -0,0 +1,42 @@
+## Newly filed beads
+- caro-jac.85 — gh-1333-rebase — pr-dispatch, loop:rebase, path:auto, dispatched-by:merge-integrate
+
+## Coordination alerts (to Hermes)
+- (none) — idempotency guard held: all 42 previously-classified PRs already had
+ beads under their `gh-<N>-rebase` refs; zero duplicates filed. Refuse-list PRs
</file context>
| @@ -0,0 +1,42 @@ | |||
| # Dispatcher cycle — 2026-07-16 (caro-merge-review-integrate) | |||
|
|
|||
| ## Forward-path classifications (this cycle) | |||
There was a problem hiding this comment.
P2: PR count mismatch: document claims 43 open PRs but the standing distribution sums to only 41 (16+12+8+5). Two PRs are missing from the path distribution. This could cause downstream automation to miss those PRs in dispatch decisions.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/pr-dispatch-2026-07-17-0210.md, line 3:
<comment>PR count mismatch: document claims 43 open PRs but the standing distribution sums to only 41 (16+12+8+5). Two PRs are missing from the path distribution. This could cause downstream automation to miss those PRs in dispatch decisions.</comment>
<file context>
@@ -0,0 +1,42 @@
+# Dispatcher cycle — 2026-07-16 (caro-merge-review-integrate)
+
+## Forward-path classifications (this cycle)
+
+43 open, non-draft, user-authored PRs. 42 carried a `path:*` label from prior
</file context>
| |---|---|---| | ||
| | path:auto | 12 | 1280, 1261, 1224, 1196, 1194, 1178, 1175, 1173, 1171, 1167, 1166, 886 | | ||
| | path:scoped | 15 | 1245, 1244, 1228, 1199, 1187, 1184, 1159, 1158, 1157, 1156, 1155, 1153, 1124, 1071 (+1042 mislabel, see alert) | | ||
| | path:deep | 5 | 1212, 1088, 993, 838, 808, 805 | |
There was a problem hiding this comment.
P3: path:deep count says 5 but lists 6 PRs (1212, 1088, 993, 838, 808, 805). Update count to 6 to match the listed items.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/processed/pr-dispatch-2026-07-07-0211.md, line 15:
<comment>path:deep count says 5 but lists 6 PRs (1212, 1088, 993, 838, 808, 805). Update count to 6 to match the listed items.</comment>
<file context>
@@ -0,0 +1,58 @@
+|---|---|---|
+| path:auto | 12 | 1280, 1261, 1224, 1196, 1194, 1178, 1175, 1173, 1171, 1167, 1166, 886 |
+| path:scoped | 15 | 1245, 1244, 1228, 1199, 1187, 1184, 1159, 1158, 1157, 1156, 1155, 1153, 1124, 1071 (+1042 mislabel, see alert) |
+| path:deep | 5 | 1212, 1088, 993, 838, 808, 805 |
+| path:refuse-list | 5 | 1246, 1061, 1043, 1042, 1004 |
+
</file context>
|
|
||
| ## Forward-path classifications (this cycle) | ||
|
|
||
| 36 open non-draft user-authored PRs. Re-classified; most carried path labels |
There was a problem hiding this comment.
P3: Header says "36 open non-draft user-authored PRs" but the four row counts add up to 37. Fix the header or adjust the row counts for internal consistency.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/processed/pr-dispatch-2026-06-24-0210.md, line 5:
<comment>Header says "36 open non-draft user-authored PRs" but the four row counts add up to 37. Fix the header or adjust the row counts for internal consistency.</comment>
<file context>
@@ -0,0 +1,34 @@
+
+## Forward-path classifications (this cycle)
+
+36 open non-draft user-authored PRs. Re-classified; most carried path labels
+from prior cycles. Newly labeled this cycle: #1261 (was unclassified) → path:auto.
+
</file context>
|
|
||
| - **Filed:** none new. Posted a **post-#1298 status update comment on [#1081](https://github.com/wildcard/caro/issues/1081#issuecomment-4950174547)** — the surviving tracking home now that #1115 is closed. The comment splits the remaining work: (1) claude/openrouter `create_backend` wiring + feature-gate split, (2) `remote-backends` omitted from shipped binary, (3) release-cadence P0 with tonight's live 1.4.0 evidence. Dedup-checked `gh issue list --label integration --state open` (#1081/#932/#929/#928) and `--search "backend wiring create_backend claude openrouter" --state all` (#1115 closed) — #1081 is the correct home; no duplicate filed. | ||
|
|
||
| - **Discovered:** the roster divergence between `main` and the shipped binary has **widened**, not narrowed — every backend PR merged since 2026-05-09 (mesh/ai-horde/hybrid #1209, openrouter #1097, smart-approval #1206, #1298) is stranded. `cargo install caro` users are two months and ~5 feature-PRs behind `main`. This makes the release-cadence P0 (matrix queue row 4) the single highest-leverage thing blocking caro's integration story — every OpenAI-shim / MCP-server night is moot for real users until a release ships the backends they'd route to. Not integrator-fixable; escalated via #1081 + **Needs user input** below. |
There was a problem hiding this comment.
P3: The Discovered section references a **Needs user input** below section that doesn't exist in this entry. Future readers — nightly integrator agents or human reviewers — will see the dangling reference and have no corresponding content to find. Either add the intended **Needs user input** heading with the escalation detail, or remove + **Needs user input** below from the Discovered bullet since the escalation was already filed via #1081.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .claude/memory/integrator-log.md, line 16:
<comment>The `Discovered` section references a `**Needs user input** below` section that doesn't exist in this entry. Future readers — nightly integrator agents or human reviewers — will see the dangling reference and have no corresponding content to find. Either add the intended `**Needs user input**` heading with the escalation detail, or remove `+ **Needs user input** below` from the Discovered bullet since the escalation was already filed via #1081.</comment>
<file context>
@@ -5,7 +5,19 @@
+
+- **Filed:** none new. Posted a **post-#1298 status update comment on [#1081](https://github.com/wildcard/caro/issues/1081#issuecomment-4950174547)** — the surviving tracking home now that #1115 is closed. The comment splits the remaining work: (1) claude/openrouter `create_backend` wiring + feature-gate split, (2) `remote-backends` omitted from shipped binary, (3) release-cadence P0 with tonight's live 1.4.0 evidence. Dedup-checked `gh issue list --label integration --state open` (#1081/#932/#929/#928) and `--search "backend wiring create_backend claude openrouter" --state all` (#1115 closed) — #1081 is the correct home; no duplicate filed.
+
+- **Discovered:** the roster divergence between `main` and the shipped binary has **widened**, not narrowed — every backend PR merged since 2026-05-09 (mesh/ai-horde/hybrid #1209, openrouter #1097, smart-approval #1206, #1298) is stranded. `cargo install caro` users are two months and ~5 feature-PRs behind `main`. This makes the release-cadence P0 (matrix queue row 4) the single highest-leverage thing blocking caro's integration story — every OpenAI-shim / MCP-server night is moot for real users until a release ships the backends they'd route to. Not integrator-fixable; escalated via #1081 + **Needs user input** below.
+
+- **Next pass should:** re-check whether a 1.4.1/1.5.0 release has cut. If yes → re-validate the full native-backend roster against the NEW published binary (all 7 CLI-servable rows should finally have honest `last-validated` dates and the #1115 divergence should be gone for users). If still 1.4.0 → the wiring half (#1081 item 1) is the topmost *code* row, but only attempt it once the `CLI_SERVABLE_BACKENDS` feature-gate split is designed (else it regresses #1298); otherwise hold and keep the release-cadence escalation warm.
</file context>
|
|
||
| | path | count | PRs | | ||
| |---|---|---| | ||
| | path:auto | 11 | 1280, 1261, 1224, 1196, 1194, 1178, 1175, 1173, 1171, 1167, 1166, 886 | |
There was a problem hiding this comment.
P3: The auto PR count says 11 but lists 12 PRs (including #886, noted as CONFLICTING). The annotation explains #886's special status but does not update the count, so the table still reports an inaccurate number. Consider either excluding #886 from the auto list if it's no longer auto-actionable, or adjusting the count to 12 to match the listed entries.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/processed/pr-dispatch-2026-07-08-0210.md, line 10:
<comment>The auto PR count says 11 but lists 12 PRs (including #886, noted as CONFLICTING). The annotation explains #886's special status but does not update the count, so the table still reports an inaccurate number. Consider either excluding #886 from the auto list if it's no longer auto-actionable, or adjusting the count to 12 to match the listed entries.</comment>
<file context>
@@ -0,0 +1,43 @@
+
+| path | count | PRs |
+|---|---|---|
+| path:auto | 11 | 1280, 1261, 1224, 1196, 1194, 1178, 1175, 1173, 1171, 1167, 1166, 886 |
+| path:scoped | 14 | 1245, 1244, 1228, 1199, 1187, 1184, 1159, 1158, 1157, 1156, 1155, 1153, 1124, 1071 |
+| path:deep | 7 | 1212, 1088, 1042, 993, 838, 808, 805 |
</file context>
| @@ -0,0 +1,25 @@ | |||
| # Dispatcher cycle — 2026-05-31 (caro-merge-review-integrate) | |||
There was a problem hiding this comment.
P3: The report header says 2026-05-31 but the filename indicates a 2026-06-01 dispatch cycle. This misalignment between the display date and the cycle identifier makes it harder to correlate reports by date at a glance. Consider fixing the header date to match the filename pattern used by all sibling reports.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .hermes/messages/processed/pr-dispatch-2026-06-01-0210.md, line 1:
<comment>The report header says 2026-05-31 but the filename indicates a 2026-06-01 dispatch cycle. This misalignment between the display date and the cycle identifier makes it harder to correlate reports by date at a glance. Consider fixing the header date to match the filename pattern used by all sibling reports.</comment>
<file context>
@@ -0,0 +1,25 @@
+# Dispatcher cycle — 2026-05-31 (caro-merge-review-integrate)
+
+## Forward-path classifications (this cycle)
</file context>
| # Dispatcher cycle — 2026-05-31 (caro-merge-review-integrate) | |
| # Dispatcher cycle — 2026-06-01 (caro-merge-review-integrate) |
Summary
Non-English landing pages (
/he/,/es/,/fr/, …) were rendering an old variation of the site — the reported symptom for Hebrew. Root cause:src/pages/[lang]/index.astrois a separate page file whose composition forked from the English root (src/pages/index.astro) and drifted ~6 months behind.src/pages/index.astro(/)src/pages/[lang]/index.astro(/he/, …) — beforeStory/Comparison/CaroGame/ legacyHero/FeaturesLayoutProduction evidence:
curl https://caro.sh/he/returns200with the legacyStorylayout (Astro v6.4.8 renders the[lang]page — it is live, not a redirect). This confirms rewriting that file lands the fix.This PR rewrites
[lang]/index.astroto mirror the root LP composition exactly, threadinglang=through the locale-aware components. It also fixes an RTL correctness bug where shell commands were bidi-reordered.Focus Areas
website/src/pages/[lang]/index.astro— now a 1:1 mirror ofindex.astrowithlangthreaded through. Keep it in lock-step with the root going forward.website/src/layouts/Layout.astro— new[dir='rtl'] code/pre/kbd/samp { direction: ltr; unicode-bidi: isolate; }rule.Open Questions
None. (Follow-ups filed as beads — see below.)
Changes by Area
website/src/pages/[lang]/index.astroLPNavigation, LPHero, LPVideoDemo, InteractiveTerminal, LPPersonas, LPMoments, LPTestimonials, LPFeatures, LPWaitlist, LPDownload, LPFooter— identical to the English root.langthreaded through the six locale-aware LP components (LPNavigation, LPHero, LPFeatures, LPWaitlist, LPDownload, LPFooter).LPPersonas,LPMoments,LPTestimonials,InteractiveTerminalare not yet locale-aware and render English (per-keyt()fallback ini18n/config.tshandles the rest). This is the intentional option-2 behavior: fix the stale-layout symptom now, translate those sections later — without fabricating testimonial quotes.website/src/layouts/Layout.astrodir="rtl"the Unicode bidi algorithm reorders leading/trailing punctuation in commands likerm -rf /tmporgit push -u origin. For a product whose value is displaying shell commands accurately, that's a correctness bug.unicode-bidi: isolatescopes the override so surrounding RTL prose is unaffected.Verification Evidence
he/landing.json= 183/183 keys vsen/landing.json(zero missing) — everylanding.hero.*/landing.features.*key the LP components need is already translated, so translated sections render immediately.caro.sh/he/→200,Story×11, legacyHero(the "old variation").[lang]/index.astrocompiles under the available Astro toolchain (page processing reached,/he/and/es/subpages emit).Local full-build caveat (honest): this worktree's monorepo
node_modulesis version-drifted (Astro 5.16 / 6.1 / 6.4 mixed across workspaces), and@astrojs/vercel'sapplyPolyfillsimport fails against the resolved Astro core — a pre-existing environment issue unrelated to this diff. The change itself is a straight composition mirror of a file production already builds green, plus one CSS rule. CI (which installs cleanly) is the authoritative build gate here.Self-Review Checklist
.beadschurn excluded)t()key existednpm run buildgreen — blocked by pre-existing monorepo adapter drift; relying on CILP*+Layout)AI Involvement
Level: L4 (human-specced, bot-coded). Agent: Claude Code (
claude-opus-4-8[1m]).Low-confidence areas: (1) the RTL
unicode-bidi: isolaterule is not visually verified in a live RTL render — worth a screenshot check during review; (2) local build could not be taken fully green due to environment drift, so CI is the real gate.Related Issues / PR Sequencing
Standalone fix against
main. Follow-ups to file as beads:LPPersonas/LPMoments/LPTestimonialsstrings intolanding.json(unblocks full non-English parity).<LanguageSwitcher>toLPNavigationusing Astro 6getRelativeLocaleUrl(no page duplication).<LandingPage lang={lang} />so/and/[lang]/can't fork again./pricing,/docs,/faq, …) to[lang]coverage.Screenshots / Videos
Not captured — local Astro-6 build is blocked by the environment drift noted above, so a rendered RTL screenshot isn't available from this session. Requesting a reviewer visual pass on
/he/per design-dialogue-protocol Rule 5.Summary by cubic
Fixes non‑English landing pages (
/he/,/es/,/fr/, …) to use the same LP landing composition as/, and ensures shell commands render correctly in RTL layouts.website/src/pages/[lang]/index.astroand threadedlangthrough locale‑aware LP components.[dir="rtl"] code, pre, kbd, samp { direction: ltr; unicode-bidi: isolate; }inwebsite/src/layouts/Layout.astroto stop bidi reordering of commands.LPPersonas,LPMoments,LPTestimonials, andInteractiveTerminalin English until their strings are localized.Written for commit 7b93035. Summary will update on new commits.