# Weekly follow-up report — local source

Download `weekly-followup.mjs` alongside this README. Import
`buildWeeklyFollowupReport(value, asOf)` in a JavaScript ES-module environment.
It returns a plain-text draft; it does not print or send it by itself.

Input is a string of unfinished tasks, exactly three literal tab-separated
columns per nonblank row: task, due date, owner. No header or multiline cells.
Cells are trimmed, CRLF/CR become LF, blank rows are ignored and blank owners
become Unassigned. Task names are required. Dates, including the explicit as-of
date, must be valid YYYY-MM-DD (years0000–9999). There is no implicit clock.
Due today is not overdue. Overdue rows sort by owner then date; other rows by
due date; next actions retain input order. Owner sorting uses the caller runtime's
locale comparison, so cross-runtime locale differences can change ordering.

Maximum100,000 input characters,500 nonblank rows and300,000 output characters.
Invalid input throws before any report is returned. Formula-like strings remain
plain text; review them before pasting into software that interprets formulas.

## Executable fictional example

Save the module and run this code as an ES module from the same directory:

```js
import { buildWeeklyFollowupReport } from './weekly-followup.mjs';
const input = 'Send project brief\t2026-10-05\tAlex\nCheck launch copy\t2026-10-07\tJo\nConfirm delivery\t2026-10-06\t';
const report = buildWeeklyFollowupReport(input, '2026-10-07');
console.log(report);
```

Expected exact output (console adds its final newline):

```text
Weekly task follow-up report
As of: 2026-10-07
Summary: 3 unfinished tasks reviewed; 2 overdue.

Overdue items (due before the report date)
- Overdue: Send project brief — owner: Alex; due: 2026-10-05
- Overdue: Confirm delivery — owner: Unassigned; due: 2026-10-06

Other unfinished items
- Check launch copy — owner: Jo; due: 2026-10-07 (due today)

Next actions
- Send project brief (Alex): Ask the owner for an update and a revised completion date.
- Check launch copy (Jo): Confirm the next step and the due date with the owner.
- Confirm delivery (Unassigned): Assign an owner and confirm the next step.

Draft based only on the supplied list. Review owners, dates and next actions before sharing.
```

## Privacy and completion boundary

The dependency-free module has no network, filesystem, process, secret access,
telemetry or sends. The caller environment controls input handling: an agent,
console logger or surrounding app may retain or transmit supplied information.
Use an appropriate local environment for private lists; this module cannot make
an external agent environment private. It neither accesses Google Workspace nor
runs Apps Script, sends email, schedules work or confirms completed tasks.
Review owners, dates and suggested actions before sharing through your own
chosen channel. The example is fictional QA, not independent use or demand.
Source availability, copied reports, useful completion, repeat use and purchases
are separate evidence. No paid offer is included in this module.

## License

MIT License

Copyright (c) 2026 QuasiLife

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
