First deployment
Some checks failed
quality-gates / lint-and-test (push) Has been cancelled
quality-gates / security-scan (push) Has been cancelled

This commit is contained in:
2026-02-13 09:14:04 -05:00
parent 0e21e035f5
commit 679561bcdb
128 changed files with 3479 additions and 120 deletions

View File

@@ -0,0 +1,9 @@
## MODIFIED Requirements
### Requirement: Unified admin command surface
The system SHALL provide a single admin CLI command family exposing maintenance subcommands, including permalink-targeted image refetch support.
#### Scenario: Subcommand discovery
- **WHEN** an operator runs the admin command help output
- **THEN** available subcommands include refetch-images, clean-archive, clear-cache, clear-news, rebuild-site, regenerate-translations, and fetch
- **AND** refetch-images help output documents optional permalink-targeted execution

View File

@@ -0,0 +1,25 @@
## ADDED Requirements
### Requirement: Refetch selects an alternative image for target article
Refetch operations SHALL select an image different from the article's current summary image when a usable alternative exists.
#### Scenario: Current image is excluded from candidate result
- **WHEN** refetch evaluates image candidates for an article
- **THEN** the system rejects candidates matching the current summary image identity
- **AND** stores a different accepted image candidate when available
### Requirement: Candidate filtering enforces topical relevance and safety
Refetch candidate selection SHALL reject clearly unrelated imagery classes while preserving topic relevance.
#### Scenario: Unrelated animal/pet candidate is rejected
- **WHEN** candidate metadata or source signals indicate unrelated animal/pet imagery
- **THEN** the system rejects that candidate for article refetch
- **AND** continues evaluating other candidates or fallback paths
### Requirement: Low-confidence selection falls back to AI-themed default
If no candidate satisfies relevance and safety thresholds, the system SHALL use deterministic AI-themed fallback imagery.
#### Scenario: All candidates rejected
- **WHEN** candidate evaluation exhausts without an accepted image
- **THEN** the system assigns configured AI-themed fallback image
- **AND** records fallback decision path in command output/logs

View File

@@ -0,0 +1,19 @@
## MODIFIED Requirements
### Requirement: System generates Tamil and Malayalam translations at article creation time
The system SHALL generate Tamil (`ta`) and Malayalam (`ml`) translations for each newly created article during ingestion and validate translation quality before persistence.
#### Scenario: Translation generation for new article
- **WHEN** a new source article is accepted for storage
- **THEN** the system requests Tamil and Malayalam translations for headline and summary
- **AND** translation generation occurs in the same ingestion flow for that article
#### Scenario: Translation failure fallback
- **WHEN** translation generation fails for one or both target languages
- **THEN** the system stores the base article in English
- **AND** marks missing translations as unavailable without failing the whole ingestion cycle
#### Scenario: Translation quality validation failure
- **WHEN** generated translation fails language/script sanity or gibberish validation checks
- **THEN** the system does not persist invalid translation content for that article-language pair
- **AND** records validation failure outcome for diagnostics

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Attribution page discloses AI generation and non-ownership
The system SHALL provide Attribution disclosure content with explicit statements that content is AI-generated and not personally authored by the site owner, including modal-based access from the landing experience.
#### Scenario: Attribution disclosure title and body content
- **WHEN** a user opens Attribution disclosure content from supported entry points
- **THEN** the title clearly indicates attribution/disclaimer purpose
- **AND** the body states content is AI-generated and not generated by the owner as an individual
#### Scenario: Attribution disclosure includes non-involvement statement
- **WHEN** a user reads Attribution details
- **THEN** the content explicitly states owner non-involvement in generated content claims
- **AND** wording appears in primary readable content area

View File

@@ -0,0 +1,17 @@
## MODIFIED Requirements
### Requirement: Context-aware image query generation
Image refetch SHALL construct provider queries from article context by identifying main subject keywords from headline and summary content.
#### Scenario: Context-enriched query
- **WHEN** a queued article is processed for image refetch
- **THEN** the system derives main-subject query terms from article headline and summary
- **AND** includes relevance-supporting cues for improved candidate quality
### Requirement: AI-domain fallback keywords
When context extraction is insufficient or confidence is low, the system SHALL use AI-domain fallback keywords.
#### Scenario: Empty or weak context extraction
- **WHEN** extracted context terms are empty or below quality threshold
- **THEN** the system applies fallback terms such as `ai`, `machine learning`, `deep learning`
- **AND** continues candidate search with deterministic fallback ordering

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Footer exposes policy navigation links
The system SHALL display footer controls for Terms of Use and Attribution on the landing page and open their disclosure content in in-page modal dialogs.
#### Scenario: Footer policy controls visible and focusable
- **WHEN** a user loads the main page
- **THEN** the footer includes controls labeled "Terms of Use" and "Attribution"
- **AND** controls are visually distinguishable and keyboard focusable
#### Scenario: Footer policy controls open modal disclosures
- **WHEN** a user activates either policy control
- **THEN** the system opens the corresponding policy modal
- **AND** activation succeeds without full-page navigation dependency

View File

@@ -0,0 +1,9 @@
## MODIFIED Requirements
### Requirement: Hero block display
The system SHALL display hero article actions without a visible permalink affordance while preserving primary summary and source attribution interactions.
#### Scenario: Hero action chrome excludes permalink control
- **WHEN** the hero block is rendered
- **THEN** no dedicated hero permalink control is displayed
- **AND** summary open and source-link actions remain available

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Hero metadata readability over images
Hero metadata (`LATEST`, relative time, headline, and summary) SHALL remain visually legible across bright and dark images on desktop and mobile, including Tamil and Malayalam rendering paths.
#### Scenario: Bright image background
- **WHEN** the hero image contains bright regions under metadata text
- **THEN** overlay and text styles preserve readable contrast for metadata and headline blocks
- **AND** readability remains stable for English, Tamil, and Malayalam content
#### Scenario: Mobile viewport readability
- **WHEN** the hero renders on a mobile viewport
- **THEN** metadata and title remain readable without overlapping controls or clipping
- **AND** Tamil and Malayalam typography remains legible at mobile breakpoints

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Language fallback to English is deterministic
The system SHALL return English source content when the requested translation is unavailable or fails translation quality validation.
#### Scenario: Missing translation fallback
- **WHEN** a client requests Tamil or Malayalam content for an article lacking that translation
- **THEN** the system returns the English headline and summary for that article
- **AND** response shape remains consistent with language-aware responses
#### Scenario: Invalid translation fallback
- **WHEN** a client requests Tamil or Malayalam content for an article whose translation failed quality validation
- **THEN** the system returns English headline and summary for that article
- **AND** avoids returning invalid translated output

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Fallback behavior remains context-aware first
The system SHALL evaluate context-aware candidates before fallback and require refetched summary images to be relevant, non-redundant alternatives.
#### Scenario: Context-aware attempt precedes fallback
- **WHEN** summary image selection runs for a news item
- **THEN** the system first attempts provider queries from extracted context-aware keywords
- **AND** only falls back to generic AI image if candidate evaluation fails
#### Scenario: Refetch rejects unrelated and duplicate outcomes
- **WHEN** candidate images are evaluated during refetch
- **THEN** the system rejects candidates matching current image identity for the same article
- **AND** rejects clearly unrelated animal/pet imagery classes before final selection

View File

@@ -0,0 +1,14 @@
## ADDED Requirements
### Requirement: Admin image refetch supports permalink targeting
The admin image refetch command SHALL support a permalink-targeted execution mode for deterministic single-article remediation.
#### Scenario: Refetch by permalink
- **WHEN** an operator runs refetch-images with a valid permalink target
- **THEN** the system resolves permalink identity to the matching article
- **AND** executes image refetch for that target without requiring batch mode
#### Scenario: Invalid permalink target fails clearly
- **WHEN** an operator provides a malformed or unresolved permalink target
- **THEN** the command exits with actionable error output
- **AND** no article image is modified

View File

@@ -0,0 +1,27 @@
## ADDED Requirements
### Requirement: Policy disclosures are available as in-page modals
The system SHALL present Terms of Use and Attribution content in in-page modal dialogs without requiring full-page navigation from the landing experience.
#### Scenario: Open Terms modal from footer
- **WHEN** a user activates the "Terms of Use" footer control
- **THEN** a Terms modal opens in place on the current page
- **AND** the underlying page context remains intact
#### Scenario: Open Attribution modal from footer
- **WHEN** a user activates the "Attribution" footer control
- **THEN** an Attribution modal opens in place on the current page
- **AND** disclosure content is readable in the modal body
### Requirement: Policy modals are keyboard-safe and dismissible
Policy disclosure modals SHALL provide deterministic keyboard and pointer dismissal behavior.
#### Scenario: Escape closes active policy modal
- **WHEN** a policy modal is open and the user presses `Escape`
- **THEN** the modal closes
- **AND** focus returns to the triggering control
#### Scenario: Modal focus remains trapped while open
- **WHEN** a keyboard-only user tabs while a policy modal is open
- **THEN** focus cycles within modal interactive controls
- **AND** focus does not escape to background content

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Latest-30 queue construction
The refetch-images command SHALL enqueue up to the latest 30 news items for processing in batch mode and support targeted single-article mode when permalink targeting is provided.
#### Scenario: Queue population
- **WHEN** refetch-images is started without a permalink target
- **THEN** the command loads recent news items
- **AND** enqueues at most 30 items ordered from newest to oldest
#### Scenario: Targeted permalink mode
- **WHEN** refetch-images is started with a valid permalink target
- **THEN** the command enqueues only the resolved article
- **AND** bypasses latest-30 queue expansion

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Core layout is device-agnostic and responsive
The system SHALL render key surfaces (header, hero, feed, modal, footer, policy modals, and floating controls) responsively across mobile, tablet, and desktop viewports.
#### Scenario: Mobile layout behavior
- **WHEN** a user opens the site on a mobile viewport
- **THEN** content remains readable without horizontal overflow
- **AND** interactive controls including icon-only copy/back-to-top and policy modals remain reachable and usable
#### Scenario: Desktop and tablet adaptation
- **WHEN** a user opens the site on tablet or desktop viewports
- **THEN** layout reflows according to breakpoint design rules
- **AND** no key content or controls are clipped

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Terms page states unverified-content risk
The system SHALL provide Terms of Use disclosure content that states information is unverified and use is at the user's own risk, including modal-based access from the landing experience.
#### Scenario: Terms disclosure risk statement visible
- **WHEN** a user opens Terms of Use disclosure content from its supported entry points
- **THEN** the content includes clear at-own-risk usage language
- **AND** the content states information is not independently verified
#### Scenario: Terms disclosure references source uncertainty
- **WHEN** a user reads Terms details
- **THEN** the content explains information is surfaced from external/AI-generated sources
- **AND** users are informed responsibility remains with their own decisions

View File

@@ -0,0 +1,22 @@
## ADDED Requirements
### Requirement: Translation output passes quality validation before use
The system SHALL validate generated Tamil and Malayalam translation output for language/script sanity and gibberish risk before persistence or delivery.
#### Scenario: Valid translation accepted
- **WHEN** generated translation passes configured language and quality checks
- **THEN** the system stores and serves the translated content
- **AND** records a successful validation outcome
#### Scenario: Invalid translation rejected
- **WHEN** generated translation fails language/script or gibberish checks
- **THEN** the system rejects translated output for that article-language pair
- **AND** records a validation failure reason for operations visibility
### Requirement: Validation failure fallback is deterministic
When translation quality validation fails, the system SHALL provide deterministic English fallback behavior.
#### Scenario: Failed translation falls back to English
- **WHEN** a client requests language content for an article whose translation failed validation
- **THEN** the system returns English source headline and summary
- **AND** response shape remains consistent with language-aware responses

View File

@@ -0,0 +1,14 @@
## MODIFIED Requirements
### Requirement: Core user flows comply with WCAG 2.2 AA baseline
The system SHALL meet WCAG 2.2 AA accessibility requirements for primary interactions and content presentation, including icon-only controls and policy-disclosure modals.
#### Scenario: Keyboard-only interaction flow
- **WHEN** a keyboard-only user navigates policy modals and icon-only controls
- **THEN** all primary interactive elements remain reachable and operable
- **AND** visible focus indication is present at each step
#### Scenario: Contrast and non-text alternatives
- **WHEN** users consume text and non-text UI content
- **THEN** color contrast meets AA thresholds for relevant text and controls
- **AND** icon-only controls expose meaningful accessible labels