Skip to content

EPIC: Phase 1.5 — Egg product hardening #15

Closed as not planned
Closed as not planned

Description

@mforce

Phase 1.5 — Egg product hardening

Make the egg product safer and more operationally complete.

Includes

Spec: §6 (Phase 1.5).


Migrated from Gitea issue #15 (https://gitea.mforcelabs.com/mforce/cluckwork/issues/15).

Phase 1.1 carryover — moved from #14 on epic close (2026-08-11)

#14 (Phase 1.1) closed complete — every item in specs.md §6's Phase 1.1 scope shipped. These are follow-on work discovered while shipping it, not part of that original scope; three (#438, #511, #512) were open but untracked in any epic before this cleanup.

Security hardening follow-up — 2026-07-31

Any host-specific companion work is tracked separately in a private deploy/infra tracker.

Pre-launch schema freeze — sequencing for #245

#245 squashes the 30 EF migrations into a single InitialCreate. It only pays off once the
schema stops moving, so every schema-affecting issue that is a first-launch requirement lands
first, then a short freeze, then #245 as the final squash.

Schema-affecting work scheduled before the freeze:

Deferred past the freeze (schema-affecting but not first-launch): TOTP/WebAuthn credential
storage (#320, blocked by #308), and personal-data retention/erasure (#272, market-dependent).

#318 is deliberately sequenced before this batch: it secures the EF design-time connection
factory and changes no schema, so it should land before more migrations are generated.

Sequenced AFTER the squash

Activity

  1. added a commit that references this issue on Aug 13, 2026
  2. mforce commented on Sep 13, 2026

    @mforce
    OwnerAuthor

    Owner instruction, 2026-09-13: no new slices go on this epic. Phase 1.5 is considered done for the purpose of taking on new work.

    Recording it here so agents planning future work do not attach to this phase by default — AGENTS.md says slice issues go on the phase epic's checklist, and without this note the obvious reading is that 1.5 is the current phase and therefore the right home.

    Concretely, the MCP server support epic (#789) and the OAuth authorization server epic (#788), designed 2026-09-12/13, are deliberately not attached to this epic. They are navigated by their own epic-789 / epic-788 labels. Attaching them was considered and rejected: this phase is "egg product hardening" and neither is that.

    What is still open here, unresolved on purpose

    14 issues still carry epic-1.5, four of them priority:tier1:

    #244 Deployment readiness audit — production go-live scan before first real users
    #268 JWT signing-key rotation needs a multi-key validation ring + kid
    #272 Personal-data export / erasure / retention (GDPR + PH DPA)
    #344 Verify HSTS and HTTPS redirection over real TLS

    Plus #182 (tier2, i18n infrastructure) and eight tier3/tier4 items: #50, #320, #501, #571, #596, #597, #656, #738.

    The disposition of these is explicitly deferred, not decided. The owner was asked whether to re-home them and chose to decide later. So this epic is in a deliberate in-between state: closed to new work, with a backlog still attached.

    Anyone picking up deployment-readiness work should look here rather than assuming it is finished — "done with 1.5" means done adding to it, not that everything under it shipped. The four tier1 items above are the ones most likely to be missed, because the phase reads as complete.

  3. mforce commented on Sep 13, 2026

    @mforce
    OwnerAuthor

    Closing Phase 1.5 — parked, not finished

    Closed by the owner on 2026-09-13 during the issue cleanup. This is a deliberate park, not a
    completion claim.
    The epic has been open for two months, 96 of its 125 checklist items are done,
    and the remaining 29 are a mix of shipped-but-unticked, work that moved elsewhere, and scope
    nobody has scheduled. Leaving it open made all three look like the same thing — work in flight.

    Per the repo's own rule: a criterion nobody will implement is either a follow-up issue or a
    recorded won't-fix, never a bullet quietly left to rot in a closed issue.
    So every unchecked
    item is dispositioned below.

    The milestone Phase 1.5 — Hardening stays open and is now the tracker. Closing this issue
    removes the navigation surface, not the work.

    Already shipped — four stale checkboxes

    These read as open above and are not:

    Unbuilt and unissued — the nine core hardening bullets

    Legacy import wizard · Inventory reconciliation · Email digest for critical alerts · Packaging
    inventory · Additives/supplements · Vaccination records · Flock profitability allocation rules ·
    Backup/recovery workflow.

    None of these has ever had an issue. They are specs/product/specs.md §6 scope written as
    bullets, and a bullet cannot be picked up, sized or routed. Filing eight issues for work nobody
    intends to start this quarter would trade one kind of noise for another, so they stay in the spec
    and stay unfiled. Read this as: not scheduled, and not being worked. When one of them becomes
    real, file it against the milestone.

    The ninth, the alert centre, was filed as #803 — the only one of the nine that something
    already-scheduled (#728) was blocked on.

    Moved or superseded

    Still open, tracked by the milestone and their tier labels

    tier1 — production readiness, reviewed next: #244 (go-live audit, 15 spawned gap issues) ·
    #268 (JWT key-rotation ring) · #272 (GDPR + PH DPA) · #344 (HSTS over real TLS).

    Unlabelled, pending the standalone review: #803 (alert centre) · #775 (CI wall clock) ·
    #729 (Owner-only farm config) · #674 (SPA revamp) · #656 (visual identity) · #738 (es/tl wording).

    Epic #719 (discounts) stays open on its own: 7 of 9 slices shipped, #725 and #726 unscoped,
    #728 waiting on #803, #730 deferred to tier4.

    tier4 — deferred or speculative: #50 · #320 · #501 · #571 · #596 · #597.

    Nothing above is closed by this. Reopen this epic only if Phase 1.5 is resumed as a coordinated
    phase rather than as individual issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicPhase-level tracking issueepic-1.5

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions