Repository navigation
feat(bootstrap): optional INBOX.md for what is handed to the project from outside - #33
Merged
Merged
Conversation
Second version. The first asked for a SessionStart hook shipped by the bootstrap, reading a private layout through VAULT_ROOT; refused on ADR 0025 (the plugin ships no runtime) and on the rule that it never describes one estate's layout. Rewritten to the counter-proposal: groundrules ships the convention, the estate ships the transport.
…from outside Work reaches a project before anyone in it has looked at it, and the generated CLAUDE.md had no named place for that. INBOX.md is offered by bootstrap and adopt, unchecked by default: one dated line per subject, verbatim, triage marks a line rather than deleting it. Named first in the session-start list, before PLAN.md — what arrived can change what the rest of the list means. No conditional needed: the list already marks optional entries as (if present). The plugin never fills it. How lines arrive is the caller's business. The request behind this asked for a SessionStart hook reading a private store's layout through VAULT_ROOT. Refused: it would have been the first executable this plugin generates, reopening ADR 0025 eight days after the same line was applied against this repo's own convenience, and it would have put one estate's layout into a public plugin. ADR 0048 records the refusal and the split it produced — the convention here, the transport elsewhere. See CHANGELOG [Unreleased] > Added.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Work reaches a project from outside — a colleague, a ticket, another repository, a note made away from the desk — before anyone in it has looked at it. The generated
CLAUDE.mdhad no named place for that, so it landed in a chat message, a commit body, or nowhere.What ships
An optional
INBOX.mdat the repository root, offered bybootstrapandadopt, unchecked by default. One dated line per subject, verbatim. Triage marks a line —→ ADR 0012,→ PLAN.md,→ dropped— rather than deleting it: the file is a record of what arrived, not a queue that empties.It is named first in the generated
CLAUDE.md's session-start list, beforePLAN.md, because what arrived can change what the rest of the list means. No conditional was needed — the list already marks optional entries (if present), so one line serves both cases and nothing is dropped at generation time.The plugin never fills it. How lines get there is the caller's business and is described nowhere here.
The request was refused first, and that is the part worth reading
It asked for a
SessionStarthook shipped by the bootstrap, resolving a project slug and reading01-projects/<slug>/inbox.mdfrom a private store throughVAULT_ROOT..sh, no hook, nothing runtime in any template today. ADR 0025 refused that class in its own words — a runtime hook is machinery against groundrules' nature… pure Markdown + JSON, no runtime — and eight days ago the same line was applied against this repository's own convenience, when the ADR-index check went to CI rather than to aPostToolUsehook. A line that holds only when it costs someone else is not a line.VAULT_ROOTmakes the root configurable;01-projects/<slug>/inbox.mdis still a shape that exists in exactly one person's store. That is the September lesson — an ADR rebuilt from scratch and a brief neutralised to remove exactly this — returning in a new form.The refusal held, the requester accepted both points, and the brief was rewritten to the counter-proposal. Its header records the refusal, which is why it is worth reading before the ADR.
The principle, which outlasts inboxes
The plugin ships the convention; the caller ships the transport. General and portable here; particular and executable there. That is ADR 0048's actual subject — the file is just the first instance.