Skip to content

Recover the decision log into a tracked decisions/ folder and resolve or defer D-14 and D-15 #19

Description

@woksin

Summary

Move Prompter's decision log out of the untracked .ai-work/Planning/DECISIONS.md into a tracked decisions/ folder in the shared decision-record shape, and resolve the two open decisions (D-14, D-15) or mark them deferred with a review trigger. Real, dated decisions with recorded fallbacks currently exist only on one machine.

Current behaviour

  • The repository has no tracked decisions/ folder. Its durable rulings live in .ai-work/Planning/DECISIONS.md (about 19 KB, 247 lines), which .gitignore line 309 excludes from git per the .ai-work/ rule. The file's own header says it holds "durable rulings for Prompter", appended with the next D-number and a date, and that open decisions are marked OPEN with a recommendation.
  • It contains sixteen decisions, D-1 through D-16, dated 2026-07-15 to 2026-08-06 (product name, build-versus-buy, the Discord library, the vector store, the models, the interaction model, the ingestion source, the specs discipline, the deployment target, licence and visibility, the no-personal-data rule for the interaction log, and the bridging role between Discord and the trackers). Several carry a recorded fallback ("if X costs more than it saves, do Y") and one is a negative decision ("decided: NOT now" with a re-raise condition). Two are OPEN: D-14 (whether question text is stored) and D-15 (where the Pulumi stack lives).
  • Because the file is untracked, nothing in the repository, its CI, or a fresh clone can see these rulings; a contributor or agent working from a clean checkout can contradict any of them without knowing.

Desired behaviour

  • decisions/ with one file per decision, PROMPTER-0001PROMPTER-0016, each with front matter id, title, status (accepted, or rejected for the negative decision, or deferred for D-14/D-15 if not resolved), stage, class, reversibility, decided, decider, applies-to, enforced-by (or not verified — <what would verify it>), review-trigger, and optional fallback (the recorded fallback, kept verbatim from the log) and a re-raise trigger on the rejected one; the original text moved into the body under the same headings.
  • decisions/index.md with a census line (16 records: n accepted, n deferred, n rejected).
  • D-14 and D-15 either decided (status accepted, decided, decider filled) or deferred with a concrete review-trigger.
  • .ai-work/Planning/DECISIONS.md reduced to a pointer to decisions/ on the machine that holds it (not tracked).

Acceptance

Done when:

  • Sixteen records exist under decisions/, validate against the shared front-matter shape, and none has status proposed; D-14 and D-15 are accepted or deferred with a trigger.
  • README.md (or AGENTS.md) tells contributors to consult decisions/ before architectural changes.

Verify by:

ls decisions/PROMPTER-00*.md | wc -l          # 16
grep -L '^review-trigger:' decisions/PROMPTER-00*.md   # prints nothing
grep -n '^status: deferred' decisions/PROMPTER-0014-*.md decisions/PROMPTER-0015-*.md   # or accepted with a decided date

Mutation proof: set one record's status to accepted and delete its decided line; the front-matter check (the shared verify-decisions workflow once available, or a local validation) fails naming it.

Out of scope

Re-litigating any decision; changing the .ai-work/ rule (Cratis/AI and Cratis/Workflows own it); the checker itself.

Dependencies

Source: AI-Learning F-89. Depends on: D-0001, D-0002. Related: the verify-no-work-records allowlist amendment in Cratis/Workflows (so decisions/** is recognised as documentation) and the verify-decisions reusable workflow issue there.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions