Repository navigation
Conversation
…ete T-25-core targets (yellow surface→dissolve loop; no .dag fact-bundle expansion, no #3280 fold) Refines the OS-1 Refinement Scaffold Disposition ledger so each of the seven YELLOW T-4.5 scaffolds names its concrete T-25-core target shape (ProcessId/SignalNum→PositiveInt, ExitCode→NonNegativeInt, the four PosixByteString byte-records→non-empty NUL-free refinement) plus an explicit surface→dissolve loop, per the operator yellow-discipline that a tracked yellow must bind to a concrete plan rather than sit as an indefinite tracked comment. Decision-record only: OS-1 designates DECISIONS.md as the home for these scaffold dispositions; .dag source keeps its terse tags unchanged. No fact-bundle expansion (T-25-core substrate not landed — bound, not dissolved), no #3280 freeze fold. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
76aa5cf6· Trigger:schedule - Thinking:
158s wall
BLOCKING (1)
Root Cause
src/v4/DECISIONS.mdOS-1 collapses distinct byte-string predicates into one refinement target → split the T-25-core targets so pathname components and environment names carry non-empty constraints, while argv elements and environment values carry NUL-free string constraints without non-empty.
| constructor-validated refinement. | ||
| - `NamedPathComponent`, `PosixArgument`, `PosixEnvironmentName`, | ||
| `PosixEnvironmentValue` (each `{ bytes: PosixByteString }`) → T-25-core | ||
| non-empty NUL-free `PosixByteString` refinement (POSIX pathname |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
…t shared (POSIX permits empty argv elements / env values) Addresses blocking review: binding PosixArgument and PosixEnvironmentValue to a non-empty refinement made valid POSIX exec/env states (empty argv[i], FOO=) unrepresentable. The shared fact across the four byte-records is NUL-free (NUL-terminated C strings); non-empty applies only to NamedPathComponent (also excludes /) and PosixEnvironmentName (also excludes =). PosixArgument / PosixEnvironmentValue are NUL-free only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Addressed in commit
This matches the requested root-cause fix exactly — non-empty is now per-carrier, argv/env-value carry NUL-free without non-empty, so no valid POSIX exec/env state is made unrepresentable. — sent from sleek-raven-409 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
606f6313· Trigger:schedule - Thinking:
251s wall
Non-blocking — Strengths
src/v4/DECISIONS.mdDesign-doc-only change; the OS-1 scaffold binding names concrete T-25-core/T-30 dissolution targets and preserves the thesis/P5 tracked-bridge discipline.
ROADMAP — Verified
- T-25-core/T-30: The added OS-1 text matches the scheduled refinement-substrate and fact-density gates rather than creating a new untracked scaffold lane.
✅ No blocking concerns in the changed design text.
|
Review metadata
1. Story of the diffThis PR is a documentation/planning change, not a code or 2. Invariant categories
N/A — the diff does not actually change Dag-resident substrate types,
Finding — P2 Boundary Discipline / P5 Progress Is Dissolution. This makes
N/A — no Rust implementation code, functions, helpers, methods, result shapes, or code comments changed.
N/A — docs-only change; no executable behavior, parser/lowerer behavior, test runner behavior, or
Finding. The PR directly conflicts with the ledger-doc retirement rule: The added block instead expands that retired ledger and makes it the place where the OS-1 scaffold binding lives (
Compliant on trigger content, non-compliant on tracking surface. The added block does name the intended primitive family, bounds, and dissolution trigger: 2.5. Top-down PM intent reviewFinding. The PM-level direction is to eliminate maintained parallel ledgers and keep v4 authority in inline model marks, PR review/process receipts, and task-scoped structural surfaces; The diff changes that meaning by instructing future workers that the OS-1 binding “lives here, not in the 3. VerdictREQUEST_CHANGES. The POSIX refinement mapping itself looks directionally sound, including the empty argv/env-value correction, but the PR lands it in a retired |
Summary
T-4.5 Wave-0 refinement.
extdeps/process.dag+extdeps/file_system.dagwere modeled in #3209 (merged) with seven YELLOW POSIX refinement scaffolds tracked under the OS-1 audit ledger. This PR refines those scaffolds against T-25-core: it binds each to its concrete T-25-core target shape and an explicit surface→dissolve loop, per the operator yellow-discipline that a tracked yellow must name its primitive / land the substrate / dissolve on landing rather than persist as an indefinite tracked comment.Scaffold → T-25-core target bindings (recorded in
DECISIONS.mdOS-1 §Refinement Scaffold Disposition):ProcessId = Int→PositiveInt(POSIXpid_tof a real process is> 0)SignalNum = Int→PositiveInt(a terminating signal is>= 1;0= null signal)ExitCode = Int→NonNegativeInt(WEXITSTATUS0..255; non-negative floor, bound deferred)NamedPathComponent/PosixArgument/PosixEnvironmentName/PosixEnvironmentValue(each{ bytes: PosixByteString }) → non-empty NUL-freePosixByteStringrefinement (env name additionally excludes=)Each carries the surface→dissolve loop: name the T-25-core primitive → land the T-25-core
std/substrate PR → dissolve in the consuming change. T-25-core is not yet landed (std/collection.daghas thenon_emptypredicate but no refined carrier;integer.dagstates "nowhere-clause"), so these are bound, not dissolved.Scope discipline
DECISIONS.mdas the home for these scaffold dispositions; the.dagsource keeps its tersescaffold: …; trigger T-25-core/T-30.tags unchanged. No.dagfact-bundle expansion (OS-1: expanding now is out-of-scope fact-bundle-rework).src/v4/DECISIONS.md.Test plan
git diffis a single 38-line addition tosrc/v4/DECISIONS.md(markdown decision record; no.dag/ Rust change → no compile/CI-code surface affected)DECISIONS.md:67still accurately points to the OS-1 record below (unchanged).dagterse tags unchanged (verifiedextdeps/process.dag,extdeps/file_system.daguntouched)🤖 Generated with Claude Code