Gormes

Progress Schema

Progress Schema

This page is generated from the Go progress model and validation rules.

Item Fields

FieldRequired whenMeaning
nameevery itemHuman-readable roadmap row name.
statusevery itemplanned, in_progress, or complete.
priorityoptionalP0 through P4. Item-level P0 rows require contract metadata.
contractactive/P0 handoffsThe upstream behavior or Gormes-native behavior being preserved.
contract_statuscontract rowsmissing, draft, fixture_ready, or validated.
slice_sizecontract rows and umbrella rowssmall, medium, large, or umbrella.
execution_ownercontract rows and umbrella rowsdocs, gateway, memory, provider, tools, skills, or orchestrator.
trust_classactive/P0 handoffsAllowed caller classes: operator, gateway, child-agent, system.
degraded_modeactive/P0 handoffsHow partial capability is visible in doctor, status, audit, logs, or generated docs.
fixtureactive/P0 handoffsLocal package/path/fixture set proving compatibility without live credentials.
source_refsactive/P0 handoffsDocs or code references used to derive the contract.
blocked_byoptionalRoadmap rows or conditions blocking this slice. Requires ready_when.
unblocksoptionalDownstream rows enabled by this slice.
ready_whencontract rows and blocked rowsConcrete condition that makes the row assignable.
not_ready_whenumbrella rows, optional elsewhereConditions that make the row unsafe or too broad to assign.
acceptanceactive/P0 handoffsTestable done criteria.
write_scopecontract rowsFiles, directories, or packages an autonomous agent may edit for this slice.
test_commandscontract rowsCommands that prove the slice without live provider or platform credentials.
done_signalcontract rowsObservable evidence that the row can move forward or close.

Meta Fields

FieldRequired whenMeaning
meta.builder_loop.entrypointbuilder-loop metadata is declaredMain unattended-loop script.
meta.builder_loop.planbuilder-loop metadata is declaredCanonical implementation plan for improving the orchestrator.
meta.builder_loop.agent_queuebuilder-loop metadata is declaredGenerated queue page for assignable rows.
meta.builder_loop.progress_schemabuilder-loop metadata is declaredThis schema reference.
meta.builder_loop.candidate_sourcebuilder-loop metadata is declaredCanonical progress file consumed by the loop.
meta.builder_loop.unit_testbuilder-loop metadata is declaredFast verification command for orchestrator prompt/candidate behavior.
meta.builder_loop.candidate_policybuilder-loop metadata is declaredShared selection rules injected into worker prompts.

Validation Rules

  • docs/data/progress.json must not exist.
  • if meta.builder_loop is declared, entrypoint, plan, candidate source, generated docs, unit test, and candidate policy must all be present.
  • in_progress rows cannot use slice_size: umbrella.
  • item-level P0 and in_progress rows must include full contract metadata.
  • contract rows must declare slice_size, execution_owner, ready_when, write_scope, test_commands, and done_signal.
  • blocked rows must declare ready_when.
  • fixture_ready rows must name a concrete fixture package or path.
  • complete rows with contract metadata must use contract_status: validated.

Planning Metrics

Progress is measured from derived status counts, not from free-form narrative. Progress.Stats() walks phases, subphases, and items and tallies complete, in_progress, and planned. A subphase is complete only when every item is complete, in_progress when any item has started, and planned when no item has started. README and the architecture-plan index use those derived counts for shipped/subphase totals.

Future work is measured from contract-bearing rows. A row becomes assignable when it is not complete, has no blocked_by dependency, is not slice_size: umbrella, and declares the handoff fields autoloop needs: source_refs, write_scope, test_commands, acceptance, ready_when, not_ready_when, and done_signal whenever applicable. agent-queue.md is the assignable-work view; blocked-slices.md is the deferred-work view; and umbrella-cleanup.md is the work that must be split before assignment.

Planner quality is measured by reducing ambiguity for the builder loop: exact upstream refs, local file paths, fixture names, validation commands, dependency edges, and degraded-mode behavior count as useful planning; generic notes without bounded tests or write scope do not.

Generated Agent Surfaces

  • docs/content/building-gormes/builder-loop/builder-loop-handoff.md lists shared unattended-loop entrypoint, plan, candidate source, generated docs, test command, and candidate policy.
  • docs/content/building-gormes/builder-loop/agent-queue.md lists only unblocked, non-umbrella contract rows with owner, size, readiness, degraded mode, fixture, write scope, test commands, done signal, acceptance, and source references.
  • docs/content/building-gormes/builder-loop/blocked-slices.md keeps blocked rows out of the execution queue while preserving their unblock condition.
  • docs/content/building-gormes/builder-loop/umbrella-cleanup.md lists broad inventory rows that must be split before assignment.

Good Row

{
  "name": "Provider transcript harness",
  "status": "planned",
  "priority": "P1",
  "contract": "Provider-neutral request and stream event transcript harness",
  "contract_status": "fixture_ready",
  "slice_size": "medium",
  "execution_owner": "provider",
  "trust_class": ["system"],
  "degraded_mode": "Provider status reports missing fixture coverage before routing can select the adapter.",
  "fixture": "internal/hermes/testdata/provider_transcripts",
  "source_refs": ["docs/content/upstream-hermes/source-study.md"],
  "ready_when": ["Anthropic transcript fixtures replay without live credentials."],
  "write_scope": ["internal/hermes/"],
  "test_commands": ["go test ./internal/hermes -count=1"],
  "done_signal": ["Provider transcript replay passes from captured fixtures."],
  "acceptance": ["All provider transcript fixtures pass under go test ./internal/hermes."]
}

Bad Row

{
  "name": "Port CLI",
  "status": "in_progress",
  "slice_size": "umbrella"
}

This is invalid because an active execution row cannot be an umbrella, and it does not explain the contract, fixture, caller trust class, degraded mode, or acceptance criteria.