Skip to content

Roadmap: architecture review#16

Merged
DanMat merged 1 commit into
mainfrom
docs/roadmap-architecture-review
Jul 22, 2026
Merged

Roadmap: architecture review#16
DanMat merged 1 commit into
mainfrom
docs/roadmap-architecture-review

Conversation

@DanMat

@DanMat DanMat commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Captures the second external review — this one of the codebase rather than the experience. Every claim was checked against the code before being written down; three didn't survive that check and are recorded as such.

The theme

Packkit doesn't eat its own cooking. It generates publint + are-the-types-wrong checks, strict TypeScript, and lint gates for other people's packages — then ships without any of them. check:pkg is something Packkit writes for you, and its own package would fail it.

Verified:

Claim Status
No types on any export True., ./core, ./cli, ./scaffold, none typed
No root lint / typecheck Truestart, test, check:deps, integration, build:web, update:node, gen:reference, sync:mcp
writeProject doesn't validate paths True
deepMerge silently last-writer-wins True — ends in return source
run() discards stdout/stderr True
shell: true on win32 True, in two places

The path-validation one is worth reading twice: harmless while every feature is trusted first-party code, a security boundary the moment third-party features or MCP-supplied data can contribute paths. It should be fixed before extensibility ships, not after.

Architecture items

Staged resolution returning diagnostics instead of silently disabling options, a resolved domain model to replace ~16 derived booleans, explicit feature ordering, pairwise combination coverage, a dependency version catalog, and unifying the monorepo path — 2.9 added a second early return inside the first, so that one is compounding.

packkit upgrade

Both reviews independently picked this as the highest-value next feature, and 2.9's packkit.json was the prerequisite. Read the provenance, generate current output in memory, diff, classify each difference, emit a patch. It's what turns a one-time generator into something with a durable relationship to the repos it creates.

Checked and not acted on

  • "Add shareable configuration URLs" — already shipped in 2.3; the Share link button encodes the diff-from-defaults and restores it on load.
  • "Add privacy-preserving analytics" — static Pages site, no backend. Adding third-party tracking to a developer tool is a values call, not a task.
  • The two reviews disagree on positioning. The field review's top ask was the full-stack preset (shipped in 2.9); this one argues apps dilute a product whose coherent domain is packages/CLIs/services. I recorded a stance — packages/CLIs/services stay the centre of gravity, fullstack stays a supported track — rather than silently siding with the more recent reviewer.

🤖 Generated with Claude Code

Second external review, of the codebase rather than the experience.
Every claim verified against the code before recording it.

The theme is that Packkit doesn't eat its own cooking: it generates
publint + are-the-types-wrong, strict TS, and lint gates for other
people's packages, then ships with no types entry, no lint script, and no
typecheck. Its own package would fail the check it writes for you.

Confirmed and logged: no types on any of the four exports; root scripts
have no lint/format/typecheck; writeProject joins paths with no escape
validation; deepMerge ends in `return source`, so colliding scripts or
exports keys silently last-write-wins; run() discards stdout/stderr so
failures can't be told apart; shell:true on win32 in two places.

Also logged the architecture items (staged resolution with diagnostics,
resolved domain model, explicit feature ordering, pairwise coverage,
version catalog, unifying the monorepo path) and packkit upgrade, which
both reviews independently picked as the highest-value next feature and
which 2.9's provenance file was the prerequisite for.

Recorded three things not acted on: shareable config URLs already shipped
in 2.3, analytics is a values call rather than a task on a static site
with no backend, and the two reviews disagree on whether apps belong —
noted the stance rather than silently picking a side.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@DanMat
DanMat merged commit 321c45c into main Jul 22, 2026
4 checks passed
@DanMat
DanMat deleted the docs/roadmap-architecture-review branch July 22, 2026 00:06
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