|
1 | | -<!-- Generated from operatorstack/intelligence-flow. Edit the upstream product-loop source, not this file. --> |
| 1 | +<!-- Generated from operatorstack/intelligence-flow. Edit the upstream public source, not this file. --> |
2 | 2 |
|
3 | | -# Walkthrough: account recovery in a passwordless product |
| 3 | +# Example: account recovery in a passwordless product |
4 | 4 |
|
5 | | -This sanitized real-world sequence shows why Boatstack asks questions before it turns a request into code. |
| 5 | +**For:** someone who wants to see why Boatstack asks questions before code. |
| 6 | +**Outcome:** follow a real product conflict through decision, approval, repair, and PR preparation. |
6 | 7 |
|
7 | | -## Intent collides with repository reality |
| 8 | +This is a sanitized product-repository sequence. It demonstrates observed behavior, not a benchmark claim about Boatstack's overall performance. |
8 | 9 |
|
9 | | -The product request was: |
| 10 | +## The request conflicts with the product |
| 11 | + |
| 12 | +The request was: |
10 | 13 |
|
11 | 14 | ```text |
12 | 15 | Add a password reset button on the homepage. |
13 | 16 | ``` |
14 | 17 |
|
15 | | -Minimal repository inspection found passwordless email-code authentication, no password reset route, and copy promising that users needed no password. A literal implementation would have produced a button for a capability that did not exist. |
| 18 | +The repository used passwordless email-code authentication, had no password-reset route, and promised that users needed no password. A literal implementation would have created a button for a capability that did not exist. |
16 | 19 |
|
17 | | -`/auto-plan` therefore stopped and asked two product questions in plain text: |
| 20 | +Boatstack therefore stopped and asked: |
18 | 21 |
|
19 | 22 | ```text |
20 | 23 | Q-1 Clarify email-code recovery, introduce passwords, or choose another behavior? |
21 | 24 | Q-2 If passwords are introduced, do they replace email codes or sit alongside them? |
22 | 25 | ``` |
23 | 26 |
|
24 | | -The human chose password authentication alongside the existing passwordless flow. Those responses became `ANSWERED`; the repository facts were `DISCOVERED`. Boatstack did not treat its own recommendation as an answer. |
25 | | - |
26 | | -## Approval turns the choice into a bounded change |
| 27 | +The human chose password authentication alongside the existing passwordless flow. Repository facts were recorded as discovered; only the human responses became answered decisions. |
27 | 28 |
|
28 | | -The refined plan kept passwordless login, added password login and recovery routes, preserved passwordless signup, updated misleading copy, and required route and authentication tests. `/plan-gate` displayed the exact scope, non-goals, operational redirect gap, and fingerprint. An explicit `approve` created only `approval.md`. |
| 29 | +## Approval defines the change |
29 | 30 |
|
30 | | -After the host entered its execution-capable mode, `/build` activated that exact plan and implemented the feature. The targeted suite initially passed. |
| 31 | +The revised plan kept passwordless login, added password login and recovery routes, preserved passwordless signup, updated misleading copy, and required route and authentication tests. It also kept an operational redirect gap visible rather than implying it was solved. |
31 | 32 |
|
32 | | -## Review falsifies a completion claim |
| 33 | +The plan gate displayed the outcome, exclusions, decisions, checks, gaps, and exact fingerprint. The human replied `approve`. No product code changed until the host entered its execution mode and build activated that approved plan. |
33 | 34 |
|
34 | | -`/review-gate` inspected the actual diff and found that the reset screen accepted any authenticated session as proof of password recovery. A normally signed-in user could reach a form intended only for a recovery event. |
| 35 | +## Review finds what the tests missed |
35 | 36 |
|
36 | | -The gate returned `BLOCKED`. The implementation was repaired to unlock the form only for the recovery event, a regression test was added, and `/review-gate` then passed with the separate operator redirect gap still explicit. |
| 37 | +The targeted suite initially passed. Review then found that the reset screen accepted any authenticated session as proof of password recovery. An ordinarily signed-in user could reach a form intended only for a recovery event. |
37 | 38 |
|
38 | | -## Shipping respects repository boundaries |
| 39 | +Boatstack blocked progression. The implementation was repaired to unlock the form only for the recovery event, a regression test was added, and review passed with the separate operational gap still visible. |
39 | 40 |
|
40 | | -At `/ship-gate`, a pre-push type check failed in code unrelated to the approved feature. The correct response is to prove whether the failure exists on the base branch and then either: |
| 41 | +## Shipping keeps unrelated work separate |
41 | 42 |
|
42 | | -1. repair it in a separate PR; or |
43 | | -2. use a repository-policy bypass only with explicit human authorization and recorded evidence. |
| 43 | +At ship time, a pre-push type check failed in code unrelated to the feature. The correct choices were to prove it existed on the base branch and then either repair it separately or use a repository-policy bypass with explicit human authorization. |
44 | 44 |
|
45 | | -Changing unrelated code in the feature branch would silently widen the approved scope. |
| 45 | +Silently editing unrelated code would have widened the approved feature and made the PR harder to review. |
46 | 46 |
|
47 | | -## What this demonstrates |
| 47 | +## What the sequence shows |
48 | 48 |
|
49 | 49 | ```text |
50 | | -vague intent |
51 | | - -> discover conflicting repository fact |
52 | | - -> ask the product owner |
53 | | - -> approve one observable slice |
54 | | - -> build freely inside that boundary |
55 | | - -> let evidence force a local repair |
56 | | - -> keep unrelated repository failures outside the feature |
| 50 | +vague request |
| 51 | + -> discover a product conflict |
| 52 | + -> ask the person responsible |
| 53 | + -> approve one clear change |
| 54 | + -> build |
| 55 | + -> let evidence force a repair |
| 56 | + -> keep unrelated failures outside the feature |
57 | 57 | ``` |
58 | 58 |
|
59 | | -The value did not come from a larger prompt. It came from preserving the original intent, separating discovered facts from human decisions, and requiring the implementation to survive an evidence boundary before shipping. |
| 59 | +The safeguard behavior is covered by planning, approval, review, and PR-projection tests. Whether the complete Boatstack workflow improves product-delivery success remains a separate paired evaluation. |
| 60 | + |
| 61 | +Next: [install and ship a first feature](getting-started.md) or read [why these steps exist](why-these-steps.md). |
0 commit comments