From 5d8d93544597f6dc22b1e7aa255fd3fdf3dac044 Mon Sep 17 00:00:00 2001 From: Learning Agent Date: Sun, 5 Jul 2026 18:11:47 +0000 Subject: [PATCH 1/2] =?UTF-8?q?Week=2013=20briefing=20=E2=80=94=202026-07-?= =?UTF-8?q?05?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/previously-recommended.md | 34 ++++++++++++++++++++++++++++++++ logs/run-2026-07-05.md | 32 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 logs/run-2026-07-05.md diff --git a/config/previously-recommended.md b/config/previously-recommended.md index 728a46b..945cc50 100644 --- a/config/previously-recommended.md +++ b/config/previously-recommended.md @@ -111,3 +111,37 @@ https://www.smashingmagazine.com/2025/07/design-patterns-ai-interfaces/ https://mbrenndoerfer.com/writing/rag-architecture-retriever-generator-design-patterns https://www.youtube.com/watch?v=5ABcYSWPVr8 >>>>>>> Stashed changes + +# Backfill — prior Week 13 briefings (were posted to Notion but never logged here; added 2026-07-05 to fix dedup drift) +# Week 13 — 2026-06-14 +https://www.anthropic.com/engineering/built-multi-agent-research-system +https://aakashgupta.medium.com/building-multi-agent-systems-will-be-a-must-have-pm-skill-in-2026-30e52fd732cb +https://www.lennysnewsletter.com/p/we-replaced-our-sales-team-with-20-ai-agents +https://www.latent.space/p/andon +https://www.microsoft.com/en-us/research/blog/magenticlite-magenticbrain-fara1-5-an-agentic-experience-optimized-for-small-models/ +https://arxiv.org/abs/2510.24937 +https://arxiv.org/abs/2603.02050 + +# Week 13 — 2026-06-21 +https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents +https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/multi-agent-patterns +https://arxiv.org/abs/2512.11979 +https://agentic-design.ai/patterns/ui-ux-patterns +https://www.news.aakashg.com/p/practical-ai-agents-pms +https://www.oneusefulthing.org/p/what-it-feels-like-to-work-with-mythos + +# Week 13 — 2026-06-28 +https://www.anthropic.com/engineering/harness-design-long-running-apps +https://jakobnielsenphd.substack.com/p/no-more-ui +https://www.lennysnewsletter.com/p/make-product-management-fun-again +https://www.nngroup.com/articles/state-of-ux-2026/ +https://www.news.aakashg.com/p/ai-agents-pms +https://www.oneusefulthing.org/p/co-existence-and-the-end-of-co-intelligence + +# Week 13 — 2026-07-05 (fourth pass) +https://www.oneusefulthing.org/p/the-twilight-of-the-chatbots +https://www.lennysnewsletter.com/p/not-all-ai-agents-are-created-equal +https://www.anthropic.com/engineering/how-we-contain-claude +https://www.nngroup.com/articles/context-architecture/ +https://jakobnielsenphd.substack.com/p/2026-predictions-halfway +https://simonwillison.net/2026/Jul/4/better-models-worse-tools/ diff --git a/logs/run-2026-07-05.md b/logs/run-2026-07-05.md new file mode 100644 index 0000000..2ebe9b8 --- /dev/null +++ b/logs/run-2026-07-05.md @@ -0,0 +1,32 @@ +# Run Log — 2026-07-05 +Week: 13 (Multi-agent orchestration — design lens) +Topic: Week 13 · Multi-agent orchestration (design lens) +Sources checked: ~25 (13 YouTube channels attempted, Tier-1 blog/Substack feeds attempted, 12 web searches; X skipped) +Items collected: ~18 candidates surfaced via web search +Items after hard filters: 6 (excluded all URLs from the three prior Week 13 briefings 06-14/06-21/06-28, the Weekly Checklist, and previously-recommended.md) +Items after topic gate: 6 +Must Read: 2 (score range: 94–96) — Mollick "Twilight of the chatbots", Lenny "Not all AI agents are created equal" +Recommended: 3 (score range: 76–90) — Anthropic "How we contain Claude", NN/g "Context Architecture", Jakob Nielsen "2026 AI & UX mid-year reality check" +Wild Card: yes (trigger: Contrarian) — Simon Willison "Better Models: Worse Tools" +Discovered: 0 (all six are known Tier-1/2 voices; no new voice cleared the bar this run) +Dropped: several low-trust SEO/listicle "agentic design patterns 2026" pages; additional Simon Willison July posts (AI Compass, DSPy Datasette, June newsletter) as lower topic-fit; Aakash Gupta posts (avoided — prior briefings already leaned heavily on Aakash for the 2nd Product slot) + +## Idempotency (STEP 1d) +Guard did NOT trigger. Three "Weekly Picks — Week 13" pages already exist (created 2026-06-14, 06-21, 06-28). Most recent is 7 days old — outside the 3-day window — so this run proceeded. New page created: https://app.notion.com/p/39482e5a5fa38177b2cff67f21d299dd + +## Diversity rule +Satisfied: 2 Product Lane (Mollick, Lenny), 2 Design Lane (NN/g, Nielsen), 2 pure-engineer-audience (Anthropic containment, Willison) — at the ≤2 engineer cap. No shortfall to note. + +## Errors/Notes +- YouTube RSS + rss2json proxy: wholesale HTTP 403 (datacenter-IP block), same as the three prior runs. No fresh-video pick. +- Blog/Substack feeds (direct AND rss2json proxy): 403. Anthropic community RSS mirror reachable but stale (Nov 2025). Article bodies also 403 on direct fetch from this IP. Entire run rebuilt via web search + prior knowledge of the named sources — matching how the three prior Week 13 runs operated. +- Dedup drift fixed: previously-recommended.md only went to Week 7 and was missing the ~18 URLs from the three prior Week 13 briefings. Backfilled all of them plus this run's 6. +- prompts/weekly-briefing.md and config/*.md still contain unresolved git merge-conflict markers (Updated upstream vs Stashed changes). Honored both sides this run (STEP 0 sync + idempotency guard from one side; audience framing + Audience Lanes/diversity rule from the other). Flagging for cleanup. +- STRONG SIGNAL: fourth consecutive Week 13 briefing. Katherine has left every Week 13 item unchecked across four runs while the checklist algorithm keeps returning Week 13 as "current." Fresh Tier-1 multi-agent-orchestration content is exhausted. Recommend advancing the checklist to Week 14 (Agent-Computer Interface + sub-agents). Surfaced prominently in the Notion page callout, the @mention, and the push notification. + +## Deliverables +- Notion page: https://app.notion.com/p/39482e5a5fa38177b2cff67f21d299dd +- @mention comment to catphy0825@gmail.com (Katherine): posted (id 39482e5a-5fa3-8186-a801-001d01a8c5b4) +- Google Calendar event: intentionally NOT created (per task instruction; Notion notification is sufficient) +- PushNotification: sent +Duration: ~single run From 6c90ba52a55540f269bea3507bde4b9b7814aca4 Mon Sep 17 00:00:00 2001 From: Learning Agent Date: Sun, 5 Jul 2026 18:25:37 +0000 Subject: [PATCH 2/2] Fix source-health root cause: egress-policy diagnosis, allowlist doc, resolve conflict markers --- config/cloud-network-allowlist.md | 96 +++++++++++++++++++++++++++++++ config/previously-recommended.md | 4 +- config/sources.md | 4 -- logs/run-2026-07-05.md | 12 ++++ prompts/weekly-briefing.md | 29 ++++++---- 5 files changed, 128 insertions(+), 17 deletions(-) create mode 100644 config/cloud-network-allowlist.md diff --git a/config/cloud-network-allowlist.md b/config/cloud-network-allowlist.md new file mode 100644 index 0000000..c224f81 --- /dev/null +++ b/config/cloud-network-allowlist.md @@ -0,0 +1,96 @@ +# Cloud run — network allowlist for the Learning Agent + +> **Why this file exists:** On 2026-07-05 a full sweep confirmed that 38/40 source endpoints +> fail from the cloud (Claude Code on the web) environment with `CONNECT tunnel failed, +> response 403` — the **environment's egress network policy** blocks them. This is NOT +> YouTube/Substack rate-limiting a datacenter IP (the rss2json fallback proxy was blocked +> too, which a site-side block can't explain). The previous runs' "datacenter IP block" +> diagnosis was wrong. No fetch trick fixes this — only the environment settings can. + +## How to fix (one-time, ~2 minutes) + +In **claude.ai/code → Environments → (the environment this repo's scheduled task runs in) +→ Network access**, either: + +- **Option A (simplest):** set network access to **Full / unrestricted**. This repo's agent + only reads public feeds and writes to Notion/GitHub, so this is low-risk. **Recommended.** +- **Option B (tighter):** keep the allowlist mode and add the domains below. + +Docs: https://code.claude.com/docs/en/claude-code-on-the-web + +## Domains to allowlist (Option B) + +Verified blocked on 2026-07-05; each maps to a source in `config/sources.md`. + +### Critical — primary content sources +``` +youtube.com # all 13 YouTube channel RSS feeds (www.youtube.com/feeds/videos.xml) +substack.com # Substack redirect/edge for all custom-domain feeds below +substackcdn.com # Substack CDN (feed assets/redirects) +oneusefulthing.org # Ethan Mollick (Tier 1) +simonwillison.net # Simon Willison (Tier 1) +lennysnewsletter.com # Lenny Rachitsky (Tier 1) +smashingmagazine.com # Vitaly Friedman (Tier 1) +maggieappleton.com # Maggie Appleton (Tier 1) +medium.com # Google PAIR feed (Tier 1) + Aakash mirror +shapeof.ai # Emily Campbell (Tier 1, manual check) +wattenberger.com # Amelia Wattenberger (Tier 1, manual check) +``` + +### Tier 2 feeds +``` +blog.google +openai.com +deepmind.google +huyenchip.com +interconnects.ai +jack-clark.net +magazine.sebastianraschka.com +cameronrwolfe.substack.com +latent.space +stratechery.com +newsletter.pragmaticengineer.com +creatoreconomy.so +exponentialview.co +jakobnielsenphd.substack.com +lukew.com +newsletter.uxdesign.cc +bradfrost.com +peterme.com +garymarcus.substack.com +langchain.com +news.aakashg.com +feeds.simplecast.com # Hard Fork podcast feed +every.to # Dan Shipper / AI & I +pair.withgoogle.com +aixdesign.co +normaltech.ai +``` + +### Useful extras +``` +api.rss2json.com # fallback feed proxy (only needed if a site later rate-limits the runner) +nngroup.com # recurring discovered-pick source +arxiv.org # recurring discovered-pick source +``` + +### Already reachable (no action) +``` +microsoft.com / www.microsoft.com # MS Research feed — worked all along +raw.githubusercontent.com # Anthropic engineering community RSS mirror (stale, but reachable) +``` + +### Known special case +``` +anthropic.com # bypasses the session proxy entirely (NO_PROXY) and Anthropic's edge + # blocks datacenter fetches with a real HTTP 403. Allowlisting may not + # help; the agent should keep using WebSearch for anthropic.com articles. +``` + +## After changing the setting + +The next scheduled run re-tests automatically: STEP 2's fetching discipline starts with a +one-call preflight and reports `policy-blocked` vs `OK` per lane in Source Health. If the +briefing still says `policy-blocked` after you've updated the environment, the change +didn't apply to the environment the task actually runs in — check which environment the +scheduled task uses. diff --git a/config/previously-recommended.md b/config/previously-recommended.md index 945cc50..484b7f1 100644 --- a/config/previously-recommended.md +++ b/config/previously-recommended.md @@ -66,7 +66,6 @@ https://www.youtube.com/watch?v=D4XTefP3Lsc https://www.deloitte.com/us/en/insights/topics/talent/human-capital-trends/2026/human-ai-interaction-design.html https://newsletter.uxdesign.cc/p/on-rational-thinking-taking-action -<<<<<<< Updated upstream # Week 6 — 2026-04-20 https://maggieappleton.com/zero-alignment/ https://www.youtube.com/watch?v=QVJcdfkRpH8 @@ -83,7 +82,7 @@ https://www.microsoft.com/en-us/research/blog/red-teaming-a-network-of-agents-un https://www.youtube.com/watch?v=mCO-D3pkviM https://simonwillison.net/2025/Jun/27/context-engineering/ https://uxdesign.cc/the-web-trained-ai-to-deceive-now-designers-have-to-untrain-it-420f9d3fe78e -======= + # Week 6 — 2026-04-11 (Test run — retroactively logged) https://smashingmagazine.com/2026/04/identifying-necessary-transparency-moments-agentic-ai-part1/ https://jakobnielsenphd.substack.com/p/workflow-redesign @@ -110,7 +109,6 @@ https://engineering.salesforce.com/grounding-enterprise-ai-with-live-web-retriev https://www.smashingmagazine.com/2025/07/design-patterns-ai-interfaces/ https://mbrenndoerfer.com/writing/rag-architecture-retriever-generator-design-patterns https://www.youtube.com/watch?v=5ABcYSWPVr8 ->>>>>>> Stashed changes # Backfill — prior Week 13 briefings (were posted to Notion but never logged here; added 2026-07-05 to fix dedup drift) # Week 13 — 2026-06-14 diff --git a/config/sources.md b/config/sources.md index 5501f83..1054cd0 100644 --- a/config/sources.md +++ b/config/sources.md @@ -56,7 +56,6 @@ | 47 | Harrison Chase | 2 | Agents | Blog | blog.langchain.dev | https://www.langchain.com/blog/rss | Surface architecture posts. Skip product announcements. Feed updated 2026-04-18 — old URL `blog.langchain.com/rss` permanent-redirects to this one. | | 48 | Nadia Piet / AIxDESIGN | 2 | Design x AI | Blog | aixdesign.co | | Manual check monthly. Surface toolkit updates. | | 49 | Design Better | 2 | Design Leadership | YouTube | youtube.com/@designbetterpod | https://www.youtube.com/feeds/videos.xml?channel_id=UCMVvDE1tbXNoOpoUaMk6iUw | Casual viewing. Surface design leadership + AI design interviews. Skip episodes on non-AI topics unless guest is exceptional. | -<<<<<<< Updated upstream | 50 | Aakash Gupta — Product Growth | 2 | Product | Substack | news.aakashg.com | https://www.news.aakashg.com/feed | Surface AI-for-PM posts: evals for PMs, AI product playbooks, agent product strategy. Practitioner PM voice — Lenny-tier for product. Skip pure career/interview-prep posts. (Feed verified live 2026-06.) | | 51 | Hard Fork (NYT) | 2 | Strategy / Culture | Podcast | nytimes.com/column/hard-fork | https://feeds.simplecast.com/l2i9YnTd | Kevin Roose + Casey Newton. Audio-only (no YouTube) — judge from episode title + description. Surface AI policy, product launches, agent/Copilot, and AI-culture segments. Skip non-AI tech-news episodes. (Feed verified live 2026-06.) | | 52 | Every — "AI & I" (Dan Shipper) | 2 | Building / Product | Podcast + Essays | every.to/podcast · every.to/@danshipper | No RSS — manual | How real people (founders, writers, designers) actually use AI day-to-day. No clean RSS on Every's platform. Manual/discovery: WebFetch every.to/podcast + the AI & I YouTube playlist (PLuMcoKK9mKgHtW_o9h5sGO2vXrffKHwJL), and lean on web search for "Dan Shipper" / "AI & I". Closest in spirit to Lenny. | @@ -81,7 +80,6 @@ Curated handles to check as a **secondary, best-effort** signal (see the X step | 2 | @aakashg0 | Aakash Gupta | AI for PMs, evals, product playbooks. | | 2 | @danshipper | Dan Shipper | Every / AI & I — how people actually use AI. | | 2 | @hwchase17 | Harrison Chase | LangChain; agent architecture. | -======= --- @@ -105,5 +103,3 @@ Proposed new Tier 1/2 voices to fill the product + design gap. Katherine reviews 2. Confirm posted content in last 90 days (active signal) 3. Read 2-3 recent posts to confirm lane + Tier 4. Add to live table with number, write Agent Notes, done. - ->>>>>>> Stashed changes diff --git a/logs/run-2026-07-05.md b/logs/run-2026-07-05.md index 2ebe9b8..43bfab6 100644 --- a/logs/run-2026-07-05.md +++ b/logs/run-2026-07-05.md @@ -30,3 +30,15 @@ Satisfied: 2 Product Lane (Mollick, Lenny), 2 Design Lane (NN/g, Nielsen), 2 pur - Google Calendar event: intentionally NOT created (per task instruction; Notion notification is sufficient) - PushNotification: sent Duration: ~single run + +## Addendum — 2026-07-05 (post-run diagnosis correction) +The "datacenter-IP block" diagnosis in this log (and in the three prior Week 13 runs) was WRONG. +A curl sweep of all 40 source endpoints shows `CONNECT tunnel failed, response 403` — the +**cloud environment's egress network policy** blocks 38/40 hosts (only microsoft.com and +raw.githubusercontent.com are allowlisted). The requests never reached YouTube/Substack; +that's also why the rss2json fallback "failed" — it was blocked too, not overwhelmed. +Fix requires a settings change by Katherine (environment network access), documented in +config/cloud-network-allowlist.md. weekly-briefing.md STEP 2 now includes a preflight that +distinguishes `policy-blocked` from real rate-limits. Merge-conflict markers in +prompts/weekly-briefing.md, config/sources.md, and config/previously-recommended.md were +also resolved (both sides kept). diff --git a/prompts/weekly-briefing.md b/prompts/weekly-briefing.md index fe3f2cb..2c99f9d 100644 --- a/prompts/weekly-briefing.md +++ b/prompts/weekly-briefing.md @@ -6,7 +6,6 @@ You are Katherine's Learning Partner Agent. Your job is to find the highest-qual --- -<<<<<<< Updated upstream ## STEP 0 — Sync repo state (1 tool call) This task runs on more than one machine (Katherine's laptop + a cloud fallback). Before reading anything, pull the latest committed state so the dedup log is current: @@ -16,7 +15,9 @@ git pull --rebase ``` If this fails (no network, or not a git checkout), continue anyway — the run still works, it just may not see the very latest dedup entries. -======= + +--- + ## Who this is for **Audience:** Katherine is a future PM + designer learning AI to *apply*, not to build from scratch. She is not an engineer and will not write production AI code. She prefers content that helps her make product decisions, design human-AI interactions, evaluate tradeoffs, and speak fluently with AI engineers — not content that teaches her to be one. @@ -24,7 +25,6 @@ If this fails (no network, or not a git checkout), continue anyway — the run s **When scoring, ask "who is this written FOR?"** If the answer is "engineers building this system," the item can still appear but should not dominate the top of the briefing. Prefer content written for practitioners who *use* AI to build products and experiences. This audience framing is enforced downstream by the **Audience Check** (pre-scoring), the **Audience Lane bonus** (scoring), and the **diversity rule** (final-7 selection). All three must agree. ->>>>>>> Stashed changes --- @@ -72,18 +72,29 @@ Run two complementary scans. Budget your tool calls carefully: - **YouTube engagement check**: ~3-5 WebFetch calls (top candidates only) - **Notion write**: 1 call -### Fetching discipline — beating 403 rate-limits and IP blocks -Feeds (especially YouTube, Substack, Medium) return **HTTP 403 when the requester's IP is rate-limited or blocked** — the signature is "the first few succeed, the rest 403," or (on a datacenter/cloud IP) *wholesale* 403s. The feeds are not dead; the IP is blocked. Escalate **per feed**: +### Fetching discipline — 403s come in two flavors; diagnose FIRST, then escalate + +**PREFLIGHT (1 tool call, do this before any feed batch):** fetch one YouTube feed, e.g. +`https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw` (3Blue1Brown). +- If it succeeds → normal run, go to Flavor B discipline below for any later 403s. +- If it fails, run `curl -sS -o /dev/null -w "%{http_code}" ` in Bash. If curl reports **`CONNECT tunnel failed, response 403`** (or exit code 56), you're in **Flavor A**. + +**Flavor A — environment egress-policy block (cloud runs).** The session's network policy is refusing the tunnel; the request never reaches YouTube/Substack at all, and the rss2json proxy is equally unreachable — *no fetch path or proxy trick will work*. (Confirmed 2026-07-05: 38/40 source endpoints blocked this way; only microsoft.com and raw.githubusercontent.com were allowlisted.) Do NOT burn tool budget retrying every feed or the proxy: +1. Spot-check at most 2 more hosts (one Substack, api.rss2json.com) to confirm it's wholesale. +2. Fall back to targeted WebSearch for the entire run (search still works — it's a harness-side tool). +3. In Source Health, report the lanes as **`policy-blocked`** (not "Failed"/"IP block") and link `config/cloud-network-allowlist.md` — the fix is Katherine adding the domains (or enabling full network access) in the environment's settings, and no run-side change can substitute. +4. Note it under Errors/Notes in the run log. +**Flavor B — target-side rate-limit / datacenter-IP block.** The signature is *mixed* results: some fetches return real content or real HTTP status pages, then YouTube/Substack/Medium start returning 403/429. The feeds are not dead; the requester IP is throttled. Escalate **per feed**: 1. **Fetch the feed URL directly** (fast path — works from a residential IP / laptop). Don't burst: fetch in **small sequential batches (3–4 at a time)**, not all at once. 2. **On a 403/429, refetch the same feed through the free rss2json proxy:** ``` https://api.rss2json.com/v1/api.json?rss_url={URL-ENCODED feed URL} ``` - URL-encode the feed URL — YouTube feeds contain `?channel_id=` and must be encoded (e.g. `https%3A%2F%2Fwww.youtube.com%2Ffeeds%2Fvideos.xml%3Fchannel_id%3D...`). The proxy fetches from its own un-blocked servers and returns the feed as JSON (`status:"ok"` + `items[]`). **This is what makes cloud/datacenter runs work** — YouTube/Substack/Medium block datacenter IPs directly but not the proxy. (Verified working for YouTube, Substack, and Medium.) + URL-encode the feed URL — YouTube feeds contain `?channel_id=` and must be encoded (e.g. `https%3A%2F%2Fwww.youtube.com%2Ffeeds%2Fvideos.xml%3Fchannel_id%3D...`). The proxy fetches from its own un-blocked servers and returns the feed as JSON (`status:"ok"` + `items[]`). 3. **Only if the proxy also fails**, fall back to a targeted web search for that source. -Never silently degrade to web-search-only. In Source Health, say which path worked, e.g. `YouTube: OK (via rss2json proxy)`. +Never silently degrade to web-search-only, and never mislabel Flavor A as an IP block. In Source Health, say which path worked per lane, e.g. `YouTube: OK (direct)`, `Blogs/RSS: OK (via rss2json proxy)`, or `YouTube: policy-blocked (see config/cloud-network-allowlist.md)`. ### 2a. FRESH SCAN — What's new this week (last 7 days) @@ -467,12 +478,10 @@ Before creating the Notion page, verify: - [ ] Checklist at bottom has ALL of: tier emoji, title, estimated time, full URL for EVERY item - [ ] Total estimated reading time in header is the sum of all item times - [ ] Hard cap of 7 items total is respected -<<<<<<< Updated upstream - [ ] Idempotency guard checked (STEP 1d) — not re-posting a week that already ran - [ ] PushNotification sent (STEP 7) and state committed + pushed (STEP 8) -======= - [ ] **Audience Check recorded for every item** (engineers / PMs / designers / mixed / general) - [ ] **Diversity rule satisfied**: ≥2 Product Lane, ≥2 Design Lane, ≤2 pure-engineer-audience items - [ ] If diversity rule couldn't be satisfied by the pool, the shortfall is noted in the run log under Errors/Notes - [ ] No orphan references to the old "+5 Design Boost" — the rule is now three Audience Lanes (+10/+10/+5) ->>>>>>> Stashed changes +- [ ] Source Health distinguishes `policy-blocked` (environment egress) from target-side failures — see Fetching discipline