# Known gaps

Separate verified behavior, configuration limitations and improvements still to implement.

Task still flags configuration errors on Accountable (Name), Reporting (Name) and Intake Check (live schema, 2026-10-28). A maintainer must repair the referenced fields before using that check as an activation gate. The documented formula describes intended validation; it does not confirm that the current field evaluates. Work Item: "Fix invalid lookup and formula configurations across bases".

## Data model and evaluation

- No dedicated Goal, Key Result or Cycle table. Objectives are held in Milestone; measurable work connects through Task.
- Several actor, subject and organization references are text placeholders, including Reporting Membership, Target Organization and Classification Term on the migrated records. Memebership currently serves team links.
- Metric units were guessed from the old text during the migration: 154 count, 4 hours and 1 %. Some names still carry old free text.
- Evaluation policy names exist, but no equations, weights, rounding or rank cohorts are defined with them, and nothing runs an evaluation.
- Milestone.Progress is manually stored. A policy choice does not trigger calculation.
- Current Slack edits update an Observation despite the table description claiming immutability. There is no immutable edit ledger.

## Collection and routing

- Daily Digest sends for real but has no retry: a Failed Message stays Failed. A retry design exists as a draft proposal only.
- Some recipients fail when Slack cannot open a direct message (`user_not_found`); the saved error then reads `invalid_arguments`.
- Items beyond 25 per recipient are counted, not sent. There is no backlog sweep and no delivery-idempotency guarantee: a second run can send again.
- On 2026-10-21 Reading Reply restricted interactions to a configured test user. Confirm in n8n that the restriction was removed when Daily Digest went live. On 2026-10-28 Observation held one result, from 2026-10-22.
- The legacy Operations base may still ask the same KPIs until its Set Recurring automation is paused.
- Daily scheduling inherits instance timezone while calculations use America/Chicago; verify the actual instance setting.
- Name-based identity matching and workspace fallback can choose an unintended account; review ambiguous identities and mapping misses.
- Identity Binding.Valid From is not checked by the resolver.
- A late response uses the schedule’s current target context, not a snapshot of the target as it was.
- The Slack form currently accepts only non-negative whole numbers; negative and decimal metrics need a contract change.
- Response storage and Slack update are not one transaction. Duplicate checks are not a proven concurrency lock.

## Tracked work

These gaps have a Work Item in Systems Central. None is done.

| Gap | Work Item |
| --- | --- |
| DM failures | Fix the Daily Digest DM failures (user_not_found) |
| Retry | Approve the Daily Digest retry proposal · Implement Daily Digest retry with shared sender and idempotency |
| 25-item cap | Send Daily Digest items beyond the 25-item cap |
| Double asking | Pause Operations Set Recurring so KPIs are not asked twice |
| Units and definitions | Review Metric units guessed during the KPI migration · Validate each KPI definition, target and recipient with area leads |
| Text placeholders | Convert KPI text placeholders (Reporting Membership, Target Org) to links |
| Invalid fields | Fix invalid lookup and formula configurations across bases |
| Evaluation | Build automatic KPI evaluation and milestone progress, run one full cycle |
| Edits, Valid From, timezone | Close KPI known gaps: Slack edit history, Valid From, scheduler timezone |
| Procedure | Exercise Procedure lifecycle states and link Uses Tool / Runs On |
| Team table name | Rename or replace the misnamed 'Memebership' team table in KPIs |
| Synced table names | Rename the remaining misnamed synced tables |
| Execution evidence | Get n8n admin access to verify live executions before declaring done |

## Evidence and scope

Schema, views, Airtable automations and the record counts for Metric, Metric Target, Recurrence Configuration and Observation are as of 2026-10-28. n8n behaviour is described as the workflows were set up on 2026-10-21 plus the later fixes listed on these pages; check the live workflow in n8n before relying on a detail. Screenshots use the existing fictitious records. Empty queues are real states. Peripheral operations entities are documented structurally and as manual procedures; they are not presented as executed automation. Exact access grants and workflows outside this system are not covered here; check them in Airtable sharing and in n8n.