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
4 changes: 3 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,9 @@ 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. 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 (ADR 0020). 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
3 changes: 2 additions & 1 deletion CHANGELOG.d/0.86.0-related-nodes-team-org-walk.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Related-node walks include team and organization mention edges. Click an
R&R team to open sibling posts. Thread-group run lists honor knowledge_cutoff.
Failed period-report rows rebuild the report; a pending TEPP corpus
does not claim a calibrated measurement.
does not claim a calibrated measurement. Pending list copy is
kind-specific (ADR 0020).
3 changes: 3 additions & 0 deletions CHANGELOG.d/0.86.3-kind-specific-pending-next-actions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Pending TEPP next-action copy does not say reconstruction. List
accessible names include the next-action sentence. Detail repeats it
(ADR 0020).
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ 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.86.3] - 2026-08-16
Comment thread
cursor[bot] marked this conversation as resolved.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0.86.3 is not available for this slice. #145 already shipped v0.87.0 on the same base, and #153 claims 0.86.3 for person catalog ids. #148 recorded the kind-specific pending pin without a version bump. After rebase, bump only if the AccName-only remainder is what lands — do not republish the already-merged copy change as 0.86.3.


### Fixed

- Pending analysis-run next actions are kind-specific. A pending TEPP
row tells the operator measurement has not started — it does not say
reconstruction. The list button accessible name includes that
sentence (WCAG 2.2 SC 4.1.2). Open the row: detail repeats it
(ADR 0020).

## [0.86.2] - 2026-08-16

### Fixed
Expand Down
4 changes: 3 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ 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.
pending TEPP row does not claim a calibrated measurement and does
not say reconstruction (ADR 0020). The list button name includes the
next-action sentence.
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
3 changes: 2 additions & 1 deletion docs/adr/0014-authorized-analysis-run-read.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ 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. The detail now shows the legal
measurement and must not say reconstruction (ADR 0020). The list
button accessible name includes the next-action sentence. 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 Down
52 changes: 52 additions & 0 deletions docs/adr/0020-kind-specific-pending-next-actions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# ADR 0020 — Pending next actions stay kind-specific and audible

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This number is already taken on the same #74 base. #154 c0a37a1 has docs/adr/0020-analysis-run-retention-purge.md plus migration 0020_analysis_run_retention_purge.sql, and its AGENTS.md publishes ADR 0020 as the grant+admin purge (v0.87.0). tests/test_documentation_hygiene.py fails if two 0020-*.md files land together.

The pending-copy decision itself is the right buyer gap. Keep v0.86.3. Rename this file and every ADR 0020 citation in this PR to 0021. Do not steal v0.87.0 from #154.

Comment thread
cursor[bot] marked this conversation as resolved.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not land this file. ADR 0020 on current feat/role-responsibility-agent-ontology (69c035bb) is granted retention purge (0020_analysis_run_retention_purge.sql, v0.87.0, merged #145). Renaming this decision to 0021 still collides with open #153 (person catalog persist). Fold the AccName rule into ADR 0014 on a rebase of current tip. A second 0020-*.md fails tests/test_documentation_hygiene.py.


**Decision status:** Accepted on this active PR; not protected-main truth until merge
**Date:** 2026-08-16
**Depends on:** ADR 0014 authorized analysis-run read; ADR 0017 authorized
analysis-run create
**Refs:** Merged #128 left pending copy kind-blind; #138 is the same
slice on `main` and must not be duplicated onto this #74 stack

## Context

#128 pinned Failed next-action copy to the registered kinds
(`analysis_run_lineage`, `analysis_run_tepp`, `analysis_run_report`).
Pending rows still used one sentence: "Reconstruction has not started
yet." A Pending TEPP row therefore told the operator to wait for
reconstruction. The list button's `aria-label` also replaced the
visible next-action, so assistive technology only heard the caption
(W3C, 2018, 2023).

#142 owns in-process lineage start. This decision does not start a
run, invent a theta, or add Storybook.

## Decision

- `analysisRunNextAction` switches on both `status_code` and
`run_kind_code`. Pending TEPP says measurement has not started and
is not a calibrated result. Pending report says the report has not
been built. Pending lineage keeps the reconstruction sentence.
- The list button accessible name is
`Open analysis run: {caption}. {nextAction}` when a next action
exists, otherwise the caption alone.
- Detail repeats the same next-action sentence after the title so
opening a Failed or Pending row still tells the operator what to do.
- Running, succeeded, and cancelled rows keep list next-action empty.
TEPP corpus copy already covers those states on detail.

## Consequences

After `make seed`, open the Failed TEPP row: the list name includes
"connect the measurement service." Request a lineage reconstruction:
the Pending lineage row still says reconstruction has not started.
A Pending TEPP fixture must not say Reconstruction.

## References — APA 7th

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 0020; WCAG 2.2 SC 4.1.2). |
| 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, and exclusion of raw source/provider payloads. |
Expand Down Expand Up @@ -102,5 +102,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/
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.86.2",
"version": "0.86.3",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
Loading