Phase 6a: manual runner port + Kotlin-port template - #59
Closed
grubmeshi wants to merge 2 commits into
Closed
Conversation
Brings PLAN_DETAIL_06_kotlin_ports_umbrella.md and its 06A (manual) sub-plan onto this branch (both previously only existed on refactor/single-go-binary/ plan) and runs every umbrella A1-A12 verification step against the phase-5-dispatcher tree. A3 (registration: config section + opt-in startup PUT), A4 (shared meshapi.DecryptRunDetails) and A7 (runner_runs_unhandled_total / runner_at_capacity_skips_total metrics) are plan-05 promises that never landed - A4 is the same root cause phase-5's own STOP-gate already flagged (A5), carried forward unremediated; A3/A7 are fresh instances of the same "promised, not delivered" pattern against different plan-05 commitments. A2 partially fails the same way (no maxConcurrentRuns/RUNNER_MAX_CONCURRENT_RUNS persona knob yet). A9's literal fixture-cross-decryption step is unexecutable (the cited Kotlin test mocks decrypt() rather than embedding a raw ciphertext); substituted with a direct algorithm-level code comparison, which holds. A10/A11 fail their literal empty-diff/proof-string check only via unrelated, already-sanctioned changes elsewhere in the same file/doc. Resolved autonomously without halting: none of the gaps block 06A (manual decrypts nothing, and its own steps 5/7 already anticipate originating the registration section, the maxConcurrentRuns knob and the two metrics fresh) so the umbrella and 06A plan text stand unrevised; each gap is recorded so 06A/06B onward do not silently assume machinery that does not exist yet. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…mplate Ports PLAN_DETAIL_06A_manual.md and establishes the phase-6 template artifacts the gitlab/azdevops/github ports inherit (umbrella §6). Additive and always-green: the Kotlin manual-block-runner module and its Gradle/CI legs are untouched (removal + the acceptance gate + the meshfed-release SKILL edit are deferred to the flip PR, see CROSS_REPO_TODO.md — they need a live meshStack this environment can't provide). Template artifacts (reused verbatim by 06B–D): - Wire seam: meshapi.SourceUpdateDTO/StepUpdateDTO (the lean third PATCH shape, §7.4) + report.NewReporter — the event-driven, stateless, ticker-less, abort-discarding implementation of the ONE unified report.Reporter port (umbrella §7.5). - Config compat: config.SingleRunMode (EXECUTION_MODE or SPRING_PROFILES_ACTIVE= kubernetes, §6.3), config.BlockRunnerCompat + ApplyShared (blockrunner: yaml normalization, §6.4), config.ResolvePrivateKey (Kotlin PrivateKeyLoader order, §6.5). - dispatch.StandaloneClaimClassifier (404→no-run, else→logged-no-run, no backoff, §7.1). - Per-persona Dockerfile + runner-config.yml layout; depguard group; thresholds line. Manual persona (internal/manual, cmd/manual, bbrunner manual subcommand): - Handler echoes inputs→outputs 1:1 (toOutputType table, last-wins, number fidelity via UseNumber), debug mode (config-selected, injected Clock/Rand), no decryptor (§4.1). - Polling (dispatch.Loop + InProcess, mgmt on 8104, PORT alias) and single-run (file source, runToken-only reporting, R12 exit rule — §7.9 exit-code tightening over the Kotlin swallow). External-API error type (ExternalCallError): per §4.4 the shape is specified in the plan and ships with its first consumer in 06B — no dead type in 06A (P3). Choice recorded. Coverage gate: internal/manual joins thresholds.txt at 90 (measures 97.6%, no exclusions). STOP-D fit review (§17) re-affirmed: RunHandler/ClaimedRun/reporter shapes fit all three remaining runners — no plan-05/umbrella revision needed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 6a — manual runner port + Kotlin-port template
First of the four stacked Kotlin→Go port PRs (manual → gitlab → azdevops → github). Base:
phase-5-dispatcher.Ports the manual runner to Go and establishes the shared Kotlin-port template the 06B–D ports inherit:
internal/meshapi/sourceupdate.go— lean third PATCH shape (SourceUpdateDTO/StepUpdateDTO, §7.4)internal/report/eventreporter.go— event-driven, stateless, ticker-less, abort-discardingreport.Reporterimpl (RunPatcher+NewReporter)internal/config/{singlerun,blockrunner,privatekey}.go—SingleRunMode,BlockRunnerCompat.ApplyShared,ResolvePrivateKeyinternal/dispatch/portclassifier.go—StandaloneClaimClassifierinternal/manual/*— the persona (echo + debug handler),cmd/manual+cmd/bbrunner manualwiring, container.New gated package
internal/manualat 97.6% (gate 90). Build,go test -race ./...,golangci-lint(0 issues), and the coverage gate all pass.Sanctioned deltas / deferrals
CROSS_REPO_TODO.md.ExternalCallErrordeliberately NOT created here — ships with its first consumer (06B), no dead type (§4.4).manual-block-runner-<uuid>(existing prefix format) rather than plain uuid, to avoid editing shareddispatch.🤖 Generated with Claude Code