> For the complete documentation index, see [llms.txt](https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/.spec_system/archive/sessions/phase28-session05-signal-aging-half-lives-and-saturation-refinement/tasks.md).

# Task Checklist

**Session ID**: `phase28-session05-signal-aging-half-lives-and-saturation-refinement` **Total Tasks**: 24 **Estimated Duration**: 3-4 hours **Created**: 2026-06-14

***

## Legend

* `[x]` = Completed
* `[ ]` = Pending
* `[P]` = Parallelizable (can run with other \[P] tasks)
* `[SNNMM]` = Session reference (NN=phase number, MM=session number)
* `TNNN` = Task ID

***

## Progress Summary

| Category       | Total  | Done   | Remaining |
| -------------- | ------ | ------ | --------- |
| Setup          | 3      | 3      | 0         |
| Foundation     | 7      | 7      | 0         |
| Implementation | 9      | 9      | 0         |
| Testing        | 5      | 5      | 0         |
| **Total**      | **24** | **24** | **0**     |

***

## Setup (3 tasks)

Initial verification and implementation notes.

* [x] T001 \[S2805] Verify prerequisite sessions, source mapping, and current target-file paths before edits (`.spec_system/PRD/phase_28/session_05_signal_aging_half_lives_and_saturation_refinement.md`)
* [x] T002 \[S2805] Create implementation-notes shell for scope decisions, scoring-version changes, validation commands, and deferred items (`.spec_system/specs/phase28-session05-signal-aging-half-lives-and-saturation-refinement/implementation-notes.md`)
* [x] T003 \[S2805] Compare Trends-Finderz signal-aging, lifecycle freshness, and saturation constants to current Trend Finder scales without copying uncalibrated thresholds (`EXAMPLES/trends-finderz/lib/product/signal-aging.ts`)

***

## Foundation (7 tasks)

Core contracts and pure deterministic helpers.

* [x] T004 \[S2805] Add optional source `halfLifeHours` declaration metadata and role default types with schema-validated bounds (`scripts/extensions/trend-finder/sources/types.ts`)
* [x] T005 \[S2805] Wire source half-life defaults and declaration override validation with explicit warning messages for invalid values (`scripts/extensions/trend-finder/sources/apify-source-config.ts`)
* [x] T006 \[S2805] \[P] Create pure signal-aging helper for half-life freshness, age bands, unavailable states, and bounded role contributions with schema-validated input and explicit error mapping (`scripts/lib/ai-runtime/signal-aging.ts`)
* [x] T007 \[S2805] \[P] Add signal-aging unit tests for per-role decay differences, status transitions, unavailable states, contribution bounds, and lifecycle threshold fixtures (`scripts/lib/ai-runtime/__tests__/signal-aging.test.ts`)
* [x] T008 \[S2805] Define additive `signalAging` schema enums, bounded contribution arrays, default unavailable state, and parsed topic fields with legacy-safe defaults (`src/extensions/trend-finder/schema.ts`)
* [x] T009 \[S2805] Add signal-aging and refined-saturation view-model helpers with bounded labels, accessible descriptions, and deterministic ordering (`src/extensions/trend-finder/view-model.ts`)
* [x] T010 \[S2805] Refine saturation helper inputs and constants for diffusion, mention density, mainstream-term pressure, and single-source/developer dominance while preserving null unavailable behavior (`scripts/lib/ai-runtime/scoring.ts`)

***

## Implementation (9 tasks)

Runtime wiring and user-facing surfaces.

* [x] T011 \[S2805] Replace uniform recency buckets with half-life weighted recency inside momentum scoring while preserving six-factor weights and fallback behavior (`scripts/lib/ai-runtime/scoring.ts`)
* [x] T012 \[S2805] Derive and publish per-topic `signalAging` from scoring evidence with bounded source-role contributions and no raw source leaks (`scripts/lib/ai-runtime/scoring.ts`)
* [x] T013 \[S2805] Bump scoring version and preserve cross-version movement flags for the recency and saturation math change (`scripts/lib/ai-runtime/scoring.ts`)
* [x] T014 \[S2805] Render signal-aging and refined-saturation chips on Trend cards with platform-appropriate accessibility labels, focus behavior, and compact text (`src/extensions/trend-finder/components/trend-card.tsx`)
* [x] T015 \[S2805] Add Signal Workbench aging fields, facets, filters, search text, and sort keys with validated filters and deterministic ordering (`src/extensions/trend-finder/signal-workbench-model.ts`)
* [x] T016 \[S2805] Add Signal Workbench aging controls with accessible labels, keyboard input support, and explicit unavailable option handling (`src/extensions/trend-finder/components/signal-workbench-controls.tsx`)
* [x] T017 \[S2805] Update Trend Finder fixtures with fresh, active, cooling, stale, and unavailable aging examples while preserving legacy parse coverage (`src/extensions/trend-finder/fixtures.ts`)
* [x] T018 \[S2805] Document shipped half-life aging, unavailable states, refined saturation inputs, and non-goals without planned-feature language (`docs/extensions/trend-finder-scoring.md`)
* [x] T019 \[S2805] Record implementation decisions, scoring-version rationale, validation commands, and residual risks as work proceeds (`.spec_system/specs/phase28-session05-signal-aging-half-lives-and-saturation-refinement/implementation-notes.md`)

***

## Testing (5 tasks)

Verification and quality assurance.

* [x] T020 \[S2805] \[P] Add source-config tests for half-life metadata defaulting, bounds, override validation, and invalid warnings (`scripts/extensions/trend-finder/sources/__tests__/apify-source-config.test.ts`)
* [x] T021 \[S2805] \[P] Add scoring integration tests for role-specific recency, saturation refinement, scoring-version bump, and no hidden multiplier (`scripts/lib/ai-runtime/__tests__/scoring.test.ts`)
* [x] T022 \[S2805] \[P] Add schema and view-model tests for legacy defaults, aging labels, bounded contributions, and unavailable projections (`src/extensions/trend-finder/__tests__/view-model.test.ts`)
* [x] T023 \[S2805] \[P] Add Workbench model and Trend card component tests for aging filters, ordering, chip rendering, and accessible labels (`src/extensions/trend-finder/__tests__/signal-workbench-model.test.ts`, `src/extensions/trend-finder/components/__tests__/trend-card.test.tsx`)
* [x] T024 \[S2805] Run focused tests, ASCII validation, and any necessary manual UI check, then record results and residual risks (`.spec_system/specs/phase28-session05-signal-aging-half-lives-and-saturation-refinement/implementation-notes.md`)

***

## Completion Checklist

Before marking session complete:

* [x] All tasks marked `[x]`
* [x] All tests passing
* [x] All files ASCII-encoded
* [x] implementation-notes.md updated
* [x] Ready for the validate workflow step

***

## Next Steps

Run the validate workflow step for final review.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/.spec_system/archive/sessions/phase28-session05-signal-aging-half-lives-and-saturation-refinement/tasks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
