From 3e81fbd5405ce328987dde58ee048c1c60888e19 Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Thu, 25 Jun 2026 19:25:58 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20public-readiness=20=E2=80=94=20vibe-cod?= =?UTF-8?q?ed=20disclosure=20+=20genericize=20internal=20hosts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README + CLAUDE.md: upfront "this is a vibe-coded project" disclosure for going public. - Replace internal LAN hostnames (*.orgrimmar.dudenhoeffer.casa) with example.com across README, ADR-0004, the envproviders example, and env_test.go (assertions updated together; suite still green). Token was already a "change-me" placeholder, not a real secret. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 6 ++++++ README.md | 11 +++++++++-- docs/adr/0004-env-dsn-providers.md | 4 ++-- env_test.go | 10 +++++----- examples/envproviders/main.go | 4 ++-- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 97733e7..ac56915 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,6 +5,12 @@ target-agnostic model access, a parseable model naming / failover / tiering system with health tracking, multimodality, tool calls, structured output, and agents composed from model + system prompt + toolboxes + skills. +> **Public, vibe-coded project.** This is built almost entirely by an AI agent +> (Claude Code) and is public. Keep that framing honest in the README — don't +> oversell it — and keep the README/support-matrix/examples updated in the same +> commit as the behavior they describe (that in-sync promise is part of the +> project's credibility). + **North star:** majordomo exists to re-architect mort's agentic layer. mort is the first consumer and the design's acceptance test — when a choice is a toss-up, pick what makes mort's tiers, failover chains, toolboxes, and diff --git a/README.md b/README.md index f8c09d6..521766b 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,13 @@ over many model providers, a parseable model naming / failover / tiering system with built-in health tracking, capability-aware multimodality, tool calls, structured output, and composable agents and skills. +> ### 🤖 Heads up: this is a vibe-coded project +> majordomo was built almost entirely by an AI agent (Claude Code) — design, +> code, and docs. It is reasonably well-tested (a fully hermetic suite plus +> gated live integration tests) and is used in earnest, but treat it +> accordingly: read the code before depending on it, expect the occasional +> AI-flavored rough edge, and please open issues. No warranty implied. + > The [support matrix](#featureprovider-support-matrix) below is kept > honest: *pending* means not built, and this README is updated in the > same commit as the behavior it describes. Runnable programs for every @@ -138,8 +145,8 @@ reg.RegisterProvider(openai.New( Define named providers entirely from the environment (go-llm parity): ``` -LLM_M1=foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa -LLM_M5=foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa +LLM_M1=foreman://test-token-change-me@foreman-m1.example.com +LLM_M5=foreman://test-token-change-me@foreman-m5.example.com ``` defines providers `m1` and `m5` (foreman targets — native Ollama wire diff --git a/docs/adr/0004-env-dsn-providers.md b/docs/adr/0004-env-dsn-providers.md index 1f334ab..3834848 100644 --- a/docs/adr/0004-env-dsn-providers.md +++ b/docs/adr/0004-env-dsn-providers.md @@ -8,8 +8,8 @@ Steve's deployments define providers via env vars that must keep working unchanged: ``` -LLM_M1=foreman://token@foreman-m1.orgrimmar.dudenhoeffer.casa -LLM_M5=foreman://token@foreman-m5.orgrimmar.dudenhoeffer.casa +LLM_M1=foreman://token@foreman-m1.example.com +LLM_M5=foreman://token@foreman-m5.example.com ``` go-llm (v2/parse.go) implements this **lazily only**: `Parse("m5/x")` misses diff --git a/env_test.go b/env_test.go index fcbede9..41c03e1 100644 --- a/env_test.go +++ b/env_test.go @@ -21,8 +21,8 @@ func TestParseDSN(t *testing.T) { wantErr error }{ { - raw: "foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa", - want: DSN{Scheme: "foreman", Token: "test-token-change-me", Host: "foreman-m1.orgrimmar.dudenhoeffer.casa"}, + raw: "foreman://test-token-change-me@foreman-m1.example.com", + want: DSN{Scheme: "foreman", Token: "test-token-change-me", Host: "foreman-m1.example.com"}, }, { raw: "ollama://my-host.example:11434", @@ -66,8 +66,8 @@ func TestDSNBaseURL(t *testing.T) { func TestLoadEnvForeman(t *testing.T) { r := newTestRegistry(t) err := r.LoadEnv(map[string]string{ - "LLM_M1": "foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa", - "LLM_M5": "foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa", + "LLM_M1": "foreman://test-token-change-me@foreman-m1.example.com", + "LLM_M5": "foreman://test-token-change-me@foreman-m5.example.com", }) if err != nil { t.Fatalf("LoadEnv: %v", err) @@ -85,7 +85,7 @@ func TestLoadEnvForeman(t *testing.T) { if op.Name() != name { t.Errorf("provider name = %q, want %q", op.Name(), name) } - wantURL := "https://foreman-" + name + ".orgrimmar.dudenhoeffer.casa" + wantURL := "https://foreman-" + name + ".example.com" if op.BaseURL() != wantURL { t.Errorf("provider %q baseURL = %q, want %q", name, op.BaseURL(), wantURL) } diff --git a/examples/envproviders/main.go b/examples/envproviders/main.go index 1ba751d..0b67501 100644 --- a/examples/envproviders/main.go +++ b/examples/envproviders/main.go @@ -2,8 +2,8 @@ // (go-llm parity): named providers built entirely from the environment, // first-class in Parse, chains, and tiers. // -// export LLM_M1=foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa -// export LLM_M5=foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa +// export LLM_M1=foreman://test-token-change-me@foreman-m1.example.com +// export LLM_M5=foreman://test-token-change-me@foreman-m5.example.com // go run ./examples/envproviders package main