Changelog
Every change to this platform, generated straight from the commit history. It is published because the fair question to ask a small vendor is whether the thing is actually maintained, and that is a question only a record can answer.
September 2026
110 changes- Maintenance
Compact GROWTH_PROMPT Section 0C; run the ledger's overdue failure review
- Maintenance
Compact GROWTH_PROMPT Section 0B; log the immutability override
- Maintenance
Compact GROWTH_PROMPT Section 6 to 834 words; retire a completed queue item
- Maintenance
Compact GROWTH_PROMPT Section 5 to 838 words
- Maintenance
Compact GROWTH_PROMPT Section 2; raise its cap to the measured floor
- Maintenance
1,448 words to 1,198, and one instruction was wrong
- Maintenance
2,878 words to 1,198, no measured fact lost
- Reliability
Fix the word cap so it can actually bite, and record the duplicate-representation rule
- Reliability
I mapped a set the estate had adjudicated as duplicate
- Compliance data
A mapping batch stales the published count
- Compliance data
Re-pin the mappings fallback after todays mapping batch: 306,653 to 306,664
- Maintenance
Track gmc_monitor.py, and make a truncated scan say so
- Reliability
Measure the paid number, ship 7 pages, close a broken instrument
- Maintenance
Publish 7 newly page-eligible KVKK controls: DATA_VERSION 9 to 10
- Maintenance
Feed the daily Signals brief into both growth prompts as an input, not a summary
- Maintenance
An assistant answering a shopper has no wallet
- Maintenance
Every failure is loud and leaves the site alone
- Maintenance
Demand-first selection, and why metering was removed
- Maintenance
Record the catalogue content split, and the lesson that a dead monitor is not a dead job
- Maintenance
Record the catalogue-to-agents work: what sells, what does not, and why
- Performance
Put the content index on a 50GB volume and index every course to every chapter
- Performance
Build the course content index and meter it: search what 300,000 courses TEACH
- Maintenance
Make the store's 315,904 SKUs buyable by an agent, and NOT on the x402 rail
- Maintenance
Consolidate the agent revenue rail into one record, and carry three rules to the store
- Maintenance
Measure the x402 market before paying to enter it: median merchant has earned $3.90
- Maintenance
Record the Bazaar listing state: validation passes, indexing waits on one payment
- Maintenance
Declare the discovery extension CDP validation wanted
- Maintenance
Lead the 402 with the offer, because the spec wording reads as a fault
- Maintenance
Advertise the paid data everywhere an agent looks, not just where it fails
- Maintenance
Let agents find the paid data, and tell the ones that cannot pay what to do
- Maintenance
Record the resolved x402 configuration: the whole data family is metered
- Compliance data
Commit the /evidence Caddy route that was blocking every CI deploy
- Maintenance
Correct the descriptions, and stop a 429 preempting the 402
- Compliance data
Meter the crosswalk data family, log settlements for notification
- Maintenance
Remove the x402 daily cap, and record that the metering is aimed wrong
- Compliance data
Enable x402 on the crosswalk endpoint, and fix two defects found doing it
- Compliance data
What an agent would pay for, answered from the logs: crosswalk above 10/day
- Maintenance
Investor lens ranks bets, and MCP adoption is measured for the first time
- Maintenance
Revenue per visitor is the argument
- New capability
Add a standing investor lens to both briefs
- Maintenance
Measure whether the AI channel generalises: it does not, by scale
- Maintenance
The last instrumentation gap is closed
- Maintenance
Meta description done; beacon needs a UI paste, not a scope
- Maintenance
Map the AI-referral blind spot: it was four systems, not missing data
- Maintenance
Advance and measure, start nothing
- Reliability
One visible hub, 22 hidden shards
- Performance
Build the crawlable HTML index for AU: 5,296 orphan products now reachable
- Maintenance
Program for artofservice.com.au, built on measurement not on the store playbook
- Maintenance
Measure every property from its own GSC property, and reconcile the store bands
- Maintenance
The hub is 154,047 impressions, not 461,662: the property includes subdomains
- Maintenance
Where the SSO signups came from: unrecoverable, but they are a distinct cohort
- Maintenance
Merge its tagged and untagged rows
- Maintenance
Automate the signup scoreboard, and Google SSO turns out to be the top channel
- Security and privacy
Carry the referrer through social OAuth so SSO signups stop looking like direct
- Maintenance
Measure impressions per cluster: the fragmentation hypothesis is refuted
- Maintenance
Apply seventh review by MEASURING its two testable claims, not recording them
- Compliance data
The evidence-pack funnel, with the first real denominator
- Compliance data
Evidence pack delivery routes, and index checkpointing
- Compliance data
Per-framework evidence request lists from the graph
- Maintenance
Correct the CTR arithmetic, allow measurement-only runs
- Maintenance
Turn the brief's own 0.4 rule on its own diagnosis
- Reliability
Measurement-debt guard, hold batch 4, measure the AI channel
- Maintenance
The treated set was already clean, and measuring said so
- Reliability
Fix the duplicate h1 at its real source, and correct a false finding
- Maintenance
Rotation days 1, 2, 3 and 5 audited
- Security and privacy
Build the AI-bot metric reader, and the first read finds a live AI channel
- Maintenance
First pass, mastery and adoption
- New capability
Add the AEO daily pass as program D, with its baseline and one reconciliation
- Maintenance
Close the agent-API proposal as already shipped
- Maintenance
Owned distribution live at 100/day, plus four fixes the first batch exposed
- Maintenance
Cross-property buyer audience plus a routed sender
- Reliability
Fix four false numbers, add three guards
- Maintenance
Restore 1000x as the growth target in both briefs
- Maintenance
Apply the outside review, accept three, reject two
- New capability
Add the outside-review request that goes with the two briefs
- Maintenance
Split the store into its own brief
- Maintenance
The pricing engine is live, with its measured constraints
- Maintenance
Pricing instrumented, the exchange model scoped to what it can reach
- Maintenance
Measure pricing before changing any of it
- New capability
Add store.theartofservice.com, measured before written
- Maintenance
Compact 14 lessons into rules, drop the narrative
- Maintenance
Run 5 self-update, the routing engine works end to end
- Performance
Make the sitemap cache refresh the mandatory last step of the growth loop
- Maintenance
Bump DATA_VERSION so three days of mappings actually reach it
- Maintenance
Sessions are measurable, 82 templates, hold batch 4
- New capability
57 -> 82, the only page shape that converts
- Compliance data
My own mapping work drifted it by 15
- New capability
A push is not a ship until you assert it landed
- Maintenance
Run 3 self-update, the converting mechanic identified
- New capability
The only page shape with measured conversion
- Maintenance
Record the two run-2 process failures
- New capability
Ship rule and a standing shippable queue
- Maintenance
Run 2 self-update, hub routing is gated upstream
- Maintenance
Self-updating, with guardrails against its own drift
- Maintenance
Rewrite around what measurably converts
- Maintenance
Correction, controls convert at zero and the hub is the engine
- New capability
The primary growth metric was never being recorded
- Maintenance
Run 1 baseline, environment contract, and a frozen prior
- Reliability
Guard the whole tree, and assert the fast-forward actually landed
- Maintenance
Commit the adoption.theartofservice.com block that existed only on the VPS
- Compliance data
Commit the /categories endpoint that existed only on the VPS
- Maintenance
Refresh the stats fallback after detaching 47 contaminated controls
- Compliance data
Guard the Control.code uniqueness constraint against cross-framework adoption
- Security and privacy
Let sign in return to a host other than the compliance frontend
- Compliance data
Expose Adoption Evidence to agents through this MCP server
- Compliance data
Read only question search for Adoption Evidence
- Maintenance
The controls behind the count, and a total that agrees with it
- Maintenance
Cover the awesome-mcp-servers entry, and stop a false alarm
- Maintenance
Say that the API takes agent payment, and that nothing is charged yet
- Security and privacy
Describe the persistent evidence layer and what is kept of it
August 2026
151 changes- Compliance data
Cache the crosswalk coverage handler, at one hour not one day
- Maintenance
The metered-path list matches exactly, not by prefix
- Compliance data
Advertise live graph counts instead of import-time fallbacks
- Maintenance
X402 live on Base mainnet, metered per path, with three fixes found by using it
- Maintenance
Check an address against its own EIP-55 checksum
- Maintenance
Mint the per-request JWT the CDP facilitator actually requires
- Maintenance
Authenticate to the facilitator when one is configured
- Maintenance
Ask the facilitator and the chain, refuse when either is silent
- Maintenance
A preflight for turning x402 on, that refuses rather than assumes
- Maintenance
Wire x402, cap the keyless tools, stop self-stamping provenance
- Maintenance
Keep the record of how the ISO/IEC 42001 text was written
- Maintenance
Four market signal tools on the MCP surface
- Compliance data
Keep the duplicate half of a framework out of the work queue
- Compliance data
Say how much of a near-miss framework is already mapped, and to what
- Maintenance
The near-miss work queue counted controls with no requirement text
- Compliance data
Let a glossary term match the vocabulary the standards actually use
- Maintenance
Publish the shared organisation identity, and name the sibling properties
- Maintenance
The AU rewriter price cap excluded every provider, so it rewrote nothing
- Maintenance
Reachability check failed a change that made robots.txt more correct
- Compliance data
Bring today's API changes into git; they existed only on the VPS
- Compliance data
Control pages resolved against an API response cached before clause_code existed
- Compliance data
Stop advertising 876 control urls whose page always 404s
- New capability
Remove duplicate /compare route that broke the production build
- Reliability
Fix robots.ts async return type
- Performance
Advertise only the sitemap chunks that hold urls
- Compliance data
Visible provenance byline on framework and control pages
- Compliance data
Anchors and entity stack on control pages, real questions on framework FAQs
- New capability
Build the /compare hub, which did not exist
- Performance
Extraction, anchors, entity stack, robots
- Compliance data
Match a stripped clause reference too, and the sitemap resolves completely
- Compliance data
495 of the control URLs we advertise to Google resolved to notFound()
- Compliance data
Reconcile the sitemap rule with the eligible rule
- Compliance data
Measure how much of the graph earns a page, and what is one step away
- Compliance data
Term coverage returned nothing whenever the term was capitalised
- Compliance data
Do not state a control count in a comment
- Compliance data
The fulltext index was the wrong tool for this question
- Compliance data
Control pages 404'd for every framework whose name has a slash
- Compliance data
Answer the glossary question the graph can already answer
- Maintenance
Make the sitemap advertise what people search, not one arbitrary direction
- Compliance data
Public page for the evidence layer, which nothing public mentioned
- Security and privacy
Document the public route conventions and the auth-gated app routes
- Compliance data
Commit the production code that only existed on the VPS
- Compliance data
Evidence library UI
- Compliance data
Judge a document once, answer every framework
- Maintenance
Give /contact a page, and only promise the response times that exist
- Compliance data
Stop sending people to a login wall, and resolve the routes they type
- Compliance data
Make /readiness 404 on an unknown framework
- Maintenance
Sitemap, homepage, case studies
- New capability
Add /customers, built from the paid-order record
- Maintenance
Ten illustrative scenarios, at /scenarios rather than /case-studies
- Compliance data
Attribution from control page to purchase, and stop spending crawl budget on dead pages
- Compliance data
Off-by-one meant a two-segment code could never lose its prefix
- Compliance data
Show the reference as a person writes it, not as the graph stores it
- Compliance data
Give control pages an upgrade moment that matches why the visitor came
- Compliance data
Resolve control pages by the searchable reference, not the stored code
- Compliance data
10,281 pages targeting what people actually search
- Maintenance
The site never said how fast you get an answer, or that anyone is calling it
- Maintenance
Three of five comparison pages were linked from nowhere
- Compliance data
$6.10, not $ 6.10
- Compliance data
Price the work, not the seat; quote it in money honestly; name the real competitors; surface the AI governance answer
- Maintenance
One name for why a claim was withdrawn, and an honest description of what the reason is
- Maintenance
Refuted mappings 29,549 to 42,107
- Compliance data
Front matter is not a requirement: 12,105 mappings refuted, 99 duplicate nodes retired, two dead API fields removed
- Reliability
All three off-site surfaces are correct; fix the checker that said otherwise
- Maintenance
Professional is $149. Fourteen places said $49, and the referral credit paid a third of what it promised
- Compliance data
Add the routes the previous commit deleted the static files for
- Compliance data
Generate llms.txt from the graph, page the framework list, and make the free crosswalk tool end in a decision
- Reliability
The 100% claim survived the sweep that removed it; guard it, then sell the review to agents
- Compliance data
Store empty strings, not nulls, so reads stop warning
- Compliance data
Remove two promises we cannot keep, stop CLAUDE.md reseeding stale counts, add an account activity log
- Compliance data
Re-pin the stats fallback, which the graph outgrew
- Compliance data
The graph explorer existed and nobody could find it
- Maintenance
Import the recorded result rather than fetching it
- Maintenance
Retire a compliance guarantee we cannot make, and show the product working
- Maintenance
Round the percentage before printing it
- Compliance data
Measure whether the graph helps, and publish where it does not
- Compliance data
84 frameworks were unreachable through the agent's own control tool
- Maintenance
Lead with the outcome, and show the things that were only claimed
- Maintenance
Render all six, hide the inactive ones with CSS
- Maintenance
Opt out of the drift check, with the reason
- Compliance data
Make MCP the thing you do, not the thing you read about
- Compliance data
Packages were publishing numbers that were never true, and the galaxy counted retired frameworks
- Maintenance
Take descriptions from the OpenAPI schema
- Maintenance
Walk included routers, and reject a name used as a description
- Maintenance
Check the card the code builds, not the one production serves
- Maintenance
The case study we did not have, and a registry-shaped server.json
- Maintenance
The server card can no longer under-advertise
- Security and privacy
A named human, our own gap report, and a status page that can report bad news
- Compliance data
Stop serving placeholder text as requirement text
- Compliance data
Give every pair its own page, ranked, in the sitemap
- Compliance data
One call per pair, and count what was thrown out
- Maintenance
Ask for the version they actually sent
- Maintenance
Keep what the buyer corrects
- Compliance data
The coverage report published a denominator nobody else uses
- Maintenance
The fulfilment link 404d
- Compliance data
The 25,302 SEO pages now sell the crosswalk they already match
- Maintenance
Unauthorised requests were crashing, not refusing
- Maintenance
Stop line endings burying real changes
- Compliance data
Sell it per questionnaire, and stop the api tree publishing stale numbers
- Maintenance
The last of the VPS noise, so a dirty tree means something
- Security and privacy
Reconcile the VPS and the repo, and stop them diverging again
- New capability
Add /compliance-review/upload, the fulfilment page the $499 review emails link to
- Maintenance
The $499 and $999 buttons never worked
- Maintenance
The drift gate skips loudly when it cannot reach the API, rather than blocking
- Compliance data
The stat-drift marker broke a build I had just gated
- Compliance data
The drift guard now gates the build, and the fallback is current again
- Maintenance
Say that the refuted sample is sorted, not representative
- Compliance data
Publish the refutations, and add combined coverage
- Compliance data
Crosswalk, mcp: the framework-count disagreement is resolved
- Maintenance
Two Tailwind positions instead of a CSS variable that was never set
- Compliance data
Ship /mcp and /provenance, and stop transcribing a live server
- Compliance data
Render the pair list on the server, and state the real level of review
- Compliance data
Documented lineage is not overreach, and the buyer is told which it is
- Reliability
Two test bugs and an apostrophe bug, none of them in the product
- Reliability
Block frameworks that recounting cannot fix
- Maintenance
Completeness sweep, and why it only gets a fraction of the way
- Maintenance
Ingest was leaving correctly re-judged mappings dark
- Compliance data
Reports were showing 'ref: None' for 1,286 controls
- Maintenance
Independence check now matches reference AND title, not raw code strings
- New capability
Every build script I wrote now refuses a metered API call
- Compliance data
The footer was the last surface still serving the fallback
- Compliance data
Retire the paid API for the crosswalk, build it on Claude Code instead
- Compliance data
Stop a 24h page cache from outliving the 15m stats window
- Performance
Cut the stats cache windows from an hour to fifteen minutes
- Compliance data
Every surface reads the graph, not a hand-typed number
- Compliance data
Fix a buy button that looked dead, and block unverified denominators
- New capability
Hourly build update by email, with a watchdog that restarts a dead build
- Maintenance
Batched writes actually write, and the thinness gate matches the product
- Maintenance
One persistent Bolt connection instead of a JVM per query
- New capability
Build the full catalogue, and refuse a standard crosswalked against itself
- Maintenance
Audit asserts properties, not a frozen catalogue size
- Maintenance
Scope the reuse cap to its own pair, and stop hiding short-titled controls
- Compliance data
Cap control reuse before the gate, not as a reason to fail
- Compliance data
Link the changelog and crosswalk, and count each control once
- Compliance data
Public changelog fed from git, and two data-integrity fixes
- Compliance data
Any pair, built on demand, with the tier of review disclosed
- Compliance data
Second pair released, and two checks that were passing on nothing
- Compliance data
Sell it per framework pair, and gate what can be sold
- Compliance data
Ground SOC 2 criteria in TSP 100, verify against source text
- Maintenance
Review the 42 mappings against source, reject 8, sign off
- Compliance data
Make the crosswalk sellable, and gate it so it cannot be sold unreviewed
- Compliance data
Add the coverage crosswalk, and the data work it needed first
- Compliance data
Say "over 25 years", since 2000 to 2026 is 26
- Maintenance
Correct the founding year to 2000
- New capability
Add a verifiable track-record line to the homepage
- Maintenance
Check advertised prices against Stripe
- Maintenance
Correct the platform subscription price, $49 to $149, in 20 places
- Security and privacy
Add iAwards badge, /trust redirect, and correct the SSO claim
- Security and privacy
Add /security
- New capability
Add live mode to the stat drift check, wired to a weekly cron
- Compliance data
Make every published number match the graph
July 2026
5 changes- Maintenance
Link Signals from the landing footer
- Security and privacy
Detect bot signals on capture + register (User-Agent + context)
- Maintenance
Commit VPS-local disables for discovery + cerebras monitor to git
- Security and privacy
Also reject scanner email patterns at /api/auth/register
- Maintenance
Harden lead capture endpoint against scanner probes
June 2026
24 changes- Maintenance
Update MCP attribution string to 723 frameworks
- Reliability
Build agent-builder channel + fix stale platform numbers
- Maintenance
Mark ODENNA launched and GNLI live in portal on deliverables page
- Maintenance
Story-led rewrite of team_invite + 3 readiness drip templates
- Maintenance
Story-led rewrite of audit-report drip (3) + post-purchase drip (3) templates
- Maintenance
Story-led rewrite of 13 lead drip templates with human-edited positioning
- Maintenance
Story-led rewrite of trial drip (4) + churn prevention (3) templates
- Maintenance
Story-led rewrite of all 13 onboarding templates + human-edited positioning
- Maintenance
Refresh hardcoded fallback defaults to live counts
- Maintenance
Hook -> story -> demo -> action -> PS
- Maintenance
Rewrite free drip Day 3/5/7 to position Starter as the stepping stone
- Reliability
Add Starter FAQ and fix truncated CTA
- Security and privacy
Tier-aware billing success page
- New capability
Add tier-aware welcome email for Starter; strip em-dashes from paid drips
- Security and privacy
Add Starter tier (\$19/mo) between Free and Professional (Phase A, no Stripe yet)
- Maintenance
Strip em-dash from docstring (hard-rule)
- Maintenance
Filter to current platform price IDs only
- Compliance data
ISO 27001 -> NIST CSF returns 404 (no mappings exist)
- New capability
Add Content Feed data licensing strip to /pricing
- Maintenance
Engagement purchases get welcome + admin emails; admin emails skip unsub footer
- Maintenance
Self-serve Content Feed checkout: API + frontend (Phase A, no Stripe yet)
- Maintenance
Expand sanitizer dash/hyphen coverage; wire video_callout into weekly newsletter
- New capability
Add Content Feed video demo to /data hero + reusable email block
- Security and privacy
Guarantee admin notification on every new signup (3-layer defense)
May 2026
63 changes- Maintenance
Strip em-dashes from site title + AI disclaimer
- Maintenance
Replace Enterprise Custom tier with explicit Content Feed pricing
- Compliance data
Bump platform stats to marquee batch state + DATA_VERSION 7
- Compliance data
Readiness + internal-search: wire licensed-corpus outputs
- Compliance data
Bump platform-stats DEFAULTS to live Neo4j numbers
- Performance
Extend static sitemap-index.xml to 7 chunks
- Compliance data
Bump DATA_VERSION 5 to 6 and expand chunks 3 to 7
- Maintenance
Cerebras gpt-oss-120b migration + agent/playbook refactors + video pipeline + container logging caps
- Reliability
Walkthrough-steps PlatformStats literal needs new fields (Vercel build failed on commit 1988964)
- Compliance data
Frontend + api: refresh platform numbers to corpus-complete state (2026-05-31)
- New capability
Add Word format and attach v4 files to A3 on ODENNA deliverables
- Compliance data
Surface source-grounded verification citations in control detail UI
- Maintenance
Skip frameworks that already have a pending correction
- Maintenance
Do not mislink state AI acts to the EU AI Act page
- Compliance data
Cite each framework in its native section style
- Compliance data
Per-clause framework + section citations, clickable
- Reliability
Never put "there" mid-sentence
- Maintenance
Region/jurisdiction-aware generation + neutralise EU-leaning copy
- Maintenance
Nurture drip, upgrade CTA, liability disclaimer
- Compliance data
Deeper AI policy + clickable framework links on regulations
- Maintenance
Normalise Unicode dashes/quotes in generated AI policy text
- Maintenance
Make AI policy output substantive + live proof numbers
- Maintenance
Document the AI Use Policy generator (What Was Built #103)
- Security and privacy
Redesign AI policy page as a landing page + wire post-signup unlock
- Reliability
Wrap useSearchParams in Suspense boundary
- New capability
Add AI Acceptable Use Policy generator (universal lead magnet -> signup)
- Compliance data
Capture UTM attribution through the readiness funnel
- New capability
Add drip-health check to catch silent onboarding-drip drops
- Maintenance
Never suppress allowlisted admin address on bounce
- Maintenance
Surface signup source attribution on User node + admin Users tab
- Compliance data
Sanitize banned characters in discovery-approved framework corrections
- Maintenance
Release GNLI Supplement Final v4 on ODENNA deliverables page
- New capability
Add SendGrid unsubscribe footer to every marketing email
- New capability
Restore admin notifications on signup + add notification on paid upgrade
- Maintenance
Refresh marketing claims to match the now-complete catalogue
- Maintenance
Polished 688 placeholder sources to verbatim citations
- Maintenance
0 empty fields across all 757 frameworks
- Compliance data
100% canonical-code coverage: 757 frameworks, every control enriched
- Maintenance
Honor churn exemption list in monitor scan
- Compliance data
Fix stale fallback text on control dialog + developers page
- Maintenance
757 frameworks, 17,736 controls (mass rollout complete)
- Maintenance
731 frameworks, 17,223 controls. 38 remaining.
- Maintenance
651 frameworks, 15,687 controls
- Maintenance
571 frameworks, 14,159 controls
- Maintenance
493 frameworks, 12,659 controls
- Maintenance
414 frameworks, 11,253 controls (ISO-heavy wave)
- Maintenance
335 frameworks, 9,738 unique controls
- Compliance data
257 frameworks, 8,077 unique controls with evidence
- Compliance data
179 frameworks, 6,495 unique controls with evidence
- Compliance data
105 frameworks, 4,872 unique controls with evidence
- Compliance data
92 frameworks, 4,438 unique controls with evidence
- Compliance data
79 frameworks, 5,731 controls with evidence
- Maintenance
Patch developers page with batch 5+6 totals (was missed in 72a5700)
- Compliance data
Batches 5 + 6 live: 65 frameworks, 5,178 controls with evidence
- Compliance data
41 frameworks, 4,075 controls with evidence
- Compliance data
28 frameworks, 2,819 controls with evidence
- Compliance data
7 new frameworks (472 controls) live with evidence
- Compliance data
8 new frameworks with evidence requirements live
- Maintenance
Surface evidence_requirements on /data and /developers marketing pages
- Compliance data
Bump DATA_VERSION to 7 after CMMC stub cleanup (32 controls + 6 domains removed)
- Compliance data
Bump framework page DATA_VERSION to 6 to bust Vercel ISR cache for new CMMC controls
- Compliance data
Surface evidence_requirements on control detail dialog
- New capability
Add GNLI Supplement v3 to ODENNA deliverables page
April 2026
12 changes- Security and privacy
Capture acquisition source on /register (UTM, referrer, IP) + Caddy access logs
- New capability
Add /outreach handler + reorganize api block to use handle {}
- New capability
Add Stripe recovery verification script
- Reliability
Rewrite _to_dict() recursively
- Maintenance
Replace Enterprise $499/mo with Contact Us on pricing page
- New capability
Add contract documents section to ODENNA deliverables page
- New capability
Add ODENNA deliverables tracker page at /odenna/deliverables
- Compliance data
Fix cross-references returning null row for unmapped controls
- Reliability
Use attribute access instead of .get()
- Maintenance
Self-healing webhook + daily sync + pinned SDK
- Reliability
Convert StripeObject to dict
- Compliance data
Add toolkit recommendation CTA to readiness assessment results
March 2026
33 changes- Reliability
Exclude typo domains, fix PayPal backfill date range
- New capability
Add automated enterprise outreach system
- Compliance data
Add "Verify Your AI Compliance Plan" CTA to readiness result pages
- Maintenance
First-time recipients get survey, returning recipients get segmented content
- Compliance data
Fix broken readiness link in post-purchase Day 14 (add framework slug)
- Reliability
Fix price formatting for segment products (handle string prices)
- New capability
14 interest groups, targeted products
- Maintenance
Support CSV input for learning path bundle generator
- New capability
Add learning path bundle generator for top 20 course topics
- New capability
Add daily PayPal scanner for academy post-purchase drip emails
- Maintenance
Replace recommendation pool with 26 verified product URLs from BigCommerce export
- Reliability
Fix URLs, sender, skip Self-Service Toolkit
- New capability
Add post-purchase email drip sequence for repeat purchases
- Performance
Add static sitemap-index.xml to bypass Vercel ISR caching issue
- Reliability
Fix sitemap index 404 permanently: hardcode chunk count
- Security and privacy
Remove all spam trigger words from weekly newsletter
- Security and privacy
Lock down newsletter and suppression endpoints with admin auth
- New capability
Add auto-ramp system for weekly newsletter (81K emails)
- Maintenance
Remove manual unsubscribe links from weekly newsletter footer - SendGrid adds these automatically
- Maintenance
Weekly newsletter sends from gerard.blokdyk@theartofservice.co
- New capability
Add test_email parameter to send-now endpoint to prevent accidental blasts
- New capability
Skip bad products, add advisor/Ivanka, use CSV list
- New capability
Add bulletproof weekly product newsletter for 70K email list
- New capability
Add SendGrid Event Webhook for email suppression
- Reliability
Fix duplicate emails on readiness assessment: remove lead drip trigger
- New capability
Update CLAUDE.md with all new features (items 88-92)
- New capability
Implement X Feed revenue recommendations: freemium funnel, bundles, consulting upsell
- New capability
Add Claude Code prompt to daily discovery email
- Maintenance
Also invalidate frameworks:list and sitemap-pairs on discovery corrections
- Compliance data
Prevent framework slug 404s permanently
- Reliability
Fix discovery system to regenerate slug when renaming frameworks
- New capability
Trial drips, behavior scoring, churn prevention
- Maintenance
Point robots.txt directly to working sitemap chunks
Generated directly from the commit history of the platform repository. Quiet periods are shown as they were. Commit bodies are never published and entries naming infrastructure or credentials are excluded.