Skip to content
Closed
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
12 changes: 9 additions & 3 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,11 @@ measurement service) so `tepp_not_available` is not mistaken for a
calibrated negative result. A failed lineage row tells the operator
to retry reconstruction, not to connect TEPP. A failed period-report
row tells the operator to rebuild the report. A pending TEPP row
does not claim a calibrated measurement. A pending lineage row
says reconstruction has not started yet. The
does not claim a calibrated measurement and does not say
reconstruction. The list button accessible name includes the
next-action sentence; detail repeats it. Calendar, period-report,
and post-list buttons follow the same AccName rule for their
visible due date, θ, and labels (ADR 0024). The
payload is lookup labels plus non-negative aggregate counts -- never
source SQL, a DSN, a raw record, or a provider body. After `make seed`,
Demo Analyst and Demo Admin see "Lineage reconstruction · Succeeded ·
Expand Down Expand Up @@ -572,7 +575,10 @@ bank as the dummy high/low band rows, so comparison-strip click
through opens those DAG posts. Report members include the earliest
open ticket title, status lookup label, and due date when one exists. The home page renders
the actual mean θ, the FIPC delta, the CAT-selected item, and the
PU / corp / thread comparison -- never a placeholder. TEPP is unchanged.
PU / corp / thread comparison -- never a placeholder. Those same
facts stay in each list-button accessible name (ADR 0024) so a
screen reader can pick the due commitment or the higher-θ post.
TEPP is unchanged.

## Phase 6b: Knowledge Graph as a real Ontology + Semantic Layer

Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.d/0.87.1-audible-list-next-actions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
List-button accessible names include the next-action sentence.
Pending TEPP corpus copy does not say the run has already started.
1 change: 1 addition & 0 deletions CHANGELOG.d/0.87.2-home-list-accessible-names.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Home calendar, report, and post-list accessible names include the visible due date, θ, status, and labels.
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,25 @@ All notable changes to this project are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versioning follows
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.87.2] - 2026-08-16

### Fixed

- Home calendar, period-report, and post-list buttons keep the visible
due date, θ, status, and labels in the accessible name (WCAG 2.2
SC 4.1.2). Open a commitment: the name includes “due 2026-01-12”.
Open a report post: the name includes θ and the ticket. A post-list
name includes Voice of Customer and Public.

## [0.87.1] - 2026-08-16

### Fixed

- Analysis-run list buttons keep the next-action sentence in the
accessible name (WCAG 2.2 SC 4.1.2). Open a Failed TEPP row: the
name includes “connect the measurement service.” A Pending TEPP
corpus no longer says the run has already started finishing.

## [0.87.0] - 2026-08-16

### Added
Expand Down
9 changes: 7 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,13 @@ theta or a local psychometric substitute. The home list caption stays
(ADR 0014). Open a Failed TEPP row, then connect a live TEPP
transport. A failed lineage row retries reconstruction -- it does not
mention TEPP. A failed period-report row rebuilds the report. A
pending TEPP row does not claim a calibrated measurement. A pending
lineage row says reconstruction has not started yet.
pending TEPP row does not claim a calibrated measurement and does
not say reconstruction. A pending lineage row still says
reconstruction has not started. The list button name includes the
next-action sentence.
Home calendar, period-report, and post-list buttons include the
visible due date, θ, status, and labels in the accessible name
(ADR 0024).
Digest prefixes stay audible; hover a prefix to read the full digest.
Opening a cutoff title shows the live post -- compare it with the
cutoff before treating the body as reconstructed evidence (ADR 0016).
Expand Down
15 changes: 13 additions & 2 deletions docs/adr/0014-authorized-analysis-run-read.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,11 @@ service. A failed lineage row tells the operator to retry
reconstruction, not to connect TEPP. A failed period-report row
tells the operator to rebuild the report from a current snapshot.
A pending or running TEPP row must not claim a calibrated
measurement. A pending lineage row says reconstruction has not
started yet. The detail now shows the legal
measurement and must not say reconstruction. A pending lineage row
says reconstruction has not started yet. The list button accessible
name includes the next-action sentence (WCAG 2.2 SC 4.1.2); detail
repeats it so opening a Failed or Pending row still tells the
operator what to do. The detail now shows the legal
lifecycle the registry already stored. `POST /api/analysis-runs` now
records a Pending run on an authorized cutoff capture (ADR 0017).
Reconstruction, a live TEPP transport, and a fuller Analysis Run
Expand All @@ -65,3 +68,11 @@ Educational Research Association.
Lebo, T., Sahoo, S., & McGuinness, D. (Eds.). (2013). *PROV-O: The PROV
ontology* (W3C Recommendation). World Wide Web Consortium.
https://www.w3.org/TR/2013/REC-prov-o-20130430/

World Wide Web Consortium. (2018). *Accessible name and description
computation 1.1* (W3C Recommendation).
https://www.w3.org/TR/accname-1.1/

World Wide Web Consortium. (2023). *Web content accessibility
guidelines (WCAG) 2.2* (W3C Recommendation).
https://www.w3.org/TR/WCAG22/
57 changes: 57 additions & 0 deletions docs/adr/0024-home-list-accessible-names.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# ADR 0024 — Home list accessible names include the visible next facts

**Decision status:** Accepted on this active PR; not protected-main truth until merge
**Date:** 2026-08-16
**Depends on:** ADR 0014 analysis-run list AccName
**Refs:** Issue #79 (Milestone 2 parent); WCAG 2.2 SC 4.1.2

## Context

ADR 0014 put the analysis-run next-action sentence in the list-button
accessible name after `aria-label` hid it. The same replacement still
hid the next facts on the other home lists:

- Calendar heard only the post title, not the commitment, status, or due date.
- Period-index buttons heard only the week code, not mean θ or the FIPC delta.
- Report-member buttons heard only the post title, not θ, ticket, or due date.
- Grouping-comparison buttons heard the raw `grouping_kind` wire code.
- The post list heard only the title, not VOC or visibility.

A buyer using a screen reader could not choose the commitment that is
due or the report post with the higher θ.

Parallel PRs may claim ADR 0021 (person catalog) and ADR 0023
(analysis-run home tokens). This decision uses the next free slot.

## Decision

Home list `aria-label` values include the same facts the sighted
operator already sees:

- Calendar: `Open commitment for: {post}. {summary}. {status}. due {date}`
- Period index: `Open report period {code}. mean θ {n}. {delta or shared metric}. CAT: …`
- Report member: `Open report post: {title}. θ {n}. {ticket}. {status}. due {date}`
- Comparison: `Compare {kind label}: {label}. mean θ {n}. {count} posts`
- Post list: `View post: {title}. {voc label}. {visibility label}.`

Copy uses lookup labels, not raw status or grouping wire codes. This
slice does not invent a theta, start reconstruction, or add a TEPP
transport.

## Consequences

After `make seed`, the Demo Corp commitment name includes
`due 2026-01-12`, the 2026-W03 period name includes `vs 2026-W02: +0.92`,
and the Public post list name includes Voice of Customer and Public.
Analysis-run AccName stays ADR 0014. Digest hover disclosure stays a
later slice.

## References

World Wide Web Consortium. (2018). *Accessible name and description
computation 1.1* (W3C Recommendation).
https://www.w3.org/TR/accname-1.1/

World Wide Web Consortium. (2023). *Web content accessibility
guidelines (WCAG) 2.2* (W3C Recommendation).
https://www.w3.org/TR/WCAG22/
5 changes: 4 additions & 1 deletion docs/doctoring/ANALYSIS_RUN_REGISTRY_REFERENCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
|---|---|---|
| W3C PROV-DM and PROV-O | Preserve identifiable entities, activities, agents, generation/use, and derivation without flattening provenance into display-only edges. | `analysis_source_snapshot`, `analysis_run`, authenticated requester, append-only status events, immutable digests; later product bindings continue to use the separate `provenance_*` layer from ADR 0011. |
| W3C Time Ontology in OWL | Keep temporal concepts explicit and avoid collapsing distinct clocks. | Evidence availability and snapshot capture remain on `analysis_source_snapshot`; analysis knowledge cutoff and request time remain on `analysis_run`; status occurrence and database record time remain distinct. `GET /api/analysis-runs/{id}` visible posts apply `created_at <= knowledge_cutoff` (ADR 0016). Opening a listed title warns that the live body may have changed after that cutoff. |
| W3C Accessible Name and Description Computation 1.1 | Do not let `aria-label` replace visible text the operator must hear. | Analysis-run digest prefixes live in a labeled group; the prefixes remain the accessible contents and the full digest is on `title` for hover verification. |
| W3C Accessible Name and Description Computation 1.1 | Do not let `aria-label` replace visible text the operator must hear. | Analysis-run digest prefixes live in a labeled group; the prefixes remain the accessible contents and the full digest is on `title` for hover verification. List-button names include the kind-specific next-action sentence (ADR 0014; WCAG 2.2 SC 4.1.2). Home calendar, report, and post-list names follow ADR 0024. |
| ISO 8601-1:2019 | Use unambiguous timestamp representation and timezone-aware persistence. | PostgreSQL `timestamptz` for availability, capture, cutoff, request, occurrence, and record clocks; tests use explicit `Z` offsets. |
| PostgreSQL 18 constraints and trigger contracts | Put integrity close to durable truth and use constraints for row shape while triggers enforce cross-row state and serialization. | Digest/check constraints, category allowlists, account-scoped uniqueness, shape constraints, immutable-row triggers, shared snapshot-row locking, and serialized status transitions. |
| NIST SP 800-92 | Treat audit records as bounded, protected operational evidence rather than unstructured application logging. | Append-only status events, machine failure codes, actor identity, occurrence/record clocks, fail-closed rollback, `invoking_session_role` on each retention event, and exclusion of raw source/provider payloads. |
Expand Down Expand Up @@ -117,5 +117,8 @@ Recommendation). https://www.w3.org/TR/prov-o/
World Wide Web Consortium. (2018). *Accessible name and description
computation 1.1* (W3C Recommendation). https://www.w3.org/TR/accname-1.1/

World Wide Web Consortium. (2023). *Web content accessibility
guidelines (WCAG) 2.2* (W3C Recommendation). https://www.w3.org/TR/WCAG22/

World Wide Web Consortium. (2022). *Time ontology in OWL* (W3C Recommendation).
https://www.w3.org/TR/owl-time/
44 changes: 44 additions & 0 deletions docs/doctoring/HOME_LIST_ACCESSIBLE_NAME_REFERENCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Home-list accessible-name standards and research traceability

**Status:** Active PR evidence; not protected-main truth until merge.
**Scope:** Calendar, period-report, comparison, and post-list buttons on
the product home page (ADR 0024). Analysis-run list names remain ADR 0014.

## Standards mapped to implementation

| Source | Product implication | Implemented evidence |
|---|---|---|
| W3C Accessible Name and Description Computation 1.1 | `aria-label` replaces descendant text; the name must include every visible fact the operator uses to choose a row. | `calendarCommitmentAccessibleName`, `reportPeriodAccessibleName`, `reportPostAccessibleName`, `reportCompareAccessibleName`, and `postListAccessibleName` in `frontend/src/App.tsx`. |
| WCAG 2.2 Success Criterion 4.1.2 Name, Role, Value | A button's programmatic name must identify the control. | Tests lock the Demo Corp due date, report θ, FIPC delta, and VOC/visibility labels in `getByRole` names. |
| ISO 8601-1:2019 | Due dates stay calendar dates, not localized prose. | Seeded commitments use `due 2026-01-12` / `due 2026-01-14`. |
| AERA, APA, & NCME (2014) *Standards* | Report θ remains a labeled estimate from TEPP/fast-mlsirm persistence; this slice does not invent a score. | AccName repeats the already-calibrated `theta_eap` / `mean_theta` the API returned. |

## Verification matrix

| Claim | Falsifiable test |
|---|---|
| Calendar name includes due date | `Open commitment for: Public post. … due 2026-01-12` is the button name. |
| Period name includes θ and FIPC delta | `Open report period 2026-W03. mean θ 0.92. vs 2026-W02: +0.92. …` is the button name. |
| Shared-metric week does not invent a delta | `Open report period 2026-W02. mean θ 0.00. shared metric. …` is the button name. |
| Report post name includes θ and ticket | `Open report post: Public post. θ 0.91. Send Northridge Grid the revised quote. Open. due 2026-01-12`. |
| Comparison uses the kind label, not the wire code | `Compare Process unit: Demo Report High. mean θ 0.81. 4 posts`. |
| Post list includes VOC and visibility | `View post: Public post. Voice of Customer. Public.` |

## APA 7th references

American Educational Research Association, American Psychological
Association, & National Council on Measurement in Education. (2014).
*Standards for educational and psychological testing*. American
Educational Research Association.

International Organization for Standardization. (2019). *ISO 8601-1:2019:
Date and time—Representations for information interchange—Part 1: Basic
rules* (confirmed 2024; Amendment 1:2022).

World Wide Web Consortium. (2018). *Accessible name and description
computation 1.1* (W3C Recommendation).
https://www.w3.org/TR/accname-1.1/

World Wide Web Consortium. (2023). *Web content accessibility
guidelines (WCAG) 2.2* (W3C Recommendation).
https://www.w3.org/TR/WCAG22/
2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
"version": "0.87.0",
"version": "0.87.2",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
Loading
Loading