Skip to content

feat(ui): share one token-backed status notice - #643

Merged
seonghobae merged 5 commits into
mainfrom
feat/status-notice-shared-alert-v219
Aug 27, 2026
Merged

feat(ui): share one token-backed status notice#643
seonghobae merged 5 commits into
mainfrom
feat/status-notice-shared-alert-v219

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Outcome

  • adds shared StatusNotice (success / unavailable / retry) as current-main ADR 0214, superseding closed-branch ADR 0134 for protected main only
  • migrates Calendar's Naruon fail-closed path so missing projection copy and the next action sit in one named region
  • keeps retry on role="alert" with Retry; success and unavailable stay a named region so App live-region uniqueness (getByRole("status")) holds
  • distinguishes kinds by label and glyph, not color alone (ADR 0099 tokens); never interpolates provider payloads (ADR 0123)

Independent of open stacks #579, #629, #631, #632, #636, #639, #640. Tracks #611; the issue stays open until remaining 0133/0135/0136/0137 slices ship on current main.

Verification

  • corepack pnpm lint (0 warnings, 0 errors)
  • corepack pnpm test (388 passed)
  • corepack pnpm exec vitest run src/App.test.tsx -t "fails closed on the calendar" (passed)
  • corepack pnpm build
  • uv run --extra dev pytest -q tests/test_documentation_hygiene.py (5 passed)

Synthetic fixtures only. No keyword, heuristic, arbitrary threshold, or local measurement weight is introduced.


Open in Devin Review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 59 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: fbfd56fe-589f-4de7-9c58-d97371b78b34

📥 Commits

Reviewing files that changed from the base of the PR and between fe17057 and 2956a21.

📒 Files selected for processing (16)
  • AGENTS.md
  • CHANGELOG.d/2.19.0-status-notice.md
  • CLAUDE.md
  • backend/tests/test_api.py
  • docs/adr/0220-token-backed-status-notice.md
  • docs/storybook-inventory.md
  • frontend/src/App.css
  • frontend/src/App.test.tsx
  • frontend/src/components/StatusNotice.stories.tsx
  • frontend/src/components/StatusNotice.test.tsx
  • frontend/src/components/StatusNotice.tsx
  • frontend/src/components/WorkspaceCalendar.stories.tsx
  • frontend/src/components/WorkspaceCalendar.test.tsx
  • frontend/src/components/WorkspaceCalendar.tsx
  • frontend/src/i18n.ts
  • lineageweave/naruon_calendar_workspace.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head UI audit: 041ec13b passed StatusNotice and WorkspaceCalendar component tests (8), lint, and Storybook build. The Unavailable scene was rendered and visually inspected at 1200×600 and 390×600: named state, message, and next action remain readable without horizontal overflow; the glyph plus visible label keeps state distinguishable without color alone. Screenshots used synthetic content and remain local, not committed.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Verified current head 041ec13 against ADR 0203: the unavailable branch intentionally renders the fail-closed notice before any event list, and the API contract returns events=[] when naruon_available=false. No actionable defect found in Devin note. Local Vitest: 9 targeted tests passed (StatusNotice, WorkspaceCalendar, Calendar App paths). Protected approval and hosted gates remain required.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Merged current protected-main base and retained both the StatusNotice and semantic-unit changelog entries. New exact head: 7fb4d18c69e18700229dbacb0690a891fb7b41ea. Hosted checks and independent review remain required.

@opencode-agent
opencode-agent Bot disabled auto-merge August 26, 2026 08:08
@seonghobae
seonghobae enabled auto-merge (squash) August 26, 2026 08:56
@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head customer-copy audit at 8767de1b:

  • Preserved the original shared StatusNotice intent, token-backed styling, fail-closed calendar evidence, named-region semantics, and retry alert contract.
  • Corrected the calendar recovery contract at its source. The API and rendered notice no longer tell a customer to connect Naruon or a projection; they direct the customer to ask the workspace administrator to enable calendar access and to open an available commitment meanwhile.
  • ADR 0220 now explicitly forbids customer-facing provider, model, transport, environment-variable, and projection names. Component, integration, Storybook, and API assertions pin that boundary.

Verification:

  • tests/test_naruon_calendar_workspace.py: 9 passed.
  • Focused StatusNotice, WorkspaceCalendar, App calendar, and i18n suite: 9 passed, 158 deselected.
  • Frontend lint, production build, Storybook build, and git diff --check: passed.
  • The live API integration test module was collected but stopped after 191 seconds because its stack-bound collection did not reach execution; no result is claimed for that test.
  • Synthetic Storybook Workspace/WorkspaceCalendar/NaruonUnavailable was captured and directly inspected at 1280x720 and 390x844. The notice and commitment remained readable without clipping or horizontal overflow, the next action remained visible, and no provider/model/transport/environment/projection term appeared.
  • The prior Strix failure was STRIX_PROVIDER_UNAVAILABLE, not a source-code finding; the new exact head will receive fresh protected checks normally.

Fresh hosted checks and independent current-head approval remain required.

@seonghobae
seonghobae marked this pull request as draft August 27, 2026 12:07
auto-merge was automatically disabled August 27, 2026 12:07

Pull request was converted to draft

seonghobae and others added 5 commits August 28, 2026 01:09
Calendar's missing Naruon projection uses StatusNotice (ADR 0214 / #611).
Success and unavailable are a named region so App live-region uniqueness
holds; retry stays role=alert. Synthetic fixtures only.
@seonghobae
seonghobae force-pushed the feat/status-notice-shared-alert-v219 branch from bae04cf to 2956a21 Compare August 27, 2026 16:13
@seonghobae
seonghobae marked this pull request as ready for review August 27, 2026 16:31
@seonghobae
seonghobae enabled auto-merge (squash) August 27, 2026 16:31
@seonghobae
seonghobae merged commit 617937c into main Aug 27, 2026
28 of 29 checks passed
seonghobae pushed a commit that referenced this pull request Aug 27, 2026
seonghobae pushed a commit that referenced this pull request Aug 27, 2026
seonghobae added a commit that referenced this pull request Aug 27, 2026
* test(projects): define evidence-bound project history contract

* test(ui): define accessible project-history timeline contract

* test(projects): classify every visible VOC record

* feat(projects): port evidence-bound history core for RED repair

* fix(projects): keep lifecycle projection evidence-bound

* fix(ui): keep project-history selection and tab semantics current

* fix(ui): make project-history evidence and time semantics explicit

* feat(projects): expose evidence-bound history in post detail

* docs(gaps): record project-history delivery evidence

* fix(frontend): normalize project history actions

* test(frontend): type project history evidence fixture

* fix(frontend): ignore blank project code fallback

* fix(project-history): guard stale requests and normalize keys

* docs: assign unique project history ADR number

* fix(project-history): show source state codes

* fix(ui): use theme tokens for project history timeline

* fix(projects): make projection checks explicit

* docs(adr): assign unique project-history decision id

* fix(projects): use event time and remove internal UI codes

* fix(projects): announce history loading state

* fix(projects): suppress transitions across gaps

* fix(i18n): localize project history loading guidance

* docs(gaps): reconcile exact snapshot inventory

* fix(project-history): retain explicit source identity

* docs(adr): reserve project history identity 0243

* fix(ui): keep project history storage fields internal

* docs(gap-baseline): record #643, #644, #762 deliveries

* codex: address PR review feedback (#762)

* docs(gaps): refresh exact-head loop overlay

---------

Co-authored-by: Codex <codex@localhost>
seonghobae added a commit that referenced this pull request Aug 27, 2026
…snapshot (#765)

Record the live-PostgreSQL Voice-history validation (#763) and the
test-only coverage lift (#764: observability 78%→96%, post_summary
77%→89%, claim_verification 86%→99%, package 93.5%→95%). Collapse the
duplicated #643/#644 rows that accumulated across successive snapshot
updates; the §12 table now carries one row per merged PR.

Co-authored-by: Codex <codex@localhost>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant