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

727 lines
20 KiB
JSON

[
{
"id": "F001",
"description": "Plan: Document dependency on trigger payload mapping policy (2025-12-27 plan)",
"implemented": true,
"prdRefs": [
"Summary",
"Goals"
]
},
{
"id": "F002",
"description": "UX: Drafts do not require users to manually select a payload schema ref (system infers/stores one based on trigger or pinned selection)",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)",
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F003",
"description": "DB: Add workflow payload schema mode metadata (inferred vs pinned)",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations"
]
},
{
"id": "F004",
"description": "DB: Persist payload contract provenance on publish (pinned vs inferred) and store it on workflow_definitions",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations",
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F005",
"description": "Runtime/API: Persist and return payload contract mode (inferred vs pinned) alongside definitions",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations",
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F006",
"description": "Runtime: Ensure published WorkflowDefinition always has a concrete payloadSchemaRef",
"implemented": true,
"prdRefs": [
"Requirements/Publish-Time Behavior (Contract)"
]
},
{
"id": "F007",
"description": "Publish: Persist payload schema JSON snapshot for published versions (payload_schema_json) for audit/debugging",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)",
"Observability"
]
},
{
"id": "F008",
"description": "Publish: Record payload schema provenance (pinned vs inferred) on publish",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations",
"Observability"
]
},
{
"id": "F009",
"description": "Designer: Allow viewing the published payload schema snapshot from the published version record",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F010",
"description": "Designer: Replace required payload schema picker with 'Workflow data contract' section",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F011",
"description": "Designer: Default contract mode is inferred (no selection required)",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract",
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F012",
"description": "Designer: Add advanced toggle to pin payload schema ref",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F013",
"description": "Designer: When pinned, show existing schema ref select + advanced input",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F014",
"description": "Designer: When inferred, hide/disable payload schema selection controls",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F015",
"description": "Designer: Show 'Effective schema (design time)' preview for inferred mode",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F016",
"description": "Designer: Show 'Pinned contract schema' preview for pinned mode",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F017",
"description": "Designer: Show 'Published contract schema' ref + preview for published version",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F018",
"description": "Designer: Compute effective data context from trigger schema + step outputs (vars)",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Field Picker / Mapping / Expressions",
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F019",
"description": "Designer: Include event.payload typed from trigger source schema ref",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F020",
"description": "Designer: Include vars.<saveAs> typed from action/node output schemas when known",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Field Picker / Mapping / Expressions"
]
},
{
"id": "F021",
"description": "Designer: Mark unknown outputs as 'Unknown type' in palette/field picker",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Field Picker / Mapping / Expressions"
]
},
{
"id": "F022",
"description": "Designer: Update expression editor contexts to prefer effective schema over pinned schema only",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Field Picker / Mapping / Expressions"
]
},
{
"id": "F023",
"description": "Designer: Update mapping panel targetFields to come from effective payload schema (inferred/pinned)",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F024",
"description": "Designer: Clarify trigger schema vs payload contract in labels/modals",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger",
"Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F025",
"description": "Designer: Trigger section shows schema ref/status and 'View schema' link",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F026",
"description": "Designer: Enforce missing/unknown trigger schema errors per policy (disable publish/run)",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger",
"Requirements/Publish-Time Behavior (Contract)"
]
},
{
"id": "F027",
"description": "Designer: System events with missing schema cannot be selected",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F028",
"description": "Designer: Tenant events with missing schema show errors and disable publish/run",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F029",
"description": "Designer: When inferred contract mode, disable/adjust schema inference toggle UX from earlier plan",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F030",
"description": "Designer: Persist contract mode changes in draft save payload",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)",
"Data Model / API / Integrations"
]
},
{
"id": "F031",
"description": "Designer/Runtime: Compute an effective payload schemaRef for drafts (pinned ref or inferred from trigger schemaRef)",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F032",
"description": "Designer: Effective data context includes trigger schema + ordered prior step outputs for vars typing",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F033",
"description": "Designer: Effective schema preview is rendered from JSON schema fetched by schemaRef (no virtual schemaRef required)",
"implemented": true,
"prdRefs": [
"Open Questions",
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F034",
"description": "Designer: Effective data context merges known outputs into vars namespace using stable saveAs names",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Field Picker / Mapping / Expressions"
]
},
{
"id": "F035",
"description": "Publish: In inferred mode, infer payloadSchemaRef from selected trigger event schemaRef at publish time",
"implemented": true,
"prdRefs": [
"Requirements/Publish-Time Behavior (Contract)"
]
},
{
"id": "F036",
"description": "Publish: Store payload_schema_json snapshot on workflow_definition_versions for both pinned and inferred modes",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F037",
"description": "Publish: Persist provenance fields on workflow_definitions (payload_schema_mode, pinned_payload_schema_ref, payload_schema_provenance)",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations"
]
},
{
"id": "F038",
"description": "Designer: After publish, show a warning when inferred contract differs from published contract and offer to pin",
"implemented": true,
"prdRefs": [
"Schema evolution"
]
},
{
"id": "F039",
"description": "Publish: Validate that payloadSchemaRef exists in registry at publish time; unknown is error",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F040",
"description": "Validator: Drafts remain saveable while contract is inferred; publish/run can be gated by missing/unknown schema",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F041",
"description": "Validator: Deep nested validation of required mappings using effective payload schema",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)",
"Type Compatibility"
]
},
{
"id": "F042",
"description": "Validator: Missing secrets referenced by mappings/expressions are errors",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F043",
"description": "Validator: Type incompatibility is error when both sides known",
"implemented": true,
"prdRefs": [
"Type Compatibility"
]
},
{
"id": "F044",
"description": "Validator: Type incompatibility is warning when either side unknown",
"implemented": true,
"prdRefs": [
"Type Compatibility"
]
},
{
"id": "F045",
"description": "Validator: Persist inferred vs pinned status and effective schema diagnostics in validation details",
"implemented": true,
"prdRefs": [
"Observability",
"Data Model / API / Integrations"
]
},
{
"id": "F046",
"description": "Run dialog: Build test-event input from trigger schema (required known)",
"implemented": true,
"prdRefs": [
"Users and Primary Flows/Run workflow (test run)"
]
},
{
"id": "F047",
"description": "Run dialog: Apply trigger mapping (if present) to produce workflow payload",
"implemented": true,
"prdRefs": [
"Users and Primary Flows/Run workflow (test run)"
]
},
{
"id": "F048",
"description": "Run dialog: Allow preview for unpublished inferred workflows; disable starting a run until a version is published",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F049",
"description": "Run dialog: Disable run when trigger schema is missing/unknown (policy)",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F050",
"description": "Execution: Ensure runs use published payloadSchemaRef contract; do not depend on inferred schema at runtime",
"implemented": true,
"prdRefs": [
"Goals",
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F051",
"description": "Execution: Continue honoring trigger mapping semantics from prior plan",
"implemented": true,
"prdRefs": [
"Goals",
"Depends on"
]
},
{
"id": "F052",
"description": "Designer: Update schema preview modal to support rendering inferred schema (no ref)",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F053",
"description": "Designer: Add indicator when schema shown is inferred vs pinned vs published",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F054",
"description": "Designer: Cache inferred schema recomputation and invalidate when steps/trigger change",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F055",
"description": "Event catalog: Ensure all system events have schema refs; missing schema is an error state",
"implemented": true,
"prdRefs": [
"Goals",
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F056",
"description": "Event catalog: Surface schema status for events used as triggers in designer",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F057",
"description": "Telemetry: Emit event when user switches contract mode inferred<->pinned",
"implemented": true,
"prdRefs": [
"Observability"
]
},
{
"id": "F058",
"description": "Telemetry: Emit event when publish generates payload contract schema",
"implemented": true,
"prdRefs": [
"Observability"
]
},
{
"id": "F059",
"description": "Telemetry: Emit event when publish blocked by missing trigger schema/mapping/secrets",
"implemented": true,
"prdRefs": [
"Observability"
]
},
{
"id": "F060",
"description": "Permissions: Enforce pinning payload schema requires workflow:manage",
"implemented": true,
"prdRefs": [
"Security / Permissions"
]
},
{
"id": "F061",
"description": "Permissions: Enforce publish contract requires workflow:publish",
"implemented": true,
"prdRefs": [
"Security / Permissions"
]
},
{
"id": "F062",
"description": "UI: Add skeleton loaders for inferred schema computation sections (avoid blank gaps)",
"implemented": true,
"prdRefs": [
"UX / UI Notes"
]
},
{
"id": "F063",
"description": "UI: Add error banners for inferred schema compute failures (fallback to unknown)",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F064",
"description": "API: Expose payload schema mode + provenance in workflow definition read endpoints",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations"
]
},
{
"id": "F065",
"description": "API: Include generated payload schema ref in audit trail for published versions",
"implemented": true,
"prdRefs": [
"Observability"
]
},
{
"id": "F066",
"description": "Migration: Backfill existing drafts to pinned mode (if they already have payloadSchemaRef)",
"implemented": true,
"prdRefs": [
"Rollout / Migration"
]
},
{
"id": "F067",
"description": "Migration: Default new drafts to inferred mode",
"implemented": true,
"prdRefs": [
"Rollout / Migration"
]
},
{
"id": "F068",
"description": "Designer: Disable publish/run while event catalog is loading for event-triggered workflows (no error flash)",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Trigger"
]
},
{
"id": "F069",
"description": "Designer: Disable publish/run while required schemas are still loading (show skeleton)",
"implemented": true,
"prdRefs": [
"UX / UI Notes"
]
},
{
"id": "F070",
"description": "Validation UI: Present inferred/pinned contract context in validation details panel",
"implemented": true,
"prdRefs": [
"Observability",
"UX / UI Notes"
]
},
{
"id": "F071",
"description": "Validation persistence: Store effective schema summary hashes for change detection",
"implemented": true,
"prdRefs": [
"Observability"
]
},
{
"id": "F072",
"description": "Docs: Update workflow designer help text to explain trigger schema vs payload contract",
"implemented": true,
"prdRefs": [
"UX / UI Notes"
]
},
{
"id": "F073",
"description": "Docs: Add admin/operator notes for payload contract snapshots (no dynamic registry generation)",
"implemented": true,
"prdRefs": [
"Data Model / API / Integrations"
]
},
{
"id": "F074",
"description": "Edge case: If workflow has no trigger (manual), require pinned schema or block publish",
"implemented": true,
"prdRefs": [
"Open Questions",
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F075",
"description": "Edge case: If workflow trigger is non-event (future), define inference behavior (no event.payload)",
"implemented": true,
"prdRefs": [
"Open Questions"
]
},
{
"id": "F078",
"description": "Compat: Ensure existing workflows with explicit payloadSchemaRef continue to behave as pinned mode",
"implemented": true,
"prdRefs": [
"Rollout / Migration"
]
},
{
"id": "F079",
"description": "Compat: Ensure run/execution continues to use payload.EmailWorkflowPayload.v1 where appropriate",
"implemented": true,
"prdRefs": [
"Goals"
]
},
{
"id": "F080",
"description": "Performance: Avoid recomputing inferred schema on every keystroke; debounce/compute on structural changes",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F081",
"description": "Performance: Cache schema registry JSON conversions/lookups (toJsonSchema/listRefs)",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F082",
"description": "Security: Ensure tenant is inferred and not user-editable in test event builder flows",
"implemented": true,
"prdRefs": [
"Security / Permissions"
]
},
{
"id": "F083",
"description": "Designer: Provide a 'View effective contract' action to preview the publish-time payload schema ref as JSON",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F084",
"description": "Designer: Show warnings when inferred contract differs from current pinned/published contract",
"implemented": true,
"prdRefs": [
"Schema evolution",
"Type Compatibility"
]
},
{
"id": "F085",
"description": "Publish: Ensure payload schema snapshot is deterministic (stable ordering, stable refs)",
"implemented": true,
"prdRefs": [
"Requirements/Publish-Time Behavior (Contract)"
]
},
{
"id": "F086",
"description": "Publish: Include contract generation in validation persistence (validated_at semantics)",
"implemented": true,
"prdRefs": [
"Observability"
]
},
{
"id": "F087",
"description": "Error handling: If schema lookup fails (unknown ref), publish fails with actionable error",
"implemented": true,
"prdRefs": [
"Publish-Time Behavior (Contract)"
]
},
{
"id": "F088",
"description": "Error handling: If inference fails, allow draft save but block publish until fixed",
"implemented": true,
"prdRefs": [
"Requirements/Design-Time Behavior (Drafts)"
]
},
{
"id": "F089",
"description": "UI: Ensure designer still supports 'View schema' modals with syntax highlighting for inferred JSON",
"implemented": true,
"prdRefs": [
"UX / UI Notes/Workflow Designer \u2014 Workflow Payload Contract"
]
},
{
"id": "F090",
"description": "Plan maintenance: Keep features/tests synchronized during implementation and flip implemented booleans as shipped",
"implemented": true,
"prdRefs": [
"Ongoing Maintenance Rules"
]
}
]