@tiphys/kernel 0.0.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +663 -0
- package/LICENSE +202 -0
- package/assurance-modes.yaml +299 -0
- package/checklists/clean-room.yaml +325 -0
- package/checklists/env-failure-diagnosis.yaml +68 -0
- package/checklists/flake-playbook.yaml +68 -0
- package/checklists/hazard-review.yaml +144 -0
- package/checklists/plan-review.yaml +103 -0
- package/dist/bin/tiphys.d.ts +2 -0
- package/dist/bin/tiphys.js +92 -0
- package/dist/src/adapters/load.d.ts +202 -0
- package/dist/src/adapters/load.js +440 -0
- package/dist/src/brief.d.ts +32 -0
- package/dist/src/brief.js +66 -0
- package/dist/src/checklists.d.ts +169 -0
- package/dist/src/checklists.js +310 -0
- package/dist/src/checks.d.ts +1539 -0
- package/dist/src/checks.js +5025 -0
- package/dist/src/cli.d.ts +9 -0
- package/dist/src/cli.js +68 -0
- package/dist/src/commands/brief.d.ts +92 -0
- package/dist/src/commands/brief.js +343 -0
- package/dist/src/commands/checklist.d.ts +42 -0
- package/dist/src/commands/checklist.js +168 -0
- package/dist/src/commands/cutover.d.ts +35 -0
- package/dist/src/commands/cutover.js +448 -0
- package/dist/src/commands/doctor.d.ts +264 -0
- package/dist/src/commands/doctor.js +1546 -0
- package/dist/src/commands/gates.d.ts +9 -0
- package/dist/src/commands/gates.js +360 -0
- package/dist/src/commands/init.d.ts +30 -0
- package/dist/src/commands/init.js +177 -0
- package/dist/src/commands/lock.d.ts +34 -0
- package/dist/src/commands/lock.js +340 -0
- package/dist/src/commands/mode.d.ts +40 -0
- package/dist/src/commands/mode.js +134 -0
- package/dist/src/commands/next.d.ts +130 -0
- package/dist/src/commands/next.js +597 -0
- package/dist/src/commands/plan.d.ts +20 -0
- package/dist/src/commands/plan.js +105 -0
- package/dist/src/commands/pool.d.ts +1 -0
- package/dist/src/commands/pool.js +139 -0
- package/dist/src/commands/resume.d.ts +1 -0
- package/dist/src/commands/resume.js +88 -0
- package/dist/src/commands/spawn.d.ts +1 -0
- package/dist/src/commands/spawn.js +195 -0
- package/dist/src/commands/status.d.ts +21 -0
- package/dist/src/commands/status.js +122 -0
- package/dist/src/commands/sync.d.ts +47 -0
- package/dist/src/commands/sync.js +341 -0
- package/dist/src/commands/teardown.d.ts +1 -0
- package/dist/src/commands/teardown.js +87 -0
- package/dist/src/commands/tuition.d.ts +21 -0
- package/dist/src/commands/tuition.js +218 -0
- package/dist/src/commands/validate.d.ts +78 -0
- package/dist/src/commands/validate.js +430 -0
- package/dist/src/commands/watch.d.ts +1 -0
- package/dist/src/commands/watch.js +172 -0
- package/dist/src/cutover.d.ts +584 -0
- package/dist/src/cutover.js +1444 -0
- package/dist/src/exclusion.d.ts +389 -0
- package/dist/src/exclusion.js +843 -0
- package/dist/src/exec/env.d.ts +278 -0
- package/dist/src/exec/env.js +334 -0
- package/dist/src/fleet.d.ts +223 -0
- package/dist/src/fleet.js +298 -0
- package/dist/src/gates/adapters/http-json.d.ts +5 -0
- package/dist/src/gates/adapters/http-json.js +283 -0
- package/dist/src/gates/adapters/migrations-command.d.ts +1 -0
- package/dist/src/gates/adapters/migrations-command.js +373 -0
- package/dist/src/gates/citations.d.ts +408 -0
- package/dist/src/gates/citations.js +1169 -0
- package/dist/src/gates/coverage.d.ts +375 -0
- package/dist/src/gates/coverage.js +836 -0
- package/dist/src/gates/credentials.d.ts +233 -0
- package/dist/src/gates/credentials.js +752 -0
- package/dist/src/gates/deploy.d.ts +1 -0
- package/dist/src/gates/deploy.js +33 -0
- package/dist/src/gates/gate-classes.d.ts +56 -0
- package/dist/src/gates/gate-classes.js +633 -0
- package/dist/src/gates/manifest.d.ts +99 -0
- package/dist/src/gates/manifest.js +208 -0
- package/dist/src/gates/merge-preconditions.d.ts +319 -0
- package/dist/src/gates/merge-preconditions.js +932 -0
- package/dist/src/gates/migrations.d.ts +1 -0
- package/dist/src/gates/migrations.js +36 -0
- package/dist/src/gates/pin.d.ts +114 -0
- package/dist/src/gates/pin.js +154 -0
- package/dist/src/gates/red-witness.d.ts +22 -0
- package/dist/src/gates/red-witness.js +482 -0
- package/dist/src/gates/release.d.ts +283 -0
- package/dist/src/gates/release.js +820 -0
- package/dist/src/gates/result.d.ts +116 -0
- package/dist/src/gates/result.js +91 -0
- package/dist/src/gates/run.d.ts +614 -0
- package/dist/src/gates/run.js +1614 -0
- package/dist/src/gates/schemas/citation-config.schema.json +59 -0
- package/dist/src/gates/schemas/coverage-config.schema.json +77 -0
- package/dist/src/gates/schemas/gate-manifest.schema.json +125 -0
- package/dist/src/gates/schemas/gate-result.schema.json +160 -0
- package/dist/src/gates/schemas/phase-declaration.schema.json +87 -0
- package/dist/src/gates/schemas/release-record.schema.json +119 -0
- package/dist/src/gates/schemas/verifier-config.schema.json +101 -0
- package/dist/src/gates/schemas/witness-spec.schema.json +110 -0
- package/dist/src/gates/scope.d.ts +131 -0
- package/dist/src/gates/scope.js +1018 -0
- package/dist/src/gates/suite.d.ts +217 -0
- package/dist/src/gates/suite.js +968 -0
- package/dist/src/gates/validate.d.ts +121 -0
- package/dist/src/gates/validate.js +414 -0
- package/dist/src/hooks.d.ts +84 -0
- package/dist/src/hooks.js +125 -0
- package/dist/src/index.d.ts +31 -0
- package/dist/src/index.js +30 -0
- package/dist/src/liveness.d.ts +321 -0
- package/dist/src/liveness.js +396 -0
- package/dist/src/lock.d.ts +256 -0
- package/dist/src/lock.js +792 -0
- package/dist/src/model-resolution.d.ts +159 -0
- package/dist/src/model-resolution.js +307 -0
- package/dist/src/modes.d.ts +149 -0
- package/dist/src/modes.js +258 -0
- package/dist/src/path-identity.d.ts +34 -0
- package/dist/src/path-identity.js +48 -0
- package/dist/src/plan.d.ts +73 -0
- package/dist/src/plan.js +153 -0
- package/dist/src/pool.d.ts +326 -0
- package/dist/src/pool.js +988 -0
- package/dist/src/roles.d.ts +461 -0
- package/dist/src/roles.js +776 -0
- package/dist/src/spawn.d.ts +482 -0
- package/dist/src/spawn.js +1003 -0
- package/dist/src/status.d.ts +116 -0
- package/dist/src/status.js +148 -0
- package/dist/src/task.d.ts +504 -0
- package/dist/src/task.js +307 -0
- package/dist/src/teardown.d.ts +39 -0
- package/dist/src/teardown.js +422 -0
- package/dist/src/tuition.d.ts +159 -0
- package/dist/src/tuition.js +311 -0
- package/dist/src/validate.d.ts +263 -0
- package/dist/src/validate.js +742 -0
- package/dist/src/version.d.ts +3 -0
- package/dist/src/version.js +38 -0
- package/dist/src/watcher.d.ts +275 -0
- package/dist/src/watcher.js +849 -0
- package/dist/src/witness/run.d.ts +299 -0
- package/dist/src/witness/run.js +1373 -0
- package/dist/src/witness/spec.d.ts +270 -0
- package/dist/src/witness/spec.js +475 -0
- package/dist/tsconfig.src.tsbuildinfo +1 -0
- package/gate-registry.yaml +526 -0
- package/gates.manifest.json +257 -0
- package/package.json +72 -3
- package/role-model-config.yaml +88 -0
- package/roles/README.md +128 -0
- package/roles/_shared-dispatch-contract.md +87 -0
- package/roles/adversarial-plan-reviewer.md +80 -0
- package/roles/clean-room-reviewer.md +140 -0
- package/roles/implementer.md +463 -0
- package/roles/investigator.md +138 -0
- package/roles/plan-writer.md +95 -0
- package/schemas/README.md +82 -0
- package/schemas/assurance-modes.schema.json +264 -0
- package/schemas/charter.schema.json +185 -0
- package/schemas/checklist.schema.json +114 -0
- package/schemas/cutover-state.schema.json +64 -0
- package/schemas/decision-record.schema.json +88 -0
- package/schemas/executor-record.schema.json +36 -0
- package/schemas/final-report.schema.json +90 -0
- package/schemas/finding.schema.json +106 -0
- package/schemas/gate-registry.schema.json +260 -0
- package/schemas/mechanism-index.schema.json +94 -0
- package/schemas/model-resolution.schema.json +362 -0
- package/schemas/plan.schema.json +300 -0
- package/schemas/report.schema.json +579 -0
- package/schemas/role-brief.schema.json +105 -0
- package/schemas/role-model-config.schema.json +90 -0
- package/schemas/status-line.schema.json +40 -0
- package/schemas/tuition.schema.json +191 -0
- package/schemas/verdict.schema.json +295 -0
- package/schemas/work-history.schema.json +183 -0
- package/schemas/write-bypass.schema.json +69 -0
- package/templates/charter.example.yaml +54 -0
- package/templates/decision-record.example.yaml +27 -0
- package/templates/final-report.example.yaml +80 -0
- package/templates/plan.example.yaml +87 -0
- package/templates/report.example.yaml +236 -0
- package/templates/warnings.md +74 -0
- package/templates/work-history.example.yaml +185 -0
- package/tuition/README.md +76 -0
- package/tuition/T-001.yaml +48 -0
- package/tuition/T-002.yaml +51 -0
- package/tuition/T-003.yaml +100 -0
- package/tuition/T-004.yaml +52 -0
- package/tuition/T-005.yaml +72 -0
- package/tuition/T-006.yaml +81 -0
- package/tuition/T-007.yaml +56 -0
- package/tuition/T-008.yaml +111 -0
- package/tuition/T-009.yaml +50 -0
- package/tuition/T-015.yaml +36 -0
- package/tuition/T-016.yaml +36 -0
- package/tuition/T-017.yaml +46 -0
- package/tuition/T-018.yaml +84 -0
- package/tuition/T-021.yaml +40 -0
- package/tuition/T-022.yaml +36 -0
- package/tuition/mechanism-index.yaml +256 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# THE MECHANISM INDEX (kernel plan M3; T-005, D-M3-23).
|
|
2
|
+
#
|
|
3
|
+
# GENERATED BY `tiphys tuition index`. DO NOT EDIT THIS FILE. It is a
|
|
4
|
+
# PROJECTION of the `mechanisms[]` field of every entry in the tuition feed
|
|
5
|
+
# beside it, so a rule is recorded once, in the entry that paid for it, and
|
|
6
|
+
# read from here. `tiphys tuition index --check` compares this file against a
|
|
7
|
+
# fresh projection and exits nonzero on any drift, which is what stops the two
|
|
8
|
+
# from becoming two sources.
|
|
9
|
+
#
|
|
10
|
+
# READ THE ROW BEFORE YOU USE THE MECHANISM. Every rule here was paid for with
|
|
11
|
+
# a defect, a fix round, or an investigation, which is why `evidence` is a
|
|
12
|
+
# required field with at least one entry: a rule with no citation is not a
|
|
13
|
+
# rule.
|
|
14
|
+
#
|
|
15
|
+
# WHY THIS FILE EXISTS AT ALL. T-005 records a rule M1-P3 paid for in a
|
|
16
|
+
# multi-hour investigation that did not reach M1-P5, which reimplemented the
|
|
17
|
+
# same claim-file mechanism silently and produced the most severe defect found
|
|
18
|
+
# in that milestone. The implementer there had read the plan, the agent-rules
|
|
19
|
+
# file, the constraint list, the accumulated environment warnings and three
|
|
20
|
+
# work histories. None of them carried the rule, because a rule about a
|
|
21
|
+
# MECHANISM has no home in a set of documents organised by phase. This is that
|
|
22
|
+
# home, and the obligation to consult it is the `mechanism-lookup` clause in
|
|
23
|
+
# roles/implementer.md.
|
|
24
|
+
#
|
|
25
|
+
# `key` IS DERIVED FROM `name`, NOT INVENTED: lowercase, every run of
|
|
26
|
+
# characters outside [a-z0-9] collapsed to one hyphen, ends trimmed.
|
|
27
|
+
|
|
28
|
+
kind: mechanism-index
|
|
29
|
+
version: 1
|
|
30
|
+
|
|
31
|
+
mechanisms:
|
|
32
|
+
- key: a-guard-s-own-failure-path
|
|
33
|
+
name: A guard's own failure path
|
|
34
|
+
rule: >-
|
|
35
|
+
A guard whose correctness depends on a crash is not a guard. Make the
|
|
36
|
+
success path total, so removing the explicit failure is visible.
|
|
37
|
+
siblings:
|
|
38
|
+
- test/exit-test-local.test.ts
|
|
39
|
+
evidence:
|
|
40
|
+
- M1-P6 fix round 2, the D3 defang the implementer caught in its own fix
|
|
41
|
+
|
|
42
|
+
- key: append-only-log
|
|
43
|
+
name: Append-only log
|
|
44
|
+
rule: >-
|
|
45
|
+
Never read current state from the tail of a log (constraint C-1).
|
|
46
|
+
Currency comes from `meta.json` and turn-end files only.
|
|
47
|
+
siblings:
|
|
48
|
+
- src/task.ts
|
|
49
|
+
evidence:
|
|
50
|
+
- plan v1 section 3, C-1 (FM-052)
|
|
51
|
+
|
|
52
|
+
- key: asserting-a-ci-step-is-wired
|
|
53
|
+
name: Asserting a CI step is wired
|
|
54
|
+
rule: >-
|
|
55
|
+
Assert BEHAVIOUR, not text. A text assertion catches deletion and misses
|
|
56
|
+
defanging. Extract the step and execute it against stubs. A witness for
|
|
57
|
+
a class must redden under at least two structurally different members.
|
|
58
|
+
siblings:
|
|
59
|
+
- test/exit-test-local.test.ts
|
|
60
|
+
- test/m2-exit-test.test.ts
|
|
61
|
+
- test/implementer-brief.test.ts
|
|
62
|
+
evidence:
|
|
63
|
+
- CR-640, CR-661, CR-681
|
|
64
|
+
- delivery/verification/cr-661-orchestrator-reproduction.md
|
|
65
|
+
|
|
66
|
+
- key: atomic-file-replacement
|
|
67
|
+
name: Atomic file replacement
|
|
68
|
+
rule: >-
|
|
69
|
+
Stage under a name no other pass can collide with. A fixed
|
|
70
|
+
`${path}.stage` lets two concurrent passes share one temporary; the
|
|
71
|
+
loser dies on ENOENT after advancing its seen state, dropping a signal
|
|
72
|
+
in a protocol whose rule is duplicate-rather-than-drop.
|
|
73
|
+
siblings:
|
|
74
|
+
- src/lock.ts
|
|
75
|
+
- src/watch.ts
|
|
76
|
+
evidence:
|
|
77
|
+
- M1-P5 round 4, verified pre-existing against a pristine build
|
|
78
|
+
|
|
79
|
+
- key: checking-a-generated-artifact-against-its-own-generator
|
|
80
|
+
name: Checking a generated artifact against its own generator
|
|
81
|
+
rule: >-
|
|
82
|
+
A check that renders an artifact and then compares the artifact to that
|
|
83
|
+
rendering can only see drift BETWEEN the two, so any narrowing INSIDE
|
|
84
|
+
the loop is a fixed point of it and is silent. Three seats can choose
|
|
85
|
+
what gets compared and all three have now been occupied by a real
|
|
86
|
+
finding: the MODE, when it is read out of the artifact being audited;
|
|
87
|
+
the UNIT COUNT, when the generator computes it; and the SELECTION,
|
|
88
|
+
inside the generator itself. Two rules follow. A CHECK WHOSE SUBJECT IS
|
|
89
|
+
SELECTED BY A VALUE READ FROM THE ARTIFACT IT AUDITS CAN BE SILENTLY
|
|
90
|
+
NARROWED BY EDITING THAT ARTIFACT, so pin the subject OUTSIDE the
|
|
91
|
+
artifact and refuse a disagreement in every mode, `--write` included,
|
|
92
|
+
because `--write` is the command that launders a narrowing into the
|
|
93
|
+
shipped bytes. And A UNIT COUNT THAT DOES NOT MEASURE WHAT WAS COMPARED
|
|
94
|
+
CANNOT MAKE THE VACUITY GUARD FIRE, so count the rows actually compared
|
|
95
|
+
and never add a mode-independent term, which gives the count a floor it
|
|
96
|
+
can never fall below. Closing the third seat needs a SECOND, INDEPENDENT
|
|
97
|
+
statement of what the artifact must contain, derived from the AUTHORITY
|
|
98
|
+
and never routed through the generator; nothing that calls the generator
|
|
99
|
+
can close it. Make that statement SET EQUALITY AND FIELD PRESENCE, not
|
|
100
|
+
containment: dropping rows and dropping a column from rows that all
|
|
101
|
+
survive are structurally different members, and each is invisible to the
|
|
102
|
+
assertion that catches the other. State it in two places that fail
|
|
103
|
+
independently, and derive per item at run time rather than pinning a
|
|
104
|
+
count, because these registries are append-only.
|
|
105
|
+
siblings:
|
|
106
|
+
- scripts/check-brief-drift.mjs
|
|
107
|
+
- scripts/render-agent-rules-gates.mjs
|
|
108
|
+
- src/roles.ts
|
|
109
|
+
- test/implementer-brief.test.ts
|
|
110
|
+
evidence:
|
|
111
|
+
- CV-1 and contract A finding 3 in delivery/review/clean-room-m3-p6-criteria.md, two clean-room contracts reaching the mode seat from different directions on one head
|
|
112
|
+
- DV-1 in delivery/review/verification-m3-p6-fix-round.md, the selection seat, silent to the whole suite and to every gate in the PR bundle
|
|
113
|
+
- "M3-P6 fix round 2 measured `scripts/render-agent-rules-gates.mjs` carrying the same defect UNFIXED: its rowCount is registry-derived, so the check reports 15 gates over a CLAUDE.md block holding 13, with the suite green"
|
|
114
|
+
|
|
115
|
+
- key: claim-file-mutual-exclusion-by-o-excl
|
|
116
|
+
name: Claim file (mutual exclusion by O_EXCL)
|
|
117
|
+
rule: >-
|
|
118
|
+
A claim that cannot be taken must fail LOUDLY and name the stuck file. A
|
|
119
|
+
silent timeout is indistinguishable from an absence of contention. There
|
|
120
|
+
are now THREE claim-file users (the lock, the watcher seen-state, and
|
|
121
|
+
M2-P1's evidence-directory run claim); the next one reads `src/lock.ts`
|
|
122
|
+
first, and the M2-P1 instance is the worked example of doing that and
|
|
123
|
+
stating the one difference (no expiry, because an evidence directory
|
|
124
|
+
must not have a lease that lapses).
|
|
125
|
+
siblings:
|
|
126
|
+
- src/lock.ts
|
|
127
|
+
- src/watch.ts
|
|
128
|
+
- src/gates/run.ts
|
|
129
|
+
evidence:
|
|
130
|
+
- delivery/verification/u2-race-flake-investigation.md D-3
|
|
131
|
+
- delivery/tuition/T-005, the silent reimplementation two phases later that became M1's most severe defect
|
|
132
|
+
|
|
133
|
+
- key: classifying-another-program-s-errors
|
|
134
|
+
name: Classifying another program's errors
|
|
135
|
+
rule: >-
|
|
136
|
+
Derive the signature from REAL captured output under forced conditions,
|
|
137
|
+
never from hand-written examples chosen to match the implementation. 312
|
|
138
|
+
captured contention failures, every one of the dropped shape.
|
|
139
|
+
siblings:
|
|
140
|
+
- src/pool.ts
|
|
141
|
+
evidence:
|
|
142
|
+
- V-2 in delivery/review/verification-m1-p3-fix-round.md
|
|
143
|
+
- CLAUDE.md environment warning 10
|
|
144
|
+
|
|
145
|
+
- key: deciding-what-another-program-will-do-by-pattern-matching-the-text-of-a-file-it-consumes
|
|
146
|
+
name: Deciding what another program will do by pattern-matching the text of a file it consumes
|
|
147
|
+
rule: >-
|
|
148
|
+
A regex over a file and the consuming program's evaluation of that file
|
|
149
|
+
are DIFFERENT FUNCTIONS, so every finding is another input where they
|
|
150
|
+
differ, and rounds close instances forever. Three tiers instead, each
|
|
151
|
+
labelled by what enforces it: execute the extractable part against
|
|
152
|
+
stubs; PIN the accepted shapes and fail closed on anything else, never
|
|
153
|
+
widen the pattern; and where a denylist is unavoidable, DERIVE it by
|
|
154
|
+
walking the consuming program's closed documented vocabulary once,
|
|
155
|
+
publishing the walk. Name what remains unguarded rather than chasing it.
|
|
156
|
+
siblings:
|
|
157
|
+
- test/exit-test-local.test.ts
|
|
158
|
+
- test/m2-exit-test.test.ts
|
|
159
|
+
evidence:
|
|
160
|
+
- Four M1-P6 rounds, CR-640, CR-661, CR-681, CR-720 to CR-725
|
|
161
|
+
- the derived walk found two members no reviewer had named (`working-directory`, a custom `shell` template)
|
|
162
|
+
- "the widen-the-regex approach produced a guard that both missed real defangs and rejected `needs: [test, lint]`, an edit that STRENGTHENS the guarded property"
|
|
163
|
+
|
|
164
|
+
- key: lease-compare-and-swap
|
|
165
|
+
name: Lease compare-and-swap
|
|
166
|
+
rule: >-
|
|
167
|
+
Liveness is lease freshness, never pid, process probing or signals
|
|
168
|
+
(constraint C-2). Expiry does not block a release, but it DOES block a
|
|
169
|
+
renew and it DOES block teardown's holdership check, which fails closed.
|
|
170
|
+
siblings:
|
|
171
|
+
- src/lock.ts
|
|
172
|
+
- src/task.ts
|
|
173
|
+
evidence:
|
|
174
|
+
- src/lock.ts
|
|
175
|
+
- checkHoldership in src/task.ts
|
|
176
|
+
- CR-680 in delivery/review/clean-room-m1-p6-round3-hazard.md
|
|
177
|
+
|
|
178
|
+
- key: parsing-another-program-s-reporter-output
|
|
179
|
+
name: Parsing another program's reporter output
|
|
180
|
+
rule: >-
|
|
181
|
+
PIN the format as a controlled input rather than widening the parse. A
|
|
182
|
+
format-agnostic regex is a union of formats known on the day, and the
|
|
183
|
+
default already differs between the two toolchains this project runs.
|
|
184
|
+
siblings:
|
|
185
|
+
- src/gates/suite.ts
|
|
186
|
+
evidence:
|
|
187
|
+
- M1-P6 floor defect
|
|
188
|
+
- "`NODE_OPTIONS=--test-reporter=tap` scoped to the child"
|
|
189
|
+
|
|
190
|
+
- key: reading-a-path-whose-type-is-not-established
|
|
191
|
+
name: Reading a path whose type is not established
|
|
192
|
+
rule: >-
|
|
193
|
+
lstat the link, stat what it resolves to, open ONLY a regular file. A
|
|
194
|
+
block is not an exception, so try/catch does not touch it.
|
|
195
|
+
siblings:
|
|
196
|
+
- src/task.ts
|
|
197
|
+
- src/lock.ts
|
|
198
|
+
- src/pool.ts
|
|
199
|
+
- src/brief.ts
|
|
200
|
+
- src/hooks.ts
|
|
201
|
+
evidence:
|
|
202
|
+
- CR-520 and the four M1-P5 rounds
|
|
203
|
+
- delivery/verification/cr-520-orchestrator-reproduction.md
|
|
204
|
+
|
|
205
|
+
- key: shared-worktree
|
|
206
|
+
name: Shared worktree
|
|
207
|
+
rule: >-
|
|
208
|
+
A verification lens works in its OWN clone, never in a tree another
|
|
209
|
+
agent is editing, and a run that cannot pin the source it ran against is
|
|
210
|
+
not evidence and must label itself so.
|
|
211
|
+
siblings:
|
|
212
|
+
- src/pool.ts
|
|
213
|
+
evidence:
|
|
214
|
+
- delivery/verification/u2-race-flake-investigation.md, the U-2 phantom and the four hypotheses each run in a private clone
|
|
215
|
+
- delivery/review/verification-m1-p3-fix-round.md, the round whose lenses shared a tree
|
|
216
|
+
|
|
217
|
+
- key: supervising-a-dispatched-agent
|
|
218
|
+
name: Supervising a dispatched agent
|
|
219
|
+
rule: >-
|
|
220
|
+
Supervision is a FRESHNESS watchdog armed in the same turn as the
|
|
221
|
+
dispatch, never a wait for a completion notification and never a probe
|
|
222
|
+
of process liveness (constraint C-2). The watchdog must test freshness,
|
|
223
|
+
never existence and never completion, must watch the union of the paths
|
|
224
|
+
the agent actually writes (measured, not predicted), and must exclude
|
|
225
|
+
the supervisor's own trees, because a watchdog that cannot go red is
|
|
226
|
+
worse than none.
|
|
227
|
+
siblings:
|
|
228
|
+
- src/watcher.ts
|
|
229
|
+
- src/liveness.ts
|
|
230
|
+
evidence:
|
|
231
|
+
- delivery/tuition/T-008-the-orchestrator-had-no-beacon.md, nine hours and eleven minutes measured
|
|
232
|
+
- delivery/tuition/T-014-the-watchdog-watched-the-wrong-place-six-times.md, six wrong applications of the same rule in one session
|
|
233
|
+
|
|
234
|
+
- key: verifying-access-to-a-remote
|
|
235
|
+
name: Verifying access to a remote
|
|
236
|
+
rule: >-
|
|
237
|
+
`git push --dry-run` authenticates against receive-pack and updates no
|
|
238
|
+
ref. `clone` and `ls-remote` are READ operations and witness nothing
|
|
239
|
+
about write access.
|
|
240
|
+
evidence:
|
|
241
|
+
- delivery/tuition/T-006-unexecuted-claims-about-the-world.md, the orchestrator's own instance
|
|
242
|
+
|
|
243
|
+
- key: worktree-removal-and-force-branch-delete
|
|
244
|
+
name: Worktree removal and force branch delete
|
|
245
|
+
rule: >-
|
|
246
|
+
Resolve, evaluate, then apply. No policy decision may be taken after a
|
|
247
|
+
destructive action has begun, and destructive authority is never
|
|
248
|
+
inherited from a component that does not exist yet.
|
|
249
|
+
siblings:
|
|
250
|
+
- src/pool.ts
|
|
251
|
+
- src/teardown.ts
|
|
252
|
+
machine-readable-form:
|
|
253
|
+
path: gates.manifest.json
|
|
254
|
+
key: destructiveCommands
|
|
255
|
+
evidence:
|
|
256
|
+
- delivery/review/verification-m1-p3-fix-round.md V-1 and V-3
|