MC Grandfather Clause — Legacy Task Completion
MC Grandfather Clause — Legacy Task Completion
Installed: 2026-05-03 17:30 UTC
Implementation: /Users/makinja/system/tools/mc.js
Audit Log: /tmp/mc-grandfathered-completions.log
MC Genesis: #99057
Verified by: Proveo (angie-jones) — 6/6 PASS
What Is This?
The grandfather clause allows legacy tasks (created and marked ready_for_review before 2026-05-03 17:30 UTC) to complete without triggering the new gate stack:
- qa-19 mode enforcement
- GOTCHA Decision Tier check (H+M priority)
- hop-build phase completion (H+M priority)
- validator-independent.json requirement
- ZAKON #21 trust label content verification
Old gates still apply: ZAKON #22 ready_for_review requirement, evidence bundle, postflight marker, ADR-021 compliance. This is not a full bypass — only the new stack is skipped.
Why?
CEO decision 2026-05-03 after the 3-layer gate chain ('sistem koje je krc') blocked routine closure of 6 drift-prevention MCs that had already been validated under the old regime. The grandfather clause creates a clean boundary: tasks already validated = let them close without new gates; new tasks = all gates active.
How It Works
Timestamp Boundary
GATE_INSTALL_DATE = '2026-05-03T17:30:00Z' (line ~50 in mc.js)
The isGrandfathered(task, taskId) helper checks three timestamp heuristics (in priority order):
completed_at(if task already done — should never happen in preCompletion gate)updated_atwhen status = ready_for_review- Earliest
task_historyentry with action = READY_FOR_REVIEW
If any timestamp is before GATE_INSTALL_DATE → grandfathered = true.
UTC fix: SQLite timestamps are space-separated (YYYY-MM-DD HH:MM:SS) — JavaScript new Date() parses these as local time unless 'Z' is appended. The sqliteUtcMs() helper (lines 656-661) imposes UTC parsing to prevent timezone drift.
Gate Wrap Points
Five checks in preCompletionGate() (lines 750-817) are wrapped with if (grandfathered) { /* skip */ }:
- qa-19 mode (line 754)
- H-priority GOTCHA + hop-build + validator-independent.json (lines 774, 784)
- M-priority GOTCHA + hop-build (line 799)
- GOTCHA Decision Tier trust label check (line 810)
Grandfathered vs Forced
| Aspect | GRANDFATHERED | FORCED_COMPLETION |
|---|---|---|
| Trigger | ready_for_review_at < gate install date | override flag |
| Gates bypassed | New stack only (qa-19, GOTCHA, hop-build, validator, trust labels) | All gates (including old: ZAKON #22, evidence, postflight, ADR-021) |
| Audit log | /tmp/mc-grandfathered-completions.log |
/tmp/mc-forced-completions.log |
| DB action | task_history.action='GRANDFATHERED' |
task_history.action='FORCED_COMPLETION' |
| Console output | "GRANDFATHERED: task predates new gate stack" | "⚠️ FORCED COMPLETION" |
| Intended use | Clean legacy backlog closure (automatic) | CEO override for exceptional cases (explicit) |
Audit Logs
Grandfathered Log
/tmp/mc-grandfathered-completions.log (separate from FORCED log)
Format:
{
"timestamp": "2026-05-03T18:27:04.123Z",
"taskId": 99022,
"completionType": "GRANDFATHERED",
"gate_install_date": "2026-05-03T17:30:00Z",
"reason": "updated_at=2026-05-03 09:52:57 (status=ready_for_review)"
}
Database
Query:
sqlite3 ~/system/databases/mission-control.db \
"SELECT task_id, action, timestamp FROM task_history WHERE action='GRANDFATHERED'"
Verified entries (as of 2026-05-03): 5 tasks (99022, 10590, 10608, 10611, 10613)
Code References
| Element | Location (mc.js) |
|---|---|
| GATE_INSTALL_DATE constant | Line ~50 |
| sqliteUtcMs() helper | Lines 656-661 |
| isGrandfathered() helper | Lines 662-712 |
| preCompletionGate() wrapper checks | Lines 750-817 |
| completionType assignment | Lines 2030-2033 |
| Audit log write | Line ~2063 |
Verification
Test 1 (legacy task): MC #99022 (ready_for_review_at = 2026-05-03 08:43 UTC)
node ~/system/tools/mc.js done 99022
→ Status = done, action = GRANDFATHERED (no override needed)
Test 2 (new task): MC #99058 (created 2026-05-03 18:27 UTC)
isGrandfathered() returns { grandfathered: false }
→ All gates remain active
Proveo report: /tmp/postflight-99057/proveo-report.md — 6/6 AC PASS
Created: 2026-05-03
Owner: John (AI Director)
Company: ALAI Holding AS
No comments to display
No comments to display