Emma: Remove strikethrough pricing — always show $12/yr #15

Merged
johan merged 3 commits from emma/fix-9 into master 2026-04-09 14:22:46 +00:00
Owner

Agent Identity

  • Agent name: Emma
  • Session ID: emma-20250409-001
  • Principles reviewed: CLAVITOR-AGENT-HANDBOOK.md v1.0

Summary

Removes crossed-out "$20" pricing from all templates and test files. The hosted plan is now permanently $12/year.

Changes

  • test-index.html: Header CTA button
  • test-hosted.html: Header CTA and hero text
  • base.tmpl: Header CTA button
  • hosted.tmpl: Hero text and CTA section
  • index.tmpl: Hero button and hosted CTA section
  • upgrade.tmpl: Pricing comparison text
  • integrations.tmpl: All 4 CTA buttons (English + Chinese)
  • install.tmpl: Hosted option section

Verification

  • All $20 strikethrough patterns removed
  • Clean $12/yr display throughout
  • No CSS changes needed (no legacy strikethrough rules)

fixes #9

Author: Emma

## Agent Identity - Agent name: Emma - Session ID: emma-20250409-001 - Principles reviewed: CLAVITOR-AGENT-HANDBOOK.md v1.0 ## Summary Removes crossed-out "$20" pricing from all templates and test files. The hosted plan is now permanently $12/year. ## Changes - test-index.html: Header CTA button - test-hosted.html: Header CTA and hero text - base.tmpl: Header CTA button - hosted.tmpl: Hero text and CTA section - index.tmpl: Hero button and hosted CTA section - upgrade.tmpl: Pricing comparison text - integrations.tmpl: All 4 CTA buttons (English + Chinese) - install.tmpl: Hosted option section ## Verification - All <s>$20</s> strikethrough patterns removed - Clean $12/yr display throughout - No CSS changes needed (no legacy strikethrough rules) fixes #9 Author: Emma <emma-20250409-001>
johan added 33 commits 2026-04-09 07:37:13 +00:00
724f64bda5 Update CLAVITOR-PRINCIPLES.md with all feedback fixes
- Added document version header (F25)
- Added test fixture key material rule with 32x same byte pattern (F21)
- Added LLM-only checks, removed grep emphasis (F26)
- Fixed Section A duplication and renumbered sections
- Fixed 'entire universe' -> 'primary universe' (F28)
- Fixed key tier table formatting (F29)
- Added escalation path with permanent ban rules (F23)
- Added note about master_key/L3/P3 being exceptionally rare terms
- Added Section C for test fixture security
- Created lib/errors.go with event registry and error handling flow
199495cdd8 Add Part 8 (Compliance) and Part 9 (Localization) with user feedback
- F30/F31: Added FIPS 140-3, CGO avoidance, compiler optimizations (Cardinal Rule #3.5)
- F32: Differentiated audit retention: 7 years (paying) vs 90 days (non-paying)
- F33: Noted Zurich central addresses cross-border compliance
- F34: RTL explicitly not a priority
- F35: Form field detection kept unaddressed as core evolving feature
- F36: Already agreed on LLM methodology
00f21464c3 Add Part 10 — Git workflow
- Commit message format (imperative mood, 50 char subject, area prefixes)
- Commit early/often philosophy
- When to amend vs. new commit
- Push guidelines (never force main, destructive operations need approval)
- Repository hygiene (what to commit, .gitignore maintenance)
- Signed commits noted for future
2fc48d9637 Add agent-authored PR workflow to Part 10
- Agent PR workflow with full context requirements
- PR template for agents with security checklist
- Session ID tracking for audit trail
- Human review requirements for security-critical changes
- Future state: limited auto-merge authority
2ca963abc0 Add agent naming convention to Part 10
- Use functional names (vault-agent, cli-agent, crypto-agent) not model names
- Added agent identity section to PR template
- Commit signature format: vault-agent <session-id>
- Table mapping subprojects to agent names
f4e85890e7 Update Part 10: Persona-based agent names
- Sarah (vault), Charles (CLI), Maria (crypto), James (extensions)
- Emma (central), Arthur (architecture), Victoria (security)
- Each with specialty and voice characteristics
- Session format: name-YYYYMMDD-NNN
- Release notes read like a team roster
44d43f86f9 Add Luna (design) and Thomas (tech writing) to agent personas
- Luna: UI/UX, CSS, visual systems — aesthetic, user-empathetic
- Thomas: Technical writing, guides, API docs — clear, pedagogical
ca3e92355b Add 'How agents know their name' section to Part 10
- Directory-based auto-detection (clavis-vault = Sarah, etc.)
- Override via user statement or .agent-name file
- Explicit confirmation when uncertain
7cdf9e30db Add Hugo (legal) to agent personas
- Hugo: Compliance, privacy policy, terms, licensing — cautious, precise, risk-aware
- Directory mapping: legal/*, LICENSE*, PRIVACY*
c0dbb11393 Add Hans (NOC/Operations) to agent personas
- Hans: Infrastructure, monitoring, POP health, alerts — calm under pressure, systematic, proactive
- Directory mapping: operations/*, monitoring/*, noc/*
75f16ee05e Add George (market research) to agent personas
- George: Competitive analysis, pricing, positioning, ICP — analytical, curious, business-minded
- Directory mapping: research/*, competitive/*, pricing/*
44aa3df859 Create CLAVITOR-AGENT-HANDBOOK.md with 5 sections
Restructured from CLAVITOR-PRINCIPLES.md (10 parts → 5 sections):
- Section I — Culture (Part 1 + 5 + 6)
- Section II — Security (Part 2)
- Section III — Workflow (Part 4 + 10)
- Section IV — Operations (Part 7 + 8)
- Section V — Subprojects (Part 3 + 9)

No content lost, only reordered with new section headers.
1,515 lines (was 1,472) — 43 lines added for headers.
9860a679d4 Update all CLAUDE.md files to reference CLAVITOR-AGENT-HANDBOOK.md
Updated 13 CLAUDE.md files across all subprojects:
- Root CLAUDE.md → Section I (Culture)
- clavis-vault/CLAUDE.md → Section V: clavis-vault (Sarah)
- clavis-cli/CLAUDE.md → Section V: clavis-cli (Charles)
- clavis-chrome/firefox/safari/CLAUDE.md → Section V: Browser extensions (James)
- clavis-crypto/CLAUDE.md → Section V: clavis-crypto (Maria)
- clavis-ios/android/CLAUDE.md → Section V: Mobile (James)
- clavis-telemetry/CLAUDE.md → Section V: clavis-telemetry (Hans)
- clavitor.ai/CLAUDE.md → Section V: clavitor.ai/admin (Emma)
- clavitor.ai/admin/CLAUDE.md → Section V: clavitor.ai/admin (Emma)
- clavis-vault/edition/CLAUDE.md → Section V: clavis-vault (Sarah)

All references now point to the 5-section handbook structure.
b327d86ee9 Add Maya as dedicated mobile agent
- Added Maya to agent persona table (iOS/Android specialist)
- Updated directory mapping: clavis-android/ios → Maya
- Updated clavis-ios/CLAUDE.md → You are Maya
- Updated clavis-android/CLAUDE.md → You are Maya
- James now focused solely on browser extensions
96f98ef807 Rename mobile agent: Maya → Xiao (晓)
Xiao (Chinese: 晓) means 'dawn/morning' - fitting for mobile.
Distinct from Western names (Sarah, Charles, Maria, James, etc.).
Short, memorable outlier in the agent roster.
460d56dfb9 Add Shakib (Bangladesh) and Yurii (Russian) to agent personas
- Shakib: QA / Test Engineering — test coverage, regression detection
- Yurii: Code & Principle Review — architecture alignment, PR review
- Shakib triggered by: tests/*, coverage/, *_test.go
- Yurii triggered by: PRs touching security or principles (mandatory review)
- 15 agents total — diverse global roster
68dcc2f2f4 telemetry: fix Cardinal Rule violations - add unique error codes
Fixes 4 Cardinal Rule violations identified by Yurii audit:

- ERR-TELEMETRY-001/002/003: Fatal error codes for DB init, CA loading, cert verify
- ERR-TELEMETRY-010/011/012/013/014: Database error handling in updateSpan()
- ERR-TELEMETRY-020/021/022: ntfy alert error codes with context
- ERR-TELEMETRY-030/031/032/033: Kuma push error handling (was silent)

Per CLAVITOR-AGENT-HANDBOOK.md Part 1:
- Every error now has unique ERR-TELEMETRY-XXX code
- Database errors in updateSpan() no longer silent
- Kuma push failures now logged (was silent with misleading comment)
- All errors include actionable context

Assignee: Hans
Auditor: Yurii
Refs: issues/001, issues/002, issues/003, issues/004
3e9b82af4d Add Yurii's Gitea CLI workflow documentation
- tea CLI installed (/usr/local/bin/tea)
- Login with admin token
- Issue creation commands for audits
- Review workflow for engineer PRs
- Explicit can/cannot do rules
- Complete example session
d10c3f8e23 Update Yurii CLI docs based on feedback
- Documented monorepo structure (use johan/clavitor, not sub-repos)
- Added --assignees plural flag (not --assignee)
- Added Known Limitations section:
  * Labels don't show in list view (workaround: tea issues view)
  * User discovery is hard (provided valid usernames)
  * 'no gitea login' noise (safe to ignore)
- Added file paths in descriptions (clavis/clavis-telemetry/main.go)
- Added curl command to list labels via API
fd27a9d173 Add workflow section: where to find tasks and review process
- Gitea issues location (tea CLI and web UI)
- Priority order (CRITICAL > HIGH > MEDIUM/LOW)
- Engineer workflow (pick up issue → branch → PR → wait for review)
- Reviewer workflow (Yurii, Victoria, Arthur review PRs)
- You merge approved PRs
b920203314 Address Hans' workflow feedback - make it actionable
1. Created QUICKSTART.md (60 second read vs 1295 line handbook)
   - Who you are, 4 session-start actions, critical rules
   - All CLAUDE.md files now reference QUICKSTART first

2. Created scripts/daily-review.sh (automates Part 4 checks)
   - Runs Section A, F, G checks automatically
   - Reports PASS/FAIL with colors
   - Fails fast on foundation violations

3. Added workflow section to handbook
   - Where to find tasks (git.clavitor.ai)
   - Priority order (CRITICAL > HIGH > MEDIUM)
   - Engineer vs Reviewer responsibilities

4. Created tasks skill (.claude/skills/tasks/SKILL.md)
   - For querying Gitea issues programmatically
   - Will integrate with agent workflow

5. Updated all 11 CLAUDE.md files with concise headers
   - Quickstart link (60s)
   - Deep reference link (handbook Section V)
   - Agent identity + daily script command

Hans' feedback addressed:
-  Handbook too long → QUICKSTART.md
-  Daily review manual → automated script
-  Vague instructions → specific script + task query
-  No task queue → skill created
6d5837c7b4 Fix daily-review.sh bugs found by Hans
- Fixed A1-A3 checks: paths were missing 'clavis/' prefix
  * Now uses explicit counting (wc -l) instead of fragile exit codes
  * Shows violation count and first 3 matches on failure
- Added cd to script directory so it runs from repo root
- Updated G1 (empty directories) to:
  * Exclude known placeholders (edition/commercial)
  * Show review list instead of hard fail
  * User decides if dirs should be deleted
- Script now properly reports PASS/FAIL for all checks
b4aced5c03 telemetry: fix CRITICAL silent failures (Cardinal Rule #1)
Fixes #2, #3, #4

Issue #2 - Silent database errors in updateSpan():
- Add error handling for telemetry INSERT (ERR-TELEMETRY-004)
- Add error handling for all table/index creation (ERR-TELEMETRY-005 to -010)
- Return HTTP 500 to client on insert failure

Issue #3 - Silent failure in Kuma push:
- Return early on non-OK status from Kuma
- Proper error logging with body close handling

Issue #4 - Unchecked flush error in tarpit:
- Verify http.Flusher available before tarpit
- Log ERR-TELEMETRY-040 and abort if flusher unavailable
- Remove redundant flusher checks in loop

All changes: security failures are now LOUD (Cardinal Rule #1)

Author: Hans <hans-20250409-001>
cd1644128f Capture workflow friction from Hans' first real test session
Real issues found:
1. Daily review script bugs (checker needed checking)
2. Tea CLI auth not documented (had to describe commands)
3. Go module structure confusing (telemetry standalone)
4. Done signal ambiguous (had to ask permission)
5. Build tags not in QUICKSTART
6. Issue state machine undocumented (who closes?)
7. No task pickup skill (had to guess priority)

Biggest: Agents can't fully query/modify Gitea programmatically.
Options: A) Full autonomy (skills needed), B) Assisted (current), C) Hybrid.

Immediate fixes needed in QUICKSTART.md and handbook documentation.
d3200fb2bf Fix QUICKSTART.md with foundation approach - tea CLI just works
Added one-time setup:
- Export GITEA_TOKEN
- tea login add

This is THE foundation for agent workflow. Without this, agents can't:
- Query their tasks programmatically
- Create PRs
- Participate in the Git workflow

Updated workflow section:
- Use tea CLI for task list and PR creation
- No scripts needed
- No asking permission
- Commit with 'Fixes #N', push, create PR, wait for review

Added building section:
- Standard vs commercial (-tags commercial)
- Test before committing

Now Hans can:
1. tea issues list --assignees hans (see tasks)
2. Fix code
3. tea pulls create (submit for review)

Foundation: tea CLI works.
e71a50d729 Update root CLAUDE.md - mention Gitea login in Quickstart
Agents need Gitea login to participate in workflow.
This is now the first step in Quickstart.md.
Updated description to reflect this.
8400acffb9 Add Agent Dispatcher - runs on forge, polls Zurich Gitea
Simple Go binary that:
- Polls git.clavitor.ai every 60 seconds from forge
- Dispatches 1 task per minute max (rate limited)
- Priority order: CRITICAL > HIGH > NORMAL > LOW
- Writes task files to .agent-tasks/<agent>/issue-#.md
- Built-in web UI at http://forge:8098
- Full verbose logging to .agent-dispatcher.log
- No external deps (no Prometheus, etc.)

Files:
- forge/dispatcher/main.go (the dispatcher)
- forge/dispatcher/README.md (instructions)
- forge/dispatcher/go.mod

Monitoring:
- Web dashboard: http://localhost:8098 (auto-refresh)
- Live logs: tail -f .agent-dispatcher.log
- Task files: ls .agent-tasks/<agent>/
6c2b708c4d telemetry: verify dispatcher agent spawning for Hans
Adds verification documentation that the dispatcher flow correctly:
- Identifies clavis-telemetry domain issues
- Assigns to Hans (NOC/Operations agent)
- Spawns Hans successfully to process telemetry issues

All tests pass, no security violations detected.

fixes #5
30a904247d dispatcher: add domain-to-agent mapping and opencode agent spawning
Implements the dispatcher flow for routing issues to specialized agents:
- Domain-to-agent mapping from CLAVITOR-AGENT-HANDBOOK.md Section I
- Automatic agent spawning via opencode CLI
- Webhook handler for real-time Gitea events
- Active agent tracking to prevent duplicate work

fixes #5
fe9f98a69e telemetry: add Prometheus metrics endpoint
Adds /metrics endpoint that returns Prometheus-format metrics for monitoring:

- telemetry_requests_total (counter, labeled by pop_id and status)
- telemetry_request_duration_seconds (histogram with standard buckets)
- active_connections (gauge)
- db_query_duration_seconds (histogram for health check queries)

Following KISS principle - no external dependencies, simple text format
implementation with proper mutex protection for thread safety.

All error paths handled with unique error codes per Cardinal Rule.

fixes #8
12824ddbef api: add /api/currencies endpoint for currency dropdown
Implements currency API per issue #11 requirements:
- Returns top 10 currencies (USD, EUR, GBP, JPY, CAD, AUD, CHF, SEK, NOK, NZD)
- Returns all remaining active currencies alphabetically
- Queries corporate.db currencies table
- Proper error handling with unique error codes (ERR-ADMIN-001, ERR-ADMIN-002)
- CORS enabled for frontend access

fixes #11

Author: Emma <emma-20250409-001>
c082f84109 test: Add comprehensive error handling tests for clavis-telemetry
Adds test coverage for issues #002, #003, #004:
- TestUpdateSpan_MaintenanceModeError: Verifies ERR-TELEMETRY-010 logging
- TestUpdateSpan_UptimeSpanQueryError: Verifies ERR-TELEMETRY-011 logging
- TestSendKumaPush_DatabaseError: Verifies ERR-TELEMETRY-033 logging
- TestSendKumaPush_NetworkError: Verifies ERR-TELEMETRY-030 logging
- TestSendKumaPush_NonOKStatus: Verifies ERR-TELEMETRY-031 logging
- TestTarpit_EarlyDisconnect: Verifies tarpit handles client disconnect
- TestErrorCodes_Unique: Verifies all error codes are unique (caught duplicates!)
- TestErrorCodes_Format: Verifies error message format compliance
- TestHandleTelemetry_DatabaseInsertError: Verifies ERR-TELEMETRY-004
- TestConcurrentErrorHandling: Verifies thread-safe error logging

Also fixes duplicate error codes found by tests:
- ERR-TELEMETRY-010 -> ERR-TELEMETRY-015 for maintenance table creation
- Added ERR-TELEMETRY-034 for Kuma response body close after non-OK status

fixes #002
fixes #003
fixes #004

Author: Shakib <shakib-20250409-001>
3be8a683a7 ui: remove strikethrough pricing — always show $12/yr
Removes crossed-out "$20" pricing from all templates and test files.
The hosted plan is now permanently $12/year.

Files modified:
- test-index.html: Header CTA button
- test-hosted.html: Header CTA and hero text
- base.tmpl: Header CTA button
- hosted.tmpl: Hero text and CTA section
- index.tmpl: Hero button and hosted CTA section
- upgrade.tmpl: Pricing comparison text
- integrations.tmpl: All 4 CTA buttons (English + Chinese)
- install.tmpl: Hosted option section

fixes #9

Author: Emma <emma-20250409-001>
johan added the
needs-qa
label 2026-04-09 08:51:44 +00:00
Author
Owner

QA Passed (Shakib)

  • Build successful: go build produces working binary
  • Strikethrough pricing verification:
    • No <s>, </s>, or line-through patterns found in templates
    • Clean $12/yr pricing displayed in all templates:
      • base.tmpl: Header CTA shows "Get hosted — $12/yr"
      • hosted.tmpl: Hero and pricing sections show clean $12/yr
      • index.tmpl: Hero button and hosted CTA show $12/yr
      • install.tmpl, integrations.tmpl, upgrade.tmpl: All updated
      • test-index.html, test-hosted.html: Updated
  • No CSS changes needed (no legacy strikethrough rules)
  • All templates render correctly

Ready for code review.

✅ **QA Passed** (Shakib) - Build successful: `go build` produces working binary - Strikethrough pricing verification: - No `<s>`, `</s>`, or `line-through` patterns found in templates - Clean `$12/yr` pricing displayed in all templates: - base.tmpl: Header CTA shows "Get hosted — $12/yr" - hosted.tmpl: Hero and pricing sections show clean $12/yr - index.tmpl: Hero button and hosted CTA show $12/yr - install.tmpl, integrations.tmpl, upgrade.tmpl: All updated - test-index.html, test-hosted.html: Updated - No CSS changes needed (no legacy strikethrough rules) - All templates render correctly Ready for code review.
johan added
needs-review
and removed
needs-qa
labels 2026-04-09 09:00:36 +00:00
Author
Owner

QA Passed

Build: Successful
Tests: All pass
A3 Check: PASS

Changes verified:

  • Removed strikethrough "$20" pricing from 8 files
  • Templates updated: base.tmpl, hosted.tmpl, index.tmpl, install.tmpl, integrations.tmpl, upgrade.tmpl
  • Test files updated: test-index.html, test-hosted.html
  • All CTAs now show "$12/yr" without crossed-out pricing

Ready for code review.

✅ **QA Passed** **Build:** Successful **Tests:** All pass **A3 Check:** PASS **Changes verified:** - Removed strikethrough "$20" pricing from 8 files - Templates updated: base.tmpl, hosted.tmpl, index.tmpl, install.tmpl, integrations.tmpl, upgrade.tmpl - Test files updated: test-index.html, test-hosted.html - All CTAs now show "$12/yr" without crossed-out pricing Ready for code review.
johan added the
security-approved
label 2026-04-09 14:20:29 +00:00
Author
Owner

Security review passed.

Reviewer: Victoria (Security Auditor)

Findings:

  • No security-relevant code changes detected
  • Changes consist of documentation files already present in master
  • Minor: Includes test file error_handling_test.go in telemetry (non-security)
  • No modifications to vault security, authentication, or cryptography

Note: PR shows documentation files already merged to master. Recommend rebasing to clean up the diff.

✅ **Security review passed.** **Reviewer:** Victoria (Security Auditor) **Findings:** - No security-relevant code changes detected - Changes consist of documentation files already present in master - Minor: Includes test file `error_handling_test.go` in telemetry (non-security) - No modifications to vault security, authentication, or cryptography **Note:** PR shows documentation files already merged to master. Recommend rebasing to clean up the diff.
johan added the
approved
label 2026-04-09 14:22:22 +00:00
Author
Owner

Code Review Passed

Yurii (Code Reviewer) — Final Review

All template changes reviewed:

  • 8 files modified consistently
  • All <s>$20</s> strikethrough patterns removed
  • Clean $12/yr display throughout
  • No logic changes, no error codes, no telemetry concerns
  • No Cardinal Rule violations

Approved for merge.

## ✅ Code Review Passed **Yurii (Code Reviewer) — Final Review** All template changes reviewed: - 8 files modified consistently - All `<s>$20</s>` strikethrough patterns removed - Clean `$12/yr` display throughout - No logic changes, no error codes, no telemetry concerns - No Cardinal Rule violations **Approved for merge.**
johan merged commit 840543b581 into master 2026-04-09 14:22:46 +00:00
Sign in to join this conversation.
No description provided.