Skip to content

Contract updates owed after focus cycle #47

Description

@PeGa

What's owed

focus cycle ships as code, help text and tests only. Three contract debts are deliberately deferred:

1. No CMD-CYCLE clause

Every other command has one (CMD-ONCMD-HELP, MAIN.md:484-610). focus cycle <add|modify --edit-notes|delete> has none.

It should record, at minimum, that cycle add deliberately does not use the duplicate fold from #36. That check lives in the off and past handlers, not in the adapter, so a new handler simply does not opt in — and cycle has its own replace-on-collision prompt instead. Without this written down, a later reader can reasonably "fix" the omission and break the feature.

2. CMD-PAST does not mention the cycle-id guard

CMD-PAST (MAIN.md:517-541) promises nothing about refusing cycle rows. Whatever guard past modify / past delete end up carrying needs to be stated there.

3. CONTRACT_INDEX.md must be regenerated

This is the mechanical one, and the reason the other two are worth batching rather than doing piecemeal. The index is a line-range map into MAIN.md (847 lines) with 55 rows carrying line pointers. Its own header sets the rule:

Ranges are inclusive and were generated against the current contract. If MAIN.md is edited, regenerate this file; a stale index is worse than none.

Inserting a clause shifts every line below it. Measured:

Insertion point Index pointers invalidated
after CMD-PAST (line 541), where it belongs topically 63
after CMD-HELP (line 610), end of the command block 42

There is no insertion point that avoids it — [NUDGE], [CHECKIN], [SM], [CONV] and [INT] all sit below line 620. The header's own "847 lines" also needs updating.

Why it's needed

START_HERE.md makes the contract the authority and the tests the verifier; where they disagree the contract wins. Undocumented behaviour is therefore removable behaviour — item 1 is the concrete example. And a stale index is called out by its own header as worse than no index at all.

Related: #45 tracks the drift that already exists.

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

    documentationImprovements or additions to documentation

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions