Harness Intelligence Grill Log
Harness Intelligence Grill Log
This log records locked requirements decisions for rethinking this repo as the Harness Intelligence project.
Initial Situation
The repo currently provides real value as the punks/dp scaffolding CLI plus canonical scaffold baseline data. It has battle-tested workflow assets, repo-aware setup behavior, baseline publishing, and a local wiki-shaped knowledge tree.
The repo does not yet provide the full product/distribution surface needed for wider colleague adoption or public company communication:
- no Turborepo application layout
- no public Fumadocs wiki/docs app
- no public landing page
- no Effect backend for scaffold distribution, validation, or future orchestration
- no settled CLI-vs-backend boundary
- no durable explanation of harness theory, criteria, trust model, and sales/marketing narrative
Branches
Branch A: Product Boundary
Purpose: define what "Harness Intelligence" is as a product/system, and what this repo must own.
Q1
Question: What is the canonical product boundary for "Harness Intelligence"?
Accepted answer:
- Harness Intelligence is the Devpunks AI engineering operating system: a documented methodology plus validated scaffold distribution system that turns repos into trustworthy AI-assisted workspaces.
- It is intentionally broader than the existing CLI, but still grounded in concrete delivery surfaces: scaffold data, CLI, backend, docs/wiki, validation, and public communication.
- The repo should be rethought around the Engineering OS boundary, not as a narrow distribution tool or a docs-only methodology site.
Branch B: Distribution Architecture
Purpose: define Turborepo shape, app/package boundaries, backend role, CLI role, baseline/data flow, and public surfaces.
Q2
Question: Should the Effect backend become the authoritative distribution/control plane, or should it only assist the CLI?
Accepted answer:
- The Effect backend should become the authoritative distribution/control plane.
- The CLI should be the local executor, cache, and client.
- Backend owns scaffold baseline registry, channels, versions, compatibility metadata, validation/provenance results, and public API surfaces consumed by docs and CLI.
- CLI owns local repo scanning, interactive setup, filesystem writes, offline bundled fallback, diff/update UX, and local operator ergonomics.
- Docs/wiki owns theory, criteria, trust model, implementation rules, and adoption guides.
- Landing owns public framing and proof narrative.
Q9
Question: Should the CLI call the backend live by default, or should release baselines remain the default distribution channel?
Accepted answer:
- Keep release baselines as the default distribution channel.
- The CLI should not require live backend calls to apply scaffold output inside local repositories.
- Baseline-first distribution remains important for deterministic setup, offline fallback, repeatability, and trust.
- The backend can still be authoritative for registry/control-plane responsibilities, but the CLI consumes versioned baseline artifacts as the practical distribution unit.
Q10
Question: How does the CLI distribute Harness Intelligence in practice?
Accepted answer:
- The CLI distributes the harness through dynamic usage by AI agents, not primarily through an MCP API.
- AI agents are expected to consume the CLI to retrieve and place:
- skills
- root prompts
.agents/folders- symlinks and compatibility mirrors
- scoped prompts for detected packages/apps or relevant repo scopes
- hooks
- subagent templates
- scaffold metadata under
.devpunks/
- The CLI should detect repository structure and place scoped prompts into the relevant apps/packages/scopes.
- The CLI is the local application/distribution mechanism for the harness, while the backend is the authority/control plane and baselines remain the artifact channel.
- The harness distribution includes external CLI/tool dependencies, not only markdown/context files.
- Required or optional toolchain expectations include:
skills, including installation/provisioning of the internal Devpunksdp-cliskillopensrcfor source inspectionagent-browserfor browser/e2e validationportlessfor parallel localhost subdomain allocation and avoiding worktree port collisions
Q3
Question: What Turborepo topology should this repo target?
Accepted answer:
- The repo should become a product monorepo with explicit application and package boundaries.
- Target topology:
apps/
web/ public landing and product site
wiki/ public Fumadocs docs/wiki app and canonical source content owner
api/ Effect backend/control plane
cli/ punks/dp CLI executable
packages/
contract/ shared Effect HttpApi contract used by `apps/api` and `apps/cli`
scaffold/ shared scaffold contract/model only if imported by apps such as `apps/cli` and `apps/api`
config/ shared TypeScript/build/config support as needed
ui/ only if landing/wiki share real UI primitivesapps/wikiis the Fumadocs docs webapp and owns the source content.- Do not introduce a separate
content/harnesslayer now; that would be speculative until another runtime/app genuinely needs to consume the same source files. - Existing root CLI code should eventually move under
apps/clibecause it is an executable app, not a shared library package. - Internal packages must not import sibling apps.
- If shared API definitions are needed by both
apps/cliandapps/api, extract those definitions intopackages/contract. - If shared scaffold code is needed by both
apps/cliandapps/api, extract only that stable shared contract/model intopackages/scaffold.
Branch C: Wiki and Theory
Purpose: define the docs knowledge model, Fumadocs information architecture, and the harness engineering criteria currently living in the user's head.
Q4
Question: What should the wiki's theory/criteria model be organized around?
Accepted answer:
- Wiki content must follow the existing wiki structure and
docs-ingest-phasecontract: domain indexes,flows/,concepts/, source ingest metadata, wiki index, and wiki log. - In the target monorepo,
apps/wikiis both the Fumadocs app and the canonical source-content owner. - Do not introduce an invented separate information architecture that bypasses the wiki/domain contract.
- Harness theory should be stored primarily as concepts and flows, not as loose narrative pages.
- Candidate concepts include:
- Harness
- context engineering
- why prompt engineering is a dead/incomplete framing
- progressive disclosure
- skills as workflow wrappers
- lazy skill loading
AGENTS.mdas system-prompt/project-policy surface- prompt scopes: repo root prompt,
.agents/project prompt,~/.agentsglobal computer prompt - hooks
- feedback loops
- human-in-the-loop single-plan mode
- subagent parallel mode
- validation gates through the
tddskill - backlog to spec to plan workflow
- default skill packs
- Candidate flows include:
- adopting a repository into the harness
- running requirements grilling before backlog creation
- backlog to spec to plan to implementation
- authoring/maintaining scoped prompts
- lazy-loading skills during a task
- running validation gates before closeout
- operating in single-plan mode vs parallel subagent mode
- The wiki should capture the whole default skill-pack model, including planning, quality, research, requirements, docs, subagents, frontend/backend/effect surfaces, and validation behavior.
- The existing
clidomain should continue to own CLI mechanics. Harness Intelligence likely needs its own domain instead of forcing all theory intocli.
Q5
Question: Should Harness Intelligence be a separate wiki domain from CLI?
Accepted answer:
- Yes. Create a separate
harnesswiki domain for methodology, theory, criteria, trust model, default skill packs, and adoption flows. - Keep the existing
clidomain forpunks/dpmechanics: baseline channels, scaffold manifests, setup/update behavior, pack catalogs, and local operator flows. - Add a future
backenddomain when the Effect control plane exists and owns enough durable concepts/flows. - Do not create a sales/company-communication domain yet unless public landing/sales material grows durable domain concepts of its own.
- Boundary examples:
skills as workflow wrappersbelongs toharness.skill catalog in baseline databelongs tocli.skill registry APIbelongs to a futurebackenddomain.
Q18
Question:
What is the first harness wiki domain inventory?
Accepted answer:
- Create a first private
harnessdomain inventory shaped by the existing wiki/docs-ingest-phase contract. - Keep durable pages as concepts and flows, but use Fumadocs navigation/subsections to make the tree readable instead of a flat page wall.
- First concept inventory:
- Harness
- Context Engineering
- Prompt Engineering as Dead Framing
- Progressive Disclosure
- Skill as Workflow Wrapper
- Lazy Skill Loading
- Prompt Scope
AGENTS.md- Global Computer Prompt
- Project Prompt
- Scoped Package/App Prompt
- Hook
- Feedback Loop
- Human-in-the-Loop Plan Mode
- Parallel Subagent Mode
- Validation Gate
- TDD Acceptance Gate
- External Tool Contract
- Default Skill Pack
- Planning Skill Pack
- Requirements Skill Pack
- Research Skill Pack
- Quality Skill Pack
- Docs Skill Pack
- Debug Skill Pack
- Frontend Skill Pack
- Backend Skill Pack
- Effect Skill Pack
- Subagent Template
- Agent Memory Notes
- First flow inventory:
- Adopt Repository Into Harness
- Run Requirements Grill
- Convert Grill To Backlog
- Convert Backlog Story To Spec
- Create Execution Plan
- Orchestrate Parallel Implementation
- Execute Spec Sequentially
- Execute Spec In Parallel Waves
- Run Browser Validation
- Run Code Review Phase
- Run Debug Agent Phase
- Report Harness Issue Through CLI
- Maintain Wiki After Implementation
- Publish Baseline Update
- Update Existing Harnessed Repo
- Do not create a page for every individual skill in v1. Model skill packs first; split individual skills only when a skill has enough theory or workflow contract to justify its own page.
- Suggested Fumadocs subnavigation:
- Foundations: Harness, Context Engineering, Progressive Disclosure, Feedback Loop
- Prompt Surfaces: Prompt Scope,
AGENTS.md, Global Computer Prompt, Project Prompt, Scoped Package/App Prompt - Skills and Packs: Skill as Workflow Wrapper, Lazy Skill Loading, Default/Planning/Requirements/Research/Quality/Docs/Debug/Frontend/Backend/Effect Skill Packs
- Execution Modes: Human-in-the-Loop Plan Mode, Parallel Subagent Mode, Subagent Template, Agent Memory Notes
- Validation and Tools: Validation Gate, TDD Acceptance Gate, External Tool Contract, Hook
- Lifecycle Flows: grill/backlog/spec/plan/implementation/review/debug/docs-ingest-phase/update/reporting flows
Q19
Question:
How should the first harness wiki content be sourced/ingested?
Accepted answer:
- Do not create a synthetic
SPEC.mddirectly from this grill just to feeddocs-ingest-phase. - The current grill artifacts are requirements discovery inputs for the next backlog/planning phases, not a reviewed/implemented spec folder.
- Follow
docs-ingest-phaseexactly when wiki ingest happens:- primary ingest starts from a real resolved spec folder under
<wiki-root>/specs/<domain>/<spec>/ - read
SPEC.md - optionally read
IMPLEMENTATION-NOTES.md - write flow pages first
- then write concept pages
- update ingest metadata, wiki log, and wiki index
- primary ingest starts from a real resolved spec folder under
- The future implementation/planning steps should create the actual specs under
apps/wiki/specs/<domain>/<spec>/. - After those specs are reviewed or implemented,
docs-ingest-phasecan index domain source underapps/wiki/content/docs/project/domains/harness/and keep routed articles underapps/wiki/content/docs/harness/. - Until then, keep the grill artifacts in
docs/as requirements records and handoff inputs, not as direct wiki source pages.
Q6
Question: What belongs in the public wiki vs private/internal material?
Accepted answer:
- Supersedes the initially recommended public-by-default wiki split.
- The wiki is meant to be a private company-internal app.
apps/wikishould optimize for internal trust, operational clarity, onboarding, and durable methodology capture for Devpunks colleagues.- The wiki can include concrete company operating criteria, internal examples, real workflow decisions, and unsanitized theory-to-practice material as long as it remains internal.
- Public communication belongs to
apps/weblanding/product pages or other public docs surfaces, not the internal wiki. - Public pages may summarize or derive from wiki concepts, but the internal wiki remains the richer source of truth.
Q7
Question: What should the public landing page expose if the real wiki is internal?
Accepted answer:
- The public landing page should expose the promise, evidence shape, and sanitized operating model.
- The private wiki remains the deep operating source of truth.
- Public landing scope:
- what Harness Intelligence is in plain terms
- why Devpunks engineers work faster and more safely with AI
- operating principles such as context engineering, workflow-wrapped skills, validation gates, and human oversight
- a sanitized lifecycle: discover -> plan -> implement -> validate -> document
- trust/proof points: repeatable setup, repo-aware guidance, validation before closeout, documented decisions
- CTA toward Devpunks services, not self-serve public docs
- Avoid public exposure of raw prompts/system policies, full internal wiki content, internal skill-pack implementation details, client/project-specific examples, or wording that makes the harness look like "just prompts".
Branch D: Trust and Adoption
Purpose: define what colleagues need to trust the AI harness setup, how validation works, and what proof material must exist.
Q8
Question: What must exist before colleagues are expected to trust and use the harness?
Accepted answer:
- Adoption requires a trust gate bundle, not just docs or CLI installation.
- Minimum trust gate:
- internal wiki onboarding path covering what the harness is, how to use it, and how not to misuse it
- one golden repo adoption walkthrough showing before/after scaffold, generated files, expected agent behavior, and validation
- harness criteria checklist covering repo readiness, prompt scopes, skill selection, hooks, subagents, validation gates, and docs/wiki hygiene
- validation story distinguishing automatic verification, human verification, and remaining judgment
- failure model covering stale prompts, over-broad subagents, missing validation, bad docs, and blind trust in AI output
- operator runbooks for
scaffold init,scaffold setup,update, baseline release/update, and skill pack maintenance - support/feedback loop for colleague friction and baseline improvements
- Trust should come from explicit boundaries, proof, and failure handling rather than claims that AI output is safe by default.
Q16
Question: How should harness adoption and rollout be measured?
Accepted answer:
- Supersedes the proposed repo-artifact-only metric model.
- Adoption should be measured primarily from actual CLI/runtime distribution telemetry:
- CLI runs
- baseline pulls
- artifact reads/downloads
- update checks
- authenticated channel resolution
- project identity inferred from the git remote repository name when available
- Vercel Blob/bucket reads can be useful input for baseline-pull tracking.
- Metrics must filter out:
- internal testing reads
- debug reads
- localhost development
- CI/publish validation noise when not representative of colleague usage
- repeated cache misses/retries that inflate usage
- Supersedes the earlier
cwd_leafidea. - Do not send
pwdor full absolute local paths by default; they can leak usernames, client names, private folder structures, and machine details. - Prefer a normalized project identifier payload such as:
- git remote repository name when safe and available
- scaffold manifest project id if/when introduced
- baseline/channel/version
- command name and outcome
- Repo artifact evidence such as
.devpunks/scaffold-manifest.json, scoped prompts, and completed lifecycle artifacts remains useful qualitative proof, but should not be the primary adoption metric. - If useful, add proper Effect-TS observability instrumentation in
apps/apito track trusted events such as baseline resolution, artifact URL issue, CLI auth, and pull outcomes. - Telemetry should support trust/adoption decisions without becoming invasive or noisy.
Q17
Question: Who owns rollout and support once colleagues start using the harness?
Accepted answer:
- Use central harness ownership plus project-local adoption ownership.
- Harness maintainers own:
- baseline quality
- default skill packs
- required toolchain contract
- CLI release/baseline release process
- private wiki methodology
- trust gate material
- telemetry/observability interpretation
- fixing systemic harness issues
- Project owners own:
- deciding when their repo is ready to adopt
- running scaffold setup/update
- reviewing scoped prompt placement
- keeping project-specific prompts/docs truthful
- reporting friction back to harness maintainers
- not treating the harness as a substitute for engineering judgment
- Reporting should be implemented into the CLI, not left only as a manual social process.
- Agents should be able to report encountered harness issues through the CLI when asked by the user.
- The internal
dp-cliskill should explicitly guide agents to report relevant scaffold/tooling/skill/prompt issues back through the CLI. - Feedback should be structured enough to become wiki/runbook updates, skill changes, hook changes, CLI fixes, or baseline releases.
- Systemic issues become central backlog items. Project-specific quirks stay local unless they generalize.
Q11
Question: What is the core Harness Intelligence workflow?
Accepted answer:
- Harness Intelligence is a lifecycle of skills, artifacts, prompts, validation gates, and feedback loops, not a single CLI command.
- Requirements phase:
requirements-grillusesgrill-meplus branch, completion, log, and status management.- It produces durable grill artifacts formatted for the next step.
- Backlog phase:
write-backlogconsumesrequirements-grilllogs/status.- It creates backlog/tasks in the chosen system such as Linear or GitHub.
- It structures work as modules/milestones, epics, stories/subtasks, and native blocker/blocked-by relations.
- Planning phase:
parallel-researchmay be used for readonly context gathering.create-specturns stories into specs.create-planruns a smaller grilling pass to close open questions.swarm-plannerdesigns a task pipeline that supports parallel execution with explicit precedence and conflict avoidance.- Each task states the skills needed.
tddis the crucial acceptance-criteria layer: red-to-green tests are given to each task where applicable.opensrcis the first external CLI tool: agents use it to inspect upstream package/source behavior instead of guessing.- Scoped
AGENTS.mdprompts are explicitly discovered during planning.
- Coding phase:
implement-speccombines the spec and plan.- It resolves the target spec folder under
apps/wiki/specs/<domain>/<spec>/. - It follows the shared execution lifecycle, notes, tech-debt, acceptance audit, and finalization contracts.
- It chooses exactly one execution mode: sequential or parallel.
- In Codex parallel mode, it applies the Codex-only worker reasoning policy before spawning workers.
- It records the chosen mode under
Execution modeinIMPLEMENTATION-NOTES.mdbefore coding. - It updates
PLAN.md,IMPLEMENTATION-NOTES.md, and spec-linked tech debt after each completed task or wave. - If backlog sync is in scope, epic/story bodies stay product-facing; native metadata or comments carry execution sync.
- It finishes with shared acceptance audit and spec finalization.
- Browser/e2e validation:
agent-browseris the second external CLI tool.- It performs automated browser/frontend validation against the actual app when relevant.
- Localhost/worktree support:
portlessmay be used for parallel localhost subdomain allocation and to avoid port collisions across worktrees.
- Review phase:
/code-reviewusessimplifyandimprove-codebase-architecture.- It checks clarity, overcomplexity, architectural friction, and review-grade risks.
- Debug phase:
agent-debuguses scoped logs and endpoint listening for user-test log data.- It iterates automatically from user actions and fresh runtime evidence.
- Documentation/closeout:
docs-ingest-phaseupdates the private wiki/docs and backlog after implementation evidence exists.
- Cross-cutting harness properties:
- skills wrap best practices by pack/language/framework
- progressive disclosure governs context gathering
- hooks provide automatic checks
- scoped system prompts activate the right guidance per repo/app/package
- subagent templates enable more specific spawns with clearer context
- notes/diary/journal memory is autonomously checked and maintained by agents
Q30
Question: What is a Harness phase, and should coding, review, debugging, and docs ingest be separate goal calls or one delivery wrapper?
Accepted answer:
- A Phase is a goal-facing wrapper skill: a public orchestration entrypoint that owns one lifecycle slice, delegates to inner skills, defines entry and stop conditions, and maintains that slice's durable artifacts and validation gates.
- A phase is not just a loose process step. It is the unit a
/goalcan invoke and iterate. - Keep the requirements phase HITL and brainstorming-heavy:
requirements-grillcloses product/architecture branches, glossary, axioms, and parked scope.write-backlogconsumes grill artifacts after the requirements gate closes.
- The execution side should use a combined delivery wrapper instead of isolated goal calls:
- coding through
create-spec->create-plan->implement-spec - review after every coding run
- optional debugging when validation or review exposes runtime failures
docs-ingest-phaseafter proven behavior changes
- coding through
- Every coding run needs review, optional debugging, and
docs-ingest-phase. - Inner skills keep their ownership:
implement-specstill owns sequential/parallel implementation mode, TDD, browser validation when needed, simplify, notes, acceptance audit, manual checklist, and spec-linked tech debt capture.- review still uses readonly research and review lenses such as
parallel-research,simplify,improve-codebase-architecture, and scoped directory skill guidance. - debugging still uses runtime evidence through
debug-agentplus optional readonlyparallel-researchfan-out and bounded worker fixes. docs-ingest-phasestill owns source ingest and Fumadocs projection.
- Goal loop is the iterative goal-mode run that repeats one or more phases until the stated scope is complete or a concrete blocker is proven.
Q31
Question: Are phases themselves "goalized", or should goal prompt generation be a separate skill?
Accepted answer:
- Phases are not themselves goalized.
- A phase is a wrapper skill with its own contract, inner skills, artifacts, and gates.
- Goal-mode prompt generation is handled by a separate skill named
goalify. goalifygenerates goal prompts from a requested scope, relevant skills/phases, handoffs, examples, and repository context.goalifyis informed by the long-form goal prompt examples already used for:- the Fumadocs/wiki route restructuring goal
- the
.wav/LiveKit acceptance iteration goal
requirements-phasestays human-centric and is normally not goalized.delivery-phaseis goal-compatible and should preserveimplement-spec'sparallelparameter by passing the same parallel/sequential choice through.debugging-phaseandresolve-debtcan also be goal-compatible, but each becomes its own separate goal family because their entry artifacts differ:- runtime failure evidence for debugging
- canonical debt file for debt resolution
Q32
Question:
Should review be a public standalone phase skill, or only an internal phase inside delivery-phase?
Accepted answer:
review-phaseshould be a public standalone skill.delivery-phasemust also callreview-phaseautomatically after every implementation run.- Standalone
review-phaseis useful for manual review workflows, external edits, PRs, merged branches, suspicious code, or explicit review-only goals. review-phaseis readonly by default and findings-first.- Its review lenses include:
parallel-researchfor independent readonly checkssimplifyfor clarity, overcomplexity, and unnecessary abstractionimprove-codebase-architecturefor architectural friction and module-depth opportunities- scoped skill guidance found in checked directories such as apps, packages, and docs
- Standalone
review-phasedoes not edit code unless explicitly requested. - When invoked inside
delivery-phase, review findings can trigger fixes, debugging loops, or docs updates becausedelivery-phaseowns completion.
Q33
Question:
How should debugging-phase behave relative to delivery-phase?
Accepted answer:
debugging-phaseshould be a public standalone skill.delivery-phaseshould invoke the same debugging loop only when delivery validation or review produces runtime evidence of a bug.- Standalone
debugging-phaseentry artifacts include:- user-reported broken behavior
- failing smoke checks
- logs
- recordings
- runtime symptoms
- Standalone
debugging-phasewraps:debug-agent- optional readonly
parallel-research - bounded fixes
- focused tests or scenario reruns
- review
debugging-phasemay run withparallel: true | false.debugging-phaseowns evidence matrices and log references.- Standalone
debugging-phaseexits when:- the bug is fixed
- a concrete blocker is proven
- the scope actually needs a spec/delivery goal
- Delivery-internal debugging starts only when
implement-specvalidation orreview-phasefinds a runtime failure. - Delivery-internal debugging patches only inside the delivery scope.
- If a bug is broader than the current spec,
delivery-phasemust record tech debt or propose a separate debugging/debt goal instead of widening silently.
Q34
Question: Should docs ingest be a standalone phase, delivery-internal, or both?
Accepted answer:
- Docs ingest is both:
- a delivery-internal phase after review/debug
- an independently callable maintenance operation
- However, docs ingest currently wraps only
docs-ingest-phase. - Avoid creating a thin wrapper skill if it only delegates to one existing skill with no new orchestration.
- Prefer renaming or evolving
docs-ingest-phaseinto the docs-ingest phase entrypoint if that yields clearer phase language. - Delivery must run
docs-ingest-phaseafter review/debug when docs work is needed. - If implementation changed product behavior, architecture, setup, operator workflow, docs contracts, or spec domain knowledge, delivery must invoke the docs-ingest/docs-ingest-phase entrypoint.
- If no docs ingest is needed, delivery must record an explicit no-op reason in the final report or implementation notes.
Q35
Question:
Should the tech debt public skill be tech-debt-phase, resolve-debt, or resolve-debt-phase?
Accepted answer:
- Use
resolve-debt-phaseas the public standalone skill name. - "Tech debt phase" remains the lifecycle concept.
resolve-debt-phaseis clearer thantech-debt-phasebecause the operation is not generic debt management; it resolves one candidate or accepted debt item.resolve-debt-phaseis clearer thanresolve-debtbecause it is a standalone phase wrapper.- Canonical entry artifact:
docs/reference/tech-debt/<domain>/<spec>/<debt-slug>.md
- If debt status is
draft, run readonly validation first, then ask the user whether to accept, delete, or research more. - If debt status is
accepted, create or update a debt-resolution spec, then run delivery. - If debt status is
resolved, report no-op unless the user explicitly asks to inspect history. - After delivery, mark the debt resolved, link the resolution spec and implementation notes, and sync the backlog mirror when available.
Q36
Question:
Should docs ingest be the docs-ingest-phase public skill?
Accepted answer:
- Finalize
docs-ingest-phaseas the public docs ingest phase entrypoint. docs-ingest-phaseis a real public phase entrypoint.- It is not a new thin wrapper around another docs skill; it owns the existing docs ingest contract and references.
delivery-phasecallsdocs-ingest-phasedirectly after review/debug.docs-ingest-phaseruns after review/debug when required:- run
docs-ingest-phasewhen implementation changed product behavior, architecture, setup, operator workflow, docs contracts, or spec domain knowledge - otherwise record an explicit no-op reason
- run
- Existing
docs-ingest-phaseresponsibilities remain owned by the renamed phase:- canonical domain source indexes under
apps/wiki/content/docs/project/domains,apps/wiki/specs, and related source files - Fumadocs routed articles under
apps/wiki/content/docs/harness,apps/wiki/content/docs/cli, orapps/wiki/content/docs/project - repo
docs/updates for architecture, setup, contracts, runbooks, and operator workflow meta.jsonand access-control frontmatter preservation
- canonical domain source indexes under
Q37
Question: What implementation order should be used for the phase-wrapper skills?
Accepted answer:
- Implement leaves before composites, then prompt generation last.
- Order:
- Finalize
docs-ingest-phaseas the docs ingest phase entrypoint. - Create
review-phase. - Create
debugging-phase. - Create
delivery-phase. - Create
requirements-phase. - Create
resolve-debt-phase. - Create
goalify.
- Finalize
docs-ingest-phasecomes first becausedelivery-phasedepends on the final docs phase name.review-phasecomes beforedelivery-phasebecause delivery must call it after every implementation run.debugging-phasecomes beforedelivery-phasebecause delivery can invoke debugging for scoped runtime failures found by validation or review.delivery-phasecomes after its inner execution/review/debug/docs phase entrypoints are stable.requirements-phasecan follow because it is human-centric and does not block delivery composition.resolve-debt-phasefollows delivery because accepted debt resolution uses delivery after debt preflight.goalifycomes last because it should generate prompts from the final phase contracts rather than from speculative names.
Q38
Question:
Should docs-ingest-phase keep a backward-compatibility alias?
Accepted answer:
- No backward-compatibility alias.
- Use
docs-ingest-phasedirectly as the public phase name. - Update references accordingly wherever current operating guidance mentions the prior docs skill name.
- New phase skills and existing skill references should call
docs-ingest-phase. - Historical references only remain if they are intentionally archival; ordinary current docs/skills should be find-and-replace updated.
Q12
Question: What is the minimum useful backend/control-plane scope for v1 if release baselines stay default?
Accepted answer:
- Superseded in part by Q15.
- Backend v1 should be registry, provenance, authenticated baseline distribution, and adoption visibility, not live scaffold execution.
- The backend tells the truth; the CLI does the local work.
- Backend v1 owns:
- baseline registry: channels, versions, bundles, changelogs, compatibility metadata
- baseline contents: skill packs, hooks, tool requirements, prompts, subagent templates, scaffold metadata
- provenance: source commit, production timestamp, validation status, known issues
- adoption visibility: which internal repos/teams are on which baseline, through opt-in/manual/CLI-reported records as appropriate
- trust dashboard: current recommended baseline, rollout notes, validation state, upgrade guidance
- read API for CLI/docs/web metadata
- internal auth if dashboard/backend surfaces are private
- Backend v1 does not own:
- remote filesystem scaffold application
- replacing the CLI with MCP
- live scaffold execution inside repo setup
- complex telemetry
- full skill marketplace
- The local CLI remains responsible for applying scaffold output, checking/provisioning tool dependencies, placing prompts/hooks/skills/symlinks/manifests, and operating against detected repo scopes.
Q15
Question: How should CLI/auth/baseline distribution work if baseline data is private?
Accepted answer:
- The CLI can be distributed as an npm package, but internal runtime baseline access should be authenticated.
- Use Better Auth for CLI login, likely through device authorization flow:
dp auth login- browser approval against Devpunks auth
- CLI stores a local token
- CLI sends
Authorization: Bearer <token>toapps/api
- Because baseline data currently lives in a private repo/release flow, unauthenticated remote baseline access is not a real product contract.
- Runtime target model:
- CLI asks
apps/apifor the recommended baseline/channel. apps/apiverifies access.apps/apireturns baseline metadata and a signed/proxied artifact URL.- CLI downloads/caches the baseline and applies it locally.
- CLI asks
- Vercel Blob is the likely artifact storage target for baseline artifacts.
- GitHub Releases are not the long-term runtime distribution contract. They can remain as a migration/CI/provenance detail if useful.
- During migration, do not make releases protected yet; keep the existing release flow simple while the backend/blob path is designed.
- Required harness tools include
skills,opensrc,agent-browser, andportless;portlessis not optional.
Q13
Question: What migration order should we plan for the repo rewrite?
Accepted answer:
- Migrate in behavior-preserving phases instead of starting with a CLI rewrite.
- Order:
- Add Turborepo/workspaces and move the current CLI into
apps/cliwithout changing behavior. - Extract scaffold core into
packages/scaffold: baseline/catalog/manifest/rendering primitives. - Create
apps/wikias the private Fumadocs app, move/convert current wiki content, addharnessdomain, preserveclidomain. - Create
apps/webpublic landing derived from private wiki concepts without exposing internals. - Create
apps/apiEffect backend v1 for registry/provenance/adoption metadata around release baselines. - Wire CLI to backend metadata while preserving baseline-first distribution.
- Build trust gate material: golden repo walkthrough, criteria checklist, onboarding, validation story, failure model.
- Consider CLI cleanup/rewrite only after extraction shows which internals are truly costly.
- Add Turborepo/workspaces and move the current CLI into
- The current CLI provides value and must not be discarded before its behavior is captured and protected.
packages/scaffoldshould exist only as a shared internal package imported byapps/cliandapps/api; if no sibling app imports that contract yet, defer extraction.
Q21
Question: Should the CLI consume the API through Effect RPC or Effect HttpApi/HTTP client, and what shared package owns the contract?
Accepted answer:
- Prefer Effect v4
HttpApi/typed HTTP client for the CLI-to-backend v1 contract. - Do not use raw untyped
HttpClientfor the core control-plane API unless a specific endpoint is intentionally outside the typed contract. - Use Effect RPC only if/when the product needs RPC-specific behavior such as long-lived bidirectional/streaming workflows, richer request/response protocol semantics, or non-REST procedure semantics that justify the extra protocol layer.
- For v1, the backend operations are HTTP-shaped: auth-mediated baseline resolution, artifact URL issue, telemetry/report submission, adoption metadata, and trust dashboard data.
HttpApiis a better default because it is schema-first, type-safe, produces typed clients, supports middleware/auth, and can generate OpenAPI/docs.- The shared Turborepo package should be
packages/contract, notpackages/scaffoldby default. - Proposed package:
packages/contract/
src/api.ts Effect HttpApi definition
src/schemas.ts shared Schema models for requests/responses
src/errors.ts shared typed API errors
src/security.ts auth middleware/security declarations if sharedapps/apiimportspackages/contractto implement handlers.apps/cliimportspackages/contractto construct the typed client.packages/contractmust not import either app.packages/scaffoldremains valid only for shared baseline/scaffold schemas, catalog types, compatibility metadata, provenance shapes, and required-tool contracts that are imported by bothapps/apiandapps/cli.
Branch F: Backoffice and Project Mapping
Purpose: define the internal product surface for usage statistics, project/repository mapping, adoption visibility, and the boundary between product telemetry and system observability.
Q20
Question: Should Harness Intelligence build its own product backoffice for usage/project/repo stats, or reuse an observability frontend?
Accepted answer:
- Build a small first-party backoffice as a real Harness Intelligence product surface.
- Store product/adoption events durably in Postgres through
apps/api. - Use Effect/OpenTelemetry for system observability, traces, debugging, backend health, and instrumentation plumbing.
- Do not use an OpenTelemetry frontend as the main product backoffice.
- The backoffice should expose product-level entities and adoption views, not only low-level spans/logs/metrics.
- Product-level entities should include:
ProjectRepositoryBaseline/ChannelCLI RunArtifact PullHarness Report- later, possibly
Spec
- A
Projectcan group one or more repositories. - A
Repositoryis identified initially by git remote repository name/slug, then enriched or linked centrally. - Metrics should be grouped by project, repository, baseline/channel, CLI version, event type, time window, and environment filtering.
- The OTel layer remains useful for "what happened inside the system?"
- The first-party backoffice answers "which Devpunks projects adopted the harness, how often, where is friction, which baseline is trusted, and which repos are stale?"
Q22
Question: Where should the backoffice live?
Accepted answer:
- Create a separate
apps/backofficeapplication. - Do not hide the backoffice inside
apps/web. apps/backofficeowns authenticated internal operational/product views for Harness Intelligence adoption, project/repo mapping, usage statistics, reports, baseline health, and administrative review workflows.apps/webremains the public/sanitized landing and company communication surface if/when that scope is implemented.apps/wikiremains the private Fumadocs knowledge/docs app and source-content owner.apps/apiowns the backend/control plane, Postgres writes/reads, and typed API surfaces consumed by bothapps/cliandapps/backoffice.packages/contractshould include the shared typed API contract needed byapps/api,apps/cli, andapps/backofficewhen applicable.- The app split is justified because the backoffice has different audience, auth posture, product concerns, navigation, and operational workflows from the landing page.
Q23
Question: What is the minimum Postgres product schema for backoffice v1 if telemetry is collected only from CLI usage?
Accepted answer:
- Do not model
ProjectandRepositoryas separate v1 concepts. - For Harness Intelligence v1, the observable adoption unit is the repository/workspace seen by the CLI.
- Any higher-level project grouping can be derived later or added manually once real usage patterns justify it.
- The CLI can only reliably report facts it can observe locally from git, shell, environment, and its own runtime.
- The v1 persisted model should be remapped around available CLI-observed fields:
- git remote repository slug/name
- git remote URL/provider when safely available
- current branch
- default/upstream branch if safely available
- current commit SHA
- dirty/clean worktree state
- git user name and email from local git config, subject to privacy/safety filtering
- authenticated Devpunks user identity from CLI auth when available
- hostname or machine identifier only if explicitly accepted later; do not assume it now
- cwd leaf directory is not needed if git remote repository identity is available
- CLI version
- baseline/channel/version
- required tool check results
- event type and timestamp
- environment/source flags for local/dev/debug/test/CI filtering
- The backoffice can still show "project-like" groupings, but v1 should treat those as labels/views over observed repositories, not a foundational separate domain model.
- This supersedes the earlier v1 schema idea where
Projectgrouped one or moreRepositoryrecords. - Specs remain a future entity and should not be included in the v1 backoffice schema.
Q24
Question:
Should Harness Intelligence v1 remove the Project concept if telemetry only observes repositories?
Accepted answer:
- No. Keep
Projectas a first-class product/backoffice concept in v1. - In v1,
Projectmeans the repository observed from CLI usage. - This matches the CTO/product language: track which projects/developers use the CLI, where "project" maps to a repository.
- Do not model a separate higher-level multi-repository project aggregate yet.
- The durable v1 entity can be named
projects, with repository identity fields on it. - Candidate project/repository identity fields:
idremote_slugremote_nameremote_url_hashor normalized safe remote URLproviderdefault_branchor detected upstream branch when safely availablefirst_seen_atlast_seen_atlast_commit_shalast_branchlast_dirty_statearchived_at
- CLI events should reference
project_id. - Developer/actor usage should be tracked separately from project identity.
- This supersedes Q23 only where Q23 says there is "no separate Project + Repository model"; the corrected rule is: keep
Project, define it as repository for v1, and defer higher-level project grouping.
Q25
Question: Can Harness Intelligence v1 model a higher-level project aggregate above repositories?
Accepted answer:
- Yes, v1 can model a higher-level
Projectaggregate if there is a reliable source of truth or safe mapping path. - Automatic usage tracking can only depend on data available to the CLI on the machine where it runs.
- The CLI should not assume access to Linear, GitHub org metadata, private company systems, or manual project catalogs unless the user/auth/backend explicitly provides those later.
- Automatic sources available from the running machine may include:
git remote -vgit config user.namegit config user.email- current branch, upstream branch, default branch hints, and commit SHA
- working tree status
- package/workspace metadata visible from files in the repo
- repository root and repo leaf name if needed, but avoid sending cwd paths
- authenticated CLI user/session
- CLI flags/env that mark debug/test/local/CI contexts
- The backend/backoffice can maintain an explicit mapping layer:
- observed repository identity -> project aggregate
- project aggregate -> one or more observed repositories
- project aggregate -> owner/team/status metadata
- If no external/manual mapping exists, the first ingestion path should create or update a repository-observed project candidate from git remote identity.
- This preserves Simone's model that stats can be grouped by repo/project while keeping automatic telemetry honest about its sources.
Project = repositoryis an acceptable fallback, not a hard limitation.
Q26
Question: Should Harness Intelligence use Microsoft workspace login as the canonical developer identity?
Accepted answer:
- Yes.
- Use Better Auth as the application auth/session framework.
- Use Microsoft/Entra ID workspace login as the primary identity provider.
- Canonical developer identity should come from Microsoft workspace login.
- CLI login should route through the same Better Auth/Microsoft identity system used by API and backoffice.
- Backoffice auth should use Microsoft login.
- Git
user.nameanduser.emailremain observed telemetry metadata and fallback context, not canonical developer identity. - Reuse/adapt the working
dp-aipattern where possible:- Better Auth Microsoft social provider
- Microsoft tenant configuration
- trusted provider account linking
- admin/allowlist validation for OAuth users
- backoffice login button using Microsoft social sign-in
- This keeps workplace identity aligned with the company Microsoft workspace while preserving git data as repo-environment evidence.
Q27
Question: What event taxonomy should v1 track for backoffice usage statistics?
Accepted answer:
- Track only happy-path, value-signaling product events in v1.
- Do not track noisy internal lifecycle steps as product statistics.
- Do not track:
setup.startedbaseline.resolve.completedupdate.checked- automatic background
toolcheck.completed
baseline.resolveis assumed to be an internal step before artifact pull and does not need its own statistics event.- Tool checks may run automatically/background and would spam adoption dashboards if tracked as first-class stats.
- V1 product/adoption event taxonomy:
cli.auth.login.completedcli.artifact.pull.completedcli.scaffold.setup.completedcli.scaffold.update.appliedcli.harness.report.submitted
- Detailed failures, noisy lifecycle traces, background checks, and debug timing belong to logs/OTel/debug surfaces, not the product adoption event stream.
- Each product event should carry the shared envelope:
- project/repository identity
- Microsoft actor identity when authenticated
- git identity metadata as fallback/context
- CLI version
- baseline/channel/version when relevant
- event timestamp
- environment/source flags for filtering local/test/debug/CI noise
- Dashboards should count meaningful successful usage: authenticated users, pulled artifacts, completed setup, applied updates, and submitted reports.
Q28
Question: What should "developer usage" mean in the backoffice?
Accepted answer:
- Treat developer usage as operator/audit/contact context, not as a primary adoption KPI.
- The primary adoption unit is the project/repository.
- The CLI is a project-level tool. It is used heavily during scaffold setup/update, often by one operator, but the effect is repo-wide.
- A developer is the authenticated Microsoft user who performed a CLI action or submitted a report.
- Backoffice may show:
- who initialized or updated a harnessed repo
- who last pulled/applied a baseline
- who submitted a report
- who can be contacted for context
- Backoffice must not rank developers, score developers, compare developers, or present "AI usage by developer" as a core metric.
- Project dashboards should lead with repo/project state:
- harnessed or not
- baseline/channel/version
- last setup/update
- latest CLI version seen
- submitted reports
- stale baseline status
- Reports link to GitHub for v1, not Linear.
- GitHub is the v1 system of record for report follow-up because reports are closer to implementation/tooling issues than product-planning backlog items.
Q29
Question: What is the final v1 relationship between project usage and repositories?
Accepted answer:
- Introduce a
ProjectUsageentity or equivalent project-usage aggregate in v1. ProjectUsagemaps 1:n to observed repositories.- Observed repositories remain the facts collected automatically from CLI execution on a developer machine.
- Project usage is the backoffice/adoption grouping used for statistics and operational review.
- The backend/backoffice can create a project-usage aggregate from the first observed repository and later map additional repositories into it.
- If no higher-level mapping is configured, a project-usage aggregate may contain exactly one observed repository.
- This replaces the earlier "Project = repository" fallback as the core model: repository is the observed source, project usage is the reporting aggregate.
- Suggested relationship:
project_usage
1 -> n observed_repositories
1 -> n cli_usage_events
1 -> n harness_reports
observed_repository
n -> 1 project_usage
1 -> n cli_usage_events
1 -> n harness_reports- Automatic mapping inputs still stay limited to what the CLI can observe: git remote, repo metadata, authenticated Microsoft user, CLI runtime metadata, and safe environment flags.
- Manual/admin mapping in
apps/backofficeis allowed and expected for grouping multiple repositories into one project usage aggregate.
Branch E: Company Communication
Purpose: define landing-page and sales narrative for how Devpunks engineers are AI-superpowered without becoming vague marketing copy.
Q14
Question: What should the public landing page's message hierarchy be?
Accepted answer:
- Park exact landing message hierarchy for later planning.
- Directionally, the landing page should communicate that Devpunks engineers use a structured AI harness rather than "just using AI".
- The tone should be semi-technical, concrete, and not marketing fluff.
- The landing page should derive sanitized proof/narrative from the private wiki, but detailed content/copy is not defined in this grill.