Skip to content

feat: v1.98 PR-13 — lifecycle feature flag (NFTBAN_LIFECYCLE)#459

Merged
itcmsgr merged 1 commit intomainfrom
feat/v1.98-phase2-feature-flag
Apr 17, 2026
Merged

feat: v1.98 PR-13 — lifecycle feature flag (NFTBAN_LIFECYCLE)#459
itcmsgr merged 1 commit intomainfrom
feat/v1.98-phase2-feature-flag

Conversation

@itcmsgr
Copy link
Copy Markdown
Owner

@itcmsgr itcmsgr commented Apr 17, 2026

Summary

Controlled activation of canonized lifecycle flow. Activation only — no new behavior.

What this PR adds

  • NFTBAN_LIFECYCLE env var: default ON, set =0 for legacy path
  • When ON: lifecycle bridge emits events at all installer phases
  • When OFF: lifecycle bridge not initialized, installer runs identically to pre-v1.98
  • All lifecycle bridge calls guarded by nil check (no panic on legacy path)
  • Log line: lifecycle_mode=canonized or lifecycle_mode=legacy

What this PR does NOT add

  • No new fix targets (only permissions enforce, INV-I-011)
  • No new systemd triggers (regression guard from V198_PR13_GO_DECISION.md §10)
  • No new execution paths
  • No authority expansion
  • Lifecycle remains observational only (INV-I-004)

Lab4 Validation

Path Log Phases Assertions State
Flag ON (default) lifecycle_mode=canonized 5/5 8/8 PASS COMMITTED
Flag OFF (NFTBAN_LIFECYCLE=0) lifecycle_mode=legacy 5/5 8/8 PASS COMMITTED

Both paths produce identical functional results. No regression.

Gate Reference

  • V198_PR13_GO_DECISION.md: CONDITIONAL GO → GO (P0s closed, NB-6 passed)
  • Regression guard: no automatic path may invoke health fix all

Test plan

  • Flag ON: installer builds and runs (8/8 assertions, COMMITTED)
  • Flag OFF: installer builds and runs identically (8/8, COMMITTED)
  • Build succeeds on lab4
  • Pre-commit hooks pass
  • No new fix targets, no new systemd units, no new timers

🤖 Generated with Claude Code

Introduce controlled activation of canonized lifecycle flow:

- NFTBAN_LIFECYCLE env var: default ON, set =0 for legacy path
- When ON: lifecycle bridge emits events, log shows lifecycle_mode=canonized
- When OFF: lifecycle bridge not initialized, log shows lifecycle_mode=legacy
- All lifecycle bridge calls guarded by nil check (no panic on legacy path)

This is activation only — no new behavior, no new fix targets,
no new execution paths. Exposes the system already proven safe
in Phase 1 (PR-07 through PR-12, NB-6 tests).

Hard constraints enforced:
- No new fix targets (only permissions enforce, INV-I-011)
- No new systemd triggers (regression guard from V198_PR13_GO_DECISION.md §10)
- No authority expansion
- Lifecycle remains observational (INV-I-004)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@itcmsgr itcmsgr merged commit 2f64d5a into main Apr 17, 2026
48 checks passed
@itcmsgr itcmsgr deleted the feat/v1.98-phase2-feature-flag branch April 17, 2026 10:55
itcmsgr added a commit that referenced this pull request Apr 19, 2026
Bring branch current with main (which has the merged PR-13 at 2f64d5a /
PR #459). Our branch's content was already inherited pre-merge — this
reconciles the history topology so PR #461 can close the BEHIND status
before merge.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant