Notification Manual — entry and routes
Use the schema for routine action + input + reasoning calls; start with:
notification(action='check', input={}, reasoning='inspect current notifications')
check returns a placeholder; read the live payload under _meta.agent_meta.notifications.attention and the hook under _meta.agent_meta.guidance.transient on that result, not an older delivered snapshot. Follow the payload's producer-specific read/dismiss instructions first. Generic dismissal affects mirrors only, not mailbox, goal, source-queue or other producer state. Choose the narrowest target; do not delete files or call check merely to confirm a clear.
Route one owner
| Need | Read |
|---|---|
| Payload, delivery, allowlist, hooks, delay mechanics or spill recovery | Channel model |
| Target selection, producer guard, stale refusal, force, protected goal or post-molt | Dismissal safety; read before forcing |
| Tool-result compaction or recovery by tool_call_id | ../context-manual/reference/summarize-manual/SKILL.md |
| Goal cancellation/completion | ../system-manual/reference/goal-manual/SKILL.md |
| Runtime/configuration nudges | ../system-manual/reference/runtime-update-checks/SKILL.md |
Consumer delay and expiry alarm
notification.delay_max_seconds is the positive cap from live LINGTAI_NOTIFICATION_DELAY_MAX_SECONDS, otherwise 600; missing, blank, non-numeric, non-positive or non-finite values fall back to the default. delay hides one allowed consumer target, never stops its producer. Nonzero replaces the prior delay; 0 cancels only the matching target. delay-alarm cannot be delayed. Expiry/recovery restores delivery and publishes one latest-only alarm. For daemon, only attention is masked: payload/version/summary remain readable. See channel model.
Change the environment only with owner approval and apply it through the authorized refresh/relaunch procedure; verify the live SHOW value afterward.
Block size cap (persistent and attention lanes)
notification.max_chars is one live cap for both lanes: environment LINGTAI_NOTIFICATION_MAX_CHARS, then valid System-v2 notification_max_chars, then 10000, clamped to 2048..10000. Malformed values fall through. It limits context size, not access or delivery. Oversized content spills before compaction; only the persistent lane protects the current/new message (compacting and stubbing older context first), the attention lane has no such per-message protection. Shortened fields carry truthful truncation flags where defined. Follow the exact spill locator (or producer on spill_failed) only for required content absent from all current copies, including omitted/id-only records: a flag or block-level overflow alone is not a reread trigger, and a complete alternate/raw copy needs no recovery. See channel model.
Use only the authorized environment or closed System-v2 owner procedure. The file layer is hot-read; it does not require a refresh just for this value. Environment/launcher changes need the appropriate authorized refresh/relaunch. SHOW again to verify.
Notification settings and manual
settings and manual take strict empty input={} and are read-only. SHOW returns two rows in order: notification.max_chars, notification.delay_max_seconds; each has only key, current, default, configurable, comment. Comments target the two headings above. Unavailable current truth fails the whole inventory. SHOW grants no mutation authority and creates no settings file.
manual reads only initialized <agent>/.library/intrinsic/capabilities/notification/SKILL.md, returning status, notification_manual, manual_path. A missing file returns degraded status, empty body and actionable error, never source-tree fallback. It touches no notification, producer, delay or log state. Keep root summarize=false so guidance stays exact; compaction belongs to context, not Notification or System.