RPS V1 PR2: Wall Detective-pack — 5th status + confirm-gate Survey rule#147
Merged
Conversation
…esolvedDisconfirmation helpers
Adds the data-model substrate for the Survey confirm-gate rule (PR-RPS-2 §5
category 1 + §6 row 3): Findings now carry an explicit `evidenceType` tag
('data' | 'gemba' | 'expert') and a `refutes?` boolean; Hypothesis tracks
`disconfirmationAttempts[]`. Helpers `evidenceTypesForHypothesis()` +
`hasUnresolvedDisconfirmation()` ride on top in `findings/hypothesisEvidence.ts`.
Cascade fixture updates apply `evidenceType: 'data'` defaults across packages
(data fixtures, hook tests, ui tests, app tests, azure 3-way merge) — required
by the no-back-compat / direct-refactor stance (spec D15, feedback memory).
…efutes in 3-way merge Barrel-exports evidenceTypesForHypothesis + hasUnresolvedDisconfirmation from packages/core/src/findings/index.ts so Task 8 (survey/wall.ts) can import via the package boundary. Clarifies hasUnresolvedDisconfirmation JSDoc to make explicit it covers only the "pending attempt" half of needs-disconfirmation. Adds refutes to mergeSingleFinding() following the evidenceType pattern (status-winner rule) so Finding.refutes is no longer silently dropped on 3-way merge in apps/azure/src/services/merge.ts. Co-Authored-By: ruflo <ruv@ruv.net>
…ep-away hints Extends packages/core/src/survey/ with the RPS V1 rule-layer API surface (second coexisting surface alongside the existing data-affordance evaluator). - survey/types.ts: append SurveyHintKind, SurveyHint, SurveyContext, SurveyRule types for the cross-phase rule registry. Existing SurveyStatus, SurveyEvaluation, etc. untouched. - survey/wall.ts: pure deriveHypothesisStatus() 5-state logic (proposed→evidenced→ needs-disconfirmation→confirmed; refuted wins immediately) + surveyWallRules SurveyRule emitting triangulation-readiness hints for needs-disconfirmation hypotheses. - survey/index.ts: module-level doc comment explaining dual API surfaces; new exports appended; all existing exports preserved. - survey/__tests__/wall.test.ts: 8 tests (5 from plan + 3 surveyWallRules cases), all green. Co-Authored-By: ruflo <ruv@ruv.net>
…ment in survey - evidenceTypesForHypothesis already returns Set<FindingEvidenceType> constrained to 'data' | 'gemba' | 'expert' — the inline filter was dead code that misled readers into thinking 'unvalidated' could appear. - Removed inline comment that duplicated the JSDoc above SurveyContext. - Switched wall.ts import to the findings barrel. Co-Authored-By: ruflo <ruv@ruv.net>
…p-away badge - Add OneStepAwayBadge component (foreignObject/HTML, amber contrast-paired) - Render badge in HypothesisCard only at lod=full + displayStatus=needs-disconfirmation - Add ONE_STEP_AWAY_Y=160 constant (body-rect bottom gap, avoids all existing text rows) - Add i18n key wall.card.oneStepAway to MessageCatalog type + all 32 locale files - TDD: HypothesisCard.statusDerivation.test.tsx covers full/glyph/medium LOD + non-matching status Co-Authored-By: ruflo <ruv@ruv.net>
…lear layout OneStepAwayBadge now occupies the open-checks row (y=168, h=20, span 168–188) instead of the old overlapping y=160 position. openChecksLabel is suppressed when isOneStepAway; rendered as before otherwise. nextMove text at y=204 has 4px clearance below badge bottom. Two new test cases assert mutual exclusion. Co-Authored-By: ruflo <ruv@ruv.net>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
jukka-matti
added a commit
that referenced
this pull request
May 13, 2026
…80, log shipment All 10 PRs of Response Path System V1 merged on main 2026-05-09 → 2026-05-13 (#144 / #147 / #148 / #149 / #150 / #151 / #152 / #153 / #154 / #155). This commit syncs tracking docs that the squash merges left stale: - docs/roadmap.md: PR-RPS-9 + PR-RPS-10 SHIPPED rows; flip §3 to "10 of 10"; free up ADR-080 slot from the 8f canvas viewport item (taken by Sustainment) - docs/decision-log.md: pin "2026-05-13 — RPS V1 SHIPPED — full lifecycle live" - docs/07-decisions/adr-080-sustainment-auto-fire-pattern.md (new): document the Sustainment-shaped lifecycle pattern (auto-fire + Inbox prompt + signoff tier gate) as a pattern reference for future response-path lifecycles, per plan §PR-RPS-9 ledger line 2231 - docs/07-decisions/index.md: add rows 078 / 079 / 080 (078+079 also weren't indexed when shipped) - Spec + plan frontmatter: draft/active → delivered, last-reviewed 2026-05-13 Co-Authored-By: ruflo <ruv@ruv.net>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements PR-RPS-2 of the Response Path System V1 plan: the 5th hypothesis status
needs-disconfirmation+ confirm-gate Survey rule (per spec §6 row 3 + §5 categories 1+3).Hypothesis.disconfirmationAttempts?field +Finding.evidenceType(required) +Finding.refutes?— closes the schema gap the plan's TDD code implicitly required.deriveHypothesisStatus(h, findings)— pure 5-state derivation:refuted(any refuting finding) →proposed(no findings) →evidenced(<2 distinct evidence types) →needs-disconfirmation(≥2 types, nosurvivedattempt) →confirmed(≥2 types +survivedattempt).surveyWallRulesrule emits one "1 step away" hint perneeds-disconfirmationhypothesis.OneStepAwayBadgeUI replacesopenChecksLabelslot onHypothesisCardwhen status isneeds-disconfirmationat full LOD.Survey module now hosts two coexisting API surfaces:
evaluateSurvey()→SurveyEvaluation(Possibility/Power/Trust)SurveyHint[]per surfaceA module-level doc comment in
survey/index.tsmakes the dual-surface coexistence explicit.Plan-grounding extension (caught at task 7)
Plan §Task 7 / §Task 8 TDD code reads
Finding.evidenceTypeandFinding.refuteswhich didn't exist onFinding(only onCausalLink). Per spec §5 row 396 ("H1 has data only — needs gemba walk to triangulate") + §6 row 3 ("≥2 evidence types"), evidence-type tagging belongs on Finding. Added both fields with sensible defaults; cascade is 46 mechanical fixture one-liners (evidenceType: 'data',) plus 3 substantive files:findings/types.ts,findings/factories.ts,apps/azure/src/services/merge.ts(3-way merge correctly carries the new fields perfeedback_fix_absorbed_violations_at_seam).Test plan
pnpm --filter @variscout/core test hypothesisEvidence— 10/10pnpm --filter @variscout/core test survey— 16/16 (8 wall + 8 existing evaluator)pnpm --filter @variscout/ui test HypothesisCard— 25/25 (3 files)pnpm --filter @variscout/core build— cleanpnpm --filter @variscout/ui build— cleanbash scripts/pr-ready-check.sh— all 5 steps green (tests + lint + docs:check + pwa build + dist integrity)--chromewalk to verify badge renders correctly on aneeds-disconfirmationhypothesis card (pending — UI change is small enough that visual is straightforward, but should be done before merge perfeedback_verify_before_push)Commits
0e2f842afeat(core): Hypothesis.disconfirmationAttempts + evidenceTypes/hasUnresolvedDisconfirmation helpers24e8b77ffix(core,azure): export hypothesisEvidence helpers + handle Finding.refutes in 3-way mergefff1dd2efeat(core): Survey wall rules — deriveHypothesisStatus 5-state + 1-step-away hints2e9f5dc6fix(core): drop redundant evidence-type filter + duplicate inline comment in survey21920548feat(ui): HypothesisCard renders needs-disconfirmation status + 1-step-away badge0d2ee6c2fix(ui): badge replaces openChecksLabel for needs-disconfirmation — clear layoutPlan:
docs/superpowers/plans/2026-05-09-response-path-system-v1.md§"PR-RPS-2"Spec:
docs/superpowers/specs/2026-05-09-response-path-system-v1-design.md§6 + §5🤖 Generated with ruflo