Drydock Development Log — 2026-06-18 to 2026-06-24
Development log for 2026-06-18 to 2026-06-24 covering the consolidation of planning output into a single Manifest work graph, the implementation of drydock build, build-agent isolation, QuarterDeck navigation and state changes, and prompt assembly observability.
This log covers Drydock work from 2026-06-18 to 2026-06-24. The period consolidates planning output into a single Manifest work graph, implements drydock build over the buildable frontier, and isolates build-agent invocations from the caller's environment. QuarterDeck gains file-based state, target switching, and refined navigation chrome. Prompt assembly gains a standard order, per-part observability, and a centralized metadata configuration.
Milestones
- 2026-06-19 — Plan-create LLM output boundary hardened. Plan creation now disables Claude tools, preserving the text-only artifact contract, and separates streamed provider progress messages. A Claude execution had bypassed the writer by editing target files directly and returning a narrative summary instead of the required delimited output.
- 2026-06-19 — Plan create recovers simulated write artifacts.
drydock plan createrecovers the Blueprint, build-plan compass, and Manifest artifacts when Claude returns non-executed tool-call transcripts instead of delimited blocks. Claude produced complete planning artifacts as tool-call transcripts despite its no-tools invocation, and valid output was being discarded. - 2026-06-20 — Target metadata lifecycle sync. Commands now write project identity and lifecycle state back to the target metadata: analyze pre-flights the short description and stack, backfills the stack from the LLM summary, and stamps the analysis time; plan creation increments the version and advances the build state to planned; source import records the detected stack. Commands had the data but never wrote it back.
- 2026-06-20 —
drydock statusphase reporting.drydock statusnow reports phase, metadata lifecycle, imported sources, analysis state, plan state, and next-step guidance for both single-target and workspace views. Status is the orientation command and must surface where a target is in the workflow without treating pre-plan states as errors. - 2026-06-20 — Per-run provider and model overrides.
drydock analyze,drydock plan create,drydock rigging compact, survey, and prompt review now accept--llm-providerand--modeloverrides with precedence above environment and configuration defaults. Operators need one consistent command-line override path across all LLM-assisted workflows instead of command-specific exceptions. - 2026-06-21 — Build-compass file retired from the pipeline. Plan creation no longer emits a separate build-compass ordering file; ordering and grouping guidance folds into the Manifest rules. This completes the single-work-graph decision: the Manifest carries order, grouping, and per-step assembly.
- 2026-06-21 —
drydock buildimplemented over the Manifest frontier. For each story or spike whose dependencies are closed or verified,drydock buildassembles one prompt through the shared step assembler, runs a tool-enabled agent that writes the application into the build directory, writes evidence, and transitions block state. Cost and build share one assembler, so the displayed cost and the executed prompt cannot diverge; running a step is the approval. - 2026-06-21 — Marina2 Blueprint and Manifest synthesized. The Marina2 Blueprint root artifacts are authored, local setup API contracts are aligned, and the draft Manifest represents every authored specification file exactly once, leaving only delivery-time spikes open.
- 2026-06-22 — QuarterDeck target switching. QuarterDeck now switches between initialized targets without restarting the process or rewriting console indexes. The target switcher renders at the top of the sidebar as a distinct navigation band, with per-target flag glyphs and a divider before the core section.
Changes
- 2026-06-18 — QuarterDeck moves from SQLite to file-based state. Questionnaire answers write back into their source files, the archive flag is embedded in the questionnaire itself, and approval and verification surfaces that were never part of the design are removed. SQLite was an anti-pattern: questionnaire state was already canonical in the source files, and the design requires one source of truth per file, injected as-is into LLM prompts.
- 2026-06-18 — Questionnaires are the analyze question surface.
drydock analyzeno longer persists an open-questions section in the generated analysis document; nonblocking questions surface only as QuarterDeck questionnaire action items, and answered or existing questions are not duplicated. Duplicating the same questions in two places created redundant review work and ambiguity about where answers belong. - 2026-06-20 — Compass defines token-budgeted build groups. Plan creation now requires the build-plan compass to define ordered, testable story groups with initial conditions first and per-step context and token-budget estimates. A flat specification inventory cannot prepare the incremental, context-bounded build sequence required by
drydock build. - 2026-06-20 — Target metadata format and build directory resolution standardized. Target metadata now uses one clean flat format without legacy fields, and the build directory resolves from the
--build-dirargument, then the metadata field, then a configured build root. The build directory is where built code lands, distinct from the Drydock target directory. - 2026-06-20 — Model configuration hierarchy. The LLM model resolves from the
--modelargument, then user-scoped configuration set throughdrydock config set, then defaults to sonnet. Prompt frontmatter model hints are ignored at runtime; frontmatter defaults were being treated as authoritative, which prevented user-level override without editing prompt files. - 2026-06-20 — Prompt assembly order fixed. All LLM-assisted commands assemble prompts as job context, then input content, then instructions. Instructions at the end of context is the correct prompt engineering pattern: the model reads context before receiving its task directive.
- 2026-06-20 — Interactive prompting removed from
drydock analyze. Analyze no longer blocks batch and piped runs by prompting on stdin for missing metadata; blank fields are open questions for the LLM to surface as discovery questionnaires. The specification provides no authority for interactive prompting in analyze. - 2026-06-20 — Compass inputs named per command. Each command's human-editable steering input is named for that command: the Analyze Compass and the Plan Compass. A separate Build Compass grouping artifact is edited through a new QuarterDeck compass type; story points are a token-derived unit recomputed live and never persisted, and navigation operations persist the clean authored file immediately, keeping the console stateless.
- 2026-06-21 — The Manifest is the single work-graph database. The Build Compass becomes a read-only view of the Manifest — feature groups, story and spike steps, folded acceptance-criterion post-actions — costed by the same shared build-step assembler that
drydock buildexecutes. Grouping, ordering, and cost live in one authoritative graph; a separate grouping overlay was rejected because two artifacts drift. - 2026-06-21 — Build Compass reorder and regroup is topology-constrained. The product owner can reorder steps within a feature, reorder features, and regroup a step into another feature while the plan is draft; moves that would break the work graph are rejected and never written. Hard rejection at edit time keeps the displayed order a legal build order, while dependencies still govern actual execution.
- 2026-06-21 — Build status reports feature-grouped progress.
drydock buildstatus now renders a feature-grouped plan-versus-implementation report with per-feature completion, folded acceptance criteria, an overall rollup, and the buildable frontier, replacing a flat block dump gated on an approved frontier. There is no approved-plan gate; status must reflect what build will actually run. - 2026-06-21 — Claude build invocations isolated. Drydock invokes the claude CLI in safe mode and points it at a dedicated configuration home seeded only with subscription credentials, so the build agent inherits none of the caller's memory files, hooks, plugins, MCP servers, settings, or history. Auto-discovered global and project memory was being injected into every build prompt, contaminating the target-build context.
- 2026-06-21 — Codex build invocations isolated. Drydock runs codex exec with user configuration and rules ignored, ephemeral session state, workspace-write sandboxing, and a temporary runtime home containing only authentication, instead of bypassing approvals and sandboxing. Build agents must execute from Drydock's assembled prompt only and remain confined to the explicit workspace sandbox.
- 2026-06-22 —
drydock rigging compactredefined as a user-surface extractor. Rigging compact now extracts the caller-facing usage surface in an MCP-inspired markdown format instead of a builder-faithful miniaturization: builder stories receive full source files, consumer stories receive the compact derivative, and files with no callable technical surface produce a no-surface classification. New--include-file,--exclude-file, and--include-dirflags select inputs. Consumer story prompts need only name, description, typed inputs, and return. - 2026-06-22 — QuarterDeck chrome refined. Target buttons show only the project name, target switching redirects to the orientation page, the header brand text stays fixed as The Drydock, and the title bar carries a local Drydock help button and an external Drydock Home button grouped on the right. Sidebar sections become static with a flag marker on build-plan sections, removing redundant labels and collapsible controls.
- 2026-06-22 — Plan command surface renamed. The public planning command runs as
drydock plan <Target>instead ofdrydock plan create <Target>. The shorter command matches the intended primary CLI surface and removes an unnecessary subcommand layer. - 2026-06-23 — LLM runtime summary metrics. LLM-assisted commands now emit a concise completion summary with wall-clock elapsed time and available provider metrics, and execution records persist elapsed time alongside provider-reported statistics. Plan and analysis runs take long enough that operators need runtime visibility without opening execution logs.
- 2026-06-23 — Prompt assembly observability standardized. Prompt assembly labels injected source files with stable relative paths and fixed role descriptors, prints per-part byte and token estimates before each LLM run, and persists the same breakdown in execution records. Prompt cost optimization and operator review require a reproducible per-input breakdown.
- 2026-06-23 — Injected prompt metadata centralized. Editable metadata for prompt-injected file types — labels, roles, seeded defaults, and one-line prompt guidance — now lives in one visible configuration surface shared by prompt assembly and QuarterDeck rendering, instead of being scattered across command code and UI special cases.
- 2026-06-23 — Injected prompt format simplified and modeled by artifact category. Prompt injection now uses a two-block shape, one model-facing instruction block plus file contents, and no longer injects QuarterDeck help text into LLM prompts. Metadata resolves generic imported sources and questionnaires by path pattern while target artifacts and typed specification files resolve by name, so arbitrary source filenames cannot inherit typed-specification semantics.
- 2026-06-23 — Analysis shape shown on the orientation page. The QuarterDeck orientation page now refreshes on every successful analyze run and includes a story breakdown derived from grouped analysis sections, making the decomposition shape visible without opening the analysis document.
- 2026-06-23 — Manifest parser accepts compact acceptance-criterion blocks. The parser expands compact one-line acceptance-criterion headers into canonical blocks, deriving identity and check fields and inheriting the parent from the nearest preceding story, spike, or feature. The planning LLM consistently emits the compact form; tolerating it salvages plan runs without re-invoking the model.
- 2026-06-23 — Orientation artifact renamed to Commanders Chair. The QuarterDeck orientation artifact is renamed from Captain's Chair to Commanders Chair across the UI, generated outputs, tests, and documentation, removing mixed naming.
- 2026-06-24 — Build success depends on file writes.
drydock buildadvances Manifest state only when a build step returns a structured success report and produces real file changes in the build directory, and the Planning Session becomes a read-only render of the Manifest build tree. Narrative-only model output was incorrectly marking steps built even when no application files were written; tying success to filesystem truth prevents false-positive progress. - 2026-06-24 — Build output repositories initialized and committed. Drydock initializes the build output directory as a git repository on first use and commits resulting changes after each build run, with explicit CLI status messages. Build output needs durable local version history independent of the Drydock workspace, managed automatically and visibly during build execution.
