Files
promptkit/docs/roadmap/remediation.md

38 KiB
Raw Blame History

Implementation Review Findings

Responsibility Simplification Review

Reviewed all 17 stages of the current implementation plan against responsibility-simplification.md and its accepted audit decisions. The implementation spans 448e64d through 5ee602cc4b5a3afe4e7d361eb77181ef0940c7cd, after planning commit de46935.

The targeted architecture is implemented, and the ownership regression below is now addressed. Its evidence and review table describe the pre-fix baseline; the completion marker records the correction. No additional unintended restriction or public guarantee was identified. Removing copier-derived schema limits remains the selected acceptance change, while runtime provider-value support remains in place. The earlier 33-stage review and its five completed findings are retained separately below.

R1. Isolate Custom JSON Encoders From Retained Metadata [P2]

Status: Complete. Stages: 2, 13–15; particularly the shared prepared snapshot and removal of private smoke-target detachment.

Completion: built-in generation preparation uses trusted detachment before payload construction, so whole-payload encoding and per-value encoding-failure diagnostics cannot mutate retained provider values through their receivers. The single prepared snapshot and named/typed custom encoding remain intact. Public regressions failed before the fix and now protect prepared details, result settings, smoke settings, caller input, custom wire output, and failure classification without dispatch. Go 1.27.3 go test -race ./... and go vet ./... passed, including the existing retry, repair, and concurrent prepared-lifecycle coverage. Internal model-client documentation was updated.

Locations: provider payload construction, openAIChatRequestPayload, lines 468–475, and PrepareGeneration, lines 133–139; prepared metadata sharing, PrepareExecution, lines 52–57; smoke report target, smokeReportTarget.

Supported named map/slice values can implement json.Marshaler. The acceptance copier preserves compatible concrete types, including their methods. The built-in payload builder places provider values into the wire map by reference, and json.Marshal can invoke those methods on retained values. For example:

type mutatingMap map[string]string

func (m mutatingMap) MarshalJSON() ([]byte, error) {
    m["value"] = "changed by encoder"
    return json.Marshal(map[string]string(m))
}

This is an accepted finite, acyclic string-keyed map. Its custom encoding method mutates only its receiver, not external state. No concurrent caller mutation or invalid injected collaborator is involved.

Verified reproduction: An offline public-API probe constructs an ordinary engine with the built-in LLM client and an in-memory HTTP transport returning a valid response. It supplies ExtraParams["options"] = mutatingMap{"value": "original"}. Preparation succeeds. It compares details before/after RunPrepared, then separately inspects a text-inference smoke report using the same kind of runtime override. Both operations return nil Go errors:

Observation Current implementation With pre-sprint detachment restored via Go overlay
Prepared details before execution original original
Prepared details after execution changed by encoder original
Smoke report's effective provider setting changed by encoder original
Caller-owned input map original original

The comparison overlays only internal/usecase/prepared_execution.go and internal/usecase/smoke_tester.go from de46935 onto the current code. It isolates the lost metadata ownership separation; it is not a test of the entire old revision. The probe and overlays live outside the repository.

Cause and impact: Removing the second prepared snapshot is correct only if all consumers treat the shared snapshot as immutable. Injected clients receive independent public requests, but built-in encoding is another callback boundary: custom encoding code can mutate its input. The new sharing exposes that mutation through retained details and diagnostic settings. It also creates an unsynchronized mutation path alongside otherwise supported concurrent details reads. The existing mutating-client regression exercises an injected client, so it does not cover this built-in path. Encoder failure diagnostics are relevant too: PrepareGeneration may separately marshal original extra-parameter values when whole-payload encoding fails.

Required correction: Keep the single immutable metadata snapshot, but detach mutable accepted provider values at the built-in encoding boundary before any custom encoder runs. Ensure both payload encoding and per-value encoding-failure diagnostics operate on detached values. Reuse trusted copying where appropriate; do not reinstate the duplicate details snapshot or reintroduce input validation merely to copy accepted data.

Retain current named/typed input and custom wire-encoding behavior, native retry payload freezing, error classification, and the outward public ownership copies. Rejecting these types, stripping their methods through JSON-native normalization, or requiring nonmutating custom encoders would narrow the selected runtime contract instead of repairing ownership.

Regression coverage: Exercise a supported named provider map with a receiver-mutating MarshalJSON through the built-in offline transport. Check unchanged prepared details and smoke effective settings, independent caller input, and the expected custom wire representation. Include the encoding-failure path so its per-value diagnostic cannot mutate retained state. Retain existing injected initial/repair mutation and concurrent prepared lifecycle protection.

Stage-By-Stage Review

This is the pre-remediation review record; R1's completion above addresses its identified gap without changing the other selected boundaries.

Stage Current evidence and result
1 Constructor routing defaults and their only error path are removed. Resolved endpoint/model checks and HTTP-client timeout ownership remain. No additional finding.
2 One root payload builder preserves field omission/presence, reserved extensions, session/native schema handling, and encoded-body freezing. Its borrowed provider values participate in R1.
3 Private repositories explicitly require captured definitions, metadata, requirements, and profile identity; capability/hash fallbacks are removed. No additional finding.
4 Repository fixtures implement captured operations; metadata-only and selection/error coverage remain. No additional finding.
5 Rendering uses captured templates only, with per-call clones/functions and retained session/input/message behavior. No additional finding.
6 Renderer fixtures/benchmarks supply captured parses; syntax, isolation, cancellation, artifact-text, and requirements comparisons remain covered. No additional finding.
7 Smoke syntax and schema checks use separate prepared plans; malformed syntax leaves schema matching unevaluated, including scalar/nonmatching controls. No additional finding.
8 Direct validator interface/methods and on-demand callbacks are deleted; shared instance validation and eager source-specific preparation remain. No additional finding.
9 Tests use prepared plans and retain source containment, portability, references, precision, freezing, and synchronous cancellation coverage. No additional finding.
10 Trusted schema detachment removes provider-copy budgets. Deep schema isolation and a real schema with over 100,000 annotation values are covered. No additional finding.
11 Registry/profile lookup uses trusted detachment after final acceptance, while configuration validation/overlay and runtime acceptance checks remain. No additional finding.
12 Private target resolution transfers owned maps, preserving empty-map inheritance and nil projections. Outward/injected projections still detach values. No additional finding.
13 One redacted metadata snapshot is shared, and cleanup no longer writes it; owner/claim/discard state and outward copying remain. Built-in custom encoding can still mutate the snapshot: R1.
14 Smoke projection is infallible and outward values are detached; credentials/endpoints remain sanitized. Built-in encoding can mutate effective settings before final report projection: R1.
15 Added tests cover injected initial/repair mutation, returned details/results, named/numeric runtime values, and concurrent lifecycle reads. The built-in custom-encoder path is missing: R1.
16 Canonical format, integration, model-client, runner, source, and component guidance reflects the selected changes without new resource/provider promises. The immutability description is not fully realized until R1 is fixed.
17 Fresh full race tests and vet pass, but those checks do not cover R1. Documentation/history links and delivered scope were reviewed; completion still requires the ownership correction.

Review Validation And Limits

At the reviewed pre-fix baseline, using Go 1.27.3 with GOTOOLCHAIN=local, GOWORK=off, and GOPROXY=off:

  • go test -race ./... passed, including the maintained offline examples.
  • go vet ./... passed.
  • The public ownership probe reproduced both metadata mutations, with nil Go errors and unchanged caller values; the two-file historical overlay prevented both mutations.

The review changed no production code or repository tests. Its source analysis and targeted probe established R1 despite the passing existing suite; the completion marker above records the subsequent fix and validation. The review does not claim universal callback safety, provider compatibility, or defect-free code.

Earlier Audit Remediation Review: Scope And Status

Reviewed all 33 stages of the implementation plan against the selected roadmap, its accepted catalog decisions, and the implementation through 6673284312de23bde86c20eb8de4f3865b157471. The implementation changes begin after planning commit 6a1a32a.

An integration-focused follow-up reviewed the same implementation at 356563a, the documentation-only commit recording the original review. It adds finding 5; the earlier findings were still open at that audit baseline and are not duplicated.

The broad architecture and selected simplifications are in place. All five findings are now addressed, with completion markers below: three correctness/ completeness issues, one error-projection efficiency issue, and one documentation status gap. Finding descriptions and audit evidence retain the historical pre-fix behavior; the completion markers describe the delivered corrections.

The accepted artifact ownership, supported convenience-source types, and self-contained schema changes are intentional compatibility changes. No inadvertently strengthened contract was identified beyond those deliberately selected changes. Historical measurements are observations, not performance contracts.

Earlier Audit Findings

1. Preserve Caller Cancellation When Authentication Also Overflows [P2]

Status: Complete. Stages: 7, 21–22.

Completion: interrupted body reads preserve caller cancellation before overflow classification. Public below-limit and overflow-boundary regressions retain HTTP facts, unknown acceptance, incomplete cancellation reports, and body closure.

Locations: authentication adapter, ProbeOpenRouterKey, lines 61–67; outcome mapping, authenticationProbe.run; completion, finishHTTP.

The adapter checks the number of returned bytes before the read error. A legal io.Reader can return the allowance-plus-one byte and context.Canceled in the same read. The adapter sets Overflow and returns nil, discarding cancellation. The use case then selects ExecutionFailureOther; finishHTTP does not apply caller cancellation because it only does so for context-classified failures.

Verified reproduction: An offline public SmokeTest uses an HTTP 200 body that cancels the caller and returns context.Canceled with its final bytes. With 1,024 bytes it returns the cancellation and an incomplete report. With 1,048,577 bytes it instead returns:

  • nil Go error despite ctx.Err() == context.Canceled;
  • Completed == true;
  • failure other and reason authentication_response_limit_exceeded.

The body is closed and the read allowance is honored in both cases; those parts of the remedy work. The completed overflow result violates Stage 7's explicit exception for caller cancellation.

Required correction: Preserve context interruption across the adapter and outcome mapping when overflow and interruption coincide. Retain independently observed HTTP facts and unknown credential acceptance. Ordinary overflow must still be a completed diagnostic with nil Go error. Do not change the established treatment of a known, concluded authentication result merely because cancellation arrives later.

Regression: Exercise bytes-plus-cancellation at the overflow boundary through the public diagnostic path, alongside ordinary overflow and interrupted below-limit controls. Keep caller deadline handling consistent with the same existing cancellation policy.

2. Check Schema Self-Containment Independently Of Its Source Filename [P2]

Status: Complete. Stages: 11–13.

Completion: shared compilation checks both the source base and an unrelated submission base through the same compiler rules, including unused declarations. Host and filesystem regressions preserve fragment, explicit-ID, and embedded-ID references while rejecting unsent source-name dependencies.

Locations: schema compilation, compileSchemaDocument, lines 426–445, and its host/fs.FS callers; public wire regression coverage.

The compiler registers the document at its physical file or source-relative retrieval URI. Its denying loader rejects unknown resources, but references back to that registered retrieval URI do not invoke the loader. Consequently, successful local compilation does not establish that the outbound root is self-contained without PromptKit's source context.

Verified reproduction: Load a file named schema.json containing:

{"$defs":{"value":{"type":"integer"}},"$ref":"schema.json#/$defs/value"}

Public PrepareExecution succeeds. An offline HTTP client captures the actual native structured-output payload, returns 3, and RunPrepared passes local validation. However, compiling the captured schema at a neutral submission URI, https://provider.invalid/submitted-schema, with external loading disabled attempts to load https://provider.invalid/schema.json and fails. The source retrieval URI was never sent to the provider. Changing the reference to #/$defs/value succeeds both locally and at the neutral URI.

This is a packaging gap in the selected self-contained-schema remedy, not a claim about any particular provider's schema support or enforcement.

Required correction: Establish self-containment without relying on the source retrieval URI being available upstream. Detect references that depend on that unsent filename/path and provide an actionable error. Preserve valid fragment references, explicit/embedded IDs, anchors, recursion, dialect handling, and checks of otherwise unused schema declarations. Keep source location for root loading and diagnostics; do not add external loading, a lexical ban on all non-fragment references, a bundler, or a provider-acceptance guarantee.

Regression: Cover host-file and fs.FS source-name dependencies, retain explicit-ID and fragment controls, and evaluate the actual outbound schema without the original source base. Preparation must fail before dispatch when the selected self-contained contract is not satisfied.

3. Avoid Duplicating An Already-Retained Error Cause [P3]

Status: Complete. Stages: 3–4.

Completion: ordinary operation projection retains its mapped cause once, without joining the original subtree a second time. Multi-engine regression coverage checks exact cause/owner matching and one occurrence of an independent leaf; specialized projection and redaction tests remain intact.

Location: public error projection, mapPublicError, particularly lines 26–38.

The ordinary operation branch joins the owner, the mapped cause, and the original cause. For ordinary errors, the mapped cause already retains the original through wrapping or is that same error. This introduces two paths to the same cause. When an injected client returns an error from another PromptKit engine, each additional enclosing engine repeats the previous cause tree in both branches. Formatting duplicates diagnostics; unsuccessful error-tree searches can also revisit the repeated branches.

Verified reproduction: Begin with a public missing-prompt error, then run a valid parent whose injected client returns that error; repeat with each parent's result. Owner and exact-cause matching remain correct, but formatted byte counts at depths zero through eight are:

158, 361, 767, 1579, 3203, 6451, 12947, 25939, 51923

The input is a linear chain of consumer operations; the projection creates exponential repeated text/traversal. Even one ordinary error repeats its cause unnecessarily. This is introduced by the new join, not required to preserve the owning category.

Algorithmic analysis: Let d be the number of enclosing operations, with a fixed-size leaf diagnostic and fixed-size per-operation context. The ordinary mapped cause already wraps the previous error, yet the join also stores that previous error as another child. Its formatted length therefore follows L(d) = 2*L(d-1) + O(1), giving Theta(2^d) output bytes. The cause graph needs only O(d) distinct error objects, but standard errors.Is/errors.As traverse both paths without remembering previously visited objects. An unsuccessful search consequently follows W(d) = 2*W(d-1) + O(1) as well. The mapper itself performs such unsuccessful category/type searches, so this is not limited to callers that log the final diagnostic.

Retaining one already-mapped cause path removes the avoidable branching: formatted length becomes L(d) = L(d-1) + O(1), and an individual formatting or unsuccessful search over that corrected ordinary chain can be linear in d. This is a structural alternative, not a request for error-graph memoization, new nesting limits, or exact timing/allocation guarantees. It does not assert that a sequence of d separate public operations, each processing its own growing error, has linear total cost. Arbitrary consumer error implementations also retain their own costs.

Required correction: Retain the owning category and each necessary cause without adding an original cause that the projection already retains. Preserve errors.Is/errors.As, specialized capacity/provider/retry projections, and redacted transport formatting. Do not require category exclusivity, discard consumer causes, or impose a new nesting limit.

Regression: Extend composed-error coverage across several enclosing operations. Verify owner and exact-cause matching and that an independent leaf diagnostic is not duplicated at every boundary. Protect this relationship rather than exact complete error wording or a timing threshold.

4. Reconcile The Feature Roadmap's Implementation Status [P3]

Status: Complete. Stage: 33.

Completion: the feature roadmap now records the delivered sprint, links stage evidence and this follow-up record, and distinguishes historical baseline measurements from current status without prematurely closing finding 5.

Location: feature roadmap, Purpose And Status and workstream completion reporting.

The feature roadmap still says neither document describes completed remediation and all workstreams are pending. The implementation plan now records all 33 completed stages and post-change measurements. Stage 33 specifically required actual completion/evidence to be recorded in the roadmap. Its current status contradicts the delivered work and makes it difficult to distinguish original findings from remaining review work.

Required correction: Record that the implementation landed, point to the stage evidence and outstanding findings here, and distinguish historical assessment-only statements from current overall status. Preserve the original baseline measurements and decision provenance as historical evidence. Do not claim all issues are resolved until the findings are addressed; normal roadmap retirement can follow when appropriate.

5. Integrate Operation Ownership With Terminal Observation Classification [P2]

Status: Complete. Related stages: 3–4, 25–26.

Completion: a private public-boundary wrapper retains operation ownership and a single mapped cause. Terminal observations classify that owner while retaining context precedence and generation-specific transport/provider details. Observed run, prepared-run, repair, and artifact regressions retain child cause identity.

Locations: terminal classifier, observedFinish, lines 160–192; public error projection, mapPublicError; run boundaries, Run and RunPrepared.

The new operation errors and public projection preserve the enclosing operation's category while retaining child causes. The existing terminal observer classifier still uses a whole-chain sentinel-priority switch. A retained child ErrPromptNotFound wins over the enclosing generation or artifact failure. The generation coordinator, which classifies the actual injected call, reports generation instead. Thus the owning-operation remedy is incomplete at the existing observation boundary even though the returned error now retains the correct outer category.

Verified reproduction: Obtain a child engine's missing-prompt error, then return it from a valid parent engine's injected client or artifact reader. With an observer, the offline race-enabled probe produces:

Parent path Last attempt failure Terminal failure Parent error category retained
Run, initial generation generation prompt_not_found ErrLLMGenerate
RunPrepared, initial generation generation prompt_not_found ErrLLMGenerate
Run, repair generation generation prompt_not_found ErrLLMGenerate
Run, artifact reading No model attempt prompt_not_found ErrArtifactLoad

The exact child error remains matchable in all four cases. The parent's prompt exists; the terminal event nevertheless describes a missing parent prompt. This can misdirect downstream monitoring and recovery. Existing composed-cause tests check returned errors, while existing attempt/terminal consistency tests use simple injected errors and miss this combination.

Required correction: Preserve and consume the owning-operation information when classifying terminal events instead of selecting a nested operation by global sentinel priority. Keep legitimate context/deadline precedence, built-in provider/transport/malformed classifications, retry metadata, and public errors.Is/errors.As access. This does not require a new exported API or category exclusivity. Simply moving generation ahead of other sentinels would create the same ambiguity for other owners.

Regression: Cover observed ordinary/prepared generation, repair failure, and artifact failures carrying another engine's error. Preserve direct missing prompt/profile classification and existing cancellation/provider cases. Do not require universal attempt/terminal equality: later validation or cancellation can legitimately change an operation's final outcome.

Earlier Stage-By-Stage Review Record

Each stage was checked against its requested outcome, changed implementation, relevant tests, and documentation. The entries below identify the review focus; “no additional finding” is a review result, not a guarantee of defect-free code.

Stage Current evidence and result
1 Development guidance selects the latest available local toolchain independently of the module minimum; validation used Go 1.27.3 and go.mod remains at 1.27.0. No additional finding.
2 Both source helpers hand provider maps directly to ConfigKit; the converter is deleted. Source tests cover capture, unsupported values, cycles, ordering, and inheritance. No additional finding.
3 Internal operation errors carry explicit owner/cause with Is/Unwrap; lookup and execution boundaries use them. See finding 3 for facade composition.
4 Public nested-error and specialized-capacity tests retain owner/cause. Repeated cause retention remains inefficient: finding 3.
5 Response-reader errors are recorded below the limited reader and distinguished from parser/framing failures at both decode points; cause/redaction tests cover bytes with errors. No additional finding.
6 Built-in preparation has explicit typed error/evidence markers; inference diagnostics check cancellation first and report construction errors without dispatch. Injected clients retain their separate semantics. No additional finding.
7 Authentication reads at most allowance plus one, closes bodies, and reports explicit overflow. Simultaneous cancellation remains incorrect: finding 1.
8 Artifact GoDoc, defensive adapter copying, migration guidance, and concurrent tests follow the accepted storage transfer. No additional finding.
9 Prepared handles retain an immutable non-zero-sized identity token, not the runner; claim/discard locking remains. Normalized session IDs clone accepted storage. No additional finding.
10 Runner and engine declare ValidationPreparer; concrete validator constructors preserve direct validation and nil-plan behavior. No additional finding.
11 Host and fs.FS paths share compilation, retain root loading, and deny external loader requests. Source-base dependence remains: finding 2.
12 Declared schema traversal uses compiler-resolved dialects, escaped pointers, and schema-bearing positions, excluding annotations. It does not resolve finding 2. No separate traversal finding.
13 Public schema-file precedence/errors, freezing, and native submission are tested; the unused helper result is gone. Outbound relocation coverage misses finding 2.
14 Overlay clones the lower map once, merges owned descendants, and copies replacements. Isolation/null/array cases and comparable allocation results are recorded. No additional finding.
15 Trusted projection copying moved to internal/jsonvalue; fallible runtime input copying remains distinct. Type/nil/number/schema-key behavior is covered. No additional finding.
16 Owned evidence sets merge smaller into larger; callers consume values/flags rather than independent map snapshots. Work-count evidence and requirements tests support the change. No additional finding.
17 Shared branch orchestration preserves with body-dot versus else-dot behavior, inactive paths, and conservative inspection. Independent rendering comparisons remain. No additional finding.
18 Bounded normalization preserves invalid-byte-run replacement and rune boundaries; encoding delegates to standard JSON marshaling. No additional finding.
19 Complete/omission feedback paths use bounded prefixes and retain complete stored diagnostics/candidate behavior. Boundary/escaping tests and comparable allocation results are recorded. No additional finding.
20 Scope resolves before inventory selection; named ranges use binary search, All copies once, and unqualified selection scans without a full prior copy. Ordering, ownership, cancellation, and allocation evidence remain. No additional finding.
21 OpenRouter endpoint derivation and account-response interpretation live in the outbound adapter behind a narrow capability. Finding 1 remains in its read/error ordering.
22 Use cases retain selection/applicability/reporting; target-only detachment replaces unused broad cloners. Overflow/context outcome composition contributes to finding 1.
23 Extracted record validators retain final-handoff traversal, resource indexes, field paths, and existing checks. No raw-source validation phase was added. No additional finding.
24 Input metadata, message/template capture, output conversion, and effective targets are separated while preserving presence, source-relative reads, lazy origins, and final hash assembly. No additional finding.
25 Attempt results replace parallel returns without moving acquisition/release outside attempt scope. Built-in and injected dispatch remain distinct. No additional finding.
26 Shared accounting runs after permit release and preserves distinct HTTP/usage facts; observation and scheduling tests exercise the real coordinator. No additional finding.
27 Synthetic markers exercise value/pointer formatting and direct-key JSON omission; credential, identity, listing, and provider-map documentation is corrected. No additional finding.
28 One internal test owns the complete bundled asset oracle; smaller public option/wire/smoke tests retain distinct assembled behavior. No additional finding.
29 Artifact tests compare same-body inline/file opaque hashes and actual byte/size behavior; benchmark correctness setup remains outside timing. No additional finding.
30 Unconsumed backend presence/queue state, endpoint echo, helper result, and named orphan helpers are removed; effective policy/provenance and public features remain. No additional finding.
31 Runtime definitions use the output contract and captured message content without duplicate fields. Configuration content_file, override defaulting, hash relations, and migration guidance remain. No additional finding.
32 Runner scheduling uses generation.NewInjected; the production wrapper is deleted. Useful manager scenarios use test-only one-shot scaffolding. No additional finding.
33 Current GoDoc/consumer/format/integration/internal guidance largely matches the code; validation passes. Feature-roadmap completion reporting remains stale: finding 4.

Earlier Validation And Limits

At the reviewed commit, using Go 1.27.3 with GOTOOLCHAIN=local, GOWORK=off, and GOPROXY=off:

  • go test -race -count=1 ./... passed, including the maintained examples.
  • go vet ./... passed.
  • Tracked Go files produced no gofmt -l output.
  • git diff --check 6a1a32a..HEAD passed.
  • Additional temporary Go test overlays outside the repository reproduced findings 1–3. The cancellation and relocated-wire-schema assertions fail as described; the nested-error probe measured the duplicated text while retaining correct category/cause matching.

The probes use controlled readers, HTTP transports, and the pinned schema compiler. No credentials, provider calls, external schema retrieval, dependency changes, or publication were needed. They establish local failure mechanisms, not universal provider behavior. Optimization review checked source changes and the recorded comparable measurements; it did not add benchmark thresholds or new release gates.

Earlier Integration Follow-Up Coverage

The follow-up focused on interactions between the changed components and the existing consumer workflows, rather than repeating the stage-local review. Production code is unchanged between 6673284 and the follow-up baseline 356563a.

Integration seam Review and validation result
Convenience sources, ConfigKit inheritance, and optimized provider overlays An assembled probe captured backend/profile source maps before caller mutation, inherited a profile, and verified recursive backend-to-profile overlay plus detached inspection results. Passed.
Namespace-filtered inventories, inspection, and execution selection The assembled probe listed a scoped prompt, inspected requirements, validated its request, and prepared it through the same view. An unscoped owning engine then ran the handle with its captured prompt/profile/backend identities. Passed.
Trusted copying, frozen validation, runtime overrides, and repair The assembled probe combined direct session and reasoning/numeric overrides, appended messages, a schema with internal definitions, and bounded repair. It mutated prepared details, client-owned nested provider/schema values, and the source schema after preparation. Repair and frozen validation remained correct, and inspection/preparation hashes agreed. Passed.
Generation accounting, retries/repair, and capacity Existing assembled tests for shared/independent pools, backoff permit release, logical admission, repair, frozen credentials, usage, and observer events passed under the race detector. No additional scheduling/accounting finding.
Prepared-owner token, namespace views, and observation isolation Existing lifecycle, foreign-owner, concurrent claim/discard, delegated-operation, and observer-isolation tests passed under the race detector. No additional lifecycle finding.
Operation-owned errors and existing terminal observers New offline observed-call probes fail in all four combinations documented in finding 5. Existing plain injected-error tests still pass.
Shared schema compiler and provider-native output Source-to-native-payload review retains finding 2; the new assembled frozen-schema/repair probe passed for a genuinely self-contained fragment-reference schema. No duplicate finding.
HTTP read classification and diagnostic adapter/reporting Adapter/coordinator/use-case review and the focused internal suites retain the existing read-failure classifications. The overflow/cancellation conflict remains finding 1. No duplicate finding.
Requirement-evidence ownership and renderer/preflight behavior Evaluation/branch ownership was reviewed alongside actual rendering and the assembled requirements/preflight workflow. Existing prompt requirements and use-case suites passed; no additional recognition scope or execution-readiness guarantee was introduced.

Validation used Go 1.27.3 with GOTOOLCHAIN=local, GOWORK=off, and GOPROXY=off:

  • The focused race-enabled public integration selection passed, covering retry/repair/accounting, backend capacity, frozen prepared execution, delegation, namespace views, schema-file wiring, programmatic sources, and existing injected-error observation classifications.
  • Race-enabled configuration, prompt, validation, generation, use-case, and model-client suites passed.
  • The additional composed-snapshot/repair probe passed under the race detector.
  • The new operation-ownership observation probe failed as documented in finding 5, independently of the already recorded findings.

Temporary probes were supplied using Go test overlays outside the repository; no implementation or permanent test changes were made. All provider behavior was controlled offline. The prior full-suite/vet evidence above remains applicable to the unchanged implementation; this follow-up adds focused integration evidence rather than a new release gate.

Earlier Algorithmic Follow-Up Coverage

A further source-based review at 7203e5d focused on algorithmic correctness, efficiency, and scalability of the implemented stages. It confirms the exponential behavior in finding 3 and adds the recurrence and refactoring opportunity there, rather than creating a duplicate finding. No additional distinct algorithmic or ordinary-correctness finding was identified in this pass. All five findings were open at that audit baseline; their completion markers above own the current remediation status.

Remediation completion validation: Go 1.27.3 with GOTOOLCHAIN=local, GOWORK=off, and GOPROXY=off passed the complete go test -race -count=1 ./... suite and go vet ./.... New regressions cover authentication read interruption at the overflow boundary, host/FS schema portability, relocated native schema submission, nested-cause duplication, and operation-owned terminal observations. Focused checks passed before each code unit was committed. Documentation links, formatting, and whitespace were checked.

The review used the plan and roadmap to exclude deliberate algorithm choices: the small-to-large evidence merge, owned provider overlay, bounded feedback encoding and prefix selection, namespace binary searches, declared-schema location compilation, trusted-copy traversal policies, and selected ownership copies were not reopened. In particular, the chosen unqualified-list scan and schema-location strategy are not reported as new optimization requests.

For the remaining implementation glue:

  • Source helpers map records once before ConfigKit's handoff, without the old recursive compatibility expansion. ConfigKit's own processing is outside this review's implementation scope.
  • Extracted record validators use a backend-ID index rather than scanning every backend for each profile. Prompt input duplicate detection uses a set; input and message capture process their records once, with one final definition hash and one lazily shared metadata snapshot. Existing sorted inventory construction and dependency/template work are separate costs, not disguised linear-time guarantees.
  • The response-error recorder adds constant metadata work per read. The authentication recognizer parses a fixed number of document levels/fields, so its processing is linear in the consumed body size, not multiplied by arbitrary input depth through a custom recursive recognizer.
  • Generation accounting updates a fixed number of usage/event fields per attempt and appends captured attempt records with amortized constant append cost. Storing A requested attempt records requires O(A) space. Error classification additionally pays for the supplied cause graph, including finding 3; arbitrary collaborator/callback work is not constant-time.
  • The repair request uses the original message prefix plus a bounded-count suffix, not an accumulating conversation from every prior repair. Repeated prefix processing follows the amount of message data actually resubmitted; it is not an unintended growing-history algorithm.

The complexity finding follows from current source and the standard library's error-tree traversal. No new benchmarks, real-world performance collection, provider calls, implementation changes, or public complexity guarantees were introduced. Existing validation evidence above applies to the unchanged code.