singularity-forge/docs/exec-plans/active/index.md
Mikael Hugo 16ff608d80 feat: implement ADR-001 gitignore split and fill placeholder docs
Gitignore (core change):
- Remove stale blanket .sf/ entries from .gitignore (migrated to
  .git/info/exclude on 2026-04-29, never cleaned up)
- gitignore.ts: split SF_RUNTIME_EXCLUSION_PATTERNS into two modes —
  SF_SYMLINK_EXCLUSION_PATTERNS (blanket .sf for symlink repos where
  git cannot traverse the symlink) and SF_RUNTIME_EXCLUSION_PATTERNS
  (granular runtime-only patterns for directory repos, enabling
  .sf/milestones/ and other durable planning artifacts to be tracked)
- ensureGitInfoExclude() now detects symlink vs directory and writes
  the correct patterns, handling transitions between modes cleanly
- ADR-001 status: Proposed → Accepted

Docs:
- Fill 11 placeholder scaffold docs with real SF-specific content:
  PLANS, DESIGN, PRODUCT_SENSE, QUALITY_SCORE, RELIABILITY, SECURITY,
  design-docs/index.md, exec-plans/active, exec-plans/completed,
  exec-plans/tech-debt-tracker, records/index
- Add records note: docs/records/2026-05-01-repo-vcs-and-notifications.md
- ADR-008 status: Accepted → Proposed (deferred — not applicable to
  current usage model where Claude Code assists externally, not as a
  Pi provider inside SF's dispatch loop)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 22:32:28 +02:00

2.2 KiB
Raw Blame History

Active Execution Plans

ADR-018: Repo-Native Harness Evolution

Purpose: Make SF's harness mechanisms (verification gates, repo profiler, template kits, eval runner) useful in every repo SF works on, adapting over time as the repo changes shape.

Scope: Staged in 7 phases per ADR-018. Only phases 12 are in scope for near-term execution.

Phase 1 — Repo profile snapshots (next)

  • Add read-only RepoProfile snapshot before each planning milestone
  • Record observed (untracked) files in .sf/sf.db as observed_only
  • No tracked repo file writes; no worker-prompt changes

Phase 2 — Template kit registry and harness manifest

  • Parameterized harness template kit registry (Agent Runtime, RAG, Web App, Nix, Charm)
  • Dry-run harness proposals as planning artifacts only — no tracked repo writes

Acceptance criteria: Phase 1 produces a repo profile snapshot in .sf/sf.db before every planning milestone. Phase 2 produces a dry-run harness proposal as a planning artifact viewable at milestone review.

Falsifier: If a planning milestone produces no repo profile entry in .sf/sf.db, Phase 1 is incomplete.

Verification: node -e "require('./src/resources/extensions/sf/repo-profiler.js').buildRepoProfile(process.cwd()).then(p => console.log(JSON.stringify(p, null, 2)))"

ADR: ADR-018


Notification Event Model Implementation

Purpose: Replace text-matching heuristics in src/headless-events.ts and src/resources/extensions/sf/notification-overlay.ts with structured source/kind/blocking/dedupe_key metadata on all inbound transcript events.

Scope: Propagate event metadata through all notification paths; update headless event parser to use structured fields; add deduplication by key instead of by text.

Acceptance criteria: headless-events.ts no longer uses string matching for event classification. Duplicate non-blocking workflow notices are collapsed by dedupe_key. A regression test asserts that automated notices cannot supersede the latest real user message.

Design doc: notification-event-model.md · product spec