Skip to content

CR-DD-012A: Implement governed decision foundation#107

Merged
coreytshaffer merged 1 commit into
mainfrom
codex/cr-dd-012a-governed-decision-foundation-implementation
Jul 24, 2026
Merged

CR-DD-012A: Implement governed decision foundation#107
coreytshaffer merged 1 commit into
mainfrom
codex/cr-dd-012a-governed-decision-foundation-implementation

Conversation

@coreytshaffer

Copy link
Copy Markdown
Owner

Status

Internal foundation only. CR-DD-012A adds no public integration or execution authority.

CR-DD-012B remains blocked. This PR does not authorize or implement shared
preview/execution consumption, saved-plan execution, or any new operator
capability.

What changed

  • Added an immutable, bounded GovernedRunInputSnapshot foundation.
  • Preserved current strict UTF-8, universal-newline, BOM, source-order,
    duplicate-source, verbatim path-header, inline-input, and absent-input
    semantics.
  • Made AssembledExecutionBytes—the UTF-8 bytes of
    prompt + "\n\nDATA:\n" + data—the authoritative future parity binding.
  • Added mandatory finite construction limits without creating a public CLI
    input limit or converting advisory token budgets into byte limits.
  • Added an immutable, privacy-safe GovernedDecision with closed schemas,
    canonical JSON, strict parsing, domain-separated identity, and explicit
    authority boundaries.
  • Added focused compatibility, privacy, purity, malformed-input, and
    integration-absence tests.
  • Updated only the bounded CR, backlog, architecture, and sequencing records.

Decision IDs are linkage only. They do not establish authenticity, approval,
execution authority, cloud authorization, acceptance, or quality.

Exact scope

Exactly nine authorized files:

  • triage_core/governed_run_snapshot.py
  • triage_core/governed_decision.py
  • tests/test_governed_run_snapshot.py
  • tests/test_governed_decision.py
  • tests/test_governed_decision_integration_absence.py
  • docs/change/requests/CR-DD-012A-governed-decision-foundation.md
  • docs/current_backlog.md
  • docs/architecture/daily_driver_orchestrator_spec.md
  • docs/change/requests/CR-DD-012-shared-governed-run-decision.md

No CLI, existing runtime path, ledger, artifact contract, router, worker,
backend, renderer, cloud-authority, or plan-schema integration changed. No
existing production module imports either new foundation module.

Validation

  • Focused CR-DD-012A suite: 103 passed
  • Full suite: 1,167 passed, 4 skipped
  • Privacy-invariant audit: 698 records passed
  • Both foundation modules passed py_compile
  • git diff --check: passed
  • Remote comparison against main: one commit ahead, zero behind, exactly nine
    files
  • Existing ledger SHA-256: unchanged
  • Artifact files: unchanged

The full suite appended one metadata-only supervisor usage scan line to the
existing ignored .triagecore/triagecore.log. The line was preserved; no
cleanup or history rewrite was performed.

Explicitly absent

  • No integration with ordinary tc run or tc run --plan
  • No governed_run_plan.v2
  • No snapshot or decision persistence
  • No ledger fields or runtime-observation records
  • No backend invocation, health probe, route execution, or fallback enforcement
  • No cloud authorization change
  • No --confirmed-plan or saved-plan execution
  • No CR-DD-012B implementation authority

Final review gate

  • Snapshot bytes exactly match current worker-message assembly semantics.
  • Finite construction limits fail closed without becoming a public CLI
    limit.
  • Frozen records and tuples retain no caller-owned mutable aliases.
  • Canonical parsing rejects duplicate keys, floats, unknown/missing fields,
    unsupported versions, malformed digests, noncanonical bytes, and ID
    mismatches.
  • Serialized decisions contain no prompts, inline data, source content,
    source paths or basenames, sensitive markers, credentials, or secrets.
  • Ordered sources, fallbacks, and verification requirements preserve order
    and duplicates.
  • Decision IDs remain content linkage only.
  • The decision builder has no ambient or volatile dependencies.
  • No existing production module imports or consumes the foundation.
  • The diff remains limited to the exact nine-file allowlist.

@coreytshaffer
coreytshaffer marked this pull request as ready for review July 24, 2026 23:04
@coreytshaffer
coreytshaffer merged commit bccaaad into main Jul 24, 2026
3 checks passed
coreytshaffer added a commit that referenced this pull request Jul 26, 2026
* docs: propose observed local capability binding

Add CR-DD-013, the first M1 slice: bind the existing validated
local_backend_probe_record.v1 observation into ResilienceRouteInput so route
selection stops asserting local availability it has never checked.

The proposal specifies one additive validated capability-evidence field on
ResilienceRouteInput, shaped as a discriminated union of ObservedAvailable,
ObservedUnavailable, Configured, and Unknown, each with its own required and
forbidden fields, built as a validated projection of the probe record rather
than an embedding of it. Unknown is never promoted to availability and the
tc run construction path may not synthesize True from it. Observed failure is
conclusive for dependent routes; a single reachability result may not assert
both local_fast and local_heavy. Ordinary backend configuration does not
qualify as a capability declaration. Evidence uses the existing open
route_decision payload extension point; no new ledger schema.

Also re-pin the daily-driver spec to current main, correct CR-DD-012A from
"merge is pending" to merged through PR #107 as bccaaad, and rewrite G4/M1 to
record that observation already exists via tc probe and the missing slice is
binding it.

CR-DD-012B is unchanged and retains its CR-YK-002 gate. Documentation only; no
runtime implementation and no implementation authority granted. Readiness
percentages are unchanged and remain planning estimates.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs: record daily-driver DOCX mirror drift

No reproducible generation path for TriageCore_DailyDriver_Spec.docx exists in
the repository, so it was not regenerated alongside the re-pin and was left
unmodified rather than hand-edited. Record the drift and the bounded follow-up
explicitly, and state that the markdown remains authoritative where the two
disagree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs: fix acceptance-criteria numbering in CR-DD-013

The 6a./6b. entries were not valid ordered-list markers, so GitHub absorbed
them into item 6 as literal text and rendered 13 items instead of 15. Renumber
to a flat 1-15 sequence. Verified against the GitHub Markdown API: 15 list
items, no literal 6a./6b. leak.

No content change beyond the numbering.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant