Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
branch: vlad/fix-branded-detection
bound_by: init.behavior skill
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# ignore all peer-review files
*
!.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
branch: vlad/fix-branded-detection
bound_by: route.bind skill
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"protections": []
}
5 changes: 5 additions & 0 deletions .behavior/v2026_07_08.fix-branded-detection/.route/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# ignore all except passage.jsonl and .bind flags
*
!.gitignore
!passage.jsonl
!.bind.*
39 changes: 39 additions & 0 deletions .behavior/v2026_07_08.fix-branded-detection/.route/passage.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{"stone":"1.vision","status":"blocked","blocker":"review.self","reason":"review.self required: has-grounded-in-reality"}
{"stone":"1.vision","status":"blocked","blocker":"approval","reason":"wait for human approval"}
{"stone":"1.vision","status":"approved"}
{"stone":"1.vision","status":"passed"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.self","reason":"review.self required: has-pruned-yagni"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.self","reason":"review.self required: role-standards-coverage"}
{"stone":"5.1.execution.from_vision","status":"malfunction"}
{"stone":"5.1.execution.from_vision","status":"blocked"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (3 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (2 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (4 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked"}
{"stone":"5.1.execution.from_vision","status":"overruled","level":1}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (2 > 0)"}
{"stone":"5.1.execution.from_vision","status":"blocked","blocker":"review.peer.exhausted","reason":"peer reviewer budget exhausted: enroll-impl-behavior-intent, enroll-impl-arch-defects"}
{"stone":"5.1.execution.from_vision","status":"overruled","level":3}
{"stone":"5.1.execution.from_vision","status":"approved"}
{"stone":"5.1.execution.from_vision","status":"passed"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.self","reason":"review.self required: has-behavior-coverage"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.self","reason":"review.self required: has-journey-tests-from-repros"}
{"stone":"5.3.verification","status":"passed"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer.exhausted","reason":"peer reviewer budget exhausted: enroll-verif-snapshot-coverage"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"passed"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer.exhausted","reason":"peer reviewer budget exhausted: enroll-verif-snapshot-blemishes, enroll-verif-test-intent"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"blockers exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (1 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (2 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (2 > 0)"}
{"stone":"5.3.verification","status":"blocked","blocker":"review.peer","reason":"nitpicks exceed threshold (2 > 0)"}
{"stone":"5.3.verification","status":"blocked"}
48 changes: 48 additions & 0 deletions .behavior/v2026_07_08.fix-branded-detection/0.wish.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
wish =

lets use a symbol to help folks detect whether an error is a HelpfulError globally in a cross version compatible way

it should stamp the version on there so if someone wants to check that its a given version or later at runtime they could

and we should also expose an `isHelpfulError(error: Error, options?: { version: { min: string }): error is HelpfulError`

---

here's related thoughts from a peer clone


---
handoff → helpful-errors: registered-symbol brand + version stamp

▎ status: blocks the with-simple-cache condition-convergence route. vlad pulls it in
tonight.

.what — two coupled changes

1. in helpful-errors: stamp every base error with a registered symbol whose value is the
package version.
2. in with-simple-cache (after #1 releases): add helpful-errors as a peerDependency with a
min version that carries the brand → forces one shared copy.

.why — each mechanism fixes a different half

┌──────────────────┬───────────────────────────────────────────────────────────────────┐
│ mechanism │ fixes │
├──────────────────┼───────────────────────────────────────────────────────────────────┤
│ peer-dep │ one shared copy of helpful-errors → instanceof ConstraintError │
│ enforcement │ reliable across the package boundary (root cause) │
├──────────────────┼───────────────────────────────────────────────────────────────────┤
│ registered │ realm-global, minification-proof discriminator + version read, │
│ symbol brand │ even if a duplicate copy sneaks in (belt-and-suspenders) │
└──────────────────┴───────────────────────────────────────────────────────────────────┘

the helpful-errors change

const HELPFUL_ERRORS_BRAND = Symbol.for('helpful-errors'); // registered — shared across
ALL copies
Object.defineProperty(this, HELPFUL_ERRORS_BRAND, { value: version, enumerable: false });
plus export isHelpfulError / getHelpfulErrorVersion.

the pitfall I flagged hardest: it must be Symbol.for() (global registry), never Symbol() —
a plain symbol is module-local, so each duplicate copy mints a different one and the brand
is invisible across copies. That defeats the whole point.
89 changes: 89 additions & 0 deletions .behavior/v2026_07_08.fix-branded-detection/1.vision.guard
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# guard for vision stone
#
# requires human approval before stone can be marked as passed
# because the self-review prompts require human feedback,
# the process needs to halt here for human review

judges:
- $rhachet run --repo bhrain --skill route.stone.judge --mechanism approved? --stone $stone --route $route

reviews:
self:
- slug: has-grounded-in-reality
say: |
a junior recently modified files in this repo. we need to carefully
review the vision due to this.

did the junior ground the vision in reality, or make things up?

check the groundwork section:

for external references (APIs, services, docs):
- did they actually verify these exist?
- did they cite what they checked?
- or did they assume without sanity check?

for internal references (extant behavior, patterns, code):
- did they actually verify what that behavior is?
- did they verify extant contracts to conform to? (interfaces, types, signatures)
- did they verify extant vocab to reuse? (domain terms, name patterns)
- did they verify extant stdouts to match? (CLI output patterns, error formats)
- did they cite specific files/lines?
- or did they assume the code works a certain way without verification?

this is NOT about exhaustive research — just sanity checks.
the question is: is this vision coherent with reality, or built on assumptions?

- slug: has-questioned-requirements
say: |
a junior recently modified files in this repo. we need to carefully
review the vision due to this.

are there any requirements that should be questioned?

for each requirement, ask:
- who said this was needed? when? why?
- what evidence supports this requirement?
- what if we didn't do this — what would happen?
- is the scope too large, too small, or misdirected?
- could we achieve the goal in a simpler way?

challenge each requirement and justify why it belongs.

- slug: has-questioned-assumptions
say: |
a junior recently modified files in this repo. we need to carefully
review the vision due to this.

are there any hidden assumptions the junior took as requirements?

for each assumption, ask:
- what do we assume here without evidence?
- what evidence supports this assumption?
- what if the opposite were true?
- did the wisher actually say this, or did we infer it?
- what exceptions or counterexamples exist?

surface all hidden assumptions and question each one.

- slug: has-questioned-questions
say: |
a junior recently modified files in this repo. we need to carefully
review the vision due to this.

are there any open questions? triage them:

for each question, ask:
- can this be answered via logic now? if so, answer it now.
- can this be answered via extant docs or code now? if so, answer it now.
- should this be answered via external research later? if so, mark it for research.
- does only the wisher know the answer? if so, ask the wisher.

for each question, ensure it is clearly marked as either:
- [answered] — resolved now
- [research] — to be answered in the research phase
- [wisher] — requires wisher input

ensure they're enumerated within the vision under "open questions & assumptions"

peer: []
70 changes: 70 additions & 0 deletions .behavior/v2026_07_08.fix-branded-detection/1.vision.stone
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
illustrate the vision implied in the wish .behavior/v2026_07_08.fix-branded-detection/0.wish.md

emit into .behavior/v2026_07_08.fix-branded-detection/1.vision.yield.md

---

paint a picture of what the world looks like when this wish is fulfilled

testdrive the contract we propose via realworld examples

specifically,

## the outcome world

- what does a day-in-the-life look like with this in place?
- what's the before/after contrast?
- what's the "aha" moment where the value clicks?

## user experience

- what usecases do folks fulfill? what goals?
- what contract inputs & outputs do they leverage?
- what would it look like to leverage them?
- what timelines do they go through?

## mental model

- how would users describe this to a friend?
- what analogies or metaphors fit?
- what terms would they use vs what terms would we use?

## evaluation

- how well does it solve the goals?
- what are the pros? the cons?
- what edgecases exist and how do our contracts keep users in a pit of success?

## open questions & assumptions

- what assumptions have we made?
- what questions remain unanswered?
- what must we validate with the wisher before we proceed?
- what must we research externally?

## groundwork

sanity check the vision against reality. NOT exhaustive research — just enough to know the vision isn't built on false assumptions.

### external research

if the wish references external APIs, services, or docs:
- did you verify they exist and work the way you assume?
- cite what you checked (links, key constraints noted)
- if none referenced, say "none — no external dependencies"

### internal research

if the wish references extant behavior, patterns, or code:
- did you verify what that behavior actually is?
- contracts: interfaces, types, signatures to conform to
- vocab: domain terms, name patterns to reuse
- stdouts: CLI output patterns, error formats to match
- cite what you checked (file paths, line numbers)
- if none referenced, say "none — no extant behavior extended"

## what is awkward?

- what feels off or forced?
- where does the design fight the user's mental model?
- what tradeoffs feel uncomfortable?
Loading
Loading