Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

1848 lines
40 KiB
JSON

[
{
"id": "T001",
"description": "PRD: Plan folder exists with PRD/features/tests/scratchpad",
"implemented": true,
"featureIds": [
"F001",
"F002"
]
},
{
"id": "T002",
"description": "Docs: PRD describes synthetic HTTP execution payload and remap policy",
"implemented": true,
"featureIds": [
"F003",
"F004"
]
},
{
"id": "T003",
"description": "DB: Migration creates extension_api_endpoint table",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T004",
"description": "DB: Unique constraint enforced for (version_id, method, path)",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T005",
"description": "DB: Migration creates tenant_extension_schedule table",
"implemented": true,
"featureIds": [
"F007"
]
},
{
"id": "T006",
"description": "DB: Indexes exist for tenant_id/install_id schedule queries",
"implemented": true,
"featureIds": [
"F008"
]
},
{
"id": "T007",
"description": "DB: Schedule last_run fields persist and are nullable",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T008",
"description": "Registry: Ingest endpoints writes rows into extension_api_endpoint",
"implemented": true,
"featureIds": [
"F016"
]
},
{
"id": "T009",
"description": "Registry: Endpoint method normalization to uppercase",
"implemented": true,
"featureIds": [
"F017"
]
},
{
"id": "T010",
"description": "Registry: Endpoint path normalization ensures leading /",
"implemented": true,
"featureIds": [
"F017"
]
},
{
"id": "T011",
"description": "Registry: Duplicate endpoints by (method,path) are de-duped on ingest",
"implemented": true,
"featureIds": [
"F018"
]
},
{
"id": "T012",
"description": "Registry: Backfill is idempotent (safe to re-run)",
"implemented": true,
"featureIds": [
"F019",
"F124"
]
},
{
"id": "T013",
"description": "API: Endpoint list returns only endpoints for installed version",
"implemented": true,
"featureIds": [
"F023",
"F024"
]
},
{
"id": "T014",
"description": "API: Endpoint list is tenant-scoped and rejects cross-tenant access",
"implemented": true,
"featureIds": [
"F024",
"F071"
]
},
{
"id": "T015",
"description": "API: Create schedule with valid endpoint_id succeeds",
"implemented": true,
"featureIds": [
"F027"
]
},
{
"id": "T016",
"description": "API: Create schedule rejects endpoint_id not belonging to installed version",
"implemented": true,
"featureIds": [
"F032"
]
},
{
"id": "T017",
"description": "API: Create schedule rejects invalid cron string",
"implemented": true,
"featureIds": [
"F031",
"F095"
]
},
{
"id": "T018",
"description": "API: Create schedule rejects invalid timezone",
"implemented": true,
"featureIds": [
"F031",
"F096"
]
},
{
"id": "T019",
"description": "API: Create schedule enforces max schedules per install",
"implemented": true,
"featureIds": [
"F033"
]
},
{
"id": "T020",
"description": "API: Create schedule enforces min frequency guardrails",
"implemented": true,
"featureIds": [
"F034"
]
},
{
"id": "T021",
"description": "API: List schedules returns schedules for the extension install",
"implemented": true,
"featureIds": [
"F026"
]
},
{
"id": "T022",
"description": "API: Update schedule cron/timezone persists changes",
"implemented": true,
"featureIds": [
"F028"
]
},
{
"id": "T023",
"description": "API: Update schedule can change endpoint_id to another endpoint in same version",
"implemented": true,
"featureIds": [
"F028",
"F032"
]
},
{
"id": "T024",
"description": "API: Delete schedule removes DB row and deletes underlying runner schedule",
"implemented": true,
"featureIds": [
"F029",
"F069"
]
},
{
"id": "T025",
"description": "API: Delete schedule is idempotent when runner schedule handle missing",
"implemented": true,
"featureIds": [
"F135"
]
},
{
"id": "T026",
"description": "API: Run-now triggers an immediate invocation",
"implemented": true,
"featureIds": [
"F030",
"F048"
]
},
{
"id": "T027",
"description": "API: Run-now rate limit is enforced",
"implemented": true,
"featureIds": [
"F035"
]
},
{
"id": "T028",
"description": "Jobs: scheduleRecurringJob creates Temporal schedule in EE",
"implemented": true,
"featureIds": [
"F044"
]
},
{
"id": "T029",
"description": "Jobs: scheduleRecurringJob uses deterministic schedule id/singletonKey",
"implemented": true,
"featureIds": [
"F045",
"F154"
]
},
{
"id": "T030",
"description": "Jobs: Enable/disable toggles schedule execution without losing config",
"implemented": true,
"featureIds": [
"F047",
"F067"
]
},
{
"id": "T031",
"description": "Runner invoke: Loads install config by install_id and includes providers/secret envelope",
"implemented": true,
"featureIds": [
"F050"
]
},
{
"id": "T032",
"description": "Runner invoke: Builds context with schedule_id and trigger metadata",
"implemented": true,
"featureIds": [
"F051",
"F112"
]
},
{
"id": "T033",
"description": "Runner invoke: Serializes payload_json into http.body_b64 as JSON",
"implemented": true,
"featureIds": [
"F052"
]
},
{
"id": "T034",
"description": "Runner invoke: Enforces timeout and size limits",
"implemented": true,
"featureIds": [
"F054",
"F150",
"F151"
]
},
{
"id": "T035",
"description": "Execution: Default no-overlap prevents concurrent runs of same schedule",
"implemented": true,
"featureIds": [
"F056",
"F125"
]
},
{
"id": "T036",
"description": "Execution: Run-now uses idempotency key to dedupe accidental repeats",
"implemented": true,
"featureIds": [
"F057"
]
},
{
"id": "T037",
"description": "Execution: Retry policy applies and attempts are recorded",
"implemented": false,
"featureIds": [
"F058"
]
},
{
"id": "T038",
"description": "Remap: Updating install to new version remaps schedules when endpoints exist",
"implemented": true,
"featureIds": [
"F060"
]
},
{
"id": "T039",
"description": "Remap: Updating install to new version blocks when any endpoint missing",
"implemented": true,
"featureIds": [
"F061",
"F062"
]
},
{
"id": "T040",
"description": "Remap: Override action disables affected schedules and proceeds (if enabled)",
"implemented": true,
"featureIds": [
"F063",
"F168"
]
},
{
"id": "T041",
"description": "Remap: Remap is transactional with install update",
"implemented": true,
"featureIds": [
"F065"
]
},
{
"id": "T042",
"description": "Cleanup: Uninstall deletes schedules and cancels underlying runner schedules",
"implemented": true,
"featureIds": [
"F066",
"F165"
]
},
{
"id": "T043",
"description": "Cleanup: Install disable pauses schedules",
"implemented": true,
"featureIds": [
"F067",
"F116"
]
},
{
"id": "T044",
"description": "Security: Schedule CRUD rejects user without extension admin permission",
"implemented": true,
"featureIds": [
"F071",
"F037"
]
},
{
"id": "T045",
"description": "Security: Scheduled invocation does not include end-user user context by default",
"implemented": true,
"featureIds": [
"F111"
]
},
{
"id": "T046",
"description": "Observability: Schedule run writes execution log with schedule_id",
"implemented": false,
"featureIds": [
"F076",
"F141"
]
},
{
"id": "T047",
"description": "Observability: Schedule last_run fields update after success",
"implemented": true,
"featureIds": [
"F077"
]
},
{
"id": "T048",
"description": "Observability: Schedule last_run fields update after failure with last_error",
"implemented": true,
"featureIds": [
"F077",
"F134"
]
},
{
"id": "T049",
"description": "Observability: Metrics emitted for scheduled invocations",
"implemented": false,
"featureIds": [
"F078"
]
},
{
"id": "T050",
"description": "UI: Schedules section renders and can load endpoints + schedules",
"implemented": true,
"featureIds": [
"F081",
"F100"
]
},
{
"id": "T051",
"description": "UI: Endpoint dropdown lists current version endpoints",
"implemented": true,
"featureIds": [
"F083",
"F023"
]
},
{
"id": "T052",
"description": "UI: Create schedule flow succeeds and schedule appears in list",
"implemented": true,
"featureIds": [
"F083",
"F027"
]
},
{
"id": "T053",
"description": "UI: Edit schedule updates cron/timezone and persists",
"implemented": true,
"featureIds": [
"F084",
"F028"
]
},
{
"id": "T054",
"description": "UI: Enable/disable toggle changes execution state",
"implemented": true,
"featureIds": [
"F085",
"F047"
]
},
{
"id": "T055",
"description": "UI: Run-now triggers execution and shows toast",
"implemented": true,
"featureIds": [
"F087",
"F030"
]
},
{
"id": "T056",
"description": "UI: Delete schedule removes it from list after confirmation",
"implemented": true,
"featureIds": [
"F086",
"F029"
]
},
{
"id": "T057",
"description": "UI: Cron validation error is displayed on invalid input",
"implemented": true,
"featureIds": [
"F088",
"F095"
]
},
{
"id": "T058",
"description": "UI: Timezone selection defaults to tenant timezone or UTC",
"implemented": true,
"featureIds": [
"F089"
]
},
{
"id": "T059",
"description": "UI: JSON payload editor rejects invalid JSON and blocks save",
"implemented": true,
"featureIds": [
"F090"
]
},
{
"id": "T060",
"description": "UI: Empty schedules state is shown when none exist",
"implemented": true,
"featureIds": [
"F136"
]
},
{
"id": "T061",
"description": "UI: Loading and error states render for schedules list",
"implemented": false,
"featureIds": [
"F137"
]
},
{
"id": "T062",
"description": "UI: Endpoint list empty state indicates no schedulable endpoints",
"implemented": true,
"featureIds": [
"F169"
]
},
{
"id": "T063",
"description": "UI: Endpoint invalidation is displayed after upgrade failure",
"implemented": false,
"featureIds": [
"F091"
]
},
{
"id": "T064",
"description": "Ops: Reconciliation job detects orphan schedules",
"implemented": false,
"featureIds": [
"F070"
]
},
{
"id": "T065",
"description": "Ops: Kill switch disables all schedules for a tenant",
"implemented": false,
"featureIds": [
"F104"
]
},
{
"id": "T066",
"description": "Plan validation: validate_plan.py passes for plan folder",
"implemented": true,
"featureIds": [
"F174"
]
},
{
"id": "T067",
"description": "Smoke: Basic schedule triggers Runner invocation end-to-end in dev",
"implemented": false,
"featureIds": [
"F175"
]
},
{
"id": "T068",
"description": "Compat: CE does not expose schedule APIs/ UI when Temporal not available (policy)",
"implemented": false,
"featureIds": [
"F101"
]
},
{
"id": "T069",
"description": "Hardening: Concurrent schedule updates do not lose changes (optimistic locking)",
"implemented": false,
"featureIds": [
"F131",
"F132"
]
},
{
"id": "T070",
"description": "Hardening: Create schedule is transactional with job runner schedule creation",
"implemented": true,
"featureIds": [
"F107"
]
},
{
"id": "T071",
"description": "Hardening: Update schedule is transactional with rescheduling",
"implemented": true,
"featureIds": [
"F108"
]
},
{
"id": "T072",
"description": "Hardening: Delete schedule is transactional with schedule deletion",
"implemented": true,
"featureIds": [
"F109"
]
},
{
"id": "T073",
"description": "Policy: Min cron frequency guardrail blocks */1 * * * * (if prohibited)",
"implemented": true,
"featureIds": [
"F034"
]
},
{
"id": "T074",
"description": "Policy: Payload size limit rejects oversized JSON payload",
"implemented": true,
"featureIds": [
"F097"
]
},
{
"id": "T075",
"description": "Data integrity: Cannot delete endpoint row referenced by schedule (service enforcement)",
"implemented": false,
"featureIds": [
"F106"
]
},
{
"id": "T076",
"description": "Execution: Scheduled invocation sets x-alga-tenant/x-alga-extension consistently",
"implemented": true,
"featureIds": [
"F110"
]
},
{
"id": "T077",
"description": "Execution: Scheduled invocation uses current content_hash from install config",
"implemented": true,
"featureIds": [
"F117"
]
},
{
"id": "T078",
"description": "Remap: Disabled schedules remain disabled after remap",
"implemented": false,
"featureIds": [
"F147"
]
},
{
"id": "T079",
"description": "Scheduler: Health check reports missing schedule handles for enabled schedules",
"implemented": false,
"featureIds": [
"F148"
]
},
{
"id": "T080",
"description": "Docs: Troubleshooting guide exists and references relevant file paths",
"implemented": false,
"featureIds": [
"F159"
]
},
{
"id": "T081",
"description": "API: Create schedule rejects cron with seconds field (if unsupported)",
"implemented": true,
"featureIds": [
"F031",
"F095"
]
},
{
"id": "T082",
"description": "API: Create schedule rejects cron with both day-of-month and day-of-week when policy forbids",
"implemented": true,
"featureIds": [
"F031",
"F095"
]
},
{
"id": "T083",
"description": "API: Create schedule rejects empty cron string",
"implemented": true,
"featureIds": [
"F031"
]
},
{
"id": "T084",
"description": "API: Update schedule rejects invalid cron",
"implemented": true,
"featureIds": [
"F031",
"F028"
]
},
{
"id": "T085",
"description": "API: Update schedule rejects invalid timezone",
"implemented": true,
"featureIds": [
"F031",
"F028"
]
},
{
"id": "T086",
"description": "API: Create schedule rejects unknown timezone (not IANA)",
"implemented": true,
"featureIds": [
"F096"
]
},
{
"id": "T087",
"description": "API: Create schedule accepts UTC timezone",
"implemented": true,
"featureIds": [
"F096"
]
},
{
"id": "T088",
"description": "API: Create schedule stores timezone exactly as provided (normalized if policy)",
"implemented": true,
"featureIds": [
"F031"
]
},
{
"id": "T089",
"description": "API: Create schedule rejects payload_json that is not valid JSON object/array (policy)",
"implemented": true,
"featureIds": [
"F011",
"F097"
]
},
{
"id": "T090",
"description": "API: Create schedule rejects payload_json larger than max",
"implemented": true,
"featureIds": [
"F097"
]
},
{
"id": "T091",
"description": "API: Update schedule can clear payload_json",
"implemented": true,
"featureIds": [
"F028",
"F011"
]
},
{
"id": "T092",
"description": "API: Create schedule rejects name longer than max length",
"implemented": true,
"featureIds": [
"F015"
]
},
{
"id": "T093",
"description": "API: Create schedule enforces name uniqueness per install if enabled",
"implemented": true,
"featureIds": [
"F098"
]
},
{
"id": "T094",
"description": "API: Update schedule to conflicting name fails if uniqueness enabled",
"implemented": true,
"featureIds": [
"F098"
]
},
{
"id": "T095",
"description": "API: List schedules returns only schedules for the current tenant",
"implemented": true,
"featureIds": [
"F026",
"F071"
]
},
{
"id": "T096",
"description": "API: Fetch single schedule by id returns 404 cross-tenant",
"implemented": true,
"featureIds": [
"F144",
"F071"
]
},
{
"id": "T097",
"description": "API: Delete schedule returns 404 for unknown schedule id",
"implemented": true,
"featureIds": [
"F029"
]
},
{
"id": "T098",
"description": "API: Update schedule returns 404 for unknown schedule id",
"implemented": true,
"featureIds": [
"F028"
]
},
{
"id": "T099",
"description": "API: Create schedule fails when extension is not installed",
"implemented": true,
"featureIds": [
"F163"
]
},
{
"id": "T100",
"description": "API: Create schedule fails when extension is installed but disabled (policy)",
"implemented": true,
"featureIds": [
"F163"
]
},
{
"id": "T101",
"description": "API: Run-now fails when extension install disabled (policy)",
"implemented": true,
"featureIds": [
"F164"
]
},
{
"id": "T102",
"description": "Endpoints: List endpoints excludes endpoints with invalid method/path (sanitized on ingest)",
"implemented": true,
"featureIds": [
"F017",
"F020"
]
},
{
"id": "T103",
"description": "Endpoints: Endpoint list includes handler field (if needed for debugging)",
"implemented": true,
"featureIds": [
"F020"
]
},
{
"id": "T104",
"description": "Endpoints: Endpoint list returns stable endpoint_id values",
"implemented": true,
"featureIds": [
"F006",
"F020"
]
},
{
"id": "T105",
"description": "Jobs: Create schedule persists runner_schedule_id/external handle id in DB",
"implemented": true,
"featureIds": [
"F046",
"F010"
]
},
{
"id": "T106",
"description": "Jobs: Update schedule cron reschedules underlying job runner schedule",
"implemented": true,
"featureIds": [
"F108",
"F047"
]
},
{
"id": "T107",
"description": "Jobs: Disable schedule pauses execution by removing/pausing underlying schedule",
"implemented": true,
"featureIds": [
"F047"
]
},
{
"id": "T108",
"description": "Jobs: Re-enable schedule recreates underlying schedule and retains schedule id determinism",
"implemented": true,
"featureIds": [
"F047",
"F154"
]
},
{
"id": "T109",
"description": "Jobs: Schedule create is atomic when runner schedule creation fails (no DB row or marked failed)",
"implemented": true,
"featureIds": [
"F107"
]
},
{
"id": "T110",
"description": "Jobs: Schedule update is atomic when reschedule operation fails (old schedule remains)",
"implemented": true,
"featureIds": [
"F108"
]
},
{
"id": "T111",
"description": "Jobs: Schedule delete is atomic when runner schedule deletion fails (retryable)",
"implemented": true,
"featureIds": [
"F109",
"F135"
]
},
{
"id": "T112",
"description": "Execution: Scheduled invocation uses selected method and path",
"implemented": true,
"featureIds": [
"F049"
]
},
{
"id": "T113",
"description": "Execution: Scheduled invocation uses payload_json as request body for POST/PUT/PATCH",
"implemented": true,
"featureIds": [
"F052",
"F160"
]
},
{
"id": "T114",
"description": "Execution: Scheduled invocation uses empty body for GET by default",
"implemented": true,
"featureIds": [
"F160"
]
},
{
"id": "T115",
"description": "Execution: Scheduled invocation does not allow arbitrary header injection (default)",
"implemented": true,
"featureIds": [
"F053"
]
},
{
"id": "T116",
"description": "Execution: Timeout aborts runner call and records failure",
"implemented": true,
"featureIds": [
"F054",
"F134"
]
},
{
"id": "T117",
"description": "Execution: Runner non-JSON response is handled and recorded as failure",
"implemented": true,
"featureIds": [
"F055",
"F134"
]
},
{
"id": "T118",
"description": "Execution: Runner returns empty body is handled and recorded as failure",
"implemented": true,
"featureIds": [
"F055",
"F134"
]
},
{
"id": "T119",
"description": "Execution: Runner returns non-2xx status is recorded as schedule failure (policy)",
"implemented": true,
"featureIds": [
"F055"
]
},
{
"id": "T120",
"description": "Execution: Success response updates last_run_status to success",
"implemented": true,
"featureIds": [
"F077"
]
},
{
"id": "T121",
"description": "Execution: No-overlap lock prevents second execution starting while first is running",
"implemented": true,
"featureIds": [
"F056"
]
},
{
"id": "T122",
"description": "Execution: No-overlap lock is released after failure",
"implemented": true,
"featureIds": [
"F056"
]
},
{
"id": "T123",
"description": "Execution: No-overlap lock has TTL to avoid permanent deadlock",
"implemented": false,
"featureIds": [
"F056"
]
},
{
"id": "T124",
"description": "Execution: Retry behavior respects maxAttempts and backoff defaults",
"implemented": false,
"featureIds": [
"F058",
"F126"
]
},
{
"id": "T125",
"description": "Execution: Pause-on-failure policy disables schedule after N failures (if enabled)",
"implemented": false,
"featureIds": [
"F127"
]
},
{
"id": "T126",
"description": "Remap: Remap matches endpoints case-insensitively on method and exactly on path",
"implemented": false,
"featureIds": [
"F060",
"F017"
]
},
{
"id": "T127",
"description": "Remap: Remap updates endpoint_id references and (re)creates underlying runner schedules if needed",
"implemented": true,
"featureIds": [
"F060",
"F047"
]
},
{
"id": "T128",
"description": "Remap: When blocked, error includes list of missing (method,path) pairs",
"implemented": true,
"featureIds": [
"F062"
]
},
{
"id": "T129",
"description": "Remap: Blocking error is surfaced in UI on version update attempt",
"implemented": false,
"featureIds": [
"F092"
]
},
{
"id": "T130",
"description": "Remap: Override disables only affected schedules, keeps others enabled",
"implemented": true,
"featureIds": [
"F063"
]
},
{
"id": "T131",
"description": "Remap: Audit log records which schedules were remapped/disabled",
"implemented": false,
"featureIds": [
"F064",
"F080"
]
},
{
"id": "T132",
"description": "Cleanup: Uninstall order deletes schedules before deleting tenant_extension_install row",
"implemented": true,
"featureIds": [
"F165"
]
},
{
"id": "T133",
"description": "Cleanup: Schedule delete removes Temporal schedule handle",
"implemented": false,
"featureIds": [
"F069"
]
},
{
"id": "T134",
"description": "Cleanup: Schedule delete removes PG Boss schedule name in CE mode (if enabled)",
"implemented": false,
"featureIds": [
"F101",
"F069"
]
},
{
"id": "T135",
"description": "Cleanup: Bulk-disable schedules endpoint disables all schedules for install",
"implemented": false,
"featureIds": [
"F145"
]
},
{
"id": "T136",
"description": "Citus constraints: No schema uses ON DELETE CASCADE for new tables",
"implemented": true,
"featureIds": [
"F066",
"F069"
]
},
{
"id": "T137",
"description": "Security: endpoint_id cannot be used to reach endpoints from a different extension/version",
"implemented": false,
"featureIds": [
"F032",
"F072"
]
},
{
"id": "T138",
"description": "Security: Create schedule fails when endpoint path has path params (if v1 disallowed)",
"implemented": true,
"featureIds": [
"F073",
"F162"
]
},
{
"id": "T139",
"description": "Security: UI warns/disables selection for endpoints with path params",
"implemented": false,
"featureIds": [
"F115"
]
},
{
"id": "T140",
"description": "Security: Schedule payload does not allow secrets storage; secrets must be via install secrets",
"implemented": false,
"featureIds": [
"F172",
"F075"
]
},
{
"id": "T141",
"description": "Security: Scheduled invocation respects provider grants (providers array passed to runner)",
"implemented": false,
"featureIds": [
"F173",
"F050"
]
},
{
"id": "T142",
"description": "Observability: last_error is truncated in UI but full error retrievable via logs (policy)",
"implemented": false,
"featureIds": [
"F166"
]
},
{
"id": "T143",
"description": "Observability: schedule run links to debug stream when available",
"implemented": false,
"featureIds": [
"F167"
]
},
{
"id": "T144",
"description": "Observability: Execution log includes schedule_id and invocation_id",
"implemented": false,
"featureIds": [
"F076",
"F112"
]
},
{
"id": "T145",
"description": "Observability: Metric labels include schedule_id or schedule_name safely",
"implemented": false,
"featureIds": [
"F078",
"F141"
]
},
{
"id": "T146",
"description": "Observability: last_success_at updates only on successful runs (if enabled)",
"implemented": false,
"featureIds": [
"F142"
]
},
{
"id": "T147",
"description": "UX: Schedule list shows endpoint based on installed version",
"implemented": false,
"featureIds": [
"F152"
]
},
{
"id": "T148",
"description": "UX: Changing endpoint shows confirmation/warning",
"implemented": false,
"featureIds": [
"F153"
]
},
{
"id": "T149",
"description": "UX: Run-now button disabled while schedule execution in progress (optional)",
"implemented": false,
"featureIds": [
"F056",
"F087"
]
},
{
"id": "T150",
"description": "UX: Invalid schedule shows call-to-action to edit endpoint",
"implemented": false,
"featureIds": [
"F091"
]
},
{
"id": "T151",
"description": "UX: Schedules section hidden for users without permission",
"implemented": false,
"featureIds": [
"F138"
]
},
{
"id": "T152",
"description": "Perf: Endpoint list + schedules load without N+1 queries in settings view",
"implemented": false,
"featureIds": [
"F100"
]
},
{
"id": "T153",
"description": "Perf: Schedules list query uses tenant/install indexes",
"implemented": false,
"featureIds": [
"F099"
]
},
{
"id": "T154",
"description": "Ops: Admin endpoint lists schedules across tenants (authorized)",
"implemented": false,
"featureIds": [
"F156"
]
},
{
"id": "T155",
"description": "Ops: Admin endpoint deletes schedule by id",
"implemented": false,
"featureIds": [
"F157"
]
},
{
"id": "T156",
"description": "Ops: Admin endpoint denies non-admin access",
"implemented": false,
"featureIds": [
"F156",
"F157",
"F071"
]
},
{
"id": "T157",
"description": "Backfill: Backfill script populates endpoint table for existing versions",
"implemented": false,
"featureIds": [
"F123",
"F124"
]
},
{
"id": "T158",
"description": "Backfill: Backfill handles malformed api_endpoints JSON safely",
"implemented": false,
"featureIds": [
"F123"
]
},
{
"id": "T159",
"description": "Backfill: Backfill is tenant-agnostic and operates on registry tables only",
"implemented": false,
"featureIds": [
"F123"
]
},
{
"id": "T160",
"description": "Feature flag: Schedules APIs/ UI gated behind feature flag",
"implemented": false,
"featureIds": [
"F102",
"F170"
]
},
{
"id": "T161",
"description": "Feature flag: Feature flag can be enabled per tenant",
"implemented": false,
"featureIds": [
"F170"
]
},
{
"id": "T162",
"description": "Next run: API can compute next run time for a schedule (if implemented)",
"implemented": false,
"featureIds": [
"F114",
"F129"
]
},
{
"id": "T163",
"description": "Next run: Computation respects timezone and DST transitions",
"implemented": false,
"featureIds": [
"F114",
"F096"
]
},
{
"id": "T164",
"description": "Validation: Cron preview endpoint returns helpful errors",
"implemented": false,
"featureIds": [
"F128",
"F129"
]
},
{
"id": "T165",
"description": "Definition: Only allowed HTTP methods appear in endpoint dropdown (policy)",
"implemented": false,
"featureIds": [
"F160"
]
},
{
"id": "T166",
"description": "Definition: Schedules cannot include query params in v1 (if policy)",
"implemented": false,
"featureIds": [
"F161"
]
},
{
"id": "T167",
"description": "Scheduler health: Detect missing Temporal schedule handle for enabled schedule",
"implemented": false,
"featureIds": [
"F148"
]
},
{
"id": "T168",
"description": "Scheduler health: Auto-repair recreates missing schedule handle (if enabled)",
"implemented": false,
"featureIds": [
"F149"
]
},
{
"id": "T169",
"description": "Audit: Schedule create/update/delete writes audit log with actor",
"implemented": false,
"featureIds": [
"F014",
"F080"
]
},
{
"id": "T170",
"description": "Audit: Override disable-on-update writes audit log entries",
"implemented": false,
"featureIds": [
"F064",
"F080"
]
},
{
"id": "T171",
"description": "Docs: Developer docs describe scheduled invocation semantics for endpoint handlers",
"implemented": false,
"featureIds": [
"F139"
]
},
{
"id": "T172",
"description": "Docs: Operator docs describe remap failure remediation",
"implemented": false,
"featureIds": [
"F140"
]
},
{
"id": "T173",
"description": "Docs: Migration notes include endpoint backfill verification steps",
"implemented": false,
"featureIds": [
"F158"
]
},
{
"id": "T174",
"description": "System identity: Scheduled invocations use system identity or omit user",
"implemented": false,
"featureIds": [
"F111"
]
},
{
"id": "T175",
"description": "Data integrity: Schedule cannot reference endpoint row for a deleted version (service guards)",
"implemented": false,
"featureIds": [
"F106"
]
},
{
"id": "T176",
"description": "Cleanup: Registry version delete prevents removal when endpoints referenced by schedules (policy)",
"implemented": false,
"featureIds": [
"F106"
]
},
{
"id": "T177",
"description": "Ops: Reconciliation job cleans orphan schedules with missing install_id",
"implemented": false,
"featureIds": [
"F070"
]
},
{
"id": "T178",
"description": "Ops: Reconciliation job cleans schedules whose endpoint_id no longer exists",
"implemented": false,
"featureIds": [
"F070"
]
},
{
"id": "T179",
"description": "API: Bulk-disable schedules for install is idempotent",
"implemented": false,
"featureIds": [
"F145"
]
},
{
"id": "T180",
"description": "UI: Upgrade-block modal lists affected schedules and missing endpoints",
"implemented": false,
"featureIds": [
"F092"
]
},
{
"id": "T181",
"description": "UI: Override flow disables affected schedules and retries update",
"implemented": false,
"featureIds": [
"F168",
"F094"
]
},
{
"id": "T182",
"description": "UI: Schedules list shows last_error and supports copy to clipboard",
"implemented": false,
"featureIds": [
"F166"
]
},
{
"id": "T183",
"description": "Compat: If schedules disabled in CE, API returns clear error message",
"implemented": false,
"featureIds": [
"F101"
]
},
{
"id": "T184",
"description": "Compat: If schedules enabled in CE mode, pgboss schedule is created and named per tenant/install",
"implemented": false,
"featureIds": [
"F155",
"F101"
]
},
{
"id": "T185",
"description": "Concurrency: Two concurrent creates with same name/cron are deduped or both allowed per policy",
"implemented": false,
"featureIds": [
"F131",
"F098"
]
},
{
"id": "T186",
"description": "Concurrency: Two concurrent updates do not clobber endpoint_id changes",
"implemented": false,
"featureIds": [
"F131",
"F132"
]
},
{
"id": "T187",
"description": "Telemetry: Scheduled run logs include registry_id, version_id, content_hash",
"implemented": false,
"featureIds": [
"F141",
"F050",
"F051"
]
},
{
"id": "T188",
"description": "Safety: Enforced max schedules per install prevents DB growth abuse",
"implemented": false,
"featureIds": [
"F033"
]
},
{
"id": "T189",
"description": "Safety: Deny schedule cron that runs more often than min interval",
"implemented": true,
"featureIds": [
"F034"
]
},
{
"id": "T190",
"description": "Run-now: Run-now rejects when schedule disabled if policy is to require enablement",
"implemented": false,
"featureIds": [
"F030"
]
},
{
"id": "T191",
"description": "Run-now: Run-now can be executed even when schedule disabled if policy allows",
"implemented": false,
"featureIds": [
"F030"
]
},
{
"id": "T192",
"description": "Endpoint selection: Dropdown shows method+path and maybe handler for disambiguation",
"implemented": false,
"featureIds": [
"F083"
]
},
{
"id": "T193",
"description": "Feature flag: API returns 404/disabled for endpoints/schedules routes when flag off",
"implemented": false,
"featureIds": [
"F170"
]
},
{
"id": "T194",
"description": "Policy: Schedules cannot target DELETE endpoints unless explicitly allowed",
"implemented": false,
"featureIds": [
"F160"
]
},
{
"id": "T195",
"description": "Compliance: Scheduled invocation does not bypass capability gating in Runner",
"implemented": false,
"featureIds": [
"F173"
]
},
{
"id": "T196",
"description": "Ops: Kill switch disables all schedules and deletes/pause runner schedules",
"implemented": false,
"featureIds": [
"F104"
]
},
{
"id": "T197",
"description": "API: Preview remap endpoint reports which schedules will remap and which will block",
"implemented": false,
"featureIds": [
"F146"
]
},
{
"id": "T198",
"description": "UI: Preview remap results shown before committing update (if implemented)",
"implemented": false,
"featureIds": [
"F146",
"F092"
]
},
{
"id": "T199",
"description": "API: Schedules list includes next_run_at when available",
"implemented": false,
"featureIds": [
"F114"
]
},
{
"id": "T200",
"description": "API: Schedules list includes runner_schedule_id/external_id for debugging (admin only)",
"implemented": false,
"featureIds": [
"F010",
"F103"
]
},
{
"id": "T201",
"description": "UI: Shows warning when extension has no endpoints declared (cannot schedule)",
"implemented": true,
"featureIds": [
"F169"
]
},
{
"id": "T202",
"description": "System: Background reconciliation does not affect disabled schedules",
"implemented": false,
"featureIds": [
"F070"
]
},
{
"id": "T203",
"description": "System: Schedule create/update/delete writes structured logs for auditing",
"implemented": false,
"featureIds": [
"F080",
"F141"
]
},
{
"id": "T204",
"description": "Plan: features.json contains >100 features",
"implemented": true,
"featureIds": [
"F001"
]
},
{
"id": "T205",
"description": "Plan: tests.json contains >= features.json count (goal)",
"implemented": true,
"featureIds": [
"F001"
]
},
{
"id": "T206",
"description": "UI: Schedule section can be navigated without impacting existing settings/save flows",
"implemented": false,
"featureIds": [
"F081"
]
},
{
"id": "T207",
"description": "UI: Schedules section does not require saving via existing 'Save Changes' button for settings",
"implemented": false,
"featureIds": [
"F081"
]
},
{
"id": "T208",
"description": "API: Schedule endpoints return field-level validation errors for UI",
"implemented": true,
"featureIds": [
"F036"
]
},
{
"id": "T209",
"description": "API: Endpoint listing supports search filter (if implemented)",
"implemented": false,
"featureIds": [
"F025"
]
},
{
"id": "T210",
"description": "API: Endpoints list supports pagination (if implemented)",
"implemented": false,
"featureIds": [
"F025"
]
},
{
"id": "T211",
"description": "UI: Endpoint dropdown supports search typeahead (if implemented)",
"implemented": false,
"featureIds": [
"F083",
"F025"
]
},
{
"id": "T212",
"description": "Observability: Failed schedule run includes truncated response preview for debugging (policy)",
"implemented": false,
"featureIds": [
"F055",
"F166"
]
},
{
"id": "T213",
"description": "Execution: When install config cannot be loaded, schedule run records a failure and does not call Runner",
"implemented": true,
"featureIds": [
"F133"
]
},
{
"id": "T214",
"description": "Execution: When endpoint_id not found, schedule run records a failure and disables schedule (policy)",
"implemented": true,
"featureIds": [
"F133",
"F127"
]
},
{
"id": "T215",
"description": "UI: Schedule invalidation shown when endpoint row missing",
"implemented": false,
"featureIds": [
"F091"
]
},
{
"id": "T216",
"description": "Rollback: After extension version rollback, schedules remap back and still run",
"implemented": false,
"featureIds": [
"F060"
]
},
{
"id": "T217",
"description": "Ops: Admin tool can list schedules by install_id for support",
"implemented": false,
"featureIds": [
"F103"
]
},
{
"id": "T218",
"description": "Ops: Admin tool can backfill endpoints for a version id",
"implemented": false,
"featureIds": [
"F105"
]
},
{
"id": "T219",
"description": "Metrics: Per-schedule failure counter increments on failures",
"implemented": false,
"featureIds": [
"F078",
"F142"
]
},
{
"id": "T220",
"description": "Metrics: Success counter increments on success",
"implemented": false,
"featureIds": [
"F078"
]
}
]