-
Notifications
You must be signed in to change notification settings - Fork 0
FEAT-014: App Dashboard Extensions (v1.1) #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
41 commits
Select commit
Hold shift + click to select a range
457d5c2
FEAT-014: spec, plan, contracts, checklists, tasks (post-analyze reme…
ada6dbc
FEAT-014: post-analyze fixes (M1, M2) + remediation-verification chec…
f1c2747
AGENTS+CLAUDE: detect "Already In devBench" so Rule 2 doesn't gate in…
f921b12
FEAT-014: fold Clarifications R1 (16 Q/A + 7 notes)
5e19dac
FEAT-014: extend T003/T004/T010/T017/T024 for post-R1 FR coverage
0ec2d5c
FEAT-014: fold Clarifications R2 (7 Q/A + 7 notes); FR-028 added; +7 …
b1ee654
FEAT-014: extend T022 for FR-012 daemon-side symmetric forward compat…
36977f9
FEAT-014: document intentionality of the 4 LOW carry-over findings (U…
dbd1f3e
FEAT-014 MVP: PaneState + AgentState buckets, v1.1 bump (T001-T009 mi…
45e8ee1
FEAT-014: link _compute_pane_state_buckets FR-019 caveat to issue #28
47ad73b
FEAT-014: fold R3 + close analyze HIGH (F-019-PB-1) + 3 MEDIUM drift …
9f0ad69
FEAT-014: fold swarm code-review M1-M5 polish
768e2ca
FEAT-014: fold post-implement analyze residue (D-DRIFT-3 + R3 wording…
13759b1
FEAT-014: tick all 13 release-gate checklists (324/324 satisfied @ 76…
1e443ee
FEAT-014 T010: skip-counter ring buffer unit tests (TDD red phase)
0513ae4
FEAT-014 T011: US2 wire-level dashboard contract tests (TDD red)
f06023c
FEAT-014: fold post-T010/T011 analyze MEDIUMs (API shape + constant c…
0593ffa
FEAT-014 T013+T014+T015: US2 production wiring (route-skip telemetry)
7794b2a
FEAT-014 T016+T021+T022: US3 recommendation tests (RED) + US4 version…
37099bd
FEAT-014: fold post-T016 analyze MEDIUMs (T019 API surface + return t…
30e8429
FEAT-014 T017+T019+T023: US3 production + US4 SC-004 v1.0-compat regr…
3c6bf34
FEAT-014 T020+T025: US3 dashboard wiring + SC-005 omnibus shape test
8900e18
FEAT-014: fold L-T020-CLOCK (refreshed_at timestamp race)
2a9347f
FEAT-014 T026: cross-reference v1.1 from FEAT-011 contract docs
6032a9e
FEAT-014 T027: quickstart walkthrough validated — all 7 steps PASS
b982a8c
Issue #27: integration tests v1.0-hardcoded version-string cleanup
4f314e5
FEAT-014 T006+T012+T018: integration scenarios over real socket
4e242b1
FEAT-014 T024: SC-006 p95 latency + degraded waiver + FR-027 budget-miss
54fe774
Merge remote-tracking branch 'origin/main' into 014-app-dashboard-ext…
0dfa407
FEAT-014: fold full-branch swarm review (B1 BLOCK + M1-M8 + LOWs)
07959b8
FEAT-014: fold PR #29 review findings (P0 CI + P1 + Sourcery polish)
72d0217
FEAT-014: fold P1 dashboard-v1_1.md FR-019 strict-eq drift (follow-up…
02d97bf
FEAT-014: fold post-implement analyze findings (F1 + F2 + F3 + F5)
1fa9829
FEAT-014: fold PR review open findings (OR1-OR5 + codex P2 + analyze …
ddb0ef7
FEAT-014: fold analyze LOW doc-drift in plan.md (I1+I2)
b9636f9
FEAT-014: fold deep-swarm review of PR #29 (H1/H2/H3/H4/H5 + M6-M12 +…
44c2fc7
FEAT-014: fold swarm-review gaps — M11 double-run + remaining LOWs
f8305f1
FEAT-014: fold post-push reviewer findings (2×P1 + 2×P2 + Copilot)
7361b57
FEAT-014: fold 2nd-round reviewer findings (4×P2 + Copilot)
38cfce7
FEAT-014: fold deep-swarm review of PR #29 — all 60 confirmed findings
ce5cc4e
FEAT-014: fold post-swarm reviewer round (3×P2 + 2 Copilot)
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| { | ||
| "feature_directory": "specs/011-app-backend-contract" | ||
| "feature_directory": "specs/014-app-dashboard-extensions" | ||
| } |
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| # API Requirements Quality Checklist: App Dashboard Extensions v1.1 | ||
|
|
||
| **Purpose**: Audit requirements quality for the dashboard contract surface — response shape, fields, semantics, evolution rules, idempotency, and determinism. | ||
| **Created**: 2026-05-24 | ||
| **Feature**: [spec.md](../spec.md) | ||
|
|
||
| ## Contract Surface Completeness | ||
|
|
||
| - [X] CHK001 - Are all v1.1 additive fields enumerated by name at one canonical location in the spec? [Completeness, Spec §FR-001..§FR-009] | ||
| - [X] CHK002 - Is the response envelope structure (top-level keys around `counts`, `recommended_next_action`, `recommended_next_action_refreshed_at`) specified as either a referenced contract doc or an inline schema sketch? [Completeness, Gap] | ||
| - [X] CHK003 - Are required vs optional vs nullable distinctions made for every v1.1 field? [Completeness, Spec §FR-003, §FR-011, §FR-021] | ||
| - [X] CHK004 - Is the type of every numeric count (`integer`, signed/unsigned, bounds) specified? [Completeness, Spec §FR-003, §FR-007] | ||
| - [X] CHK005 - Are unit conventions for all duration fields stated (e.g., `_ms` suffix → milliseconds)? [Clarity, Spec §FR-007] | ||
|
|
||
| ## Response Field Clarity | ||
|
|
||
| - [X] CHK006 - Are the closed-set values for `recommended_next_action.code` listed exhaustively in FR-010 and matched in the Clarifications precedence note? [Completeness, Spec §FR-010, §Clarifications] | ||
| - [X] CHK007 - Is the closed set for `target.kind` listed exhaustively, including the v1.1 addition `subsystem`? [Completeness, Spec §FR-011] | ||
| - [X] CHK008 - Is the meaning of `target.id` per `target.kind` documented (e.g., for `target.kind == subsystem` what string forms are valid)? [Ambiguity, Spec §FR-011] | ||
| - [x] CHK009 - Are `title` and `detail` distinguishable in purpose so two different writers would generate the same prose for the same condition? [Clarity, Spec §FR-011] [EDIT-applied: contracts/closed-sets-v1_1.md §Per-code title/detail Templates] | ||
|
|
||
| ## Idempotency & Determinism | ||
|
|
||
| - [X] CHK010 - Is `app.dashboard` declared as a read-side, side-effect-free request? [Completeness, Gap] | ||
| - [X] CHK011 - Is "recomputed on every call" reconciled with a same-input-same-output determinism guarantee, so two concurrent callers see the same code when underlying state is unchanged? [Clarity, Spec §Clarifications Q8] | ||
| - [X] CHK012 - Is the precedence list specified as a strict total order so first-match resolution is unambiguous even for novel combinations of matching conditions? [Clarity, Spec §FR-010] | ||
| - [X] CHK013 - Is the case where multiple `target` candidates exist for a single code (e.g., multiple unadopted panes, multiple degraded subsystems) resolved by a documented selection rule? [Gap, Spec §FR-010, §FR-011] | ||
|
|
||
| ## Compatibility & Evolution | ||
|
|
||
| - [X] CHK014 - Is the additive-minor rule explicitly stated as a requirement on both the daemon side (always-emit) and the client side (ignore-unknown)? [Completeness, Spec §FR-012, §FR-014, §Clarifications Q10] | ||
| - [X] CHK015 - Is the v1.0→v1.1 contract version bump described in terms of an advertised supported minor range, not only a new value? [Clarity, Spec §FR-013] | ||
| - [X] CHK016 - Are removal/renaming prohibitions on v1.0 fields, methods, and error codes stated as MUST NOT, not soft preferences? [Completeness, Spec §FR-014] | ||
| - [X] CHK017 - Is the absence of a new capability flag stated as a deliberate requirement, not an oversight? [Completeness, Spec §FR-015] | ||
|
|
||
| ## Error Envelope & Exception Flow | ||
|
|
||
| - [X] CHK018 - Are dashboard read errors (e.g., method-level failure) specified separately from "recommendation compute failed" (which is success with nulls)? [Clarity, Spec §FR-021] | ||
| - [x] CHK019 - Is the response shape when the daemon advertises only v1.0 but is asked for v1.1 fields specified, or is it impossible by handshake construction? [Gap, Spec §FR-013] [EDIT-applied: contracts/dashboard-v1_1.md §Versioning Behavior now covers v1.0-daemon + v1.1-aware client] | ||
|
|
||
| ## Scenario Coverage | ||
|
|
||
| - [X] CHK020 - Are primary-path requirements (healthy daemon, mixed state) covered by US1/US2/US3? [Coverage, Spec §US1, §US2, §US3] | ||
| - [X] CHK021 - Are alternate-path requirements (v1.0 client against v1.1 daemon) covered by US4? [Coverage, Spec §US4] | ||
| - [X] CHK022 - Are exception/error requirements (compute failure, degraded subsystem, no containers) explicitly covered in FRs and acceptance scenarios? [Coverage, Spec §FR-021, §US3] | ||
| - [X] CHK023 - Are recovery requirements (post-restart skip counter, post-restart recommendation state) covered? [Coverage, Spec §FR-008, §Clarifications Q8] | ||
| - [X] CHK024 - Are non-functional requirements (latency budget) defined for the new fields specifically, not just inherited generally from v1.0? [Coverage, Spec §SC-006] | ||
|
|
||
| ## Documentation Quality | ||
|
|
||
| - [X] CHK025 - Is FR-016 specific enough to verify (which docs file, which sections, which closed-set value definitions must be added)? [Measurability, Spec §FR-016] | ||
|
|
||
| ## Plan & Design Alignment (re-verify 2026-05-24) | ||
|
|
||
| - [X] CHK026 - Does dashboard-v1_1.md document every v1.1 field with type, nullability, range/format, and a cross-reference to the FR or Clarifications source? [Completeness, Contracts dashboard-v1_1.md] | ||
| - [X] CHK027 - Is the per-code `target` rule table in data-model.md §RecommendedNextAction reflected in dashboard-v1_1.md §Field-by-Field, giving a wire-test author one source of truth instead of two? [Consistency, Data Model, Contracts dashboard-v1_1.md] | ||
| - [X] CHK028 - Does dashboard-v1_1.md's "no new error codes" statement match plan.md's "no new error code" constraint? [Consistency, Contracts dashboard-v1_1.md §Error Behavior, Plan §Constraints] | ||
| - [X] CHK029 - Are the v1.0 fields shown in dashboard-v1_1.md (for context only) consistent with FEAT-011's actual `app.dashboard` v1.0 contract, so future drift wouldn't mislead an implementer? [Risk, Contracts dashboard-v1_1.md] | ||
| - [X] CHK030 - Does closed-sets-v1_1.md mark v1.1 additions (specifically `subsystem` in TargetKind) so a future v1.2 reader can see what was added and when? [Clarity, Contracts closed-sets-v1_1.md §TargetKind] | ||
| - [X] CHK031 - Is the precedence-order table in closed-sets-v1_1.md §RecommendationCode in the same numeric order (1..7) as FR-010 and the Clarifications precedence note? [Consistency, Contracts closed-sets-v1_1.md] | ||
| - [X] CHK032 - Is the determinism guarantee from Research §CC reflected in the contract docs (so two implementers cannot disagree about whether concurrent calls may diverge)? [Coverage, Research §CC, Contracts dashboard-v1_1.md] |
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This gate still only runs
tests/unit, so none of the Story 1-5 integration/socket coverage added by this PR can actually block a merge.test_v1_0_compat.pydoes not backfill that gap either; it only replaystests/unit/test_app_*.py. As written, the wire-level contract regressions this PR is trying to guard against can go red without any required CI going red. Either add the relevant integration contract suite to required CI, or narrow the spec/test claims so they stop implying those stories are enforced here.