Skip to content

Initial#149

Open
NeverTheSame wants to merge 69 commits into
sighingnow:masterfrom
NeverTheSame:gh-pages
Open

Initial#149
NeverTheSame wants to merge 69 commits into
sighingnow:masterfrom
NeverTheSame:gh-pages

Conversation

@NeverTheSame

Copy link
Copy Markdown

No description provided.

@NeverTheSame

Copy link
Copy Markdown
Author

Ok

NeverTheSame and others added 28 commits December 15, 2024 11:35
- Add comprehensive AGENTS.md for AI agent guidance
- Enhance README.md with project structure, Python tools setup, and detailed documentation
- Add blog posts about AGENTS.md and Nvidia Blackwell
- Update .gitignore to reflect posts-generator directory structure
Co-authored-by: kirillkuklin <kirillkuklin@gmail.com>
Co-authored-by: kirillkuklin <kirillkuklin@gmail.com>
Live-site audit found 24 broken internal links on the homepage. Root causes:

1. index.md hard-coded absolute paths like /devops/ and {{ post.url }},
   missing the /BeOps baseurl. Replaced with the relative_url filter so
   GH Pages serves them correctly.

2. Category index pages /devops/, /k8s/, /sre/, /ai/ did not exist,
   causing every post's category breadcrumb to 404. Added _pages/*.md
   for each category with permalink set and auto-listed posts.

Verified with a local Jekyll build + Playwright audit: 0 broken links,
0 missing-baseurl links, 0 category integrity issues.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds an OSS site audit using Playwright (+ optional lychee) under
tests/site-audit/. Detects:

- broken internal links
- links missing the /BeOps baseurl
- posts unreachable from the homepage in >2 clicks
- orphan posts
- category index pages that fail to list their own posts

Runs in GitHub Actions on every push to gh-pages/main and nightly
(.github/workflows/site-audit.yml), failing the build on regressions
and uploading the report as a workflow artifact.

AUTHORING.md + POST_TEMPLATE.md document the link-discipline rules
(always use the relative_url filter, never hard-code /devops/) and
the post checklist. AGENTS.md updated with the same rules.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…job-interviews category

Changes requested:

1. Sidebar (_includes/toc-date.html) now groups posts by category. Each
   category from _data/categories.yml is rendered as a top-level entry
   with its posts nested below in date-reverse order. Posts whose
   category doesn't match a known slug fall into an 'Other' bucket so
   nothing is silently dropped. Category index pages are no longer
   double-listed in the utility-pages section (skipped via the new
   is_category: true front matter).

2. Homepage (index.md) is now structured as 'Browse by Category':
   each category shows its description and its posts grouped beneath
   it, instead of a flat 'latest 5 posts' list.

3. 'Back to home' link added at the top of every post and category
   page via _layouts/post.html and _layouts/home.html (suppressed on
   the root homepage itself).

4. New category 'job-interviews' added — _data/categories.yml updated,
   _pages/job-interviews.md created, AGENTS.md + AUTHORING.md +
   POST_TEMPLATE.md + .github/workflows/site-audit.yml all updated to
   include the new slug. Future categories only need to be appended to
   _data/categories.yml (single source of truth for sidebar +
   homepage) plus a matching _pages/<slug>.md.

Verified locally with the site-audit framework: 0 broken links, 0
missing-baseurl, 0 unreachable/orphan/category issues.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
NeverTheSame and others added 30 commits May 27, 2026 17:02
Lets an external agent ask 'what have I already written about X?'
without ever seeing NEON_DATABASE_URL. The secret stays inside
Actions; the prompt block returns as a workflow artifact + step
summary.

Usage:
  gh workflow run rag-query.yml -f seed='AI Engineering Coach repo'
  # wait, then:
  gh run download <run-id> -n rag-context

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
RAG-grounded draft (consulted rag-query workflow before drafting).
Cites prior posts: agentsmd-ate-my-readme, staff-ai-engineer-interview,
forward-deployed-engineering-ate-customer-success.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Index the @beops_it channel posts into a separate Neon pgvector corpus
(style_posts/style_chunks) and, on a new blog post, draft a Telegram post
in the author's voice grounded in their own most-similar posts, then DM it
for manual review. No auto-publishing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
An undefined CI variable expands to an empty string; pass that through as
'No models provided' to OpenRouter. Fall back to the built-in default when
the model is empty/whitespace.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
deepseek/deepseek-chat-v3:free was retired on OpenRouter. Switch the default
to a currently-available multilingual free model.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Free models are individually rate-limited or occasionally retired. Try a
list of current free models in order, honor the Retry-After header on 429,
and fall through to the next model on 404/exhausted retries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… category)

Add standalone post on the llm-batcher OpenAI->Anthropic proxy, introduce the
ai-developments subcategory (categories.yml + _pages page + site-audit env),
and add the beops-publish-post project skill plus an AGENTS.md pointer.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a hard no-em-dash prose rule to AGENTS.md and the beops-publish-post
skill to preserve a natural human voice, and rewrite the llm-batcher post
to remove all 23 em-dashes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…xy post

Show the concrete payoff: switching an app to Claude requires rewriting every
API call site against the Anthropic SDK without the proxy, versus a single
base_url change (or one env var) with llm-batcher.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
build_posts_ts.py silently drops posts whose category is not in CATEGORY_MAP,
which hid the llm-batcher post from beops.site. Map ai-developments -> ai and
document this 4th category step in AGENTS.md and the publish skill.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Map a 'data' Jekyll category to a 'data' writing filter, emit it in the
Post union, and re-tag the DataOps post category devops -> data. Changes the
post permalink to /data/2025-08-21-dataops.html.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Follow-up to the OpenAI-compatible proxy post: add a standalone piece on the
microbatching layer (admission windows, concurrency semaphore, backpressure,
Little's Law, async lifecycle), with a before/after thundering-herd example and
a link to the batching.html visualization.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…omepage

- Move both llm-batcher posts from ai-developments to the ai category
  and fix the microbatching post's internal link to the proxy post.
- Remove the ai-developments category (data file, index page, audit env,
  CATEGORY_MAP, AGENTS.md, publish skill).
- Stop rendering each post's section headings in the left sidebar; it now
  goes category then post only.
- Replace the category-grouped homepage with a single reverse-chronological
  list of every post.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sian + chain prior posts

- Point the microbatching post's visualization link at the rendered
  GitHub Pages URL (neverthesame.github.io/llm-batcher/batching.html)
  instead of the GitHub blob view, which shows raw source.
- telegram_drafter: always draft @beops_it posts in Russian, and pull
  related prior blog posts from the blog RAG corpus so the draft can
  chain to (link) one relevant earlier post.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tyle RAG

Replace the blog-post chaining with Telegram channel interconnection: pull the
most related prior channel posts from the style corpus and surface their
t.me/<channel>/<tg_id> links so the model can weave in at most one natural
reference. The channel now reads as a connected story. Main blog article link
is kept; the extra blog-post link is dropped.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add propose-substack-post.yml + substack_drafter.py: on push to gh-pages
touching _posts/**, rewrite the post SHORTER in English (keeping all technical
detail), append a backlink to the canonical BeOps post, and create a Substack
DRAFT via the unofficial python-substack client. Never auto-publishes.

- Auth by secret: SUBSTACK_COOKIES_STRING (preferred) or SUBSTACK_EMAIL +
  SUBSTACK_PASSWORD, plus SUBSTACK_PUBLICATION_URL variable.
- Full body sent to the model (warns, never silently truncates); forbids
  em-dashes and Markdown tables (Substack drops tables); warns if the model
  emits tables/Liquid; idempotent by title to avoid duplicate drafts.
- Allowlist the two new files in .gitignore; unit tests (no network); docs in
  AGENTS.md + publish skill.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Substack's Cloudflare bot-protection returns a 403 JS challenge to GitHub
Actions datacenter IPs regardless of cookie validity, so the draft must be
generated locally. Remove propose-substack-post.yml and document the local
substack_drafter.py command in AGENTS.md and the publish skill.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
GitHub secrets are write-only and can't be read back, so local runs need the
same values supplied locally. substack_drafter.py now auto-loads a gitignored
posts-generator/.env (real env vars still win). Add .env.example template,
allowlist it, and make python-dotenv an explicit dep.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…unts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…stale

The substack client splits cookies on '=' and silently drops nameless pairs, so
a bare sid value sends zero cookies and yields 401. Normalize a bare value by
prefixing 'substack.sid='. Add tests and a troubleshooting note (401 = expired
cookie, re-copy a fresh one).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…mit<=40)

The library's get_drafts omits offset (endpoint 400s) and the /drafts limit is
capped below 50. Query /drafts directly with offset=0&limit=25 and read the
posts[] array (draft title is in draft_title). Re-runs now correctly detect and
skip an existing draft instead of warning and risking duplicates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… source

Store local tooling secrets in Doppler so they sync across machines and never
live in plaintext. Add committed doppler.yaml pinning beops/dev, and document
running tools via 'doppler run --' in AGENTS.md and the publish skill. Local
.env remains an auto-loaded fallback.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add Golden Rule 6 and Step 4a requiring any associated .html visualization to be
hosted on GitHub Pages and linked via its rendered URL (never the blob/ view).
Update the RAG step to inject NEON_DATABASE_URL via 'doppler run'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…on rule

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…y post

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
All automation/tooling now lives in the private NeverTheSame/beops-ops
superproject, which includes this repo as the site/ submodule. Untrack
posts-generator/, .github/, .copilot/, tests/, docs/, AGENTS.md,
doppler.yaml, and .cursorrules from gh-pages. Removing the workflows also
stops public Actions from firing. Add defensive _config.yml excludes and
.gitignore rules so tooling is never re-published here. The live site
still builds from gh-pages (verified locally: no leaks, all pages render).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… others)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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