Grilling
Registry Baseline Grill Status
Registry Baseline Grill Status
Scope and authority
Replace the manifest-driven hi scaffold, hi update, and hi check flow
with a registry-based Baseline: registry publication, a hi installer,
Project settings plus an installed record, a three-way Drift check, Harness
adapters for subagents, and the fix for issue #232 in the same release.
Inputs:
- Decision log: Q1 to Q13 accepted during the brainstorm on 2026-09-27; later ids from grill rounds.
- Architecture research (issue history, state consumers, shadcn semantics, harness inventory).
- Target system brainstorm (ten flow failure lenses, candidates K1 to K15).
- Existing glossaries stay applicable where not superseded: manifest-driven update, managed lint, commit gate.
Out of scope: implementation order, task breakdown, backlog projection,
hi report, and the backoffice.
Current Round
- Round: R2 closed; frontier empty; grill closed on 2026-09-27
- Current frontier: empty
- Shared-understanding confirmation: confirmed (user: "agree with this", then
invoked
create-architecture) - Branch completion: 100% for every active branch. This is requirements closure, not implementation progress.
- Glossary promoted to Registry Baseline Glossary.
- R2 closed on 2026-09-27: Q33 and Q35 as recommended; Q34 reversed (the
Baseline skill wins, the Project Skill is renamed
[DEPRECATED] <name>and reported). - Domain-modeling consistency pass: complete against the glossary below; the Project Skill axiom was amended for Q34.
- R1 closed on 2026-09-27: all recommendations accepted except Q19 (no
credentials; registry stays public, supersedes Q11), Q27 (report failed
symlinks, no copy fallback), Q30 (no
hi add), Q31 (pre-existing skills are moved into.agents/skillsas Project Skills instead of archived).
| Question id | Prerequisites | Question | State |
|---|---|---|---|
| Q1 | none | What distributes the Baseline? | answered |
| Q2 | Q1 | How does the Drift check separate a local edit from a shape change? | answered |
| Q3 | Q1 | Who produces the per-harness subagent files? | answered |
| Q4 | Q1 | Own installer or shadcn dependency? | answered |
| Q5 | none | When is issue #232 fixed? | answered |
| Q6 | Q1 | What does the session-start hook check? | answered |
| Q7 | none | Anti-slop default and file placement? | answered |
| Q8 | Q1 | Where is the registry hosted? | answered |
| Q9 | Q1, Q2 | Prompt specs, handoff, system prompt: tracked or on demand? | answered |
| Q10 | Q1 | Keep a bundled offline Baseline? | answered |
| Q11 | Q1, Q8 | Does the registry require credentials? | answered |
| Q12 | Q3 | When are subagent files rebuilt? | answered |
| Q13 | Q1 | What happens to a devDependency no lint asset requires? | answered |
| Q14 | Q1 | What identifies a registry version? | answered |
| Q15 | Q1, Q14 | Is there one latest pointer or a promotion step? | answered |
| Q16 | Q1, Q15 | What builds and publishes the registry, and which changelog selects it? | answered |
| Q17 | Q14 | Does a registry version declare a compatible CLI range? | answered |
| Q18 | Q1 | Does the catalog carry a per-item content hash for cache integrity? | answered |
| Q19 | Q11 | Which credential mechanism does the registry use? (none; supersedes Q11) | answered |
| Q20 | Q2 | Is local state two files, one writer each? | answered |
| Q21 | Q20 | What does the edit hook do when the Installed Record is missing? | answered |
| Q22 | Q1 | Are selected Packs explicit in settings, with detection as proposal only? | answered |
| Q23 | Q1 | What is the apply order? | answered |
| Q24 | Q1 | What does a non-interactive update do on a Copied Artifact conflict? | answered |
| Q25 | Q1 | How are text files compared? | answered |
| Q26 | Q13 | What guard applies before removing a stale devDependency? | answered |
| Q27 | Q4 | What happens when a symlink cannot be created? (report, no copy) | answered |
| Q28 | Q5 | Does the Commit Gate keep the full-owner expansion on config change? | answered |
| Q29 | Q3 | Is the harness set fixed at Claude, Codex, Cursor, OpenCode? | answered |
| Q30 | Q1 | Which commands remain? (init, update, diff, check; no add) | answered |
| Q31 | Q1 | What happens to the archives and pre-existing skills? | answered |
| Q32 | Q1 | Which canonical terms are added and which are retired? | answered |
| Q33 | Q20, Q31 | How does an existing manifest-based repository migrate? | answered |
| Q34 | Q31 | What happens when a Registry Item later provides a skill with a Project Skill's id? | answered |
| Q35 | Q22, Q30 | Can settings select individual Registry Items outside Packs? | answered |
Branch Dashboard
| Branch | Completion | Locked direction | Still open |
|---|---|---|---|
| A. Registry as Baseline distributor | 100% | Public registry, one latest pointer, date-sha versions, CLI range, catalog sha256; hosted with HI API on Vercel; published by the release workflow under BASELINE_CHANGELOG.md | none |
| B. Access and credentials | 100% | No credentials; registry is public (Q19 supersedes Q11) | none |
| C. Consumer state | 100% | settings.json (intent) + installed.json (installer); explicit Packs only; missing record never blocks | none |
| D. Update, diff, check | 100% | Plan, validate, apply, record last; overwrite Copied Artifacts with --yes; normalized text compare; import guard before dependency removal; failed symlinks reported | none |
| E. Managed lint and issue #232 | 100% | Fixed in the registry release; anti-slop per package; full-owner expansion kept via stdin | none |
| F. Harness adapters | 100% | CLI builds once, wraps per harness; fixed set of four; rebuilt by update and diff | none |
| G. Command surface and Project Skills | 100% | init, update, diff, check; archives retired; Project Skills kept, renamed [DEPRECATED] <name> on id collision | none |
| H. Glossary | 100% | Terms added and retired per Q32; Project Skill added (Q32a), axiom amended (Q34) | none; promoted |
| Migration of existing repositories | 100% | One-run migration inside the first registry-based hi update | none |
Technical Grounding
| Branch | Evidence anchors | Applicable dimensions | Open technical decisions | Grounding |
|---|---|---|---|---|
| A | apps/cli/src/baseline/resolve.ts:512-580; packages/contract/src/baseline.ts:289-303; apps/cli/scripts/publish-baseline.mjs; apps/cli/scripts/classify-release-impact.mjs; .github/workflows/release.yml | topology (publisher, host, consumer), persistence (immutable versions), boundary (release classification) | Q14 to Q18 | grounded |
| B | apps/cli/src/control-plane/client.ts:53-60; apps/api/src/baseline-registry.ts:127-161; packages/auth (better-auth in apps/api) | dependency direction (who holds the credential), boundary (CLI vs API) | Q19 | grounded |
| C | .agents/hooks/format-edited-file.mjs:374-393; apps/cli/src/features/project-settings/service.ts:464-530; apps/cli/src/update/run.ts:818-827 (pack drift); apps/cli/src/scaffold/gitignore.ts:10-27 | persistence (two files), ownership (one writer), lifecycle (missing record) | Q20 to Q22 | grounded |
| D | shadcn update-files.ts:144-260, dry-run.ts:36-44; apps/cli/src/update/run.ts:6417-6456 (pending marker), 6473-6550 (apply order); apps/cli/src/integrations/scaffold-content-hasher.ts:5-15 | seams (plan/apply), boundary (record last), idempotency, comparison policy | Q23 to Q27 | grounded |
| E | apps/cli/src/data/scripts/managed-lint-runner.mjs:225-230; commit-gate-runner.mjs:32-36,59-62,163-238 | transport (buffers, argv), lifecycle (config change trigger) | Q28 | grounded |
| F | .claude/agents/*, .codex/agents/*.toml, .cursor/agents/*, .opencode/agents/*; .agents/scripts/sync-subagents.mjs; .agents/subagents/manifest.mjs | module shape (adapter per harness), topology (fixed set) | Q29 | grounded |
| G | apps/cli/src/cli/{scaffold,update,check,ensure,tools,skills,upgrade,commit-gate}-command.ts; .devpunks/replaced-scaffold, replaced-skills, pre-existing-skills | boundary (command surface), lifecycle (archives) | Q30, Q31 | grounded |
Parked Branches
- Selectable harness set per repository (Q29). Resume trigger: a repository that must exclude one harness.
- Single Registry Item selection outside Packs (Q35). Resume trigger: a real request for one skill that no Pack contains.
- Concurrent
hi updateruns in one worktree: not observed in the issue history; non-material.
Glossary
Working persistence for domain-modeling during this grill. Terms from
existing glossaries are kept unless listed under retired.
Terms
- Registry: The published, versioned set of Registry Items that is the only Baseline distributor and the source for drift management. Avoid: baseline artifact, release asset, control plane
- Registry Item: One named, typed bundle of files and metadata in the Registry, in the shadcn registry-item format. Avoid: component, asset (when meaning a whole item)
- Baseline: One immutable Registry version. Avoid: stable channel, bundled channel
- Installed Record: The installer-written file that records the installed Baseline version, the Recorded Shape, and the item-to-path map. Avoid: manifest, receipt, lockfile
- Recorded Shape: The repository shape captured at install time: workspace paths, Pack ids, detected technologies. Avoid: context plan, detection result
- Copied Artifact: A Managed Artifact written verbatim from a Registry Item. Avoid: tier 1, static file
- Built Artifact: A Managed Artifact rendered from a Registry Item template, Project settings, and the Recorded Shape. Avoid: tier 2, generated file
- Authored Artifact: A repository-owned file that the installer writes once when absent and never compares afterwards. Avoid: tier 3, scaffold-once file
- Harness Adapter: Installer code that wraps one built subagent body in one harness's envelope. Kept from the CLI context architecture glossary.
- Drift Check: The three-way comparison of local bytes, the installed
Baseline, and the latest Baseline. Kept from the CLI update enforcement
glossary with the new meaning. Classes:
update-available,local-edit,conflict,shape-drift,missing,stale,link-failed. - Project Skill: A skill under
.agents/skills/<id>that no Registry Item provides; it is an Authored Artifact. Avoid: pre-existing skill, local skill, replaced skill
Relationships
- A Registry contains one or more Baselines; a Baseline contains one or more Registry Items.
- A Pack selects one or more Registry Items through registry dependencies.
- The Installed Record references exactly one Baseline.
- Every Managed Artifact is exactly one of Copied Artifact, Built Artifact, or Authored Artifact.
Axioms
- No content hash of a Managed Artifact is stored in the repository.
- Each local state file has exactly one writer.
- A Baseline is immutable; a correction is a new Baseline.
- The Registry is the only Baseline source; there is no bundled fallback.
- The Registry is public; the installer sends no credential.
- The installer never removes, compares, or overwrites a Project Skill. On an
id collision with a Registry Item, the Baseline skill wins and the Project
Skill is renamed
[DEPRECATED] <name>and reported. - A Pack is the only selection unit; detection proposes, it never selects.
- Single Registry Item selection outside Packs is parked.
Retired (accepted in Q32)
- Scaffold Manifest, Validation Candidate, Prepared Installation, Validation Result, Cache Entry, Context Plan (as a persisted file).
Flagged Ambiguities
- "Login" was used by the user for the current Baseline access control. Code shows no CLI login; the API holds a server-side GitHub token. Resolution: Q19, no credential mechanism; the registry is public.
- "Baseline" meant a tarball plus control-plane metadata; it now means one Registry version.
- "Drift" meant a recorded hash mismatch; it now means one of the Drift Check classes.