Skip to content
Draft
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
7 changes: 7 additions & 0 deletions .changeset/a-practice-says-why-it-has-nothing-to-say.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"hephaestus": minor
---

Your practice feedback now lists every practice your workspace reviews, not only the ones that raised something. A practice with nothing to report says which kind of nothing it is: either no review has reached it yet, or the reviews ran and your work offered no relevant occasion. Those are different answers to "how am I doing here", and until now both looked like an absent row. Practices with actual feedback still come first, worst first; the quiet ones sort to the end.

An area's standing is now read straight off its practices, including the quiet ones, so the summary at the top of an area and the cards beneath it can no longer tell different stories.
9 changes: 9 additions & 0 deletions .changeset/a-trend-only-claims-what-it-can-show.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"hephaestus": minor
---

A practice's direction now only ever says that something is moving, never that nothing is. "Broadly consistent lately" is gone: showing it needs far more reviewed work than a practice normally accumulates, and the honest reading of eight work items is that no direction is visible yet — which is what "Direction unclear" already says. The early-indication marker beside a direction is gone too; it labelled a difference that never changed which direction was shown.

A direction now appears once eight work items have exercised the practice — four to compare against the four before them — instead of seven with one side thinner than the other.

And a single setback no longer reads as though a habit had slipped. One problem on your newest work item moves a practice from doing well to mixed; it takes two in a row to read as needing attention, mirroring the two clean items it already takes to earn a strength back.
5 changes: 5 additions & 0 deletions .changeset/an-area-says-which-kind-of-silence-it-is.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": patch
---

Fixes a practice area reporting "not observed" after reviews had in fact run and found nothing to judge. An area whose practices all looked at your work but had no relevant opportunity in it now says so, instead of claiming nothing was ever reviewed. Reviews that could not settle a question count the same way — the practice looked, so the area no longer reads as unconfigured.
5 changes: 5 additions & 0 deletions .changeset/an-undecided-review-still-shows-up.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": patch
---

A review that looked at your work and could not decide now appears in the practice-area history as undecided, instead of being served with a verdict it never reached. A practice that ran and hedged is no longer indistinguishable from one that never ran.
5 changes: 5 additions & 0 deletions .changeset/feedback-says-which-kind-of-good-or-bad-it-is.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": minor
---

Each piece of practice feedback now says what kind it is: a behaviour you demonstrated, a trap you avoided, something harmful that was done, or something needed that was left out. Reading a strength no longer means guessing whether you did the good thing or steered clear of the bad one — and the two kinds call for different responses.
5 changes: 5 additions & 0 deletions .changeset/feedback-survives-an-interrupted-review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": patch
---

Feedback about a practice no longer disappears when a later review of the same work never got to that practice. A review that was skipped for partial evidence, refused, timed out or ran out of budget covers fewer practices than the one before it, and the untouched practices' earlier findings were being dropped as though the newer review had reconsidered them — so an interrupted review looked exactly like a fixed habit. A later review now replaces only what it actually re-examined. The same holds per person: a review that had something to say about one contributor no longer clears what an earlier one found about another. Re-reviewing the same work with the same practice still replaces the earlier verdict, as before.
5 changes: 5 additions & 0 deletions .changeset/practice-area-profile-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": minor
---

The application API can now answer where a developer stands in each practice area: the current standing and the guidance behind it, how the area has developed across recently reviewed work, which kinds of work the feedback came from, a filterable list of that feedback, and the complete review moments that produced it. It also accepts marking a delivered piece of feedback as helpful, unhelpful, or incorrect, with an optional explanatory comment. Every one of these answers only for the signed-in developer. There is no way to request another person's standing. Nothing changes in the app yet; the screens that read this arrive separately.
5 changes: 5 additions & 0 deletions .changeset/practice-standing-recent-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": minor
---

Where you stand on a practice now follows your most recently reviewed work instead of the whole 90-day record. Two problem-free work items in a row are enough for a practice to read as going well again, so fixing a habit becomes visible within two reviews — and a problem on your newest work item registers just as quickly. How much of the work went well is counted rather than merely whether anything went wrong, so a single problem among otherwise clean reviews no longer weighs the same as a run of them. The list of feedback below the standing is unchanged: it stays the complete record of what the window raised, while the standing above it describes where things stand now.
5 changes: 5 additions & 0 deletions .changeset/practice-trend-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": minor
---

A practice area now reports how it has developed: recent evidence compared with earlier reviewed work, and how much evidence stands behind the direction it shows. When the reviewed work is too thin to support any direction, it says so instead of showing one — a direction and an absence of evidence are never presented as the same thing.
5 changes: 5 additions & 0 deletions .changeset/practices-can-count-for-more-in-their-area.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"hephaestus": minor
---

A practice can now count for more or less than its peers when its area is summarised. The weight applies to both halves of the area view — the standing and the direction it is heading — so an area led by the practices you care most about reads as those practices do. A weight of zero withdraws a practice from its area's summary entirely while leaving it fully reviewed, with its own card, standing and feedback unchanged: not counting toward the area is a different thing from not being looked at. Every practice starts at the neutral weight, so nothing changes until you set one.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ nosetests.xml
# OpenCode builder mission files (per-worktree, ephemeral)
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
**/out/
# Local document exports (plans, PDFs) — not part of the codebase
output/
parts/
# pdm
#pdm.lock
Expand All @@ -152,6 +154,8 @@ pip-delete-this-directory.txt
# pipenv
#Pipfile.lock
pip-log.txt
# pnpm's content-addressable store when store-dir resolves inside the repo
.pnpm-store/
# poetry
#poetry.lock
postgres-data-temp-*/
Expand Down
10 changes: 10 additions & 0 deletions docs/contributor/erd/schema.mmd
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,14 @@ erDiagram
UUID chat_message_id FK
}

FeedbackRating {
UUID feedback_id PK,FK
VARCHAR(16) state "NOT NULL"
TEXT comment
TIMESTAMPTZ created_at "NOT NULL"
TIMESTAMPTZ updated_at "NOT NULL"
}

FxRate {
BIGINT id PK
DATE rate_date UK "NOT NULL"
Expand Down Expand Up @@ -842,6 +850,7 @@ erDiagram
VARCHAR(96) source_curated_fingerprint
JSONB automated_review_policy "NOT NULL"
VARCHAR(16) autonomy
DOUBLE area_weight "NOT NULL"
}

PracticeArea {
Expand Down Expand Up @@ -1430,6 +1439,7 @@ erDiagram
%% One-to-One relationships
ChatMessage ||--|| ChatMessageVote : has
DiscussionComment ||--|| Discussion : references
Feedback ||--|| FeedbackRating : has
PracticeRevision ||--|| Practice : references
Workspace ||--|| PracticeCatalogInstallation : has
PullRequestReviewComment ||--|| PullRequestReviewThread : reviewed
Expand Down
Loading
Loading