{
  "title": "Circe: remaining work against the original product thesis",
  "checkedAt": "2026-09-24",
  "reviewedHead": "927c9ea409b3c6c6133ca5e3dc00af2b64d5c97f",
  "unmergedPullRequests": [
    9,
    10
  ],
  "basis": "Original pasted product thesis, implementation inspection through PR #10, and live GitHub PR status. This is a scope inventory, not a new code correctness pass.",
  "items": [
    {
      "id": "P1",
      "title": "General bounded interpretation",
      "status": "Partially implemented",
      "have": "The workflow engine, bounded decision types, accepted-turn compiler and TypeSafe transport exist. The demo handles a known pair; the live evaluation has a small request/query and single-target workflow.",
      "missing": "Build the reusable interpretation graph over the actual frame: act, singular/set referents, per-candidate include/exclude roles, operation, capability, risk and slot decisions. Use exact structural resolution when state already supplies the answer. Scenario-specific questions and proposition builders cannot stand in for this.",
      "done": "Previously unseen wording and candidate identities produce grounded typed propositions for both task and message cases, including plural sets and mixed include/exclude clauses. No new English regexes or synonym routing.",
      "sources": [
        [
          "apps/inspector/src/scenario.ts",
          37
        ],
        [
          "apps/inspector/src/heldout.ts",
          158
        ],
        [
          "packages/perception/src/proposals.ts",
          198
        ]
      ]
    },
    {
      "id": "P2",
      "title": "Complete continuing language interactions",
      "status": "Typed mechanics exist; semantic workflow missing",
      "have": "Kernel revisions, gates, cancellations and recovery exist. PR #10 exposes typed commands and reconciliation through the durable host.",
      "missing": "Translate accepted language decisions into confirmation, cancellation, revision, resumption and slot filling, using the current obligation and intent revision. Turn an ambiguous result into a question, record that obligation, interpret the answer and safely continue. Implement grounded query answers rather than only blocking query mutations.",
      "done": "A user can ask for work, clarify the target, say \"yes, except the second one\", restart, inspect pending work and resume it. Ambiguous acknowledgements never authorize effects and corrections revoke the old confirmation.",
      "sources": [
        [
          "apps/inspector/src/host.ts",
          252
        ],
        [
          "packages/perception/src/proposals.ts",
          52
        ],
        [
          "packages/perception/src/proposals.ts",
          198
        ]
      ]
    },
    {
      "id": "P3",
      "title": "Populate and reuse semantic knowledge",
      "status": "Storage and invalidation exist; host workflow missing",
      "have": "Entities, observations, relations, events, assertions, annotations, phrase bindings and dependency invalidation have storage contracts. The file adapter persists them. The continuing host writes observations, frames, decision traces and interpreted turns.",
      "missing": "Choose which accepted assessment results become reusable beliefs or interaction bindings; publish them with frame provenance and dependency links. Reuse valid records in later decisions and recompute invalidated ones when needed. Existing ingestion helpers must be integrated into the host with replay-safe publication. This does not mean promoting every judgment into a fact.",
      "done": "A judgment such as \"these messages concern the same issue\" survives restart, helps resolve a later reference, and stops being used when its supporting evidence changes. A phrase binding is recorded from actual interaction, not seeded by a fixture.",
      "sources": [
        [
          "packages/context/src/ingest.ts",
          167
        ],
        [
          "packages/context/src/ingest.ts",
          196
        ],
        [
          "packages/context/src/store.ts",
          284
        ],
        [
          "apps/inspector/src/host.ts",
          370
        ]
      ]
    },
    {
      "id": "P4",
      "title": "Layer 2 deliberation",
      "status": "Interfaces only",
      "have": "DeliberationRequest, DeliberationResult and DeliberationOperator are defined; policy can return DELIBERATION_REQUIRED.",
      "missing": "Implement an operator and host handoff for diagnosis, planning, summarization and content drafting. Decode the returned output into the promised shape, retain provenance and ground any resulting action through the normal kernel checks. Returning a status alone does not execute deliberation.",
      "done": "An actual diagnosis or draft request reaches a reasoning model, returns a validated result and can continue the interaction. Generated plans cannot directly invoke tools or bypass confirmation and authority checks.",
      "sources": [
        [
          "packages/perception/src/types.ts",
          164
        ],
        [
          "packages/perception/src/orchestrator.ts",
          158
        ]
      ]
    },
    {
      "id": "P5",
      "title": "One real application integration",
      "status": "Ports and fake implementations exist",
      "have": "Authority and executor contracts support observation, version checks, execution and reconciliation. The inspector and test worlds exercise these contracts.",
      "missing": "Add at least one real domain adapter and a continuing host entry point that can populate context without hand-fed fixture candidates. Show authentic versions, changing relationships and outcomes. A minimal CLI or API is sufficient for the first runtime release; a polished UI is not part of the original kernel requirement.",
      "done": "A real service can be observed, queried and safely changed, then the host can restart and reconcile without duplicating the operation. Keep service concepts in the adapter, not in core.",
      "sources": [
        [
          "apps/inspector/src/demo.ts",
          1
        ],
        [
          "apps/inspector/src/host.ts",
          271
        ]
      ]
    },
    {
      "id": "P6",
      "title": "Live semantic evaluation and risk calibration",
      "status": "Transport implemented; validation pending",
      "have": "PR #10 adds the live TypeSafe transport and eval:live. Contract, mocked HTTP and fixture tests pass. No live model run has been performed.",
      "missing": "Configure API access and an account-supported model; then run representative held-out task and message cases through real retrieval and interpretation. Include the original \"needs me\", Sarah, risky-operation, launch-blocker and same-issue cases. Separate retrieval misses from interpretation errors. Measure false actions, abstention, correction success, latency and cost; tune policy on separate calibration data.",
      "done": "Versioned real-model results support the chosen operating limits, with no gold candidates inserted into production retrieval. Keep deterministic RED tests as anti-parser guards and add semantic success tests alongside them. Green anti-parser tests are not semantic success.",
      "sources": [
        [
          "apps/inspector/src/live-cli.ts",
          8
        ],
        [
          "packages/evals/src/semantic-red.test.ts",
          19
        ],
        [
          "packages/perception/src/policy.ts",
          35
        ]
      ]
    },
    {
      "id": "P7",
      "title": "Retrieval and durable-history scale",
      "status": "Bounded frames exist; scale unproven",
      "have": "Seed providers, graph expansion, pinning and explicit truncation are implemented. Model frames are bounded.",
      "missing": "Measure candidate recall, latency and resource use with realistic histories and distractors. Bounding the returned frame does not bound all retrieval work: the term provider walks store.entities(), and file appends re-read the log. Add indexes or snapshots/compaction where measurements require them.",
      "done": "The intended data size has a measured retrieval budget and recall target; persistent history does not make turn latency grow without a supported limit. Tests cover relevant entities outside current scope and truncated evidence.",
      "sources": [
        [
          "packages/context/src/seeds.ts",
          237
        ],
        [
          "packages/file-log/src/index.ts",
          81
        ]
      ]
    }
  ]
}
