Fail-loud audit: defaults/fallbacks that make absence indistinguishable from presence #1156

Closed
opened 2026-08-11 22:01:30 +00:00 by shaggy · 1 comment
Collaborator

Cross-cutting audit, approved as its own item (Task-18 packet item 0). Defect class: a default or fallback makes absence indistinguishable from presence, and the symptom surfaces far from the cause. Known instances: #1145 (defaulted ctor param satisfies missing DI token), the /mcp @Optional() null masking a module-wiring gap (fixed in #1154 but the pattern remains legal), routing unconditional last-resort (R2), P3 free-text provider/model fields.

Rule to enforce: a fallback is legitimate only where the thing it replaces is genuinely optional. Required wiring, authority, and catalog resolution must fail at startup or at the selection boundary, with a typed cause. Per Jason's ruling (binding): the Gateway must forbid silent cross-provider/harness substitution; unavailable path returns a typed no-viable-provider; recovery requires intentional user choice.

Boundary (agreed): this is an audit category, necessary but NOT sufficient — it does not replace the registry-authority or native-session architectural items.

Cross-cutting audit, approved as its own item (Task-18 packet item 0). Defect class: **a default or fallback makes absence indistinguishable from presence, and the symptom surfaces far from the cause.** Known instances: #1145 (defaulted ctor param satisfies missing DI token), the `/mcp` `@Optional()` null masking a module-wiring gap (fixed in #1154 but the pattern remains legal), routing unconditional last-resort (R2), P3 free-text provider/model fields. Rule to enforce: a fallback is legitimate only where the thing it replaces is genuinely optional. Required wiring, authority, and catalog resolution must fail at startup or at the selection boundary, with a typed cause. Per Jason's ruling (binding): the Gateway must forbid silent cross-provider/harness substitution; unavailable path returns a typed no-viable-provider; recovery requires intentional user choice. Boundary (agreed): this is an audit category, necessary but NOT sufficient — it does not replace the registry-authority or native-session architectural items.

Audit complete — remediation split

The current-next source audit and independent adjudication are durable at:

  • jarvis-brain@f474fd8469b92e8c296f89776e678adbb2cdcd4a
  • docs/reports/mos-dev-prototype/2026-08-13/stack-1156-fail-loud-audit.md

Children:

  • #1179 — required CommandAuthorization/SystemOverride DI (security-critical; scheduled first)
  • #1180 — Web selection persistence/read truth
  • #1181 — exact supplied legacy provider/agent/model selection and /model retirement
  • #1182 — invalid runtime/tier plus launcher completion/provenance (explicit W-F1 gate)

Fred's Task-18 governance ruling: #1156 is the audit category and closes now that the report and children are durable. #1182 must merge and its exact SHA be recorded before W-F1 authoring. All four children bind before native stage. If a child grows beyond its bounded domain, split it rather than widen.

Closure means audit inventory/triage is complete. It does not claim any child remediation, registry authority, durable selection, native session, or browser-chat completion.

## Audit complete — remediation split The current-`next` source audit and independent adjudication are durable at: - `jarvis-brain@f474fd8469b92e8c296f89776e678adbb2cdcd4a` - `docs/reports/mos-dev-prototype/2026-08-13/stack-1156-fail-loud-audit.md` Children: - #1179 — required CommandAuthorization/SystemOverride DI (**security-critical; scheduled first**) - #1180 — Web selection persistence/read truth - #1181 — exact supplied legacy provider/agent/model selection and `/model` retirement - #1182 — invalid runtime/tier plus launcher completion/provenance (**explicit W-F1 gate**) Fred's Task-18 governance ruling: #1156 is the audit category and closes now that the report and children are durable. #1182 must merge and its exact SHA be recorded before W-F1 authoring. All four children bind before native stage. If a child grows beyond its bounded domain, split it rather than widen. Closure means audit inventory/triage is complete. It does not claim any child remediation, registry authority, durable selection, native session, or browser-chat completion.
Ghost closed this issue 2026-08-13 00:36:21 +00:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1156