---
title: Rule on the transactions.pid foreign key held unapplied
type: task
status: planned
description: >-
  An authored but unapplied transactions.pid foreign key sits as an unpushed commit in the league
  transactions-pid-fk worktree, awaiting an operator ruling on its ON DELETE clause. Nothing tracked
  it after its parent task completed.
base_uri: user:task/league/rule-on-held-transactions-pid-foreign-key.md
created_at: '2026-09-26T03:17:21.452Z'
entity_id: 5f70a0e7-9143-4dd5-bb17-ae9b586bcfd0
owner_identity_uri: █████████████████████████
priority: Low
public_read: true
suspension:
  reason: was Waiting before suspensions replaced the status
  suspended_at: '2026-10-25T21:15:29.009Z'
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-10-25T21:22:19.830Z'
visibility_analyzed_at: '2026-11-06T00:18:04.415Z'
---

# Rule on the transactions.pid foreign key held unapplied

## State

Commit `ff668fcf` on branch `transactions-pid-fk` of the `private` submodule, inside its local worktree. Unpushed — it is on no remote branch — and one commit ahead of the pointer the superproject records (`fd7b0778`, which is also `origin/main`'s tip).

The commit authors the constraint and deliberately does not apply it. Its own message states the reason: `transactions` is a core table with five writing lanes and no designated owner, so the ruling is the operator's. It records the validation already done — 25,559 rows measured, 0 NULL pid, 0 dangling, four sibling tables already carrying the identical FK, `idx_transactions_pid` already present — and no `NOT VALID` phase needed.

## The decision

`NO ON DELETE CLAUSE`, named in the commit as the one thing worth review. Nothing else is open.

## Why this entity exists

The work it came from is finished: `██████████████████████████████████████████████████████████████████` is Completed, both continuations (`████████████████████████████████`, `███████████████████████████████████`) are cancelled, and the applying session (thread `1b36d7e1`) ended 2026-09-18. The only thing still naming the held commit was signal 132127 from `██████████████████████`, which reported it as stale submodule content and recommended `git submodule update --init` — a command that would have orphaned it.

That detector was corrected to skip a checkout ahead of its pointer, so it no longer fires here. This entity is the replacement surface, not a duplicate of one.

## Plan

- [ ] Operator rules on the `ON DELETE` clause, or rules that the constraint is not wanted.
- [ ] If wanted: push the branch, land the migration, bump the superproject pointer, apply to `league_production`.
- [ ] If not wanted: drop the commit and remove the worktree per [[user:workflow/software/merge-worktree.md]].
- [ ] Either way the worktree goes away; it exists only to hold this commit.

## Do not

Run `git submodule update --init` in that worktree while the commit is unpushed. It is recoverable only by reflog.
