Skip to content

feat: add complexity management guidelines - #6

Merged
TabishB merged 1 commit into
mainfrom
add-complexity-guidelines
Aug 6, 2025
Merged

feat: add complexity management guidelines#6
TabishB merged 1 commit into
mainfrom
add-complexity-guidelines

Conversation

@TabishB

@TabishB TabishB commented Aug 6, 2025

Copy link
Copy Markdown
Contributor

Summary

This PR adds complexity management guidelines to OpenSpec to prevent over-engineering and encourage minimal implementations.

What This PR Contains

  • Proposal for adding "Start Simple" principles to OpenSpec
  • Guidelines for when complexity is justified
  • Instructions for AI assistants to bias toward simplicity
  • Clear thresholds for feature complexity (e.g., <100 lines for new features)

Why This Matters

After reviewing PR #5, we identified that proposals tend toward over-engineering. This change establishes clear principles to:

  • Default to minimal implementations
  • Only add complexity when proven necessary
  • Give explicit permission to push back on unnecessary complexity

Implementation

This is a documentation-only change that updates OpenSpec conventions to encourage simplicity-first development.

@TabishB
TabishB merged commit 8440da5 into main Aug 6, 2025
drvova pushed a commit to drvova/VovaSpec that referenced this pull request Oct 13, 2025
…ines

feat: add complexity management guidelines
shwcsmack referenced this pull request in shwcsmack/c3spec May 27, 2026
Flesh out the shorthand backlog entry on reducing git prompts into a
full-context idea matching the format of #1–#17, grounded in the actual
prompt surfaces in the tier skills and the finishing-a-development-branch
handoff. Calls out concrete defaults, an opt-out lever, and cross-refs
to ideas #3, #6, and #16.

Co-authored-by: Cursor <cursoragent@cursor.com>
binbinao pushed a commit to binbinao/OpenSpec that referenced this pull request May 31, 2026
DumoeDss referenced this pull request in DumoeDss/rasen Jul 9, 2026
…er, archive hard gates, delivery preconditions, F.1 generation-match

Wires the propose/office-hours/archive/apply/continue workflow
commands into the evidence chain and gates established by children
#1-#3, and closes a resume-ladder generation-match gap in
orchestration.

- WF-2: propose.ts checks both office-hours-design.md (change dir)
  and the sibling office-hours directory (by slug) before drafting,
  incorporating found validation and naming office-hours as the
  source; all paths resolved from status JSON. office-hours.ts's
  producer-side notes (dual-write, auto-detect, downstream
  integration) made accurate to match, with a verbatim slug-derivation
  example matching propose's so the two-sided derivation converges
  (fixed in round 1 after the reviewer caught divergent examples).
- WF-6: office-hours.ts (workflow command) restructured so the
  /office-hours expert is the single facilitation authority; the
  inline six-questions/builder text becomes an explicit fallback
  pre-brief, not a second pass; doc production consolidated to one
  step; precedence stated.
- WF-4: archive-change.ts gates on verification-report.md's
  VERIFY VERDICT (child #2's evidence file) -- refuses by default on
  BLOCKED, requires an explicit blocker-naming override, refuses
  outright non-interactively; CLEAN passes with no gate; absence gets
  a soft note only. Incomplete-tasks check elevated from soft warning
  to the same hard-gate semantics. The "don't block on warnings"
  guardrail re-scoped (enumerate-and-gate) to soft warnings only,
  explicitly excluding both new hard gates.
- WF-5/WF-11: archive-change.ts adds a delivery-precondition check
  reading ship-log.md (soft warning if absent, with a spec-only
  escape) and a portfolio-awareness note when the ship log's Status
  line reads "delivery deferred to portfolio level" (ship.ts's exact
  local-mode marker).
- WF-5 (apply) / WF-10 (continue): completion nudges in
  apply-change.ts and continue-change.ts steer through
  /rasen:verify -> /rasen:ship, naming archive only as the
  post-delivery step rather than an immediate co-equal option.
- F.1 (LEAD-added, _orchestration.ts scope exception -- one clause,
  nothing else touched, children #1/#3's edits survive byte-for-byte):
  Step F.1's resume ladder now states a handoff document counts only
  if it's the LATEST holder's own distillation; an un-exhausted latest
  holder with no document resumes from its TRANSCRIPT instead, which
  beats any earlier generation's document. Adds the same-session-
  restart nuance: SendMessage-by-NAME may still resolve the latest
  holder post-restart -- try that wake first, fall back to the ladder
  otherwise. This exact behavior was live-validated during this
  change's own implementation (see ship-log's Infra-Revival section).
- Parity registry expansion: +19 function-hash entries + 11
  content-hash entries for the previously-unpinned workflow/command
  family (office-hours-command, verify-enhanced, ship, retro, auto,
  review-cycle, handoff, goal-plan/iterate/report/command) -- this is
  what makes the F.1 edit verifiable, since it hash-locks
  rasen-auto/rasen-goal/rasen-review-cycle for the first time.

Reviewed CLEAN (review-cycle round 1, non-author confirmed): 1 Minor
fixed (propose/office-hours slug-example divergence), 1 Minor
accepted-known (F.1's hash movement can't be diff-verified against a
pre-edit baseline since the templates were pinned in the same regen
run as the edit -- D8, inherent to prior parity debt, not a defect),
2 Trivial accepted-known and skipped by design (office-hours wording
nuance deferred to child #6's WF-3; F.1 clause density -- tightening
declined to avoid re-churning newly-locked hashes for zero functional
gain). Seam integrity confirmed byte-compatible both directions
against the actual producer strings, called out by the reviewer as
"the opposite of the WF-1 disease" this portfolio exists to close.

Infra-revival event during fix round 1: implementer's connection
closed mid-edit; LEAD applied child #3's H.4(b) protocol
(SendMessage-revive the same agent, zero rework since edits had
already landed) rather than cold-reconstructing -- not charged to
relay/stall budget, and incidentally a live validation of this
change's own F.1 same-session-restart nuance before its hash-lock
even shipped.

Known-open item relayed to the portfolio-end report (not this
change's scope): goal templates are registered in the generation
registry, but `update` still doesn't emit rasen-goal* skill
directories -- suspected deploy-path filter, not root-caused.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
DumoeDss referenced this pull request in DumoeDss/rasen Jul 9, 2026
Moves the completed prompt-audit-fixes-store-paths change (child #6,
FINAL child of the prompt-audit-fixes portfolio) to
rasen/changes/archive/2026-07-09-prompt-audit-fixes-store-paths/ and
syncs its three delta specs into rasen/specs/ (all MODIFIED existing
capabilities, ADDED-only appends, no existing content changed):

- opsx-archive-skill: archive resolves artifact paths from status
  JSON (tasks via artifactPaths.tasks.existingOutputPaths, main-spec
  compare via the specs/ sibling of planningHome.changesDir), matching
  bulk-archive-change's existing resolution so single and bulk archive
  agree.
- specs-sync-skill: sync-specs resolves the main-spec write target
  from the planning home instead of a literal repo-relative path, so
  store-scoped syncs land in the store's specs.
- opsx-office-hours-command: office-hours resolves both its
  active-change and no-active-change write paths from status JSON,
  matching the same location propose already scans (child #5's
  WF-2 reader) so producer and consumer agree in store mode.

All three specs validated clean (`rasen spec validate`). Staged the
three spec subdirectories individually (not the bare rasen/specs/
parent) per the established precise-pathspec discipline; confirmed
git status --porcelain -- rasen/specs/ showed exactly these three
entries before staging, nothing from another session.

All 11/11 tasks complete; all 4 artifacts done. This is the final
child of the prompt-audit-fixes portfolio -- see this change's
ship-log.md for the two-portfolio WF-3 close-out note (T3 tier is
deferred to the separate externalize-artifacts-t3-workdir session).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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