Skip to content

AD-030: retire the gets-sharper-every-day promise (rebuilt onto current main, replaces #419) - #469

Merged
runyourempire merged 4 commits into
mainfrom
worktree-ad030-promise-retirement-v2
Aug 16, 2026
Merged

AD-030: retire the gets-sharper-every-day promise (rebuilt onto current main, replaces #419)#469
runyourempire merged 4 commits into
mainfrom
worktree-ad030-promise-retirement-v2

Conversation

@runyourempire

Copy link
Copy Markdown
Collaborator

AD-030: retire the "gets sharper every day" promise — rebuilt onto current main

Replaces #419, which was CONFLICTING, 31 commits behind, with CI dead since 08-11 (self-hosted runner timeouts). Rather than rebase a 46k-line diff dominated by whole-file locale churn, this PR merges #419's branch onto current main and resolves every conflict in favour of main's newer facts. Net diff: 62 files, +848/−677 (vs #419's +23,646/−22,838).

Operator decision on record (2026-08-14): the promise is completely retired, on every surface. Decision record: .ai/DECISIONS.md AD-030 (in this PR).

What this ships

  • New canonical line on every copy surface: "4DA reads the internet for developers — privately, locally. Your codebase decides what's relevant." — README, site (title/meta/OG/JSON-LD/hero/FAQ), docs, scan page, streets module, writing footers, installer metadata (tauri.conf.json), mcp README, RELEASE-NOTES.
  • "Yesterday's noise becomes tomorrow's signal" KEPT — re-attributed to corpus re-judging (verdict epochs), never to engagement.
  • 13 locales, surgically: AD-030: retire the gets-sharper-every-day promise + last behavioral scoring path #419's translations ported per-leaf onto main's current files — 312 rewordings + 130 deletions of dead affinity-surface keys. Its 752 key additions were dropped: they belong to surfaces Audit remediation: remove ~53k lines of dead code, fix legal/tier accuracy, close enforcement gaps #421 already deleted from en (momentum, wisdom, comparison, toolkit…), and porting them would have resurrected orphans. validate-translations: 0 errors, warnings identical to main.
  • v19.1 hotfix: auto-detected anti_topics removed from both build_negative_stack call sites — the last structurally-live behavioral scoring path. No PIPELINE_VERSION bump; justification (live probe: anti_topics = 0 rows → byte-identical priors) recorded at the constant.
  • Enforcement gate: scripts/check-retired-claims.cjs + 9 tests. Violations on main measured before: 57 across 24 files; after this PR: 2, both in CLAUDE.md (see residuals).
  • Public handling: site/src/writing/retiring-a-claim-we-could-not-measure.njk — the engineering record, now linked from /writing and the sitemap. Site builds clean (11ty, 127 files).

Conflict-resolution calls worth reviewing

Residuals (tracked in .claude/plans/PENDING-DECISION.md)

  1. CLAUDE.md tagline + package.json gate wiring — both files are claimed by live peer lanes (docs: five INVARIANTS entries and three security comments describe code that does not exist #466; agent-a875). A follow-up commit on this branch lands the moment the claims release. Until then the gate exists but is not yet wired into validate, so CI on this PR does not self-fail on CLAUDE.md.
  2. npm README@4da/mcp-server live README still serves the old table; needs a republish (different terminal, tag mcp-v5.0.0).
  3. Live 4da.ai — CF Pages is direct-upload; needs wrangler pages deploy --branch main after merge.
  4. Close AD-030: retire the gets-sharper-every-day promise + last behavioral scoring path #419 after this merges.

Verification

  • Frontend: 1249/1249 pass, tsc --noEmit clean, ESLint clean, i18n types regenerate in sync.
  • Rust: cargo check --lib clean; targeted tests (negative_stack / context / blind_spots) green.
  • Gate self-test: 9/9; full-tree scan = only the 2 deferred CLAUDE.md hits.
  • Site: eleventy build clean, post renders.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MMarGhXjbKyNJzsm3JG1jw

runyourempire and others added 4 commits August 12, 2026 03:46
…stack

The last behavioral scoring path left after the v19 demotion (AD-029),
found by the post-merge verification sweep: build_negative_stack injected
0.30 Bayesian suppression priors from auto-detected anti_topics rows whose
confidence is pure dismissal count (rejection_count/10) — five dismissals
could auto-ban a topic to x0.30 composite authority via
negative_stack_prior. Inert on the live corpus (anti_topics has 0 rows,
priors byte-identical, hence NO PIPELINE_VERSION bump — precedent and
probe documented in scoring/mod.rs), but structurally live.

The negative stack now builds from competing-tech inference over the
actual dependency graph only. Explicit topic suppression remains
user-authored exclusions, which hard-filter upstream. blind_spots'
duplicate anti-topic feed removed with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016puYGGmj3oHxmcKBbJ5vXq
The promise described a mechanism AD-029 removed, was never measurable
("all risk, no demonstrated lift" — 7 explicit feedback signals against a
200k-item corpus), and post-v19 left ~100 instances of self-contradicting
copy, several asserting dead mechanisms inside Score Autopsy — live
INV-023 violations. Pre-launch (public, unadvertised) is the only cheap
moment; after launch this is a retraction.

New canonical (propagated from CLAUDE.md through every surface):
"4DA reads the internet for developers — privately, locally. Your
codebase decides what''s relevant." "Yesterday''s noise becomes tomorrow''s
signal" SURVIVES, re-attributed to corpus re-judging (verdict epochs +
re-examination) — it is true and implemented. The 92%/98% benchmark stays
as body copy with methodology. "Compound knowledge" survives only in the
framework''s dev-process sense.

- Governance first: AD-030 (with re-claim criteria: a /calibrate-measured
  lift, published) + amendments to AD-017/025/026/028 — all four decisions
  survive, only rationales rewrite (AD-028''s lifetime honesty now rests on
  the cost structure: zero marginal cost + offline 2099 key)
- P0: in-app strings that asserted dead mechanisms rewritten or deleted
  ("will be penalized in relevance scoring", "Boosted because you''ve shown
  interest", "scoring corrections applied", the "Learned" badge, learned
  factor rows + affinity chips — the anti factor also had inverted
  magnitude/multiplier semantics and rendered a false penalty on every item)
- "Compound Intelligence" tab renamed "Personal, Not Aggregate" — its
  content (per-user, inspectable, local-only) was always a privacy story
- 13 locales: 45 stale keys purged per locale, regenerated from corrected
  English via i18n:fill; generator scripts purged first so nothing
  re-injects (apply-translations.cjs carried 12 hardcoded copies)
- Ship-locked surfaces: installer shortDescription/longDescription,
  homepage JSON-LD (incl. the Offer), npm MCP README (lands on next
  publish)
- Site + docs: 22 files rewritten under the house rule (present-tense
  verifiable statements; improvement attributed to engine updates and the
  user''s codebase, never engagement); signal.njk''s 16 compounding claims
  reframed on the analysis layer; the refund-adjacent trial claim deleted;
  framework §7 kept as a dev-process thesis with scoring-accuracy claims
  stripped across all three mirrored copies
- New public post: site/src/writing/retiring-a-claim-we-could-not-measure
  — the incident record as an engineering story, ending on the re-claim bar
- Enforcement: scripts/check-retired-claims.cjs (+9 tests) wired into
  test:scripts and validate; historical-record files allowlisted;
  retired-ok escape hatch for quoting the claim as history

Verified: guard clean repo-wide; translation parity 0 errors across 13
languages; tsc clean; frontend suite green; Rust 4,419 green; fmt clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016puYGGmj3oHxmcKBbJ5vXq
…uilt onto current main)

Merges origin/worktree-promise-retirement-ad030 (PR #419) with conflicts
resolved in favour of current main's newer facts:
- locale ui.json files: main's structure kept; #419's 312 reworded values
  and 130 deleted affinity-surface keys ported per-leaf (its 752 key
  additions dropped — those surfaces were deleted from en by #421)
- README/index.njk/signal.njk/SETUP-GUIDE/LICENSE-ACTIVATION: main's newer
  copy (93% figure, Precision Ledger, BYOK rationale) kept, retired
  phrases replaced with the canonical line
- Developer DNA kept OUT of paid-feature lists (AD-025/026 tier truth)
- apply-translations.cjs / missing-keys.json / BadgeRow.tsx stay deleted
  (deleted on main since #419's base)
- CLAUDE.md + package.json deliberately untouched: claimed by live peer
  lanes (#466, agent-a875) — gate wiring + tagline follow in-branch once
  those claims release

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMarGhXjbKyNJzsm3JG1jw
- 92% -> 93% / 98% -> 98.9% / 215 -> 245-item corpus (the current
  measured benchmark, #460) in COMPARISON.md and the retirement post
- RELEASE-NOTES-v1.0.0 tier table + closing line matched to AD-025/026
  tier truth (DNA, Signal Chains, Score Autopsy are free; the paid set
  is Blind Spots, Knowledge Gaps, Standing Queries, Semantic Shifts,
  cross-project intelligence)
- retirement post added to /writing index (retired-ok teaser quote) and
  sitemap
- two Rust doc comments un-mangled; engagement_telemetry header no
  longer claims facets influence scoring (INV-023)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMarGhXjbKyNJzsm3JG1jw
@runyourempire
runyourempire enabled auto-merge (squash) August 16, 2026 11:01
@runyourempire
runyourempire merged commit abb9ca7 into main Aug 16, 2026
13 checks passed
@runyourempire
runyourempire deleted the worktree-ad030-promise-retirement-v2 branch August 16, 2026 11:14
runyourempire added a commit that referenced this pull request Aug 16, 2026
…ne (#472)

The last 2 retired-claim violations in the repo, deferred from #469
because CLAUDE.md was claimed by the #466 lane (now merged, worktree
reaped). With this, `node scripts/check-retired-claims.cjs` reports
**zero violations repo-wide**. Remaining enforcement residual: wiring
the gate into `validate`/`test:scripts` waits on the live lane holding
`package.json`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01MMarGhXjbKyNJzsm3JG1jw

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
runyourempire added a commit that referenced this pull request Aug 16, 2026
Bring the branch onto current main (690ced1) so CI validates the real merge
result rather than a base seven commits old. No conflicts; #465, #466, #467,
#469, #472 and #473 landed in the meantime.
runyourempire added a commit that referenced this pull request Aug 16, 2026
Bring the branch onto current main (690ced1) so CI validates the real merge
result rather than a base seven commits old. No conflicts; #465, #466, #467,
#469, #472 and #473 landed in the meantime.
runyourempire added a commit that referenced this pull request Aug 17, 2026
…d but never ran (#477)

## The residual this closes

`scripts/check-retired-claims.cjs` + its 9 tests merged in #469 as the
AD-030 enforcement gate — but nothing ever invoked them. Not
`test:scripts`, not the `validate` chain, so the gate never ran in CI.
Meanwhile `.ai/RULES.md` / `AGENTS.md` (via #431) already assert this
enforcement exists. This was the priority residual of the AD-030
retirement arc (tracked in `.claude/plans/PENDING-DECISION.md` item 1);
it was blocked on #470's lane holding `package.json` and is unblocked
now that #470 merged.

## Change (3 lines, package.json only)

- `validate:retired-claims` script → `node
scripts/check-retired-claims.cjs`
- `scripts/check-retired-claims.test.cjs` added to `test:scripts`
- Gate inserted at the front of the `validate` chain, right after the
size check — it is sub-second, so it fails fast before the heavy steps

## Verification

- `node scripts/check-retired-claims.cjs` — OK repo-wide (0 violations)
- `node --test scripts/check-retired-claims.test.cjs` — 9 pass / 0 fail
- Pre-push gate (typecheck + suite) passed locally

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01LBY5q2MskiKMkTm6NmB49L

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
runyourempire added a commit that referenced this pull request Aug 17, 2026
…ME (#478)

## The residual this closes

npm is the **last surface anywhere still serving retired AD-030 copy**.
Timeline: 5.0.1 was published to npm manually at 2026-08-16 **11:01Z** —
thirteen minutes before #469 merged the corrected README at **11:14Z**.
So the live npm page still carries:

- `| Compound intelligence (learns over time) | -- | Yes |` (comparison
table)
- "…scored content from 20+ sources that **compounds over time**." (FAQ)

The repo README has been clean since #469 (`check-retired-claims`
verifies it — `mcp-4da-server/README.md` is in the gate's scan set).
Publishing current repo state fixes the npm surface. Tracked as item 2/3
of the AD-030 residuals in `.claude/plans/PENDING-DECISION.md`.

## Change (version metadata only, no code)

- `package.json` 5.0.1 → **5.0.2**
- `server.json` both version fields → 5.0.2
- `.claude-plugin/plugin.json` → 5.0.2 (had been left stale at 5.0.0)
- `CHANGELOG.md`: 5.0.1 marked released (it is live on npm), 5.0.2 entry
records why this release exists
- `src/index.ts` untouched — `SERVER_VERSION` reads package.json at
runtime (#409)

## Release plan after merge

Tag `mcp-v5.0.2` on the squash commit → `publish-mcp-server.yml`
publishes to npm (`NPM_TOKEN`, last exercised successfully on
4.6.5/4.6.6) + MCP Registry via OIDC. The workflow's version-matches-tag
check requires exactly this bump.

## Verification

- `pnpm run build` clean, `pnpm test` **185/185**
- `node scripts/check-mcp-server-sync.cjs` — in sync
- `node scripts/check-retired-claims.cjs` — OK (repo README clean)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01LBY5q2MskiKMkTm6NmB49L

Co-authored-by: Claude Fable 5 <noreply@anthropic.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.

1 participant