Skip to content

gate-46: the last 25 anchors need requirements that do not exist yet (conversation-title deferral, cross-app flow-engine) #183

Description

@rubenvdlinde

gate-46 spec-anchor-existence went 201 → 25 on hermiq (PR #180) by retargeting 176 tags at canonical requirements that already exist under openspec/specs/. The remaining 25 are left dangling on purpose: each would require writing the requirement the tag is supposed to be checked against, and authoring the spec you were sent to check against is how a false claim gets into a spec and stays there.

Measured with ConductionNL/.github@main run-hydra-gates.sh, re-run after every batch (201 → 151 → 116 → 98 → 59 → 32 → 25).

1. Conversation-title deferral is UNSPECIFIED — 20 findings

tag sites
openspec/changes/session-context-performance/specs/agent-engine-port/spec.md#requirement-the-deferred-title-write-preserves-the-whole-conversation-object lib/Service/Engine/ConversationTitleWriter.php (5), tests/Unit/Service/Engine/ConversationTitleWriterTest.php (12)
…#requirement-conversation-title-generation-does-not-block-the-reply lib/Cron/ConversationTitleJob.php (3)

The change session-context-performance does not exist in this repo — not active, not archived. Canonical openspec/specs/agent-engine-port/spec.md carries only two requirements (no-LLM-API-key, legacy-cleartext-keys-deleted), and grepping all of openspec/ for "conversation title" / "deferred title" / "block the reply" returns nothing.

So there is shipped, tested behaviour — a background title write that must not block the reply and must preserve the whole conversation object — with no requirement anywhere. That is a spec gap, not a tagging gap. It needs an openspec change that states the two requirements, written by someone who owns the behaviour.

2. flow-engine is OpenRegister's spec, not hermiq's — 4 findings

lib/Service/ScheduleService.php:233, lib/Flow/HermiqAgentNode.php:147, src/store/flowEditor.js:895, src/modals/Flow/RunLogModal.vue:128 point at openspec/specs/flow-engine/spec.md#requirement-a-run-records-what-each-node-received-returned-and-logged and #requirement-a-node-type-declares-its-own-form-and-its-own-run-log-actions.

flow-engine belongs to OpenRegister (ADR-065). Hermiq's own flow-authoring / flow-canvas specs are UI-facing and carry no run-recording requirement, so pointing these there would be a false claim.

This needs a fleet decision, not an app fix: either gate-46 learns to resolve a cross-app @spec against the owning app's repo, or the convention gains an explicit cross-app spelling (compare x-external-register for the same problem in the relation dialect — see ADR-062 rule 7). Worth raising on ConductionNL/.github: any app implementing an OpenRegister interface will hit this.

3. Scaffold leftover — 1 finding

src/formFields/EmailField.vue:19openspec/changes/scaffold-v2/specs/scaffold-v2/spec.md. A leftover scaffold demo component ("Replace or delete when scaffolding a new app"); no scaffold-v2 change or capability exists in hermiq. Resolves itself when the component goes.

What was NOT done

No requirement was written to point a tag at. No tag was deleted to make the count fall. Where a method carried both a dangling tasks.md#task-N-M tag and a resolving requirement tag naming the same requirement, the pair was collapsed to the single canonical tag — every affected method still carries a @spec.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions