// Tenney Project DP — Data / Control / Context faces + detail panel. // Split from tenney_project.jsx to keep files small. Loaded AFTER it. /* ── Data face: the plan as an XLSX sheet (framework sheet styles) ── */ function PjData({ P, tasks, fmtD }) { const cols = ['ID', 'Task', 'Workstream', 'Owner', 'Status', 'Priority', 'Start', 'Due', '% Complete', 'Milestone', 'Depends On', 'Notes']; return (
| {cols.map((c, i) => | {c} | )}|||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {i + 1} | {t.id} | {t.name} | {t.ws} | {P.people[t.owner]} | {t.status} | {t.priority} | {fmtD(t.start)} | {fmtD(t.due)} | {t.pct}% | {t.milestone ? 'Y' : 'N'} | {t.deps.join(', ')} | {t.notes} |
This agent keeps the plan honest: it writes edits back to the plan file, sweeps for overdue and blocked work, and rebuilds the tracker when the file changes outside Proxa.
| Artifact | Source updates | Last update | ||
|---|---|---|---|---|
Disposition Plan plan file · DD workflow · Lease-Up gate |
1 | 3 h ago |
Recurring jobs this data product owns. Run one immediately without waiting for its schedule.
| Workflow | Trigger | Last run | Next run | Status | |
|---|---|---|---|---|---|
|
{name}
{desc}
|
{trigIcon(kind)}{trig} | {last} | {next} | {on ? 'On' : 'Paused'} |
|
This artifact is self-describing — its context is its skill: what it is, what feeds it, the rules its content must follow, and how it stays fresh.