Skip to content

Commit d336ff1

Browse files
committed
docs: add AI-generated code debugging section; document non-disruptive release policy
1 parent efb10bc commit d336ff1

File tree

2 files changed

+69
-1
lines changed

2 files changed

+69
-1
lines changed

README.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,50 @@ Ubon performs static checks that complement linters:
2020

2121
See profiles and differences in `docs/PROFILES.md`.
2222

23+
## The Reality of Debugging AI-Generated Code
24+
25+
### Without Ubon
26+
27+
User: "The payment button doesn't work"
28+
29+
AI: "You're absolutely right! Let me fix that for you..."
30+
31+
*regenerates the component*
32+
33+
User: "Still broken"
34+
35+
AI: "I apologize! Let me try a different approach..."
36+
37+
*adds more event handlers*
38+
39+
User: "Nothing happens when I click"
40+
41+
AI: "I see the issue now! Let me update the onClick handler..."
42+
43+
*rewrites the same broken logic*
44+
45+
[3 hours later...]
46+
47+
User: "PLEASE JUST MAKE IT WORK"
48+
49+
AI: "I understand your frustration! Let me completely refactor..."
50+
51+
### With Ubon
52+
53+
```bash
54+
$ ubon check
55+
56+
❌ Stripe key hardcoded in components/Payment.tsx:12
57+
→ Your 'pk_live_...' key is exposed in client code
58+
💡 Use NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY environment variable
59+
60+
❌ Button div has onClick but no keyboard handlers
61+
→ components/Payment.tsx:45
62+
💡 Use <button> element or add onKeyDown for accessibility
63+
64+
✓ Fixed in 30 seconds
65+
```
66+
2367
## About me and Ubon
2468

2569
Hi, I'm Luisfer Romero Calero, an experienced software engineer passionate about building products and being creative. You can find more about me at https://lfrc.me. I created Ubon in six days, obsessed with solving a problem I kept seeing everywhere: the current wave of AI-generated "vibe-coded" apps that, while incredibly quick to build, are frustrating to deploy and use because AI overlooks so many essential details.
@@ -334,4 +378,8 @@ Photo credit: [Fallsonata on Unsplash](https://unsplash.com/es/@fallsonata)
334378

335379
Design notes:
336380
- Primary accent color: `#c99cb3`
337-
- Typography in banner: Martini Thai Neue Slab
381+
- Typography in banner: Martini Thai Neue Slab
382+
383+
## Release policy
384+
385+
Ubon follows Semantic Versioning. Patch and minor releases are incremental and non-disruptive. Breaking changes only land in a new major version and include upgrade notes. See `docs/RELEASE-POLICY.md`.

docs/RELEASE-POLICY.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Release Policy
2+
3+
Ubon follows Semantic Versioning. Our guiding principle: releases are incremental and non-disruptive. Upgrading within the same major version should be safe by default.
4+
5+
- Stability guarantees
6+
- Patch (x.y.z) and minor (x.Y.z) releases are backward compatible
7+
- Breaking changes only happen in a new major (X.y.z) with clear upgrade notes
8+
- Rules and signal
9+
- New rules default to warning or are opt-in; they will not fail builds unless you set --fail-on
10+
- Stricter behavior ships behind profiles or confidence thresholds; defaults avoid noisy regressions
11+
- CLI and config
12+
- No flag removals or renames in patch or minor; we deprecate first and remove in the next major
13+
- Config schema is additive within a major; we do not repurpose keys
14+
- Outputs
15+
- JSON and SARIF schemas are stable within a major; additions are backward compatible
16+
- Sensitive values remain redacted; fingerprints stay stable for baselines
17+
- Defaults
18+
- --fail-on is opt-in; defaults prioritize guidance over disruption
19+
20+
If you hit a regression after an upgrade, please open an issue with the version, command, and output.

0 commit comments

Comments
 (0)