Skip to content

a Feature has no deprecated_at - #44

Merged
miroslavpojer merged 1 commit into
masterfrom
docs/feature-has-no-deprecated-at
Oct 1, 2026
Merged

miroslavpojer merged 1 commit into
masterfrom
docs/feature-has-no-deprecated-at

Conversation

@miroslavpojer

Copy link
Copy Markdown
Collaborator

Overview

A Feature has no deprecated_at. Its state stays derived from its Functionalities, and that is the only
value the pipeline sets on a Feature. This narrows the rule merged in #34 (P35-LD7c); the owner decision
is DEC-47 (2026-10-01).

Why: a Feature-level date has no single source. The canon gave no rule for choosing among its
Functionalities' dates, so a pipeline would have to invent one. Each date already lives on the
Functionality that was deprecated, and the Feature's deprecated state says the rest.

Accepted consequence: a deprecated Feature renders its DEPRECATED badge and its deprecation_reason,
with no date.

Changes:

  • docs/guides/living-doc-glossary.md — Feature: no deprecated_at; a Feature issue body carries no
    ## Deprecated At and a PageObject header no deprecated_at:. deprecation_reason and superseded_by
    stay authored and drive no state. The "where status and deprecation metadata are authored" note follows.
  • docs/introduction/principles.md — exception E1 covers the Feature's state only.
  • docs/guides/living-doc-header-types.md — the deprecated_at: common-mistake row follows the rule.
  • docs/examples/README.md, gh-issues/feat-001-login-page.md, gh-issues/feat-002-breached-password-check.md
    — corpus wording follows the rule. Comments only; no example's content or validation changes.
  • tools/examples_check.py — the ## Deprecated At and deprecated_at: hints say a Feature has no
    deprecation date and keep the "keep deprecation_reason / superseded_by" advice; the test assertion
    and comments match.

Verification: python3 -m pytest tools/ — 61 passed; python3 tools/examples_check.py — corpus OK.

Release Notes

  • A Feature has no deprecated_at. A Feature issue body carries no ## Deprecated At and a PageObject
    header no deprecated_at:; deprecation_reason and superseded_by stay authored on a Feature.
  • Exception E1 covers a Feature's state only.

Framework

  • Stays inside the frame (F1–F7) — narrows the existing exception E1 back to the state; adds none
  • Bends frame row F_ — exception E_ added to docs/introduction/principles.md in this PR

Narrows the canon round of #34 (P35-LD7c). A Feature's state stays derived
from its Functionalities; a Feature-level date had no single source - the
canon gave no rule for choosing among its Functionalities' dates - and each
date already lives on the Functionality that was deprecated.

- glossary (Feature): a Feature has no deprecated_at; deprecation_reason and
  superseded_by stay authored and drive no state
- principles: exception E1 covers the Feature's state only
- header types: the deprecated_at: common-mistake row follows the rule
- examples corpus: README and the FEAT-001 / FEAT-002 comments follow it
- examples_check.py: the ## Deprecated At / deprecated_at: hints say a
  Feature has no deprecation date; test assertion and comments updated
@miroslavpojer
miroslavpojer merged commit b28820e into master Oct 1, 2026
6 of 7 checks passed
@miroslavpojer
miroslavpojer deleted the docs/feature-has-no-deprecated-at branch October 1, 2026 12:19
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