Skip to content

feat(blog): mirror self-improving stack series#17

Open
drewstone wants to merge 4 commits into
masterfrom
fix/fonts-and-hero-shot
Open

feat(blog): mirror self-improving stack series#17
drewstone wants to merge 4 commits into
masterfrom
fix/fonts-and-hero-shot

Conversation

@drewstone
Copy link
Copy Markdown
Contributor

Summary

  • Mirrors the complete the-self-improving-stack series into the website blog feed.
  • Normalizes frontmatter to the website schema (title, slug, summary, date, author, tags).
  • Assigns seriesOrder for coherent series ordering.
  • Spreads date values across 2026-05-26 through 2026-06-07 for fresh SEO recency.
  • Adds website series metadata so the index renders with a proper series description.

Notes

  • Included only the 13 non-draft, non-original posts in the series.
  • Excluded component-heavy draft/original posts that are not safely portable to the website renderer yet.

…velopers cleanup

home (index.astro):
- OSS cards rebuilt: 3-col grid, smaller padding (1.75 → 1.125rem) and
  fonts (lib name 1.125 → 0.9375rem, blurb 1 → 0.8125rem). Replaced
  single <a>-card with two action buttons:
  - click-to-copy npm install (inline JS toggles a checkmark for 1.6s)
  - dedicated GitHub button next to it
  Card body itself is no longer the click target — affordance per action.

sandbox (services/sandbox.astro):
- harness chips compressed ~30% so the row fits better against the left
  text column: padding 0.875 → 0.625rem, gap 0.875 → 0.625rem, logo
  28 → 22px, label 1 → 0.875rem, meta 0.6875 → 0.625rem, gh 24 → 20px.

overview (overview.astro):
- delete the entire "How a request flows through the protocol." section
  (REQUEST FLOW eyebrow + animated SVG diagram + legend + spec link).
- "Operators run it. You collect." section flipped from dark to vault
  (light theme). Added wf-section-vault class so existing
  .wf-section-vault .wf-builder-feature-card overrides at global.css:2380
  cascade in. Header colors hardcoded for light surface.

operators (operators.astro):
- ticker reframed as preview, no live-data claim. Eyebrow "LIVE PAYOUTS"
  → "OPERATOR LEDGER · PREVIEW". Title "$2,847 paid to operators in the
  last hour" → "Every call settles on chain. Every payout is public."
  Lede now says "When the operator network goes live...numbers below
  are illustrative." Bottom stats reframed from time-based dollar
  amounts (412/min, $2,847 last hour, $68,328 last 24h, 147 ops serving)
  → mechanism labels (x402, per call, any asset, on chain).

stake (stake.astro):
- .stake-asset-label color: white → #191c24 so Bitcoin / Ethereum /
  Tether / Staked Ether / USD Coin / More are legible on the light
  vault background.

developers (developers.astro):
- delete the 6 blueprint cards section (Envio Indexer, Threshold BLS,
  LayerZero DVN, FROST, Hyperlane Validator, Rig AI Agent) — both the
  blueprintExamples array and the rendering Section.
…tions

fonts: tangle-website was loading Geist/Outfit/Geist Mono and resolving
--font-sans to Geist; the sandbox.tangle.tools web app
(agent-dev-container/products/sandbox/web/index.html:8) preloads Inter,
Manrope, Outfit, DM Sans, JetBrains Mono and uses Inter for body,
Manrope for display. Drew flagged the Geist look as wrong.

Now matching the sandbox web app:
  --font-sans: Inter
  --font-display: Manrope
  --font-mono: JetBrains Mono
Drop Geist + Geist Mono + Outfit from the Google Fonts preload.

bp-hero: image was overflowing side padding because I bumped both the
inner container and the shot to 110rem. Reverted bp-hero-inner to
84rem max-width (the original) with 6% horizontal padding, and changed
bp-hero-shot max-width to 100% so it tracks the parent.
@tangletools
Copy link
Copy Markdown
Contributor

❌ Needs Work — f6f42053

Readiness 38/100 · Confidence 80/100 · 7 findings (1 high, 2 medium, 4 low)

glm: Correctness 38 · Security 38 · Testing 38 · Architecture 38

Full multi-shot audit completed 4/4 planned shots over 24 changed files. Global verifier still owns final merge decision.

Blocking

🔴 HIGH 12 internal links in series index use /posts/ but site routes at /blog/ — src/content/blog/the-self-improving-stack.mdx

Lines 459-470: All 12 cross-links to other posts in the series use /posts/{slug}/ (e.g., /posts/self-improving-stack-optimization-theory/). The actual page route is src/pages/blog/[...slug].astro, and the blog index at src/pages/blog/index.astro:86 generates links as /blog/${post.data.slug}. All existing blog posts also use /blog/ for internal links (e.g., building-ai-services-on-tangle.mdx:24 uses /blog/building-on-tangle-from-idea-to-production). Every one of these 12 links will 404 in production. Fix: replace /posts/ with /blog/ on all 12 links.

Other

🟠 MEDIUM Hardcoded author meta tag disagrees with blog post authors — src/layouts/BaseLayout.astro

Line 38: <meta name="author" content="Drew Stone" /> is hardcoded. BlogLayout receives an author prop (line 8) from frontmatter (e.g. post.data.author via [...slug].astro:71) but never passes it to BaseLayout. Result: every page on the site — including blog posts by other authors, legal pages, 404 — claims 'Drew Stone' as the HTML meta author, while the JSON-LD in BlogLayout:38 correctly uses the dynamic author prop. This creates an inconsistency between structured data and meta tags that search engines may surface. Fix: add `a

🟠 MEDIUM Stake page hero says COMING SOON but FAQs reference live deposit/delegate flows — src/pages/stake.astro

Hero eyebrow changed to 'COMING SOON' (line 83), but FAQ answers at line 61 say 'Deposit and delegate to earn TNT now' and line 69 says 'Deposit in the "Staking" tab'. These are contradictory. If staking is coming soon, the FAQs should not instruct users to deposit now. If it is live, the hero should not say COMING SOON. Impact: user confusion on product availability status. Fix: align FAQ content with the COMING SOON status

🟡 LOW Index file reading order diverges from seriesOrder — src/content/blog/the-self-improving-stack.mdx

Lines 459-470: The link list presents posts in order [4, 2, 3, 11, 12, 9, 7, 8, 10, 5, 6, 13] instead of sequential seriesOrder [2..13]. This appears intentional (conceptual reading flow vs chronological order), but readers may expect the list to match the numbered order they see on the blog index page. No action required, but worth confirming this is deliberate.

🟡 LOW Empty keywords meta tag rendered on all non-blog pages — src/layouts/BaseLayout.astro

Line 36: <meta name="keywords" content={keywords.join(', ')} /> with default keywords = [] (line 21) renders <meta name="keywords" content="" /> on every page that doesn't pass keywords. All ~20 non-blog BaseLayout callers pass no keywords. Google ignores the keywords meta tag entirely, so this has zero SEO impact — it's just dead markup. Fix: conditionally render the tag only when keywords.length > 0, or accept as harmless.

🟡 LOW dateModified always equals datePublished in JSON-LD — src/layouts/BlogLayout.astro

Line 40: dateModified: date is identical to datePublished: date (line 39). Schema.org allows this on first publish, but the field adds no information if it always mirrors datePublished. No frontmatter modifiedDate field exists to differentiate. Low impact — structured data validators may flag it as redundant. Not a blocker.

🟡 LOW Unused StatsStrip import in blueprint-agent.astro — src/pages/services/blueprint-agent.astro

Line 4 adds import StatsStrip from '../../components/ui/StatsStrip.astro' but the component is never rendered in the template (zero <StatsStrip tags). Every other page that imports it also uses it. Dead import. Fix: either add the StatsStrip to the template or remove the import.


tangletools · 2026-06-06T21:42:20Z · trace

Copy link
Copy Markdown
Contributor

@tangletools tangletools left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ 1 Blocking Finding — f6f42053

Full multi-shot audit completed 4/4 planned shots over 24 changed files. Global verifier still owns final merge decision.

Full immutable report for this review: trace

Summary comment for this run: full summary


tangletools · 2026-06-06T21:42:20Z · immutable trace

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.

2 participants