149 lines
15 KiB
Markdown
149 lines
15 KiB
Markdown
# Audit Decision Register
|
|
|
|
## Status
|
|
|
|
Complete. This document inventories the conclusions of Narratio's three
|
|
maintainability audit passes and records their final disposition. It is a
|
|
traceability register, not an implementation plan and not an additional audit.
|
|
|
|
The source audits are:
|
|
|
|
- the contract-preserving [Maintainability Audit](audit.md);
|
|
- the contract-relaxing [Contract Simplification Audit](contract-audit.md); and
|
|
- the [Reusable Library Extraction Audit](library-audit.md).
|
|
|
|
The detailed [File Operations Simplification](fileops.md) roadmap supplies the
|
|
approved filesystem rationale and policy that refine the audit findings. The
|
|
consolidated [Refactoring Roadmap](refactoring.md) is the controlling inventory
|
|
of adopted work for the upcoming refactor.
|
|
|
|
## Dispositions
|
|
|
|
- **Immediate action:** approved work included in `refactoring.md`.
|
|
- **Constraint:** a rule governing immediate work, but not a separate code
|
|
change by itself.
|
|
- **Superseded:** a later approved decision replaces the earlier recommendation.
|
|
- **Conditional:** reconsider only when a stated future trigger occurs.
|
|
- **Deferred:** deliberately outside the upcoming refactor.
|
|
- **No action:** already satisfied, unsubstantiated, retained as-is, or merely
|
|
an observation.
|
|
|
|
An immediate action can also carry a constraint. When findings overlap, the
|
|
contract audit controls product semantics, `fileops.md` resolves the detailed
|
|
filesystem policy, and the library audit controls extraction decisions. The
|
|
resulting immediate work is consolidated in `refactoring.md`.
|
|
|
|
## Pass 1 — Contract-Preserving Maintainability Audit
|
|
|
|
All identifiers in this table refer to sections of [`audit.md`](audit.md).
|
|
|
|
| ID | Subject | Final disposition | Controlling decision and destination |
|
|
| --- | --- | --- | --- |
|
|
| H01 | Repository footprint | No action | Size alone was not a defect. |
|
|
| H02 | Trusted-environment threat model | Immediate action and constraint | Adopt the trusted, group-owned workspace model in `fileops.md`; retain secret handling and confined destructive scope. See `refactoring.md`, Filesystem. |
|
|
| H03 | Production-code concentration | No action | Do not split packages merely because they are large. |
|
|
| H04 | Production files over 1,000 lines | Immediate action | Decompose only the identified runner, analyze, configuration, publish, and previous-cache seams. See the corresponding `refactoring.md` workstreams. |
|
|
| H05 | Application, stage, and artifact interaction | Constraint | Preserve current package ownership and dependency direction. |
|
|
| H06 | Confined filesystem and directory promotion | Immediate action | Replace the broad subsystem under `fileops.md`; delete custom directory promotion. See Filesystem. |
|
|
| H07 | Test code larger than production | Immediate action | Remove tests only with retired contracts, consolidate focused fixtures, and replace mutable app globals as affected code is refactored. See Quality and testability. |
|
|
| H08 | Repository tests and vet | Constraint | Keep repository-wide tests and vet as required refactoring validation. |
|
|
| H09 | Acyclic package dependencies | Constraint | Preserve the existing acyclic dependency direction; no reorganization is required. |
|
|
| H10 | Localized complexity | Constraint | Limit work to audited hotspots and immediate collaborators. |
|
|
| H11 | Small dependency surface | Constraint | Add dependencies only where an adopted finding demonstrates net value. |
|
|
| H12 | Documentation ownership | Immediate action and constraint | Update canonical owners with each behavior change and avoid parallel narratives. See Quality and documentation. |
|
|
| H13 | Coverage by volume | Immediate action | Add risk-focused restore and transition coverage; do not preserve or target a test-line or coverage ratio. |
|
|
| H14 | Cohesion of app, stage, and config | Immediate action and constraint | Keep packages intact while introducing private lifecycle, transaction, and validation-domain seams. |
|
|
| H15 | Natural modules in large files | Immediate action | Use the audited internal seams for runner, analyze, configuration, publish, and current previous-cache logic. |
|
|
| H16 | Duplication in stages and adapters | No action | Do not introduce base-stage or base-adapter abstractions; keep tool contracts local. |
|
|
| H17 | Durable versus implementation-coupled tests | Immediate action | Preserve behavior tests, delete mechanism tests for retired contracts, use invocation-scoped dependencies, and improve large structural diffs selectively. |
|
|
| H18 | Invariant discoverability | Immediate action | Correct filesystem documentation and restore behavior; retain transaction-order comments near runner and publish ownership. |
|
|
| H19 | Go baseline upgrade | Immediate action, revised to Go 1.26 | The audit proposed Go 1.27, but the approved implementation baseline is Go 1.26: it provides `os.Process.WithHandle`, while `os.Root.RemoveAll` was already available in Go 1.25. Upgrade the module, CI/release images, module state, and release documentation in one bounded change. See Platform modernization. |
|
|
| H20 | `os.Root` confinement | Immediate action | Use `os.Root` only for genuinely root-scoped cleanup and restore; use ordinary filesystem operations elsewhere. See Filesystem. |
|
|
| H21 | Narratio-owned durability and policy | Superseded in part; immediate action | `fileops.md` retains atomic visibility, limits, modes, validated downloads, destructive scope, and secret protection while retiring stronger guarantees. |
|
|
| H22 | `os.Process.WithHandle` | Immediate action | Adopt after the Go baseline upgrade while preserving Windows Job Object lifecycle. See Platform modernization. |
|
|
| H23 | `slices` and `maps` | Immediate opportunistic action | Apply only in touched code where semantics are identical; no bulk rewrite. See Quality and testability. |
|
|
| H24 | `errgroup` for transcription | Immediate action | Replace the manual worker pool while preserving cancellation, qualified errors, and deterministic aggregation. See Platform modernization. |
|
|
| H25 | `go-cmp` in tests | Immediate opportunistic action | Use for selected large structural comparisons only. See Quality and testability. |
|
|
| H26 | Adopt `gofrs/flock` | No action | Retain the small existing platform lock primitives. |
|
|
| H27 | Adopt Cobra | Deferred | Reconsider only after demonstrated command/help/flag inheritance costs. |
|
|
| H28 | Generic configuration framework | No action | Retain typed strict decoding, composition, defaults, and semantic validation. |
|
|
| H29 | Generic atomic-file package | Immediate action with constraint | Keep a small local helper unless focused research finds a maintained dependency that removes more code while meeting platform and mode needs. See Filesystem. |
|
|
| H30 | Provider-neutral object storage | No action | The narrow internal storage ports already satisfy the requirement. |
|
|
| H31 | Retry or backoff package | No action | Retain the explicit WhisperX policy and provider-owned AWS retries. |
|
|
| H32 | UUID or ULID package | No action | Retain the existing readable cryptographically random run ID. |
|
|
| H33 | Generic subprocess framework | Superseded in part | The library audit retains the code internally now, requires local mechanism/policy separation, and makes external extraction conditional. See Platform modernization and L01. |
|
|
| H34 | `executePlan` | Immediate action | Decompose around invocation preparation, collaborator composition, one-stage transition, and finalization while keeping lock and persistence ordering explicit. See Runner lifecycle. |
|
|
| H35 | Shared planning/execution transition model | Immediate action | Introduce only the shared pure pre-execution decision and small identical transition helpers. See Runner lifecycle. |
|
|
| H36 | `analyzeStage.Run` | Superseded in part; immediate action | Contract Finding C03 removes invocation projections. Use a session-only execution accumulator or equivalent private state under the checkpointing model. See Analyze recovery. |
|
|
| H37 | `executeAnalyzeArtifact` | Immediate action | Split preparation, adapter invocation, validated materialization, and evidence construction under one transaction owner. See Analyze recovery. |
|
|
| H38 | `config/validate.go` | Superseded in part; immediate action | Split by semantic domain, but C06 removes exact validation order and full prose as compatibility requirements. See Configuration. |
|
|
| H39 | `validateScriptorium` | Immediate action | Separate declaration/output, dependency/input, and variable validation; retain deterministic semantics without promising diagnostic choreography. |
|
|
| H40 | `validateNotarius` | Immediate action | Separate reference binding from output-lane normalization and collision checks. |
|
|
| H41 | `validateAudita` | Immediate mechanical action | Move it with its adapter-validation domain but do not decompose the function. |
|
|
| H42 | Composition-envelope splitting | Immediate action | Separate shape decoding, cross-field semantics, and root metadata removal while preserving useful source-aware conflict diagnostics. |
|
|
| H43 | `previouscache.Resolve` | Superseded | C01 requires complete removal of legacy candidate probing rather than isolation. Simplify the remaining canonical path as part of the compatibility purge. |
|
|
| H44 | `stage/publish.go` | Immediate action | Decompose internal concerns while retaining one publish transaction; C05 controls the new lock and carry-forward semantics. See Remote publication. |
|
|
| H45 | `fileops/directory.go` | Immediate action | Delete directory promotion and replace it with validated same-workspace Notarius rename. See Filesystem. |
|
|
| H46 | Restore classification | Immediate correctness action | Classify leaf and ancestor symlinks as non-regular conflicts inside a root-scoped restore design. See Filesystem. |
|
|
| H47 | Manifest analyze-state validation | No action | Retain the cohesive state-model owner; only trivial clone cleanup is permitted when touched. |
|
|
| H48 | Preliminary priority order | Constraint | Use as dependency guidance for implementation planning; it creates no separate deliverable. |
|
|
|
|
## Pass 2 — Contract Simplification Audit
|
|
|
|
All identifiers in this table refer to findings of
|
|
[`contract-audit.md`](contract-audit.md). These approved decisions control any
|
|
conflicting recommendation from the first pass.
|
|
|
|
| ID | Subject | Final disposition | Destination |
|
|
| --- | --- | --- | --- |
|
|
| C01 | Deprecated compatibility | Immediate action | Purge all named legacy configuration, party/player, remote-state, previous-cache, extraction, analyze, and manifest compatibility paths. See Canonical contracts. |
|
|
| C02 | Structured run manifests | Immediate action | Eliminate the run-manifest schema and lifecycle; keep the session manifest as the sole local progress authority. See Manifest authority. |
|
|
| C03 | Analyze recovery | Immediate action | Checkpoint each successful artifact in dependency order, retain valid successes across later failure, and resume failed, stale, or missing work. See Analyze recovery. |
|
|
| C04 | Cleanup hidden inside publish | Immediate action | Add cleanup as the final idempotent pipeline stage and remove post-publish cleanup obligations. See Cleanup stage. |
|
|
| C05 | Shared mutable remote locks | Immediate action | Replace the central/static lock model with per-source remote lock objects and carry prior locked declarations into new commits. See Remote publication. |
|
|
| C06 | Configuration diagnostic contracts | Immediate action and constraint | Preserve strict deterministic semantics and useful source-aware errors while retiring exact validation order, wording, punctuation, formatting, and incidental provenance. See Configuration. |
|
|
|
|
The contract audit also records that the combined work remains eligible for a
|
|
minor release because the compatibility surfaces were already deprecated and
|
|
removable. Release execution is outside this refactoring roadmap.
|
|
|
|
## Pass 3 — Reusable Library Extraction Audit
|
|
|
|
Identifiers refer to [`library-audit.md`](library-audit.md). Candidate 5 is
|
|
expanded into its separately evaluated helper groups, and the audit's explicit
|
|
non-candidates are listed so the register is complete.
|
|
|
|
| ID | Candidate | Final disposition | Controlling decision and destination |
|
|
| --- | --- | --- | --- |
|
|
| L01 | Cross-platform subprocess supervision | Conditional extraction; immediate internal cleanup | Keep internal until a real second consumer, overlapping multi-platform contract, alternative review, clean API, and maintainer exist. Separate process mechanism from Narratio policy locally and remove unrelated file writers. See Platform modernization. |
|
|
| L02 | Hardened FileOps | Immediate simplification; no extraction | Follow `fileops.md`; version control preserves reusable algorithms without making Narratio consume rejected guarantees. |
|
|
| L03 | YAML composition and provenance | No extraction | Keep Narratio's configuration DSL internal. Dependency evaluation for low-level node mechanics is distinct and not required now. |
|
|
| L04 | Immutable remote commit protocol | No extraction | Keep the domain protocol internal; evaluate established content-addressed specifications only if interoperable cross-application snapshots become a real requirement. |
|
|
| L05a | Path-safety helpers | No extraction; opportunistic local action | Keep small and internal; use standard-library path primitives only where semantics match exactly. |
|
|
| L05b | Bounded I/O and streaming redaction | No extraction | Retain adapter limits, secret policy, and errors in Narratio. |
|
|
| L05c | Atomic file replacement | No extraction; immediate local action | Use the small local or established implementation selected under H29 and `fileops.md`. |
|
|
| L05d | Object-store ports, file locks, IDs, and DAG helpers | No extraction | Keep the narrow ports and domain algorithms internal. |
|
|
| L06 | Release automation | No action | Keep repository-local; reconsider a standalone tool or template only after materially identical scripts drift across repositories. |
|
|
| L07 | Artifact source and destination policy | No extraction | Domain ownership is the source of its value. |
|
|
| L08 | Manifest and durable state validation | No extraction | Keep state schemas and validation with Narratio. |
|
|
| L09 | Stage ordering, selection, invalidation, resume, and force | No extraction | Keep pipeline lifecycle semantics with Narratio. |
|
|
| L10 | Analyze checkpoint and dependency recovery | No extraction | Implement C03 as Narratio domain behavior. |
|
|
| L11 | Cleanup and remote lock policy | No extraction | Implement C04 and C05 as Narratio operational policy. |
|
|
| L12 | External tool and storage adapters | No extraction | Keep integration-specific requests, validation, and errors local. |
|
|
| L13 | Configuration validation, party resolution, and artifact-family expansion | No extraction | Keep product configuration rules internal. |
|
|
|
|
## Completeness and Routing Summary
|
|
|
|
Every audited hypothesis or candidate is represented above. Only entries marked
|
|
**Immediate action** or **Immediate opportunistic action** produce scope in
|
|
[`refactoring.md`](refactoring.md). Constraints govern that work without
|
|
creating independent implementation tasks. Superseded, conditional, deferred,
|
|
and no-action entries remain here for traceability and are intentionally absent
|
|
from the actionable roadmap except where a boundary must be stated to prevent
|
|
scope creep.
|
|
|
|
The consolidation adds no hypothesis or feature that was not identified by an
|
|
audit. A future implementation plan should derive its stages from
|
|
`refactoring.md`, use this register to verify completeness, and return to the
|
|
source audits only when it needs the supporting analysis behind a decision.
|