aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org41
1 files changed, 41 insertions, 0 deletions
diff --git a/todo.org b/todo.org
index 7c04560..cdf2397 100644
--- a/todo.org
+++ b/todo.org
@@ -48,6 +48,47 @@ triage-intake.org), live trial night on rulesets. Origin: work project's
proposal, [[file:docs/design/2026-07-14-sentry-workflow-proposal.org][docs/design/2026-07-14-sentry-workflow-proposal.org]]. All nine
design decisions resolved with Craig 2026-07-14 (recorded in the spec).
+** TODO [#C] Polyglot projects — supported, or refused? :spec:
+SCHEDULED: <2026-07-20 Mon>
+Do we support more than one language bundle per project? The honest answer today
+is "partly, by accident." The collision guard added 2026-07-16 refuses a
+*colliding* second bundle rather than silently replacing the first's config, but
+a non-overlapping pair still installs fine: bash ships =settings.json= +
+githooks and no coverage fragment, python ships only a coverage fragment, so
+=bash= + =python= composes cleanly today and yields a real polyglot project with
+both rule sets. So the line isn't polyglot-vs-not, it's overlap-vs-not — and
+nobody chose that line, it fell out of which bundle happens to ship what. Origin:
+home's report after scaffolding clock-panel with python + typescript,
+[[file:docs/design/2026-07-16-polyglot-bundle-collision.txt][docs/design/2026-07-16-polyglot-bundle-collision.txt]].
+
+Pair this with the subproject scouting below — it's the same question in a
+different costume ("which projects would actually be polyglot, and why"), so
+they should be one conversation.
+
+The three options, in the order they'd be weighed:
+
+1. *Unsupported, explicitly.* Keep the guard as the answer. Cheapest, and
+ matches how little polyglot exists (one project, clock-panel).
+2. *Supported.* Needs per-bundle filenames, a merged =settings.json= (the hooks
+ arrays compose rather than clobber), composed githooks, and namespaced
+ Makefile targets with a =coverage= aggregate. This is the real work.
+3. *Case-by-case.* Support the pairs that come up, refuse the rest.
+
+What the decision needs to know:
+
+- *The target-name collision is the deeper half* (home's point, and it's right).
+ Every bundle's fragment defines =coverage:= and =coverage-summary:=, so even
+ with both files present a polyglot project can't paste both into one Makefile.
+ Renaming files doesn't fix it.
+- *Only three of five shared filenames actually collide.* =gitignore-add.txt=
+ (5 bundles) appends deduped and composes. =CLAUDE.md= (3) is seed-only, and
+ its fallback comment shows multi-bundle was already considered there.
+ =claude/settings.json= (3), =githooks/*= (3), and =coverage-makefile.txt= (4)
+ are the real ones.
+- *=FORCE=1= is a poor escape hatch* (home's catch): it also re-seeds
+ =CLAUDE.md=, which is destructive on a customized project. If polyglot
+ becomes supported, the override wants to be its own flag.
+
** TODO [#C] Subproject pattern — promote to claude-rules? :spec:
SCHEDULED: <2026-07-20 Mon>
home proposes promoting its subproject pattern (a former standalone project